diff --git a/app/api/bedrock.ts b/app/api/bedrock.ts index 57ab082e3..4cad53da1 100644 --- a/app/api/bedrock.ts +++ b/app/api/bedrock.ts @@ -39,6 +39,14 @@ export interface ConverseRequest { }[]; } +function supportsToolUse(modelId: string): boolean { + // llama和mistral模型不支持工具调用 + return ( + modelId.toLowerCase().includes("claude-3") && + modelId.toLowerCase().includes("claude-3-5") + ); +} + function formatRequestBody( request: ConverseRequest, ): ConverseStreamCommandInput { @@ -96,15 +104,15 @@ function formatRequestBody( }), }; - // 添加工具配置 - if (request.tools?.length) { + // 只有在支持工具调用的模型上才添加toolConfig + if (request.tools?.length && supportsToolUse(request.modelId)) { input.toolConfig = { tools: request.tools.map((tool) => ({ toolSpec: { name: tool.name, description: tool.description, inputSchema: { - json: tool.input_schema, // 直接使用对象,不需要 JSON.stringify + json: tool.input_schema, }, }, })), diff --git a/app/utils.ts b/app/utils.ts index 78cfe5a0e..50cb4b0da 100644 --- a/app/utils.ts +++ b/app/utils.ts @@ -285,7 +285,7 @@ export function showPlugins(provider: ServiceProvider, model: string) { if (provider == ServiceProvider.Anthropic && !model.includes("claude-2")) { return true; } - if (provider == ServiceProvider.Bedrock && !model.includes("claude-2")) { + if (provider == ServiceProvider.Bedrock && model.includes("claude-3")) { return true; } if (provider == ServiceProvider.Google && !model.includes("vision")) {