当腾讯混元api返回含tool_calls字段的响应时,需主动发起第二次请求:先识别tool_calls并解析arguments为json对象,再执行工具调用、构造带正确tool_call_id的tool消息,最后拼接消息并发送新请求获取最终答案。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当腾讯混元API返回包含tool_calls字段的响应时,说明模型判断需要调用外部工具(如搜索、数据库查询、代码执行等)来完成用户请求,此时必须主动发起第二次请求,将工具调用结果回填到messages中,否则对话会中断或无法获得最终答案。
识别tool_calls响应并提取调用信息
检查非流式响应的Response.Choices[0].Messages[0].Content是否为空,同时确认Response.Choices[0].Message.ToolCalls是否存在且不为空列表。若存在,说明模型已生成工具调用指令,而非直接回答。
从ToolCalls中逐个提取Id、Type(目前仅支持function)、Function.Name和Function.Arguments。注意:【Arguments是JSON字符串,不是Python字典,必须先json.loads解析】,否则后续构造消息会出错。
这一步操作起来很简单,直接遍历resp.Response.Choices[0].Message.ToolCalls即可。
执行工具逻辑并构造tool\_message
根据Function.Name调用对应本地函数或第三方服务,例如调用搜索接口获取实时天气、查数据库获取产品价格、运行Python代码计算数值等。工具返回结果必须为字符串,不能是字典或对象。
将每个工具调用结果封装为tool角色的消息:{ "role": "tool", "content": "", "tool_call_id": "" }。注意tool_call_id必须严格匹配原始调用的Id,大小写和符号都不能错,否则混元会忽略该消息。
多个工具调用需生成多条tool消息,顺序不限,但每条都必须带正确的tool_call_id。
构造第二轮请求并发送
第一步:把原始用户消息、模型返回的assistant消息(含tool_calls)、以及所有新生成的tool消息按时间顺序拼接进messages列表;
第二步:确保新请求的Messages中最后一条不是user,而是tool;
第三步:清除req.ToolChoice(如有设置),不要指定auto或required,让模型自主决定是否还需调用新工具或直接作答;
第四步:发送新请求,接收最终回答。若响应中仍有tool_calls,需重复本流程,但实践中两轮足够覆盖绝大多数场景。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











