必须将tool_output字段精准注入响应体,否则模型卡在“等待工具返回”;需先查taskId状态,status=2才回传taskResult原始字符串,且续写请求不可启用stream。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

火山引擎工具调用完成后,模型无法自动感知执行结果,必须通过显式结构将tool_output字段精准注入响应体,否则大模型会卡在“等待工具返回”状态而无法生成最终回复。
确认工具调用已成功触发
调用VideoProjectCreateToolTask等工具接口后,必须先获取taskId,再用该taskId调用VideoProjectGetToolTask查询执行状态。只有当返回data.toolTask.taskStatus = 2(表示执行完成)时,才可进入结果回传阶段。若status为0或1,说明工具尚未运行或正在执行,此时强行回传会导致模型接收空结果。
检查返回的taskResult字段是否为非空JSON字符串——它不是对象,而是被序列化后的字符串,例如:{"videoUrl":"https://xxx.mp4","duration":128}。这是火山引擎工具服务的固定格式,【必须原样保留双引号和转义字符,不可解析后再重序列化】。
构造符合Responses API规范的tool_output结构
在向Responses API发起下一轮请求(即带工具结果的续写请求)时,需在messages数组末尾追加一条role=“tool”的消息。
这条消息必须包含三个字段:tool_call_id(与原始user消息中tool_calls数组对应项的id一致)、name(与原始调用的工具名完全相同)、tool_output(就是上一步拿到的taskResult原始字符串)。
示例:
{"role":"tool","tool_call_id":"call_abc123","name":"VideoProjectRender","tool_output":"{\"videoUrl\":\"https://xxx.mp4\",\"duration\":128}"}
发送带tool_output的续写请求
将构造好的messages数组(含原始user消息、assistant的tool_calls、以及新增的tool消息)整体作为新请求的body,POST到Responses API端点。
注意:此请求【不能携带stream=true参数】,因为工具结果回传必须等待模型完整消化后再输出最终响应,流式模式下会因分块截断导致tool_output丢失或解析失败。
若使用OpenClaw CLI,执行命令时需显式禁用流式:openclaw chat --no-stream --model volcengine/skylark2-pro-4k -m "user:渲染视频" -t "VideoProjectRender" -o '{"videoUrl":"https://xxx.mp4","duration":128}'。











