LLM工具调用流式处理后续操作及响应格式咨询
关于LLM流式工具调用后的后续处理及响应格式指定
核心操作步骤
- 当成功获取完整的
toolCall后,需按以下流程执行:- 调用对应工具(如
searchWeb),传入解析后的参数args,获取工具返回结果 - 构造新消息列表:在原
messages基础上追加两条消息assistant角色消息:包含完整的tool_calls数组(即你收集到的toolCall)tool角色消息:包含工具返回结果,以及对应的tool_call_id(从toolCall.id获取)
- 使用新消息列表重新发起
chat.completions.create请求(仍可使用流式模式),让LLM基于工具结果生成最终响应
- 调用对应工具(如
如何指定最终响应格式
- 提示词强制法:在系统提示词或用户消息末尾明确格式要求,例如:
请将最终回答整理成清晰段落,或严格按照以下JSON格式返回: { "answer": "具体回答内容", "source": "工具返回的来源信息(如有)" } - 参数指定法:若使用GPT-4o等支持结构化输出的模型,可通过
response_format参数强制格式:const completion = await client.chat.completions.create({ messages: newMessages, // 包含工具调用和响应的消息列表 model: 'gpt-4o', stream: true, response_format: { type: "json_object" }, // 指定返回JSON格式 // 其他参数... });
代码疑问补充
- 关于
finish_reason === 'function_call'未触发:流式模式下部分模型的工具调用结束时,finish_reason仍会返回stop,你当前通过stop判断处理工具调用的逻辑是可行的,无需调整。
内容的提问来源于stack exchange,提问作者Frank Fiegel
相关产品推荐
相关产品推荐

