Gemini Nano でエージェント ワークフローを構築する

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(AgentRunner)

直接モデルアクセス(GenerativeModel)

テキストと画像の Tasks API

アーキテクチャ

GenerativeModel の上に構築された高レベルのオーケストレーション レイヤ。

カスタム プロンプト用の Gemini Nano 基盤モデルへの直接インターフェース。

共有ベースモデル上でファインチューニングされた LoRA アダプタによってサポートされるタスク固有の特徴タイプ。

マルチターンのコンテキスト

マネージド マルチターン セッション(AgentSession)。ターン間でメモリ内の会話履歴を自動的に維持するため、文字起こしを手動で管理する必要はありません(エフェメラル シングルターン実行もサポート)。

クライアント管理のマルチターン コンテキスト。 GenerateContentRequest は、独自のチャット履歴を直接管理するデベロッパー向けに、マルチターン List<Content>(USER ロールと MODEL ロール)と sessionId をサポートしています。

ステートレスな単一入力タスク呼び出し。

ツールの呼び出しとアクション

自動化されたツール呼び出しループ。登録済みの Android AppFunction を検出し、モデルが選択した呼び出しを実行して、結果をモデルに自動的にフィードバックします。

クライアント管理のツール宣言。 GenerateContentRequest はツールスキーマを受け入れ、アプリが手動で実行して返す関数呼び出しリクエストを出力します。

該当なし(固定タスク パイプライン)。

使用する場面

複数ステップのツール実行とマネージド インメモリ マルチターン セッションに自動オーケストレーションが必要な場合に使用します。

カスタム プロンプト、マルチモーダル画像認識、型付き構造化出力(@Generable)に使用します。また、独自のチャット履歴やツール ディスパッチを直接管理する場合にも使用します。

機能が標準の書き込みタスクまたはビジョンタスクと一致し、最小限の設定でファインチューニングされた LoRA からすぐに使える品質が必要な場合に使用します。

次のステップ