SwiftOpenAI Response API实战:比Chat Completions更强大的新一代API
【免费下载链接】SwiftOpenAIThe most complete open-source Swift package for interacting with OpenAI's public API.项目地址: https://gitcode.com/gh_mirrors/sw/SwiftOpenAI
SwiftOpenAI是目前最完整的开源 Swift 包,覆盖 OpenAI 全部公共 API 端点。而 OpenAI 的Response API正是取代 Chat Completions 的新一代接口:它会话有状态、内置工具开箱即用、流式事件更丰富。本文将带你用 SwiftOpenAI 快速上手 Response API,三步完成第一次调用,并掌握多轮对话与实时流式输出。
为什么该从 Chat Completions 升级到 Response API?
很多开发者还在用 Chat Completions 手动维护对话历史、拼接收工具结果。Response API 从设计上解决了这些痛点:
| 对比维度 | Chat Completions | Response API |
|---|---|---|
| 会话状态 | 无状态,需自己携带全部历史消息 | 传入previousResponseId即可续接对话 |
| 内置工具 | 仅支持自定义函数调用 | 原生支持网络搜索、文件搜索、图像生成等 |
| 流式事件 | 文本增量为主 | 40+ 种结构化事件(推理摘要、工具调用、文本增量等) |
| 模型支持 | GPT-4o 等 | 原生支持 GPT-5 系列(gpt-5 / gpt-5-mini / gpt-5-nano) |
💡 简单说:Response API 让你把"管理对话"的脏活累活交给 OpenAI 服务端,代码量更少、上下文更省 token。
安装 SwiftOpenAI 并初始化服务
SwiftOpenAI 通过 Swift Package Manager 一键安装,支持 iOS 15+、macOS 13+、watchOS 9+ 与 Linux:
- 在 Xcode 中打开
File → Add Package Dependency - 输入仓库地址(可从 gitcode 镜像克隆:
git clone https://gitcode.com/gh_mirrors/sw/SwiftOpenAI) - 选择版本号,点击
Add Package
初始化只需两行代码:
import SwiftOpenAI let service = OpenAIServiceFactory.service(apiKey: "your_api_key")服务工厂的便捷初始化方法定义在 OpenAIServiceFactory.swift,它还内置了 Azure、本地模型(Ollama 等 OpenAI 兼容服务)的配置支持。
第一步:发送你的第一个 Response API 请求
Response API 的请求参数由 ModelResponseParameter.swift 定义,核心只有input和model两个必填项:
let parameters = ModelResponseParameter( input: .string("What is the capital of France?"), model: .gpt5 ) let response = try await service.responseCreate(parameters) print(response.outputText ?? "")返回的 ResponseModel 包含id(后续多轮对话的关键)、status、output等字段,还贴心提供了outputText便捷属性——聚合所有文本输出,无需手动遍历。
服务层的四个核心方法都在 OpenAIService.swift:
responseCreate— 创建响应(同步)responseCreateStream— 创建流式响应responseModel(id:)— 按 ID 检索历史响应responseModelStream— 流式检索
多轮对话秘诀:用 previousResponseId 免维护历史
传统做法是把整段对话历史塞进请求,token 消耗巨大。Response API 只需记住上一次响应的 ID:
// 第一次对话 let first = try await service.responseCreate(parameters) let previousID = first.id // 第二轮:自动携带上下文,无需重传历史 let nextParams = ModelResponseParameter( input: .string("What else is interesting about that country?"), model: .gpt5, previousResponseId: previousID ) let second = try await service.responseCreate(nextParams)这个字段在参数定义中的注释写得很直白(ModelResponseParameter.swift):
The unique ID of the previous response to the model. Use this to create multi-turn conversations.
⚠️ 小贴士:配合instructions使用previousResponseId时,上一轮的系统指令不会自动继承——这让你可以灵活地在对话中途切换人设。
实时流式输出:让文字像打字机一样涌现
对聊天类应用,流式体验是标配。SwiftOpenAI 的 ResponseStreamEvent.swift 把 SSE 事件全部类型化封装,涵盖 40 多种事件:
let stream = try await service.responseCreateStream(parameters) for try await event in stream { switch event { case .outputTextDelta(let delta): // 文本增量到达,实时刷新 UI print(delta.delta, terminator: "") case .responseCompleted(let completed): print("\nResponse ID: \(completed.response.id)") case .error(let error): print(error.message) default: break } }📱 项目里就有一个完整的 SwiftUI 流式聊天示例 ResponseStreamProvider.swift,它演示了真实产品级用法:
- 用
previousResponseId自动续接多轮对话(第 130 行) - 开启图像生成工具
tools: [.imageGeneration(.init())](第 131 行) - 通过
Task支持中途取消流(stopStreaming)
UI 层代码见 ResponseStreamDemoView.swift,可以直接运行体验效果。
内置工具:网络搜索与图像生成零配置
Chat Completions 时代,联网搜索要自己接第三方接口;Response API 只需一行参数声明(参考 README.md 的官方示例):
let parameters = ModelResponseParameter( input: .string("What was a positive news story from today?"), model: .gpt4o, tools: [.webSearchPreview] )图像生成同样开箱即用,示例项目中的流式对话就启用了它。此外还支持:
- 自定义函数调用:与 Chat Completions 相同的工具格式,无缝迁移
- 文件搜索:对接向量存储,让模型"读懂"你的文档库
- 推理配置:
reasoning: Reasoning(effort: "high")控制 o 系列推理力度
项目文件地图:Response API 相关代码导航
| 模块 | 文件位置 |
|---|---|
| 请求参数定义 | ModelResponseParameter.swift |
| 输入类型(文本/数组) | InputType.swift |
| 服务接口(4 个核心方法) | OpenAIService.swift |
| 响应对象模型 | ResponseModel.swift |
| 流式事件(40+ 种) | ResponseStreamEvent.swift |
| 完整流式聊天示例 | ResponseAPIDemo/ |
| 单元测试 | ModelResponseParameterTests.swift |
官方文档的详细用法说明也收录在 README.md 的 "Response" 章节。
小结
Response API 是 OpenAI 面向 Agent 时代的战略接口,而 SwiftOpenAI 已经把它的能力完整搬进了 Swift 世界。三句话总结今天的收获:
- 入门极简:
ModelResponseParameter+responseCreate,两行代码发请求 - 会话省事:
previousResponseId一个字段搞定多轮对话状态 - 流式强大:
responseCreateStream+ 类型化事件,聊天体验丝滑涌现
如果你的项目还在 Chat Completions 上手动维护历史消息,现在就是最好的迁移时机 🚀
【免费下载链接】SwiftOpenAIThe most complete open-source Swift package for interacting with OpenAI's public API.项目地址: https://gitcode.com/gh_mirrors/sw/SwiftOpenAI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考