• メッセージ
  • マネージドエージェント
  • 管理

Search...
⌘K
CLI、SDK、ライブラリ
概要
ant CLI
クイックスタート認証オプションCLIの使用スクリプトと自動化
クライアントSDK
ミドルウェアPythonTypeScriptC#GoJavaPHPRuby
ライブラリと統合
Apple Foundation ModelsOpenAI SDK互換性

Log in
Apple Foundation Models
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Amazon Bedrock
  • Google Cloud's Vertex AI

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
CLI、SDK、ライブラリ/ライブラリと統合

Apple Foundation Models

Claude for Foundation Models Swiftパッケージを使用して、Foundation Modelsフレームワーク経由でAppleプラットフォーム上でClaudeを利用します。

Claude for Foundation Modelsは、AppleのFoundation Modelsフレームワークにおいて、Claudeをサーバーサイド言語モデルとして利用可能にするSwiftパッケージです。このパッケージはClaudeをフレームワークのLanguageModelプロトコルに準拠させるため、Appleのオンデバイスモデルで使用するのと同じLanguageModelSession APIで操作できます。respond(to:)、ストリーミング、ガイド付き生成、ツール呼び出しはすべて同じように動作します。

リクエストはアプリから直接Claude APIに送信されます。Appleはリクエスト経路に介在せず、プロンプトやレスポンスを見ることはありません。使用量は標準API料金でAnthropicアカウントに課金されます。Claudeを使用するタイミングとAppleのオンデバイスモデルを使用するタイミングはアプリ側で決定します。各セッションに使用したいモデルを渡してください。



ベータ版。 このパッケージは、OS 27ベータで導入されたFoundation Modelsのサーバーサイド言語モデルAPIを対象としています。一般提供開始前にAPIが変更される可能性があります。



Claude for Foundation Modelsは汎用のMessages APIクライアントではありません。公開されているインターフェースは、Foundation Modelsプロバイダーへの準拠と、それに到達するための設定型(ClaudeLanguageModel、ClaudeModel、AuthMode、ClaudeServerTool)です。他の言語でMessages APIに直接アクセスする場合は、クライアントSDKを参照してください。

要件

  • iOS 27、macOS 27、visionOS 27、またはwatchOS 27(すべてベータ版):Foundation Modelsフレームワークがサーバーサイド言語モデルをサポートするOSリリース
  • Xcode 27(ベータ版)
  • 開発用のClaude Consoleから取得したClaude APIキー。本番環境向けのオプションについては認証を参照してください。

パッケージのインストール

Package.swiftにパッケージを追加します。

dependencies: [
  .package(url: "https://github.com/anthropics/ClaudeForFoundationModels.git", from: "0.1.0")
]

またはXcodeで、File > Add Package Dependencies… を選択し、リポジトリURLを入力します。

次に、ターゲットの依存関係にClaudeForFoundationModelsを追加し、FoundationModelsと一緒にインポートします。

import FoundationModels
import ClaudeForFoundationModels

クイックスタート

ClaudeLanguageModelがエントリーポイントです。これをLanguageModelSessionに渡し、他のFoundation Modelsプロバイダーと同じようにセッションを使用します。

import FoundationModels
import ClaudeForFoundationModels

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(デフォルトはhttps://api.anthropic.com)、timeout、serverTools(サーバーサイドツールを参照)も受け付けます。

完全に動作するプログラムとして、リポジトリにはExamples/ClaudeExampleが含まれています。これは実行可能なコマンドラインターゲットで、チャットのターンをターミナルにストリーミングし、--searchフラグでそのターンのサーバーサイドウェブ検索を有効にできます。実行にはmacOS 27ホストが必要です。

モデルの選択

モデル識別子はClaudeModelの値です。コンパイル済みの定数を使用するか、まだコンパイルに含まれていないIDに対しては明示的なケイパビリティを指定して構築します(ケイパビリティを参照)。

ClaudeLanguageModel(name: .opus4_8, auth: auth)

定数はAPIモデルIDを反映しており(.opus4_8はclaude-opus-4-8)、各モデルのケイパビリティを保持しています。新しいモデルはパッケージリリースで新しい定数として提供されます。最新のリストはXcodeでClaudeModelを確認し、モデルの比較にはモデル概要を参照してください。

ケイパビリティ

各ClaudeModelは、受け付ける内容を宣言します。サンプリングパラメータ、エフォートレベル、アダプティブシンキング、構造化出力、画像入力などです。モデルが拒否するフィールドを送信するとハードエラーになるため、パッケージはこの情報を使用してどのリクエストフィールドを送信するかを決定します。定数は正しいケイパビリティを保持しています。コンパイルに含まれていないIDの場合は、モデルが受け付ける内容を宣言してください(推測する省略記法は意図的に用意されていません)。

let model = ClaudeModel(
  id: "claude-experimental-x",
  capabilities: .init(samplingParams: false, effortLevels: [.low, .high])
)
ClaudeLanguageModel(name: model, auth: auth)

エフォート

fixedEffort:を使用すると、すべてのリクエストに対してClaudeのエフォートレベルを固定できます。これはフレームワークのリクエストごとの推論ヒントよりも優先されます。また、フレームワークの推論レベルはhighまでしかないため、.xhighや.maxをリクエストする唯一の方法でもあります。エフォートが送信されない場合、APIはデフォルトでhighを使用します。

ClaudeLanguageModel(name: .opus4_8, auth: auth, fixedEffort: .xhigh)

レベルはモデルが受け付けるものでなければなりません。各ClaudeModelは、5つのレベル(low、medium、high、xhigh、max)のうちどれを受け付けるか(受け付ける場合)を宣言します。エフォートをまったく受け付けないモデルもあります。

Claudeとオンデバイスモデルの使い分け

Appleのオンデバイスモデルは高速でプライベート、オフラインでも動作しますが、軽量なタスク向けのサイズです。より大きなコンテキスト、最先端の推論、またはウェブ検索やコード実行などのサーバーサイドツールが必要な場合はClaudeにエスカレートしてください。どちらも同じLanguageModelSession APIを使用するため、model:引数を入れ替えるだけで切り替えられます。

認証

auth:パラメータで認証情報を設定します。

APIキー(開発用)

開発中はAPIキーを直接渡します。

ClaudeLanguageModel(name: .sonnet4_6, auth: .apiKey("YOUR_API_KEY"))


アプリにバンドルされたキーは出荷バイナリから抽出可能であり、抽出した人は誰でもあなたのアカウントに課金されるリクエストを実行できます。.apiKeyは開発時のみに使用し、リリース前にプロキシに切り替えてください。

プロキシ(本番用)

本番環境では、.proxiedを使用して自身のバックエンド経由でリクエストをルーティングします。baseURLにあるリレーがサーバーサイドでClaude APIの認証情報を追加するため、アプリにキーを含める必要がありません。指定したheadersはすべてのリクエストで送信されるため、プロキシは呼び出し元を認可できます。不要な場合は[:]を渡してください。

ClaudeLanguageModel(
  name: .sonnet4_6,
  auth: .proxied(headers: ["X-App-Token": "..."]),
  baseURL: URL(string: "https://api.yourapp.com/claude")!
)

プロキシは標準のMessages APIリクエストを受け取り、x-api-keyヘッダーを付加してhttps://api.anthropic.comに転送します。

ストリーミング

streamResponse(to:)はレスポンスを段階的に返します。各要素は差分ではなく、その時点までのレスポンスの累積スナップショットです。

let stream = session.streamResponse(to: "Summarize today's top science stories.")
for try await partial in stream {
  print(partial.content)
}

構造化出力

型に@Generableアノテーションを付け、generating:でリクエストします。モデルは構造化出力を通じてその型の値を返します。

@Generable
struct Trip {
  @Guide(description: "Destination city") var destination: String
  @Guide(description: "Length in days") var days: Int
}

let response = try await session.respond(to: "Plan a trip to Tokyo.", generating: Trip.self)
print(response.content.destination)

構造化出力には、それをケイパビリティに含むモデルが必要です(コンパイル済みの定数はすべて含んでいます)。選択したモデルが対応していない場合、パッケージは暗黙的に機能を低下させるのではなく、LanguageModelError.unsupportedGenerationGuideをスローします。

ツール使用

クライアントサイドツール

フレームワークのtools:配列はそのまま動作します。型をToolに準拠させてLanguageModelSessionに渡すと、Claudeがそれらを呼び出したときにフレームワークがデバイス上で実行します。Claudeでのツール使用を参照してください。

let session = LanguageModelSession(model: model, tools: [FindRestaurantsTool()])

サーバーサイドツール

サーバーツール(ウェブ検索、ウェブフェッチ、コード実行)はAnthropicのインフラストラクチャ上で単一のラウンドトリップ内で実行され、フレームワークがデバイス上で呼び出すものはありません。serverTools:でモデルごとに設定します。

let model = ClaudeLanguageModel(
  name: .sonnet4_6,
  auth: auth,
  serverTools: [
    .webSearch(maxUses: 5),
    .codeExecution,
  ]
)

.webSearchと.webFetchはオプションでallowedDomains、blockedDomains、maxUsesを受け付けます。サーバーツールのアクティビティは、トランスクリプト内にClaudeServerToolSegmentカスタムセグメントとして表示されます。



セッション型はApple側のものであるため、serverToolsはLanguageModelSessionではなくClaudeLanguageModelで設定します。会話ごとに異なるサーバーツールセットを使用するには、複数のClaudeLanguageModelインスタンスを構築してください。

画像

画像入力をケイパビリティに含むモデルは、フレームワークのビジョンケイパビリティを宣言します。フレームワークの標準セッションAPIを通じて画像コンテンツを渡すと、パッケージがそれをClaude APIの画像形式に変換します。画像の要件についてはビジョンを参照してください。

エラー処理

パッケージは、該当するものがある場合、Claude APIエラーをAppleのLanguageModelErrorケースにマッピングします。コンテキストウィンドウのオーバーフローは.contextSizeExceededとして、HTTP 429は.rateLimitedとして、設定されたタイムアウトを超えたリクエストは.timeoutとして表示されます。フレームワークに対応するものがないプロバイダーエラーはClaudeErrorとして表示されます。パターンマッチングでプロダクトフローを制御してください。

do {
  let response = try await session.respond(to: prompt)
  print(response.content)
} catch ClaudeError.missingCredential {
  // APIキーの入力を求めます。
} catch let error as LanguageModelError {
  // フレームワーク由来のエラー(レート制限、ガードレール、コンテキスト長、デコード)。
} catch {
  // トランスポートエラー。
}

一般的なパターンとしては、.rateLimitedをキャッチしてそのターンではSystemLanguageModelにフォールバックする、リクエストをキューに入れる、または再試行のアフォーダンスを表示するなどがあります。

機能サポート

このパッケージは、Foundation Modelsプロバイダープロトコルで表現できるMessages APIの機能を提供します。Appleのプロトコルで表現できない機能は利用できません。以下が含まれます。

  • プロンプトキャッシングの制御(パッケージはプロンプトキャッシングを自動的に適用します。キャッシュTTLとブレークポイントの配置は設定できません)
  • ストップシーケンス
  • バッチ処理
  • Files API
  • トークンカウント
  • ベータヘッダー

追加リソース

リファレンス内容
Apple Foundation ModelsドキュメントLanguageModelSession、@Generable、Transcript、Tool、およびその他のフレームワークインターフェース
GitHub上のClaudeForFoundationModelsソースコード、実行可能なサンプル、イシュートラッカー
Claude APIリファレンス基盤となるMessages API

このパッケージはApache 2.0ライセンスの下で提供されています。バグ報告はGitHubのイシューで歓迎します。ベータ期間中は外部からのプルリクエストは受け付けていません。

Was this page helpful?

  • 要件
  • パッケージのインストール
  • クイックスタート
  • モデルの選択
  • ケイパビリティ
  • エフォート
  • Claudeとオンデバイスモデルの使い分け
  • 認証
  • APIキー(開発用)
  • プロキシ(本番用)
  • ストリーミング
  • 構造化出力
  • ツール使用
  • クライアントサイドツール
  • サーバーサイドツール
  • 画像
  • エラー処理
  • 機能サポート
  • 追加リソース