You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 13:52:38