jamesrochabrun/SwiftOpenAI
The most complete open-source Swift package for interacting with OpenAI's public API.
SwiftOpenAI – Swift 原生 OpenAI API 客户端
这是什么
SwiftOpenAI 是一个 Swift 包,封装了所有公开的 OpenAI 端点(聊天、音频、图像、嵌入、微调等)以及一些兼容服务,如 Azure OpenAI、Anthropic、Gemini、Ollama、Groq、xAI、OpenRouter、DeepSeek 和 AIProxy。它让 iOS、macOS、watchOS 和 Linux 应用可以使用原生 Swift 类型、async/await,以及内置的流式传输、函数调用、视觉和新的 Realtime 语音聊天 API 支持来调用 API。
适合谁
- 正在构建 AI 驱动应用 的 Swift 开发者——聊天助手、语音代理、图像生成器、转录工具等。
- 需要 类型安全、async-first 包装器,而不是手动构建 HTTP 请求的团队。
- 在 Apple 平台或 Linux 上运行的项目(例如 Vapor 后端)。
主要功能(根据 README 所述)
| 领域 | 包提供的内容 |
|---|---|
| 核心 API 覆盖 | 所有 OpenAI 端点:音频(转录、翻译、语音合成、Realtime)、聊天(函数调用、结构化输出、视觉)、嵌入、微调、批量、文件、图像、模型、内容审核。 |
| Beta/Assistants | Assistant 对象、线程、消息、运行、流式增量、向量存储、代理——对应 OpenAI 的 Assistants API。 |
| Realtime 语音 | 基于 WebSocket 的低延迟双向音频、VAD、工具调用、自定义语音选择、可配置的音频格式。 |
| 流式传输 | 服务器发送事件风格的流式传输,用于聊天、音频、Assistants 等,以异步序列呈现。 |
| 跨平台 | 支持 iOS 15+、macOS 13+、watchOS 9+ 和 Linux(使用 AsyncHTTPClient 以避免 URLSession 的错误)。 |
| OpenAI 兼容提供者 | 通过 OpenAIServiceFactory 提供 Azure OpenAI、Anthropic、Gemini、Ollama、Groq、xAI、OpenRouter、DeepSeek、AIProxy 和自定义 URL 的辅助初始化器。 |
| 错误处理 | APIError.responseUnsuccessful 提供 HTTP 状态码(例如 429 速率限制)。 |
| 安装 | Swift Package Manager——通过 Xcode 或 swift package 添加。README 警告 Xcode 的默认上限版本,以及如何正确设置。 |
| CLI 和 MCP | 单独的仓库提供命令行界面和构建于核心库之上的“MCP”(可能是 macOS 兼容包)。 |
如何使用(README 的快速示例)
import SwiftOpenAI
let apiKey = "sk‑…"
let service = OpenAIServiceFactory.service(apiKey: apiKey)
let chatParams = ChatCompletionParameters(
messages: [.init(role: .user, content: .text("Hello, world!"))],
model: .gpt4o)
do {
let response = try await service.startChat(parameters: chatParams)
print(response.choices.first?.message.content?.text ?? "no reply")
} catch APIError.responseUnsuccessful(let desc, let code) {
print("Error \(code): \(desc)")
}
同样的模式适用于音频转录、语音合成、图像生成等,只需替换参数结构并在 service 上调用对应的方法。
何时选择此库
- 你已经在使用 Swift,并想要一个 单一依赖,能跟上 OpenAI 不断演进的 API 表面。
- 你需要 流式传输 或 Realtime 语音 支持,而许多通用 HTTP 包装器缺乏这些功能。
- 你的应用目标是 Apple 平台,且你偏好原生 async/await 而非 Combine 或回调。
- 你也希望能灵活地将客户端指向 Azure 或其他 OpenAI 兼容后端,而无需更改代码。
需要注意的事项
- README 提到 beta Assistants API——这些类型可能会在 OpenAI 最终确定规范时改变。
- Realtime 语音需要 AVFoundation 和麦克风权限;在 Linux 上不可用。
- 包版本可能超过 Xcode 的默认上限(2.0.0),因此添加包时必须手动设置下限。
以上所有信息直接取自仓库的 README;未假设任何额外功能。
相关
- 项目
- Dispatch
- 项目
- 项目
- 项目