利用可否とプラットフォームの動作
getAvailability() の状態値とプラットフォーム固有の動作を説明します。セットアップ、Androidフォールバックモデル、チャット、画像、イベントも参照してください。
利用可否
getAvailability() は意味を持つ status を返します。
| 状態 | 意味 |
|---|---|
available |
テキストモデルが生成可能です。 |
device-not-eligible |
デバイスまたはOSがテキストモデル非対応です。iOSはこの理由を返しますが、Androidの FeatureStatus.UNAVAILABLE は理由を公開しないため unavailable に対応します。 |
not-enabled |
対応デバイスですが利用者がオンデバイスAIを有効にしていません。主にiOSで報告されます。 |
downloadable |
モデルをダウンロードできます(Android/Chrome)。 |
downloading |
モデルのダウンロード中です(Android/Chrome)。 |
not-ready |
モデルは存在しますが初期化中です。 |
unavailable |
その他の理由で利用できません。 |
availabilityChange(または非推奨の systemAvailabilityChange)を購読すると、登録中に更新を受け取れます。Androidではリスナー有効中にポーリングします。
非推奨の systemAvailability() と systemAvailabilityChange は旧4値の契約を保ちます。downloading と not-ready は notready、device-not-eligible・not-enabled・unavailable は unavailable にまとめられます。available と downloadable はそのままです。
プラットフォームの動作
iOS
- テキストLLMにはiOS 26とApple Intelligenceが必要です。26未満では
device-not-eligibleを返します。Apple Intelligenceに対応するiPhone(iPhone 15 Pro以降など)・iPadは限られます。Appleの案内を確認してください。 - チャットはFoundation Modelsのネイティブtranscriptを使い、状態は
LanguageModelSessionに保持します。生成前にネイティブのcontextSizeに対してinstructions、現在のprompt、出力余裕を含む保守的な文字数予算を適用します。制限を超えると古い完全なprompt/responseの組を除去し、instructionsを保持してsessionを再作成します。 warmup({ chatId, promptPrefix })はcreateChat()で作成した特定チャットを予熱します。cancelGeneration()はチャットの実行中Taskをキャンセルします。生成PromiseはLOCAL_LLM_GENERATION_CANCELLEDで拒否され、すでにtextChunkで表示した文字列はUIに残ります。- 画像解析・生成は画像を参照してください。
Android
- 履歴はプラグインのメモリ内でuser/assistantの組として管理し、
history.maxMessages(既定20)とhistory.maxCharacters(既定12000)で削減します。Gemini NanoはML KitのcountTokens()でcontextに収めます。LiteRT-LM 0.16.1には安定したtoken計数APIがないため、1文字1tokenの保守的推定とprompt・画像の予約分を使います。両方とも古い完全なターンを削除し、別管理のsystem instructionsは削除しません。履歴はアプリ再起動をまたいで保持されません。 warmup()はモデル全体を予熱し、chatIdとpromptPrefixを無視します。- キャンセルはbest-effortです。コルーチンを止めますが、その前にML Kitが部分出力を送る場合があります。キャンセル検知時に
LOCAL_LLM_GENERATION_CANCELLEDで拒否します。 - 非対応の
GenerationOptionsは黙って補正せずLOCAL_LLM_INVALID_OPTIONSになります。maxOutputTokensは1..min(device token limit, 4096)、省略時は256です。 - ネイティブのモデル操作は直列です。mutexがGemini Nano/LiteRT-LMの生成、設定、warmup、download、teardownを保護し、異なるチャットの同時生成はキューに入ります。
- API 29以降のすべての端末がGemini Nanoに対応するわけではありません。ML Kitの対応機器を確認してください。
- Gemini Nano非対応時はLiteRT-LMを明示設定できます。初期化後は
getAvailability()がavailableを返します。Androidフォールバックモデルを参照してください。 - 画像解析のバックエンド選択は画像で説明します。
- バックグラウンドではオンデバイスモデルを使えず、推論リクエストは失敗します。
- AICoreにはアプリ単位の推論quotaがあります。過剰なリクエストではbusy/quotaエラーになるため、指数バックオフを検討してください。
Web(Chrome)
テキストの利用可否はChromeの available、downloadable、downloading、unavailable をそのまま対応づけます。APIが無い場合は unavailable です。利用可否イベントはバックグラウンドポーリングではなく、プラグインの確認とセッション作成/ダウンロードで観測した変化を反映します。画像解析は現時点で unavailable を報告します。セットアップ、対応メソッド、生成制御はWeb(Chrome)を参照してください。