diff --git a/packages/@ant/model-provider/src/shared/openaiConvertMessages.ts b/packages/@ant/model-provider/src/shared/openaiConvertMessages.ts index 4d2553653..40b136a7a 100644 --- a/packages/@ant/model-provider/src/shared/openaiConvertMessages.ts +++ b/packages/@ant/model-provider/src/shared/openaiConvertMessages.ts @@ -260,7 +260,7 @@ function convertInternalAssistantMessage( const result: ChatCompletionAssistantMessageParam = { role: 'assistant', - content: textParts.length > 0 ? textParts.join('\n') : null, + content: textParts.length > 0 ? textParts.join('\n') : "", ...(toolCalls.length > 0 && { tool_calls: toolCalls }), ...(reasoningParts.length > 0 && { reasoning_content: reasoningParts.join('\n') }), } diff --git a/src/services/api/openai/client.ts b/src/services/api/openai/client.ts index 62a37dfbc..2d7f1ff8c 100644 --- a/src/services/api/openai/client.ts +++ b/src/services/api/openai/client.ts @@ -1,6 +1,5 @@ -import OpenAI from 'openai' +import type OpenAI from 'openai import { getProxyFetchOptions } from 'src/utils/proxy.js' -import { isEnvTruthy } from 'src/utils/envUtils.js' /** * Environment variables: @@ -13,13 +12,14 @@ import { isEnvTruthy } from 'src/utils/envUtils.js' let cachedClient: OpenAI | null = null -export function getOpenAIClient(options?: { +export async function getOpenAIClient(options?: { maxRetries?: number fetchOverride?: typeof fetch source?: string -}): OpenAI { +}): Promise { if (cachedClient) return cachedClient - + + const { default: OpenAI } = await import('openai') const apiKey = process.env.OPENAI_API_KEY || '' const baseURL = process.env.OPENAI_BASE_URL diff --git a/src/services/api/openai/index.ts b/src/services/api/openai/index.ts index 0db002225..8f0f115d3 100644 --- a/src/services/api/openai/index.ts +++ b/src/services/api/openai/index.ts @@ -217,7 +217,7 @@ export async function* queryModelOpenAI( const maxTokens = resolveOpenAIMaxTokens(upperLimit, options.maxOutputTokensOverride) // 11. Get client - const client = getOpenAIClient({ + const client = await getOpenAIClient({ maxRetries: 0, fetchOverride: options.fetchOverride as unknown as typeof fetch, source: options.querySource,