jamesrochabrun/SwiftOpenAI

The most complete open-source Swift package for interacting with OpenAI's public API.

SwiftOpenAI – OpenAI API の Swift ネイティブクライアント

これは何か

SwiftOpenAI は、すべての公開 OpenAI エンドポイント(チャット、音声、画像、埋め込み、ファインチューニングなど)と、Azure OpenAI、Anthropic、Gemini、Ollama、Groq、xAI、OpenRouter、DeepSeek、AIProxy などの互換サービスをラップする Swift パッケージです。iOS、macOS、watchOS、Linux アプリが、ネイティブな Swift 型、async/await、およびストリーミング、関数呼び出し、ビジョン、新しい Realtime 音声チャット API の組み込みサポートを使用して API を呼び出せるようにします。

対象者

  • AI 対応アプリ を構築している Swift 開発者 – チャットアシスタント、音声エージェント、画像生成、文字起こしツールなど。
  • HTTP リクエストを手動で作成する代わりに、型安全で async ファースト のラッパーを必要とするチーム。
  • Apple プラットフォームまたは Linux で実行されるプロジェクト(例:Vapor バックエンド)。

主な機能(README に記載されている内容)

領域 パッケージが提供するもの
コア API カバレッジ すべての OpenAI エンドポイント:音声(文字起こし、翻訳、音声合成、Realtime)、チャット(関数呼び出し、構造化出力、ビジョン)、埋め込み、ファインチューニング、バッチ、ファイル、画像、モデル、モデレーション。
Beta/Assistants Assistant オブジェクト、スレッド、メッセージ、実行、ストリーミングデルタ、ベクターストア、エージェント – OpenAI の Assistants API をミラーリング。
Realtime 音声 WebSocket ベースの低遅延双方向音声、VAD、ツール呼び出し、カスタム音声選択、設定可能な音声フォーマット。
ストリーミング チャット、音声、Assistants などのためのサーバー送信イベントスタイルのストリーミングを、非同期シーケンスとして公開。
クロスプラットフォーム iOS 15+、macOS 13+、watchOS 9+、Linux で動作(URLSession のバグを避けるために AsyncHTTPClient を使用)。
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 サーフェスに追従する 単一の依存関係 を望む場合。
  • 多くの一般的な HTTP ラッパーに欠けている ストリーミング または Realtime 音声 サポートが必要な場合。
  • アプリが Apple プラットフォーム をターゲットにしており、Combine やコールバックではなくネイティブの async/await を好む場合。
  • コードを変更せずにクライアントを Azure または他の OpenAI 互換バックエンド に向ける柔軟性も欲しい場合。

注意すべき点

  • README は ベータ版 Assistants API に言及しています – OpenAI が仕様を最終決定するにつれて、これらの型は変更される可能性があります。
  • Realtime 音声には AVFoundation とマイク権限が必要です。Linux では利用できません。
  • パッケージのバージョンが Xcode のデフォルトの上限(2.0.0)を超える可能性があるため、パッケージを追加する際に下限を手動で設定する必要があります。

上記のすべての情報はリポジトリの README から直接取得したものであり、追加の機能は想定されていません。

関連

  • プロジェクト
  • Dispatch
  • プロジェクト
  • プロジェクト
  • プロジェクト