From a785289ac9efe9a7468ee601ee6fcbfb2ea6aadb Mon Sep 17 00:00:00 2001 From: Tigrex Dai Date: Fri, 28 Feb 2025 13:00:44 +0100 Subject: [PATCH 1/4] Update entities.py --- pkg/provider/modelmgr/entities.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/provider/modelmgr/entities.py b/pkg/provider/modelmgr/entities.py index cf856894..decfe96d 100644 --- a/pkg/provider/modelmgr/entities.py +++ b/pkg/provider/modelmgr/entities.py @@ -23,5 +23,7 @@ class LLMModelInfo(pydantic.BaseModel): vision_supported: typing.Optional[bool] = False + thinking: typing.Optional[bool] = False + class Config: arbitrary_types_allowed = True From 6335e9dd8bdc488967e2442f46712984824a6346 Mon Sep 17 00:00:00 2001 From: Tigrex Dai Date: Fri, 28 Feb 2025 13:02:06 +0100 Subject: [PATCH 2/4] Update anthropicmsgs.py --- pkg/provider/modelmgr/requesters/anthropicmsgs.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/provider/modelmgr/requesters/anthropicmsgs.py b/pkg/provider/modelmgr/requesters/anthropicmsgs.py index 72301efd..1514753d 100644 --- a/pkg/provider/modelmgr/requesters/anthropicmsgs.py +++ b/pkg/provider/modelmgr/requesters/anthropicmsgs.py @@ -50,6 +50,12 @@ class AnthropicMessages(requester.LLMAPIRequester): args = self.ap.provider_cfg.data['requester']['anthropic-messages']['args'].copy() args["model"] = model.name if model.model_name is None else model.model_name + if model.thinking: + if args["max_tokens"] >= 20000: + args["thinking"] = {"type": "enabled", "budget_tokens": 16000} + elif args["max_tokens"] > 1: + args["thinking"] = {"type": "enabled", "budget_tokens": args["max_tokens"]-1} + # 处理消息 # system From 9e503191d6dde74209ffb668a66867626726bdfc Mon Sep 17 00:00:00 2001 From: Tigrex Dai Date: Sat, 1 Mar 2025 17:27:01 +0100 Subject: [PATCH 3/4] Update anthropicmsgs.py --- pkg/provider/modelmgr/requesters/anthropicmsgs.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkg/provider/modelmgr/requesters/anthropicmsgs.py b/pkg/provider/modelmgr/requesters/anthropicmsgs.py index 039836c9..9168f1bc 100644 --- a/pkg/provider/modelmgr/requesters/anthropicmsgs.py +++ b/pkg/provider/modelmgr/requesters/anthropicmsgs.py @@ -51,10 +51,7 @@ class AnthropicMessages(requester.LLMAPIRequester): args["model"] = model.name if model.model_name is None else model.model_name if model.thinking: - if args["max_tokens"] >= 20000: - args["thinking"] = {"type": "enabled", "budget_tokens": 16000} - elif args["max_tokens"] > 1: - args["thinking"] = {"type": "enabled", "budget_tokens": args["max_tokens"]-1} + args["thinking"] = {"type": "enabled", "budget_tokens": 16000} # 处理消息 @@ -152,6 +149,8 @@ class AnthropicMessages(requester.LLMAPIRequester): assert type(resp) is anthropic.types.message.Message for block in resp.content: + if block.type == 'thinking': + args['content'] = '' + block.thinking + '' if block.type == 'text': args['content'] += block.text elif block.type == 'tool_use': From 7b6e6b046a1272dbdeea51e1bb658f4515a13d1d Mon Sep 17 00:00:00 2001 From: Junyan Qin Date: Sun, 2 Mar 2025 15:24:08 +0800 Subject: [PATCH 4/4] perf(claude): simplify the thinking resp processing --- pkg/provider/modelmgr/entities.py | 2 -- pkg/provider/modelmgr/requesters/anthropicmsgs.py | 7 ++----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/pkg/provider/modelmgr/entities.py b/pkg/provider/modelmgr/entities.py index decfe96d..cf856894 100644 --- a/pkg/provider/modelmgr/entities.py +++ b/pkg/provider/modelmgr/entities.py @@ -23,7 +23,5 @@ class LLMModelInfo(pydantic.BaseModel): vision_supported: typing.Optional[bool] = False - thinking: typing.Optional[bool] = False - class Config: arbitrary_types_allowed = True diff --git a/pkg/provider/modelmgr/requesters/anthropicmsgs.py b/pkg/provider/modelmgr/requesters/anthropicmsgs.py index 9168f1bc..b03e536d 100644 --- a/pkg/provider/modelmgr/requesters/anthropicmsgs.py +++ b/pkg/provider/modelmgr/requesters/anthropicmsgs.py @@ -50,9 +50,6 @@ class AnthropicMessages(requester.LLMAPIRequester): args = self.ap.provider_cfg.data['requester']['anthropic-messages']['args'].copy() args["model"] = model.name if model.model_name is None else model.model_name - if model.thinking: - args["thinking"] = {"type": "enabled", "budget_tokens": 16000} - # 处理消息 # system @@ -150,8 +147,8 @@ class AnthropicMessages(requester.LLMAPIRequester): for block in resp.content: if block.type == 'thinking': - args['content'] = '' + block.thinking + '' - if block.type == 'text': + args['content'] = '' + block.thinking + '\n' + args['content'] + elif block.type == 'text': args['content'] += block.text elif block.type == 'tool_use': assert type(block) is anthropic.types.tool_use_block.ToolUseBlock