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
  • 项目
  • 项目
  • 项目