diff --git a/astrbot/core/provider/sources/anthropic_source.py b/astrbot/core/provider/sources/anthropic_source.py index 0ff61e393..6c9f62e29 100644 --- a/astrbot/core/provider/sources/anthropic_source.py +++ b/astrbot/core/provider/sources/anthropic_source.py @@ -68,7 +68,7 @@ def _prepare_payload(self, messages: list[dict]): blocks = [] if isinstance(message["content"], str): blocks.append({"type": "text", "text": message["content"]}) - if "tool_calls" in message: + if "tool_calls" in message and isinstance(message["tool_calls"], list): for tool_call in message["tool_calls"]: blocks.append( # noqa: PERF401 { @@ -132,6 +132,9 @@ async def _query(self, payloads: dict, tools: ToolSet | None) -> LLMResponse: extra_body = self.provider_config.get("custom_extra_body", {}) + if "max_tokens" not in payloads: + payloads["max_tokens"] = 1024 + completion = await self.client.messages.create( **payloads, stream=False, extra_body=extra_body ) @@ -181,6 +184,9 @@ async def _query_stream( usage = TokenUsage() extra_body = self.provider_config.get("custom_extra_body", {}) + if "max_tokens" not in payloads: + payloads["max_tokens"] = 1024 + async with self.client.messages.stream( **payloads, extra_body=extra_body ) as stream: @@ -342,11 +348,11 @@ async def text_chat( async def text_chat_stream( self, - prompt, + prompt=None, session_id=None, - image_urls=..., + image_urls=None, func_tool=None, - contexts=..., + contexts=None, system_prompt=None, tool_calls_result=None, model=None,