5.4 用 Chat Completion API 做 Tool Calls:和 Assistants 有啥区别本节学习目标用Chat Completions API自己实现「多轮 Tool Calls」:在请求里传tools,从回复里取tool_calls,执行后把结果以tool角色消息追加到messages,再请求,循环直到无 tool_calls。对比Chat 自管循环与Assistants API在状态、实现复杂度、适用场景上的差异。能根据项目需求选择「用 Chat 自己写循环」还是「用 Assistants 托管」。一、Chat Completions 实现 Tool Calls 的流程请求:messages(含历史)+tools(函数列表)。回复:若模型要调工具,choices[0].message里会有tool_calls,且content可能为空。你把每条 tool_call 的执行结果,以role="tool", tool_call_id=..., content=...追加到messages,并保留该轮 assistant 的message(含 tool_calls)。再发请求(同一份 messages),模型会看到工具结果并继续生成或再调工具。当回复中无tool_calls时,取content作为最终答案,结束循环。状态:Thread、历史消息、Run 状态都由你自己用messages数组维护。二、和 Assistants 的对比维度Chat Completions + 自写循环Assistants API状态自己维护 messages[]Thread/Run 托管在服务端实现自己写轮询、拼 messages、解析 tool_calls只需轮询 Run、处理 requires_action、submit_tool_outputs文件/代码解释器需自己传 file 或模拟/