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:
MyPrototypeWhat
2025-08-25 16:04:47 +08:00
parent 65c15c6d87
commit 417f90df3b
9 changed files with 71 additions and 31 deletions
@@ -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
}
// 记录活跃的工具调用
+1 -6
View File
@@ -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'