From 21d39b8dd6e3e866465df65fa805d90b5d06e444 Mon Sep 17 00:00:00 2001 From: hyiip Date: Wed, 2 Jul 2025 22:14:32 +0800 Subject: [PATCH] Migrate to claude 4 --- app/client/platforms/anthropic.ts | 11 ++++++++++- app/constant.ts | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/client/platforms/anthropic.ts b/app/client/platforms/anthropic.ts index 6747221a8..237747090 100644 --- a/app/client/platforms/anthropic.ts +++ b/app/client/platforms/anthropic.ts @@ -224,7 +224,7 @@ export class ClaudeApi implements LLMApi { let chunkJson: | undefined | { - type: "content_block_delta" | "content_block_stop"; + type: "content_block_delta" | "content_block_stop" | "message_delta" | "message_stop"; content_block?: { type: "tool_use"; id: string; @@ -234,11 +234,20 @@ export class ClaudeApi implements LLMApi { type: "text_delta" | "input_json_delta"; text?: string; partial_json?: string; + stop_reason?: string; }; index: number; }; chunkJson = JSON.parse(text); + // Handle refusal stop reason in message_delta + if (chunkJson?.delta?.stop_reason === "refusal") { + // Return a message to display to the user + const refusalMessage = "\n\n[Assistant refused to respond. Please modify your request and try again.]"; + options.onError?.(new Error("Content policy violation: " + refusalMessage)); + return refusalMessage; + } + if (chunkJson?.content_block?.type == "tool_use") { index += 1; const id = chunkJson?.content_block.id; diff --git a/app/constant.ts b/app/constant.ts index d789cbaf7..3660877e0 100644 --- a/app/constant.ts +++ b/app/constant.ts @@ -571,6 +571,8 @@ const anthropicModels = [ "claude-3-5-sonnet-latest", "claude-3-7-sonnet-20250219", "claude-3-7-sonnet-latest", + "claude-sonnet-4-20250514", + "claude-opus-4-20250514", ]; const baiduModels = [