ML Kit のAgentic Workflows(com.google.mlkit:genai-agent、アルファ版)を使用すると、Gemini Nano と Android AICore システム サービスを利用して、自律型のマルチターン オンデバイス会話機能 を構築できます。
GenerativeModel クラス(直接モデルアクセス)をベースに構築された AgentRunner クラスは、アプリ内で直接、目標指向の完全なエージェント ループを自動化します。コンテキストの観察、ユーザー入力の推論、型付き Kotlin ツールによるアクション、終了条件が満たされるまでのフィードバックの評価を行います。
一般的なエージェント パターン
オンデバイスのエージェント ワークフローは、ユーザーの意図を構造化されたアプリ アクションに変換する、焦点を絞った決定論的な推論ループ向けに最適化されています。一般的なパターンには、次のようなものがあります。
パターン |
例 |
アプリ内コンバージョンの実行とショートカット |
自然言語リクエストを特定のアプリコマンドに変換する。たとえば、編集キャンバスで写真の調整を適用する、再生設定を変更する、アプリの設定を切り替えるなどです。 |
構造化ルックアップとローカル計算 |
ID(注文ステータスやアカウント残高など)で特定のレコードを取得し、複数ステップの数学計算(ローンの償却やフィットネス指標など)を実行する。 |
会話型フィルタリングとキュレーション |
ローカルアプリのアイテムをインタラクティブにクエリして絞り込む(ローカルのタスクリストを検索する、プレイリストをフィルタする、ユーザーの条件に基づいてカタログ アイテムを並べ替えるなど)。 |
ガイド付きのマルチステップ入力 |
構造化されたデータ入力をステップごとにユーザーに案内し、最終的な送信前にローカルツールで中間入力を検証します。 |
オンデバイスのパフォーマンスとプライバシー
Agentic Workflows は Android AICore で実行され、ユーザーのデバイス上で直接、プライベートでレスポンシブな実行を実現します。
- ローカル推論とプロンプトのプライバシー: モデルの推論と計画のループは、ネットワーク レイテンシなしで完全にオンデバイスで実行されます。ユーザーのプロンプト データはデバイスに非公開のままです。ただし、ユースケースで外部データが必要な場合は、アプリに実装された個々のツールでネットワーク呼び出しや Cloud API のクエリを行うことができます。
- マネージド マルチターン セッション:
AgentSessionインターフェースは、ターン間でメモリ内の会話履歴を維持するため、文字起こしを手動で管理する必要はありません。メモリは、session.close()、deleteSession(sessionId)、clearAllSessions()メソッドを使用していつでも再利用できます。 - 実行ガードレール: エージェント構成では、リソースの終了条件として最大ターン数(
maxTurnsの上限、デフォルトは 10)が適用されます。これにより、実行ループの暴走を防ぎ、バッテリーを節約し、デバイスの応答性を保護します。
カスタム生成、エージェント、タスク固有の API から選択する
ML Kit は、機能に必要なカスタマイズとオーケストレーションの量に応じて、オンデバイスの生成 AI 機能を整理します。
- カスタム生成とエージェント: 機能にカスタム指示やドメイン固有のロジックが必要な場合は、Gemini Nano 基盤モデルを直接操作します。マネージド マルチターン セッションと自動ツール呼び出しループが必要な場合は、Agentic Workflows(
GenerativeModelクラスの上に構築されたAgentRunnerクラスを使用)を選択します。カスタム プロンプト、型付き構造化出力、クライアント管理のマルチターン履歴が必要な場合は、直接モデルアクセス(GenerativeModelクラスを使用)を選択します。 - 音声: 専用の音声モデルと生成 AI モデル(音声認識など)を使用して、音声をテキストに変換します。
- テキストと画像のタスク: 事前構成されたタスク固有の特徴タイプと、共有ベースモデル(画像の説明、要約、校正、書き換えなど)の上にファインチューニングされた LoRA アダプタを使用して、プロンプト エンジニアリングなしでターンキー ビジョンと書き込みのユースケースを実現します。
次の表は、これらのアプローチの比較をまとめたものです。
検討事項 |
Agentic Workflows( |
直接モデルアクセス( |
テキストと画像の Tasks API |
アーキテクチャ |
|
カスタム プロンプト用の Gemini Nano 基盤モデルへの直接インターフェース。 |
共有ベースモデル上でファインチューニングされた LoRA アダプタによってサポートされるタスク固有の特徴タイプ。 |
マルチターンのコンテキスト |
マネージド マルチターン セッション( |
クライアント管理のマルチターン コンテキスト。
|
ステートレスな単一入力タスク呼び出し。 |
ツールの呼び出しとアクション |
自動化されたツール呼び出しループ。登録済みの Android AppFunction を検出し、モデルが選択した呼び出しを実行して、結果をモデルに自動的にフィードバックします。 |
クライアント管理のツール宣言。
|
該当なし(固定タスク パイプライン)。 |
使用する場面 |
複数ステップのツール実行とマネージド インメモリ マルチターン セッションに自動オーケストレーションが必要な場合に使用します。 |
カスタム プロンプト、マルチモーダル画像認識、型付き構造化出力( |
機能が標準の書き込みタスクまたはビジョンタスクと一致し、最小限の設定でファインチューニングされた LoRA からすぐに使える品質が必要な場合に使用します。 |
次のステップ
- プロジェクトを設定して最初のエージェントを構築するには、Agentic Workflows を使ってみるをご覧ください。
- アプリ内関数をエージェントに公開する方法については、ツールを定義するをご覧ください。
- Android のライフサイクル全体でマルチターン セッションとメモリを管理するには、セッションとライフサイクルを管理するをご覧ください。
- ストリーミング レスポンスを収集して UI を更新するには、ストリーム イベントと UI の統合をご覧ください。