OpenAI API(1)补全Responses(Chat Completions)API和记忆Assistants API对比分析

文章目录

    • 一、核心区别概览
    • [二、Chat Completions API 详解](#二、Chat Completions API 详解)
      • [1. 核心功能](#1. 核心功能)
      • [2. 代码示例](#2. 代码示例)
      • [3. 上下文管理图解](#3. 上下文管理图解)
    • [三、Assistants API 详解](#三、Assistants API 详解)
    • 四、关键对比场景
      • [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代理的所有需求。

相关推荐
SQDN11 天前
Codex CLI 报 wire_api=“chat“ 不再支持?改为 Responses 并验证 /v1/responses
openai·开发工具·codex·responses api·config.toml
林小果123 天前
GPT-5.6 Luna API 价格详解:1 亿缓存 Token 成本、LinkAGI 接入与 Codex 配置
ai编程·openai api·codex·api中转·prompt caching·gpt-5.6·linkagi
行者-全栈开发3 个月前
Spring AI + GPT-4 实战:API Key 安全管理与企业级集成方案(避坑指南)
openai api·错误处理·密钥管理·spring ai·企业级开发·请求封装·api 安全
92year3 个月前
GPT-5.5 发布5天,我用它的 Responses API 跑了一遍 Agentic Coding
openai·ai编程·responses api·agentic coding·gpt-5.5
johnny2335 个月前
API统一管控平台:new-api、one-api、UniAPI、
openai api
营赢盈英2 年前
OpenAI GPT-3 API: What is the difference between davinci and text-davinci-003?
ai·gpt-3·openai·openai api
营赢盈英2 年前
OpenAI converting API code from GPT-3 to chatGPT-3.5
人工智能·chatgpt·gpt-3·php·openai api
营赢盈英2 年前
how can I train a OpenAI fine tuned model with more prompts
人工智能·深度学习·ai·openai api
营赢盈英2 年前
Why is OpenAI image generation Api returning 400 bad request in Unity?
ai·json·openai api·post·unitywebrequest·unitygameengine