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代理的所有需求。

相关推荐
营赢盈英10 个月前
OpenAI GPT-3 API: What is the difference between davinci and text-davinci-003?
ai·gpt-3·openai·openai api
营赢盈英10 个月前
OpenAI converting API code from GPT-3 to chatGPT-3.5
人工智能·chatgpt·gpt-3·php·openai api
营赢盈英10 个月前
how can I train a OpenAI fine tuned model with more prompts
人工智能·深度学习·ai·openai api
营赢盈英10 个月前
Why is OpenAI image generation Api returning 400 bad request in Unity?
ai·json·openai api·post·unitywebrequest·unitygameengine
营赢盈英10 个月前
Azure OpenAI and token limit
ai·chatgpt·asp.net·azure·openai api
营赢盈英10 个月前
TypeError: expected string or buffer - Langchain, OpenAI Embeddings
langchain·azure·embeddings·openai api·rag
营赢盈英10 个月前
Trying to install openai in chaquopy in android studio but getting build failed
android·ide·ai·android studio·openai api·chaquopy
营赢盈英10 个月前
Azure web app has no access to openai private endpoint in virtual network
azure·openai api·web app·webapp·webapps·virtual network
营赢盈英10 个月前
How to handle the response OpenAI Text-To-Speech API in Node.js?
ai·node.js·openai·openai api·response