在AWS Bedrock中使用Claude时ToolResult消息格式问题求助
问题解决:AWS Bedrock Claude工具结果格式报错(content为空)
核心问题
你遇到的报错messages.2 is empty是因为Tool Result块的content字段格式不符合要求——它必须是包含ContentBlock对象的数组,而非直接字符串或单个对象。
正确的Tool Result格式
无论用下划线tool_use_id还是驼峰toolUseId(不同文档版本的命名差异),核心是content字段要嵌套一层ContentBlock数组。针对你的场景,正确的messages[2]应该是:
{ "role": "user", "content": [ { "type": "tool_result", "toolUseId": "tooluse_75DtEuzdQdqDaJpIHJTjtg", "content": [ {"type": "text", "text": "No events found"} ] } ] }
错误原因拆解
你之前的写法里,content直接用了字符串"No events found",但Bedrock要求这里必须是ContentBlock数组(支持text、json等类型)。哪怕是纯文本结果,也要包装成[{"type": "text", "text": "xxx"}]的结构。
完整修正后的请求Payload示例
{ "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What are my 5 latest alerts?" } ] }, { "role": "assistant", "content": [ { "type": "text", "text": "I'll retrieve your 5 latest alerts for you." }, { "type": "tool_use", "id": "tooluse_75DtEuzdQdqDaJpIHJTjtg", "name": "query_events", "input": "{\"oql_query\": \"tags:alert\", \"limit\": 5}" } ], "stop_reason": "tool_use" }, { "role": "user", "content": [ { "type": "tool_result", "toolUseId": "tooluse_75DtEuzdQdqDaJpIHJTjtg", "content": [ {"type": "text", "text": "No events found"} ] } ] } ], "top_p": 0, "top_k": 0, "user_uuid": "3943e881-d6e3-4aeb-815b-18076b6fbe34", "stream": true, "toolConfig": {...} }
补充说明
messages.2是零索引,对应你请求里的第三个消息(工具结果那条),报错确实指向这条消息的格式问题。- 文档里的两种格式差异是版本更新导致的,驼峰
toolUseId是当前API规范的标准写法,下划线tool_use_id兼容旧版本,但核心都是content字段必须是ContentBlock数组。
内容的提问来源于stack exchange,提问作者Corey Ogburn
相关产品推荐
相关产品推荐

