当前位置: 首页 > news >正文

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 APIAssistants 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. 上下文管理图解

UserServermessages=[{"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!"}UserServer
  • 每次请求需携带完整历史记录,服务器不保存状态。

三、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. 工作流程图解

创建Assistant
定义模型/工具
创建Thread
添加消息+文件
启动Run
执行工具?
运行代码解释器
生成回复
返回结果

四、关键对比场景

1. 文件处理能力

API代码示例输出
Chat Completions❌ 无法直接处理文件-
Assistantsfile_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代理的所有需求。

http://www.dtcms.com/a/291067.html

相关文章:

  • 牛客周赛 Round 101(题解的token计算, 76修地铁 ,76选数,76构造,qcjj寄快递,幂中幂plus)
  • 使用pymongo进行MongoDB的回收
  • JAVA高级第七章输入和输出处理(二)
  • 前缀和题目:元素和小于等于阈值的正方形的最大边长
  • PostgreSQL高可用架构Repmgr部署流程
  • 按需搭建web网站
  • 【2025】Vscode Python venv虚拟环境显示“激活终端”成功但是在终端中“并没有激活成功”,pip安装还是会安装到全局环境中的解决方法;
  • CataPro本地安装教程--No GPU--cpu only模式--网络资料整理
  • Android Navigation 组件:简化应用导航的利器
  • [硬件电路-67]:模拟器件 - 高输入阻抗、低输出阻抗本质:最小化能量的汲取,最大化能量传递
  • Dynamics 365 Contact Center是什么
  • NX636NX644美光固态闪存NX663NX665
  • MySQL笔记4
  • 行业实例-国产中望3D曲面建模如何实现电脑精准+协同设计
  • AI绘画生成东汉末年黄忠全身像提示词
  • 第二阶段-第二章—8天Python从入门到精通【itheima】-134节(SQL——DQL——分组聚合)
  • ansible批量部署zabbix客户端
  • 2024年ASOC SCI2区TOP,基于Jaya算法的粒子滤波器用于非线性模型贝叶斯更新,深度解析+性能实测
  • (十九)深入了解 AVFoundation-编辑:使用 AVMutableVideoComposition 实现视频加水印与图层合成(上)——理论篇
  • 【每日算法】专题四_前缀和
  • 算法-比较排序
  • Redis入门教程(一):基本数据类型
  • ppp实验
  • BEVformer个人理解与解读
  • 2025暑期—02卷积与滤波-边缘检测
  • 180页PPT烟草集团物流数字化架构设计咨询指南
  • 牛客网题解 | 单词识别
  • 宝塔访问lnmp项目,跳转不到项目根目录问题解决
  • Spring关于依赖注入的几种方式和Spring配置文件的标签
  • 大模型后训练——SFT实践