From d55c752e1e2b39353797bfb41964f3146d63486b Mon Sep 17 00:00:00 2001 From: glay Date: Tue, 5 Nov 2024 19:13:32 +0800 Subject: [PATCH] =?UTF-8?q?=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20=20ap?= =?UTF-8?q?p/api/bedrock.ts=20=09=E4=BF=AE=E6=94=B9=EF=BC=9A=20=20=20=20?= =?UTF-8?q?=20app/utils.ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/bedrock.ts | 14 +++++++++++--- app/utils.ts | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) 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")) {