概要
- Claude for Foundation Models はAppleのFoundation Modelsフレームワーク向けSwiftパッケージ
- LanguageModelSession API でApple純正モデルと同様にClaudeを利用可能
- Anthropic API への直接リクエスト、Appleは通信内容を閲覧不可
- サーバーサイド専用、iOS/macOS/watchOS/visionOS 27(β)が対象
- APIキー管理やツール利用、モデル切替、エラー処理方法も網羅
Claude for Foundation Models 概要
- Claude for Foundation Models は、AppleのFoundation Modelsフレームワーク上で サーバーサイド言語モデル としてClaudeを利用するためのSwiftパッケージ
- LanguageModelプロトコル に準拠しており、 LanguageModelSession API (respond(to:), streaming, tool呼び出し等)をそのまま利用可能
- リクエストは直接Anthropic API に送信され、Appleは内容を一切取得しない設計
- 利用料金 はAnthropicの標準API料金体系で、アプリ側でAppleモデルとの使い分けが可能
- ベータ版 であり、OS 27ベータ(iOS, macOS, visionOS, watchOS)とXcode 27(β)が必要
インストールとセットアップ
- Package.swift のdependenciesに追加
- .package(url: "https://github.com/anthropics/ClaudeForFoundationModels.git", from: "0.1.0")
- Xcode の場合、「File > Add Package Dependencies…」でリポジトリURLを指定
- ターゲットのdependenciesに追加し、 import FoundationModels と import ClaudeForFoundationModels を記述
クイックスタート
- ClaudeLanguageModel を作成し、 LanguageModelSession に渡して利用
- 例:
let model = ClaudeLanguageModel( name: .sonnet4_6, auth: .apiKey(ProcessInfo.processInfo.environment["ANTHROPIC_API_KEY"] ?? "") ) let session = LanguageModelSession(model: model) let response = try await session.respond(to: "Plan a 4-day trip to Buenos Aires.") print(response.content)
- 例:
- baseURL や timeout、 serverTools も指定可能
モデル選択とカスタマイズ
- ClaudeModel で利用モデルを指定
- 例: .opus4_8はclaude-opus-4-8を指す
- Capabilities (サンプリングパラメータ、effort、画像入力等)はモデルごとに定義
- 未登録モデル もcapabilitiesを明示すれば利用可能
Effortレベル指定
- fixedEffort: でリクエストごとにClaudeのeffortレベルを指定可能(low, medium, high, xhigh, max)
- モデルが受け入れるレベルのみ指定可能
Claudeとオンデバイスモデルの使い分け
- オンデバイスモデル は高速・プライバシー重視・オフライン対応
- Claude は大規模文脈・高度推論・サーバーサイドツール利用時に推奨
- LanguageModelSession API 共通なので、model引数を差し替えるだけで切替可能
認証方式
- 開発時 はAPIキーを直接指定(.apiKey)
- 本番運用 は独自バックエンド経由で認証情報を隠蔽(.proxied)
- 例:
ClaudeLanguageModel( name: .sonnet4_6, auth: .proxied(headers: ["X-App-Token": "..."]), baseURL: URL(string: "https://api.yourapp.com/claude")! )
- 例:
ストリーミング応答
- streamResponse(to:) で応答を逐次取得
- 各要素は累積スナップショット
構造化出力
- @Generable を付与した型で generating: を利用
- モデルが対応していない場合は LanguageModelError.unsupportedGenerationGuide をthrow
ツール利用
- クライアントサイドツール はToolプロトコル準拠型を渡すだけで利用可能
- サーバーサイドツール (web search/code execution等)はserverTools:でモデルごとに設定
- 複数ClaudeLanguageModelインスタンスで会話ごとにツールセットを切替
画像入力
- 画像入力対応モデル はvision capabilityを宣言
- 標準API経由で画像データ送信、Claude API形式へ自動変換
エラー処理
- Claude APIエラー はAppleの LanguageModelError にマッピング
- 例: context-window overflowは.contextSizeExceeded、HTTP 429は.rateLimited
- ClaudeError で独自エラーも提供
- .rateLimited 時はSystemLanguageModelへのフォールバック等が可能
サポート外機能
- プロンプトキャッシュ制御 (TTLやbreakpoint設定不可)
- ストップシーケンス、 バッチ処理、 Files API、 トークンカウント、 Betaヘッダー 未対応
参考リソース
- Apple Foundation Modelsドキュメント、 ClaudeForFoundationModels GitHub (例・イシュートラッカー含む)
- Claude APIリファレンス
- Apache 2.0ライセンス、バグ報告はGitHub Issueへ(β期間中は外部PR非対応)