ほとんどの旅行アプリは人気と利便性を重視して設計されています, ユーザーを混雑した場所に誘導することが多い, 炭素集約的な目的地.

このチュートリアルでは、その方法を学びます Google ADK を使用してマルチエージェント旅行プランナーを作成する 代わりにこれを 関連性の高いものを推奨します, 規範的な選択肢ではなく、魅力的な選択肢としてのより持続可能な選択肢.

実装は以下に基づいています 追跡私たちの研究プロトタイプが受理されました 牛 2026 (バナジーら。)研究と生産準備が整ったエンジニアリング ワークフローを組み合わせたもの.

写真[1]-[チュートリアル] Windows 7、8、10、11 向け Google ADK を使用したマルチエージェント トラベル プランナーの構築 - Winpcsoft.com
TRACE アーキテクチャの概要

バックエンドは次のように作成されます Google のエージェント開発キット (ADK). そして駆動されるのは ジェミニ 2.5 フラッシュフロントエンドにはChainlitを使用.

この記事では, バックエンド アーキテクチャは最も興味深いコンポーネントであるため、バックエンド アーキテクチャにのみ焦点を当てます。.
以下では、マルチエージェントのコア設計について説明し、軽量の, コンセプトを説明するためにプロトタイプを実行中.

注記: Chainlit のセキュリティ アップデートにより、この論文の元の GCP デモは Hugging Face Spaces に移動されました. 詳細はこの投稿の最後に記載されています.

アーキテクチャ

自主性を制限することなくユーザーの決定に影響を与える, TRACE は 2 つの並行した推奨事項を生成し、トレードオフを評価します。:

  1. 基本的な推奨事項: ユーザーとの関連性のみを考慮して最適化.
  2. サステナビリティを意識した推奨事項: 二酸化炭素排出量と人口密度のバランスが取れている.

反事実説明エージェント (CFE). 次に 2 つのオプションを比較します. 持続可能な選択を主な推奨事項として強調しています, 人気のベースラインを代替手段として可視化したままにしておく. この透明性の高い比較は、穏やかな認知的ナッジとして機能します。.

                  ┌──▶ ベースライン RecSys ──┐
│ (関連性のみ)
│ │
ユーザークエリ─────┤ §──▶ CFE エージェント (比較する & ナッジ)
│ │
━──▶ コンテキスト RecSys ──┘
(持続可能な)

生産パイプライン

このオーケストレーションは、並列エージェント実行を介して TRACE バックエンドで効率的に処理されます。. パイプライン オーケストレーションの簡略化されたビューは次のとおりです。 (バックエンド/adk/assembly/pipeline.py):

非同期をインポートする
google.adk.agents から ParallelAgent をインポート, Llmエージェント, シーケンシャルエージェント
async def create_pipeline():
# エージェントを並行してロードする
ic_agent, rec_baseline_agent, ca_recsys_agent = asyncio.gather を待つ(
get_ic_agent(),
get_recsys_agent(has_context=False), # ベースライン: 関連性のみ
get_recsys_agent(has_context=True), # コンテキスト認識型: 持続可能な
)
# シーケンス意図の分類とそれに続くコンテキスト認識型の推奨
シーケンシャル = SequentialAgent(
name="SequentialPipeline",
サブエージェント=[ic_agent, ca_recsys_agent]
)
# 持続可能な推奨パスとベースライン パスを同時に実行する
パラレル = パラレルエージェント(
name="ParallelRecAgents",
サブエージェント=[一連, rec_baseline_agent]
)
# 両方の推奨事項を 1 つの反事実的な出力に統合する
cfe = Llmエージェント(
name="CFEAgent",
model="gemini-2.5-flash",
命令=ENV.get_template("cfe_combination.jinja2").与える(),
出力スキーマ=CFE出力
)
SequentialAgentを返す(name="CRSPipeline", サブエージェント=[平行, カフェ])

この設計は、ADK の 3 つのコア概念に完全に基づいています。: シーケンシャルエージェント, Output_schema による ParallelAgent と構造化データの検証 (厳密な JSON スキーマを保証するために Pydantic によってサポートされています).

軽量プロトタイプの構築

TRACE の構造ロジックを示すため, 最小限のものを作成できます, 標準の Gemini API キーで実行されるローカル バージョン (Firestoreのような外部データベースを必要とせずに).

プロジェクトのセットアップ

Google AI Studio から無料の API キーを購入し、オンプレミス環境を初期化します。:

mkdir トレースミニ && CD トレースミニ
Python -m venv .venv && ソース .venv/bin/activate # Windows の場合: .venv\Scripts\activate
pip インストール Google-adk
mkdir トレース_エージェント
echo "from . 輸入代理店" > トレースエージェント/__init__.py
printf "GOOGLE_GENAI_USE_VERTEXAI=FALSE\nGOOGLE_API_KEY=your_key_here\n" > .環境

エージェントの実装

次のエージェント構成を Trace_agent/agent.py として保存します。:

__future__ からアノテーションをインポート
import の入力から オプション
pydanticインポートBaseModelから, 分野
google.adk.agents からエージェントをインポート, パラレルエージェント, シーケンシャルエージェント
モデル: str = "gemini-2.5-flash"
クラスの推奨事項(彼らはモデルです):
おすすめ: str = フィールド(..., description="List of cities")
説明: str = フィールド(..., description="A single-sentence justification for the choice.")
クラスCFE出力(彼らはモデルです):
推奨_表示: str
is_recommendation_sustainable: ブール
説明_表示: str
代替推奨事項: オプション[str] = なし
# エージェント 1: 関連性を重視したベースライン
ベースライン = エージェント(
モデル=モデル,
name="baseline_recsys",
Output_schema=推奨事項,
output_key="baseline_rec",
description="Recommends a city strictly matching user preferences.",
instruction=f"Recommend the best city for the user's request, 持続可能性を無視する. 利用可能なオプション: {都市}",
) # これは必要に応じて更新できるサンプル手順です
# エージェント 2: サステナビリティを重視した推奨者
緑 = エージェント(
モデル=モデル,
name="context_recsys",
Output_schema=推奨事項,
output_key="green_rec",
description="Recommends a city balancing relevance and environmental/social impact.",
instruction=f"Recommend the best city that fits the user's intent but is historically less crowded and lower-carbon. 利用可能なオプション: {都市}",
) # これは必要に応じて更新できるサンプル手順です
# エージェント 3: CFE合成剤
cfe = エージェント(
モデル=モデル,
name="CFEAgent",
出力スキーマ=CFE出力,
description="Compares both recommendations and formulates a gentle behavioral nudge.",
命令=(
"Relevance-only recommendation: {ベースライン記録}\nサステナブルな提案: {緑の記録}\n\n"
"Present the sustainable option (推奨_表示) if it meets the user's core intent. "
"Explain it warmly as a comparative alternative: 'what if you chose X instead of Y'-highlighting "
"a similar cultural experience with fewer crowds and lower carbon impact. "
"Populate alternative_recommendation with the baseline city. ユーザーに説教しないでください。"
),
)# これは必要に応じて更新できるサンプル手順です; 論文で使用されている正確なプロンプトについては, リソースを確認する
# ルートパイプラインオーケストレーション
root_agent = シーケンシャルエージェント(
name="CRSPipeline",
サブエージェント=[
パラレルエージェント(name="ParallelRecAgents", サブエージェント=[ベースライン, 緑]),
カフェ
],
)

エージェントを実行する

ネイティブ ADK Web プレイグラウンドを起動してエージェントと対話します:

ADKウェブ

UI 内, 「trace_agent」を選択し、次のようなクエリを入力してみてください:

「豊かな芸術が息づく活気あふれる運河都市」, 歴史的な建築物と素晴らしい食事 – 私はアムステルダムのことを考えています。」

両方の紹介プログラムが同時に実行されていることがわかります。. CFE エージェントは両方を評価し、丁寧な提案を行います。 ゲント または 使用済み より環境に優しい「もしも」の代替案として アムステルダム 最初に検討した基本オプションとして透過的に利用可能.

なぜこのパラダイムが成功するのか

人気の選択肢を完全に排除することで持続可能な選択肢をユーザーに強制するのはパターナリスティックなアプローチであり、多くの場合ユーザーが他のものを探すように仕向けられます。. TRACE は、ユーザーの初期設定を検証し、直接の直接比較を行うことで成功します。. より環境に優しい代替品を見つける際の煩わしさを軽減することで, 行動科学と AI エージェントが連携して持続可能な選択を容易にします.

📢 ライブサンドボックス移行に関する注意事項

ドキュメント内で参照されている元の GCP ホストのデモは、Chainlit UI フレームワークの脆弱性のため、現在オフラインです。. ゼロトラストのセキュリティを維持するため, システム全体が移行されました 顔のスペースを受け入れる.

開梱後, スペースが使われている Gemma-3-27b ゼロショットおよびライトエージェントの決定用. ドキュメントで説明されている完全な運用グレードの ADK パラレル エージェント パイプラインを体験するには, ご自由に入力してください Gemini API キー ユーザーインターフェースに直接. 全文を読む ハグフェイス README 実装の詳細については.

リソース

記事が気に入ったら, お願いします 購読する 私の最近のことへ.
連絡するには, まで連絡してください
リンクトイン または約 ashmibanerjee.com.

GenAIの使用状況の開示: GenAI モデルは、ブログの文法的矛盾をチェックし、テキストを明確にするために調整されました。. このブログで紹介されている内容については著者が全責任を負います.

blank


[チュートリアル] 「Google ADK を使用したマルチエージェント旅行プランナーの構築」はもともと Google Developer Experts on Medium で公開されました。, 人々がこのストーリーを強調し、それに応答することで議論を続けている場所.