文章目录
-
- 一、核心区别概览
- [二、Chat Completions API 详解](#二、Chat Completions API 详解)
-
- [1. 核心功能](#1. 核心功能)
- [2. 代码示例](#2. 代码示例)
- [3. 上下文管理图解](#3. 上下文管理图解)
- [三、Assistants API 详解](#三、Assistants API 详解)
-
- [1. 核心组件](#1. 核心组件)
- [2. 代码示例](#2. 代码示例)
- [3. 工作流程图解](#3. 工作流程图解)
- 四、关键对比场景
-
- [1. 文件处理能力](#1. 文件处理能力)
- [2. 工具调用对比](#2. 工具调用对比)
-
- [Chat Completions API(需手动实现)](#Chat Completions API(需手动实现))
- [Assistants API(内置工具)](#Assistants API(内置工具))
- 五、如何选择?
-
- [1. 使用 **Chat Completions API** 当:](#1. 使用 Chat Completions API 当:)
- [2. 使用 **Assistants 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. 代码示例
python
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. 上下文管理图解
User Server messages=[{"role":"user", "content":"Hello"}] {"content":"Hi!"} messages=[{"role":"user", "content":"Hello"}, {"role":"assistant", "content":"Hi!"}, {"role":"user", "content":"How are you?"}] {"content":"I'm good!"} User Server
- 每次请求需携带完整历史记录,服务器不保存状态。
三、Assistants API 详解
1. 核心组件
- Assistant:定义AI行为(模型、指令、工具)。
- Thread:保存对话状态(自动管理上下文)。
- Run:执行任务(可调用工具或处理文件)。
2. 代码示例
步骤1:创建Assistant
python
assistant = openai.Assistant.create(
name="Data Analyst",
instructions="你是一个数据分析助手,可以读取CSV文件并回答问题。",
model="gpt-4-turbo",
tools=[{"type": "code_interpreter"}]
)
步骤2:创建Thread并添加消息
python
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
python
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. 工作流程图解
是 否 创建Assistant 定义模型/工具 创建Thread 添加消息+文件 启动Run 执行工具? 运行代码解释器 生成回复 返回结果
四、关键对比场景
1. 文件处理能力
API | 代码示例 | 输出 |
---|---|---|
Chat Completions | ❌ 无法直接处理文件 | - |
Assistants | file_ids=[uploaded_file.id] |
解析CSV/PDF内容并回答 |
2. 工具调用对比
Chat Completions API(需手动实现)
python
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[...],
functions=[{
"name": "get_weather",
"parameters": {"location": "string"}
}]
)
# 需自行处理函数调用逻辑
Assistants API(内置工具)
python
assistant = openai.Assistant.create(
tools=[{"type": "code_interpreter"}]
)
# 自动执行代码并返回结果
五、如何选择?
1. 使用 Chat Completions API 当:
- 需要快速、低延迟的简单交互。
- 预算有限,无需复杂功能。
- 示例场景:客服机器人、文案生成。
2. 使用 Assistants API 当:
- 需处理用户上传文件(如数据分析)。
- 需要多轮对话记忆(如教学助手)。
- 示例场景:Excel自动化分析、技术文档问答。
六、总结
- 轻量级交互 → Chat Completions API(代码简单,成本低)。
- 复杂任务 → Assistants API(功能强大,支持长期记忆和工具调用)。
通过合理选择API,可以高效实现从简单对话到企业级AI代理的所有需求。