Openmanus调用claude3.7报错

调用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"错误,需要对消息内容进行以下优化处理:

根据错误提示和请求参数分析,主要问题出现在[系统提示词]和[网页内容]部分的末尾存在非法空白符:

  1. 系统提示部分存在多个连续换行符\n
  2. 页面内容截断导致</solu\n非法结尾
  3. 文本块拼接时无意添加的换行符

相关技术原理

  1. Claude 3.7 Sonnet的输入验证机制要求文本块必须以非空白字符结束,这是为了防止模型生成未闭合的JSON结构
  2. AWS Bedrock会对每个消息块执行正则校验:/\s+$/匹配结尾空白符
  3. 混合推理架构对输入格式更敏感,深度思考模式会严格检查语法结构

网页截断问题,可以重试解决,暂不影响,待后续有需要再处理;

调用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,不指定,使用默认;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值