From 1b129636ed4e5246e8414ea9c566e3d97f6917b1 Mon Sep 17 00:00:00 2001 From: luoxu1314 <32211456+luoxu1314@users.noreply.github.com> Date: Mon, 14 Jul 2025 23:28:27 +0800 Subject: [PATCH] chore(OpenAIApiClient): fallback to message when delta.content is empty (#8101) * chore(OpenAIApiClient): fallback to message when delta.content is empty, fix missing content issue Signed-off-by: luoxu1314 * Update OpenAIApiClient.ts * Update OpenAIApiClient.ts --------- Signed-off-by: luoxu1314 Co-authored-by: one --- .../src/aiCore/clients/openai/OpenAIApiClient.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/renderer/src/aiCore/clients/openai/OpenAIApiClient.ts b/src/renderer/src/aiCore/clients/openai/OpenAIApiClient.ts index 16a4409ffa..5cc05274dc 100644 --- a/src/renderer/src/aiCore/clients/openai/OpenAIApiClient.ts +++ b/src/renderer/src/aiCore/clients/openai/OpenAIApiClient.ts @@ -703,9 +703,15 @@ export class OpenAIAPIClient extends OpenAIBaseClient< // 对于流式响应,使用 delta;对于非流式响应,使用 message。 // 然而某些 OpenAI 兼容平台在非流式请求时会错误地返回一个空对象的 delta 字段。 - // 如果 delta 为空对象,应当忽略它并回退到 message,避免造成内容缺失。 + // 如果 delta 为空对象或content为空,应当忽略它并回退到 message,避免造成内容缺失。 let contentSource: OpenAISdkRawContentSource | null = null - if ('delta' in choice && choice.delta && Object.keys(choice.delta).length > 0) { + if ( + 'delta' in choice && + choice.delta && + Object.keys(choice.delta).length > 0 && + (!('content' in choice.delta) || + (typeof choice.delta.content === 'string' && choice.delta.content !== '')) + ) { contentSource = choice.delta } else if ('message' in choice) { contentSource = choice.message