调用claude3.7报错
问题1:启动时提示Input should be a valid list
app.llm:ask_tool:763
2025-04-29 10:54:26.351 | ERROR | app.llm:ask_tool:763 - OpenAI API error: Error code: 500 - {'error': {'message': 'InvokeModel: operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: b2bc5516-8a47-43a2-8e16-c4c22a9e471c, ValidationException: messages: Input should be a valid list (request id: 202504290254262291875375937263) (request id: 2025042910542591952335055389127)', 'type': '', 'param': '', 'code': None}}
2025-04-29 10:54:26.352 | ERROR | app.llm:ask_tool:769 - API error: Error code: 500 - {'error': {'message': 'InvokeModel: operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: b2bc5516-8a47-43a2-8e16-c4c22a9e471c, ValidationException: messages: Input should be a valid list (request id: 202504290254262291875375937263) (request id: 2025042910542591952335055389127)', 'type': '', 'param': '', 'code': None}}
2025-04-29 10:54:30.038 | ERROR | app.llm:ask_tool:763 - OpenAI API error: Error code: 500 - {'error': {'message': 'InvokeModel: operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: c666975b-9655-41ac-b8b3-06820190e996, ValidationException: messages: Input should be a valid list (request id: 2025042902542972768780449736700) (request id: 2025042910542962454758402865614)', 'type': '', 'param': '', 'code': None}}
2025-04-29 10:54:30.038 | ERROR | app.llm:ask_tool:769 - API error: Error code: 500 - {'error': {'message': 'InvokeModel: operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: c666975b-9655-41ac-b8b3-06820190e996, ValidationException: messages: Input should be a valid list (request id: 2025042902542972768780449736700) (request id: 2025042910542962454758402865614)', 'type': '', 'param': '', 'code': None}}
2025-04-29 10:54:33.707 | ERROR | app.llm:ask_tool:763 - OpenAI API error: Error code: 500 - {'error': {'message': 'InvokeModel: operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: 1a137fc4-ad0f-49f3-b02e-4ebad4d3d6a4, ValidationException: messages: Input should be a valid list (request id: 2025042902543326672631284143208) (request id: 2025042910543316394898536002475)', 'type': '', 'param': '', 'code': None}}
2025-04-29 10:54:33.708 | ERROR | app.llm:ask_tool:769 - API error: Error code: 500 - {'error': {'message': 'InvokeModel: operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: 1a137fc4-ad0f-49f3-b02e-4ebad4d3d6a4, ValidationException: messages: Input should be a valid list (request id: 2025042902543326672631284143208) (request id: 2025042910543316394898536002475)', 'type': '', 'param': '', 'code': None}}
2025-04-29 10:54:39.309 | ERROR | app.llm:ask_tool:763 - OpenAI API error: Error code: 500 - {'error': {'message': 'InvokeModel: operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: 15a29111-67fe-43b1-b2cb-30eff55adaca, ValidationException: messages: Input should be a valid list (request id: 2025042902543899527405591667911) (request id: 2025042910543889391969012954096)', 'type': '', 'param': '', 'code': None}}
2025-04-29 10:54:39.309 | ERROR | app.llm:ask_tool:769 - API error: Error code: 500 - {'error': {'message': 'InvokeModel: operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: 15a29111-67fe-43b1-b2cb-30eff55adaca, ValidationException: messages: Input should be a valid list (request id: 2025042902543899527405591667911) (request id: 2025042910543889391969012954096)', 'type': '', 'param': '', 'code': None}}
2025-04-29 10:54:48.260 | ERROR | app.llm:ask_tool:763 - OpenAI API error: Error code: 500 - {'error': {'message': 'InvokeModel: operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: 3b5fb41f-8710-4f35-a8bd-ec5e5a8c36b4, ValidationException: messages: Input should be a valid list (request id: 202504290254488899699225193586) (request id: 2025042910544798702295458742426)', 'type': '', 'param': '', 'code': None}}
2025-04-29 10:54:48.261 | ERROR | app.llm:ask_tool:769 - API error: Error code: 500 - {'error': {'message': 'InvokeModel: operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: 3b5fb41f-8710-4f35-a8bd-ec5e5a8c36b4, ValidationException: messages: Input should be a valid list (request id: 202504290254488899699225193586) (request id: 2025042910544798702295458742426)', 'type': '', 'param': '', 'code': None}}
2025-04-29 10:55:06.027 | ERROR | app.llm:ask_tool:763 - OpenAI API error: Error code: 500 - {'error': {'message': 'InvokeModel: operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: 8b9b63dc-02ac-4653-a15d-310385cd35f4, ValidationException: messages: Input should be a valid list (request id: 2025042902550585903706503939768) (request id: 2025042910550575697018148808461)', 'type': '', 'param': '', 'code': None}}
2025-04-29 10:55:06.027 | ERROR | app.llm:ask_tool:769 - API error: Error code: 500 - {'error': {'message': 'InvokeModel: operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: 8b9b63dc-02ac-4653-a15d-310385cd35f4, ValidationException: messages: Input should be a valid list (request id: 2025042902550585903706503939768) (request id: 2025042910550575697018148808461)', 'type': '', 'param': '', 'code': None}}
需要做anthropic的数据格式适配改造:
自己扩展的适配接口:
正常调用的入参:
响应成功的返回信息:
报错时的入参:
所以真正的报错在这一行:
response = await self.client.client.messages.create(**params)
没有正常返回content,所以导致了下一行的报错;
"operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: fc8e87f7-c7db-4a14-a44e-defa3e3bdf3d, ValidationException: messages.3.content.0.tool_result.tool_use_id: String should match pattern '^[a-zA-Z0-9_-] $'"
工具tool_use_id为“”
问题2:browser_use 返回:No content was extracted from the page.
调试关键字:
1、判断anthropic接口调用的返回响应中,是否存在error信息:
response = await self.client.client.messages.create(**params) if 'error' in response.model_extra: print(response.model_extra['error'],f'param:{params}')
{'type': 'invalid_request_error', 'message': 'operation error Bedrock Runtime: InvokeModel, https response error StatusCode: 400, RequestID: b35431c9-9868-4476-9c87-3390645736d4, ValidationException: messages: final assistant content cannot end with trailing whitespace'}
根因是网页提取的信息被截断,
要解决"final assistant content cannot end with trailing whitespace"错误,需要对消息内容进行以下优化处理:
根据错误提示和请求参数分析,主要问题出现在[系统提示词]和[网页内容]部分的末尾存在非法空白符:
- 系统提示部分存在多个连续换行符
\n
- 页面内容截断导致
</solu\n
非法结尾 - 文本块拼接时无意添加的换行符
相关技术原理
- Claude 3.7 Sonnet的输入验证机制要求文本块必须以非空白字符结束,这是为了防止模型生成未闭合的JSON结构
- AWS Bedrock会对每个消息块执行正则校验:
/\s+$/
匹配结尾空白符 - 混合推理架构对输入格式更敏感,深度思考模式会严格检查语法结构
网页截断问题,可以重试解决,暂不影响,待后续有需要再处理;
调用gpt-4o报错
2025-04-29 11:08:59.827 | ERROR | app.llm:ask_tool:763 - OpenAI API error: Error code: 400 - {'error': {'message': "This model's maximum context length is 128000 tokens. However, you requested 129267 tokens (149 in the messages, 1118 in the functions, and 128000 in the completion). Please reduce the length of the messages, functions, or completion. (request id: 2025042903085950224491761877647) (request id: 2025042911085941036376554350856)", 'type': 'invalid_request_error', 'param': 'messages', 'code': 'context_length_exceeded'}}
2025-04-29 11:08:59.830 | ERROR | app.llm:ask_tool:769 - API error: Error code: 400 - {'error': {'message': "This model's maximum context length is 128000 tokens. However, you requested 129267 tokens (149 in the messages, 1118 in the functions, and 128000 in the completion). Please reduce the length of the messages, functions, or completion. (request id: 2025042903085950224491761877647) (request id: 2025042911085941036376554350856)", 'type': 'invalid_request_error', 'param': 'messages', 'code': 'context_length_exceeded'}}
解决办法:
注释掉max_token,不指定,使用默认;