LangChain アプリ向け Galileo 計装

実行とトレースの確認

5 minutes

トラベルプランナーを実行し、リクエストを送信して、マルチエージェントのトレースが Galileo に記録されたことを確認します。

Exercise アプリの実行とトレースの確認
1

アプリの実行

アプリを起動します:

bash
python3 main.py
2

アプリにリクエストを送信

2つ目のターミナルで、旅行計画のリクエストを送信します。計画された旅程が返されれば、コールバックが接続された状態でワークフローがエンドツーエンドで実行されていることが確認できます:

bash
curl http://localhost:8080/travel/plan \
  -H "Content-Type: application/json" \
  -d '{
    "origin": "Philadelphia",
    "destination": "Florida",
    "user_request": "Planning a two day long trip from Philadelphia to Florida. Looking for a boutique hotel, business-class flights and unique experiences.",
    "travelers": 2
  }'
3

Galileo でトレースを確認

Galileo コンソール (https://console.multitenant.galileocloud.io/splunkse ) で、Workshop19Galileo プロジェクトを開きます(.env ファイルで GALILEO_PROJECT 環境変数をコメントアウトした場合を除きます)。

次に、ログストリームを見つけるために、まず EC2 インスタンスで INSTANCE 環境変数を確認します:

bash
echo $INSTANCE

TravelPlanner- の後にインスタンス名が続くログストリームを探します。例えば、TravelPlanner-shw-9306 のようになります。

4

トレースの検索

最新のトレースを開きます。コールバックはグラフレベルで接続されているため、リクエストに対して各エージェントノードのネストされた LLM スパンを含む単一のトレースが表示されるはずです:

  • coordinator
  • flight_specialist
  • hotel_specialist
  • activity_specialist
  • plan_synthesizer
5

スパンの検査

任意のスパンを展開し、システムメッセージとヒューマンメッセージモデルのレスポンスモデル名トークン数、およびレイテンシがキャプチャされていることを確認します。

トレースが表示されない場合

  • アプリが実行されている環境で GALILEO_API_KEY が設定されていることを確認します(load_dotenv() 経由で .env を読み込みます)。
  • 正しいプロジェクトとログストリームを表示していることを確認します: GALILEO_PROJECT / GALILEO_LOG_STREAM を設定した場合はその値、設定していない場合は default / default です。
  • プロジェクトが表示されない場合は、正しい権限がない可能性があります。
  • python3 main.py を実行しているターミナルで、Galileo のエラーがアプリログに出力されていないか確認します。
  • Web ページの左上で splunkse 組織に所属していることを確認します。

1つの旅行計画リクエストで、5つの個別のトレースではなく、5つのネストされた LLM スパンを含む1つのトレースが生成されます。なぜでしょうか?

ここをクリックして回答を表示
LangGraph ワークフロー全体がリクエストごとに1つのルートランとして実行され、コールバックはそのランの config に接続されているためです。LangGraph は5つのノード(coordinator、flight、hotel、activity、synthesizer)をその単一のラン内で実行するため、各ノードの llm.invoke(...) は同じトレースの下の子スパンになります。代わりに各ノードで新しいコールバックと新しいランを作成した場合、5つの切断されたトレース(およびセッション)が生成され、リクエストのエンドツーエンドのビューが失われます。