feat(dependencies): update @ai-sdk/openai and @ai-sdk/provider-utils versions
- Upgraded `@ai-sdk/openai` to version 2.0.19 in `yarn.lock` and `package.json` for improved functionality and compatibility. - Updated `@ai-sdk/provider-utils` to version 3.0.5, enhancing dependency management. - Added `TypedToolError` type export in `index.ts` for better error handling. - Removed unnecessary console logs in `webSearchPlugin` for cleaner code. - Refactored type handling in `createProvider` to ensure proper type assertions. - Enforced `topicId` as a required field in the `ModernAiProvider` configuration for stricter validation.
This commit is contained in:
@@ -185,19 +185,34 @@ export class AiSdkToChunkAdapter {
|
||||
source: WebSearchSource.GEMINI
|
||||
}
|
||||
})
|
||||
} else {
|
||||
const providerName = Object.keys(providerMetadata || {})[0]
|
||||
// console.log('providerName', providerName)
|
||||
switch (providerName) {
|
||||
case WebSearchSource.OPENAI:
|
||||
this.onChunk({
|
||||
type: ChunkType.LLM_WEB_SEARCH_COMPLETE,
|
||||
llm_web_search: {
|
||||
results: final.webSearchResults,
|
||||
source: WebSearchSource.OPENAI_RESPONSE
|
||||
}
|
||||
})
|
||||
break
|
||||
default:
|
||||
this.onChunk({
|
||||
type: ChunkType.LLM_WEB_SEARCH_COMPLETE,
|
||||
llm_web_search: {
|
||||
results: final.webSearchResults,
|
||||
source: WebSearchSource.AISDK
|
||||
}
|
||||
})
|
||||
break
|
||||
}
|
||||
}
|
||||
if (finishReason === 'tool-calls') {
|
||||
this.onChunk({ type: ChunkType.LLM_RESPONSE_CREATED })
|
||||
}
|
||||
// else {
|
||||
// this.onChunk({
|
||||
// type: ChunkType.LLM_WEB_SEARCH_COMPLETE,
|
||||
// llm_web_search: {
|
||||
// results: final.webSearchResults,
|
||||
// source: WebSearchSource.AISDK
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
|
||||
final.webSearchResults = []
|
||||
// final.reasoningId = ''
|
||||
break
|
||||
|
||||
@@ -155,7 +155,8 @@ export class ToolCallChunkHandler {
|
||||
return
|
||||
}
|
||||
|
||||
let tool: BaseTool | MCPTool
|
||||
let tool: BaseTool
|
||||
let mcpTool: MCPTool | undefined
|
||||
|
||||
// 根据 providerExecuted 标志区分处理逻辑
|
||||
if (providerExecuted) {
|
||||
@@ -176,15 +177,22 @@ export class ToolCallChunkHandler {
|
||||
description: toolName,
|
||||
type: 'builtin'
|
||||
} as BaseTool
|
||||
} else {
|
||||
} else if ((mcpTool = this.mcpTools.find((t) => t.name === toolName) as MCPTool)) {
|
||||
// 如果是客户端执行的 MCP 工具,沿用现有逻辑
|
||||
logger.info(`[ToolCallChunkHandler] Handling client-side MCP tool: ${toolName}`)
|
||||
const mcpTool = this.mcpTools.find((t) => t.name === toolName)
|
||||
if (!mcpTool) {
|
||||
logger.warn(`[ToolCallChunkHandler] MCP tool not found: ${toolName}`)
|
||||
return
|
||||
// mcpTool = this.mcpTools.find((t) => t.name === toolName) as MCPTool
|
||||
// if (!mcpTool) {
|
||||
// logger.warn(`[ToolCallChunkHandler] MCP tool not found: ${toolName}`)
|
||||
// return
|
||||
// }
|
||||
tool = mcpTool
|
||||
} else {
|
||||
tool = {
|
||||
id: toolCallId,
|
||||
name: toolName,
|
||||
description: toolName,
|
||||
type: 'provider'
|
||||
}
|
||||
tool = mcpTool as MCPTool
|
||||
}
|
||||
|
||||
// 记录活跃的工具调用
|
||||
|
||||
@@ -69,15 +69,10 @@ export default class ModernAiProvider {
|
||||
config: AiSdkMiddlewareConfig & {
|
||||
assistant: Assistant
|
||||
// topicId for tracing
|
||||
topicId?: string
|
||||
topicId: string
|
||||
callType: string
|
||||
}
|
||||
): Promise<CompletionsResult> {
|
||||
if (!config.topicId) {
|
||||
logger.warn('No topicId provided, falling back to regular completions')
|
||||
return await this.completions(modelId, params, config)
|
||||
}
|
||||
|
||||
const traceName = `${this.actualProvider.name}.${modelId}.${config.callType}`
|
||||
const traceParams: StartSpanParams = {
|
||||
name: traceName,
|
||||
|
||||
@@ -38,13 +38,9 @@ export function providerToAiSdkConfig(actualProvider: Provider): {
|
||||
providerId: ProviderId | 'openai-compatible'
|
||||
options: ProviderSettingsMap[keyof ProviderSettingsMap]
|
||||
} {
|
||||
// console.log('actualProvider', actualProvider)
|
||||
const aiSdkProviderId = getAiSdkProviderId(actualProvider)
|
||||
// console.log('aiSdkProviderId', aiSdkProviderId)
|
||||
// 如果provider是openai,则使用strict模式并且默认responses api
|
||||
const actualProviderType = actualProvider.type
|
||||
const openaiResponseOptions =
|
||||
// 对于实际是openai的需要走responses,aiCore内部会判断model是否可用responses
|
||||
actualProviderType === 'openai-response'
|
||||
? {
|
||||
mode: 'responses'
|
||||
|
||||
Reference in New Issue
Block a user