当前位置: 首页 > 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.lryc.cn/news/595352.html

相关文章:

  • Java 大视界 -- 基于 Java 的大数据分布式计算在地球物理勘探数据处理与地质结构建模中的应用(356)
  • 16 BTLO 蓝队靶场 Drill Down 解题记录
  • 前缀和题目:元素和小于等于阈值的正方形的最大边长
  • 计算机发展史:互联网时代的万物互联与全球变革
  • MySQL 17 如何正确地显示随机消息?
  • 【爬虫】06 - 自动化爬虫selenium
  • 元宇宙与游戏:虚实交融的数字文明新纪元
  • ni-app 对鸿蒙的支持现状
  • 深入浅出 BeanUtil.copyProperties:Java 属性复制的利器与避坑指南
  • compser json和lock的作用区别
  • 基于ArcFace损失函数训练的人脸特征提取模型
  • PDF 表单字段属性详解
  • Java学习----NIO模型
  • 识别PDF中的二维码
  • 软件中如何实现自动记忆上一次选的打印机(Python示例)
  • 数据结构 之 【排序】(直接插入排序、希尔排序)
  • 二分查找-35.搜索插入位置-力扣(LeetCode)
  • C语言-字符串数组
  • Vue过度与动画效果
  • FastAPI 中,数据库模型(通常使用 SQLAlchemy 定义)和接口模型(使用 Pydantic 定义的 schemas)的差异
  • Excel函数 —— TEXTJOIN 文本连接
  • 系统分析师-计算机系统-操作系统-存储器管理设备管理
  • LeafletJS 插件开发:扩展自定义功能
  • Java 实现 TCP 一发一收通信
  • 力扣面试150题--搜索二维矩阵
  • A316-Mini-V1:超小尺寸USB高清音频解码器模组技术探析
  • 解决 Ant Design v5.26.5 与 React 19.0.0 的兼容性问题
  • macOS 上安装 Kubernetes(k8s)
  • React 中使用immer修改state摆脱“不可变”
  • Ubuntu安装k8s集群入门实践-v1.31