ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

5.4 用ChatCompletion API做Tool Calls 和Assistants有啥区别

5.4 用ChatCompletion API做Tool Calls 和Assistants有啥区别

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 的流程

  1. 请求:messages(含历史)+tools(函数列表)。
  2. 回复:若模型要调工具,choices[0].message里会有tool_calls,且content可能为空。
  3. 你把每条 tool_call 的执行结果,以role="tool", tool_call_id=..., content=...追加到messages,并保留该轮 assistant 的message(含 tool_calls)。
  4. 再发请求(同一份 messages),模型会看到工具结果并继续生成或再调工具。
  5. 当回复中无tool_calls时,取content作为最终答案,结束循环。

状态:Thread、历史消息、Run 状态都由你自己messages数组维护。


二、和 Assistants 的对比

维度Chat Completions + 自写循环Assistants API
状态自己维护 messages[]Thread/Run 托管在服务端
实现自己写轮询、拼 messages、解析 tool_calls只需轮询 Run、处理 requires_action、submit_tool_outputs
文件/代码解释器需自己传 file 或模拟</
返回列表