OpenAI API(1)补全Responses(Chat Completions)API和记忆Assistants API对比分析
文章目录
- 一、核心区别概览
- 二、Chat Completions API 详解
- 1. 核心功能
- 2. 代码示例
- 3. 上下文管理图解
- 三、Assistants API 详解
- 1. 核心组件
- 2. 代码示例
- 步骤1:创建Assistant
- 步骤2:创建Thread并添加消息
- 步骤3:执行Run
- 3. 工作流程图解
- 四、关键对比场景
- 1. 文件处理能力
- 2. 工具调用对比
- Chat Completions API(需手动实现)
- Assistants API(内置工具)
- 五、如何选择?
- 1. 使用 **Chat Completions API** 当:
- 2. 使用 **Assistants API** 当:
- 六、总结
一、核心区别概览
维度 | Chat Completions API | Assistants API |
---|---|---|
状态管理 | 无状态(需手动维护上下文) | 有状态(自动管理对话线程 Thread ) |
文件处理 | ❌ 不支持 | ✔️ 支持上传/解析(PDF/CSV等) |
工具调用 | 需通过函数调用实现 | 内置工具(代码解释器、函数调用) |
延迟 | 低(直接响应) | 较高(需异步执行 Run ) |
成本 | 按Token计费 | 额外工具使用费(如代码解释器) |
特别说明下: Completions API(旧版)与 Chat Completions API是不同的, Completions
API(旧版)❌ 逐步淘汰(2023年后不再更新),只是单纯的文本补全,不在本文讨论范围内
二、Chat Completions API 详解
1. 核心功能
- 单次请求-响应,适合简单对话或生成任务。
- 需通过
messages
数组传递完整上下文。
2. 代码示例
import openai# 设置API密钥
openai.api_key = "your-api-key"# 发起对话请求
response = openai.ChatCompletion.create(model="gpt-4",messages=[{"role": "system", "content": "你是一个翻译助手"},{"role": "user", "content": "Hello, how are you?"}]
)# 输出回复
print(response.choices[0].message.content)
输出:
你好,你今天怎么样?
3. 上下文管理图解
- 每次请求需携带完整历史记录,服务器不保存状态。
三、Assistants API 详解
1. 核心组件
- Assistant:定义AI行为(模型、指令、工具)。
- Thread:保存对话状态(自动管理上下文)。
- Run:执行任务(可调用工具或处理文件)。
2. 代码示例
步骤1:创建Assistant
assistant = openai.Assistant.create(name="Data Analyst",instructions="你是一个数据分析助手,可以读取CSV文件并回答问题。",model="gpt-4-turbo",tools=[{"type": "code_interpreter"}]
)
步骤2:创建Thread并添加消息
thread = openai.Thread.create()# 上传文件(如CSV)
file = openai.File.create(file=open("data.csv", "rb"),purpose="assistants"
)# 添加用户消息(附带文件)
message = openai.Thread.Message.create(thread_id=thread.id,content="请分析这份销售数据,并给出总结。",file_ids=[file.id]
)
步骤3:执行Run
run = openai.Run.create(thread_id=thread.id,assistant_id=assistant.id
)# 检查执行状态
while run.status != "completed":run = openai.Run.retrieve(thread_id=thread.id,run_id=run.id)# 获取最终回复
messages = openai.Thread.Message.list(thread_id=thread.id)
print(messages.data[0].content)
输出:
销售数据显示,Q3季度同比增长20%,最畅销产品是XXX。
3. 工作流程图解
四、关键对比场景
1. 文件处理能力
API | 代码示例 | 输出 |
---|---|---|
Chat Completions | ❌ 无法直接处理文件 | - |
Assistants | file_ids=[uploaded_file.id] | 解析CSV/PDF内容并回答 |
2. 工具调用对比
Chat Completions API(需手动实现)
response = openai.ChatCompletion.create(model="gpt-4",messages=[...],functions=[{"name": "get_weather","parameters": {"location": "string"}}]
)
# 需自行处理函数调用逻辑
Assistants API(内置工具)
assistant = openai.Assistant.create(tools=[{"type": "code_interpreter"}]
)
# 自动执行代码并返回结果
五、如何选择?
1. 使用 Chat Completions API 当:
- 需要快速、低延迟的简单交互。
- 预算有限,无需复杂功能。
- 示例场景:客服机器人、文案生成。
2. 使用 Assistants API 当:
- 需处理用户上传文件(如数据分析)。
- 需要多轮对话记忆(如教学助手)。
- 示例场景:Excel自动化分析、技术文档问答。
六、总结
- 轻量级交互 → Chat Completions API(代码简单,成本低)。
- 复杂任务 → Assistants API(功能强大,支持长期记忆和工具调用)。
通过合理选择API,可以高效实现从简单对话到企业级AI代理的所有需求。