Cloud Run に LangChain エージェントをデプロイする

1. 概要

エージェントは、AI モデルと対話して、エージェントが持つツールとコンテキストを使用して目標ベースの操作を実行する自律型プログラムです。真実に基づいた自律的な意思決定を行うことができます。

Agent Development Kit(ADK)、LangChain、smolagents などのエージェント フレームワークは、エージェントの作成に使用されます。このようなフレームワークで作成されたエージェント アプリケーションは Cloud Run にデプロイでき、サーバーレス アプリケーションとしてユーザーが利用できるようになります。

この Codelab では、LangChain を使用してエージェントを構築し、Cloud Run にデプロイします。

作成するアプリの概要

プロトタイプ プロンプトからエージェントの構築に移行する準備はできましたか?LangChain を使用して、歴史上の人物に関する情報を構造化された形式で取得するエージェントを作成します。このラボでは、次の作業を行います。

  1. LangChain を使用して、歴史上の人物に関する情報を構造化された形式で生成するシンプルなエージェントを構築する
  2. エージェントをローカルで実行し、想定どおりに動作することを確認する
  3. エージェントを Cloud Run にデプロイし、Cloud Run URL を使用して呼び出す

要件

  • ブラウザ(ChromeFirefox など)
  • 課金を有効にした Google Cloud プロジェクト

2. 始める前に

プロジェクトを作成する

  1. Google Cloud コンソールのプロジェクト選択ページで、Google Cloud プロジェクトを選択または作成します。
  2. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
  3. このリンクをクリックして、Cloud Shell を有効にします。Cloud Shell で対応するボタンをクリックすると、Cloud Shell ターミナル(クラウド コマンドの実行用)とエディタ(プロジェクトのビルド用)を切り替えることができます。
  4. Cloud Shell に接続したら、次のコマンドを使用して、すでに認証済みであることと、プロジェクトがプロジェクト ID に設定されていることを確認します。
gcloud auth list
  1. Cloud Shell で次のコマンドを実行して、gcloud コマンドがプロジェクトを認識していることを確認します。
gcloud config list project
  1. プロジェクトが設定されていない場合は、次のコマンドを使用して設定します。
gcloud config set project <YOUR_PROJECT_ID>
  1. Python 3.13 以降がインストールされていることを確認する

他の gcloud コマンドとその使用方法については、ドキュメントをご覧ください。

3. LangChain エージェントの作成

プロジェクト構造

Cloud Shell で、langchain-app という名前のフォルダを作成し、その中に次のファイルを追加します。

langchain-gemini-fastapi-app/
├── main.py
├── requirements.txt

アプリケーション コード

requirements.txt に追加する必要がある依存関係は次のとおりです。

fastapi
uvicorn
langchain
langchain-google-genai
python-dotenv

main.py では、Gemini モデルを使用して歴史上の人物に関する情報を取得するエージェント コードを記述します。取得したら、指示どおりに構造化された形式にフォーマットします。

この実装では、最新の LCEL(LangChain Expression Language)構文を使用しています。

import os
import uvicorn
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import JsonOutputParser

# Initialize FastAPI
app = FastAPI(title="LangChain App for Historical Figures")

# 1. Setup Gemini Model
# We expect GOOGLE_API_KEY to be set in the environment variables
llm = ChatGoogleGenerativeAI(
    model="gemini-2.5-flash",
    temperature=0.7
)

# 2. Define the Prompt
prompt = ChatPromptTemplate.from_template("You are an expert Historian. For the historical personality {name}, you are able to accurately tell their birth date and birth country. Return the output in the JSON format containing name, birthDate, birthCountry. In case you are unable to retrieve birthDate or birthCountry, just have the unknown values as null. ensure the response is a valid json object only.")
output_parser = JsonOutputParser()

# Chain: Prompt -> Model -> Json Output Parser
chain = prompt | llm | output_parser

# 3. Define Request Model
class QueryRequest(BaseModel):
    name: str

# 4. Define Endpoint
@app.post("/chat")
async def chat(request: QueryRequest):
    try:
        response = await chain.ainvoke({"name": request.name})
        return response
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

@app.get("/")
def health_check():
    return {"status": "ok", "service": "LangChain-Gemini-FastAPI"}

4. エージェントをテストする

デプロイする前に、ローカルでテストできます。

  1. AI Studio で Gemini API キーを作成します。
  2. Gemini API キーを次のようにエクスポートします。
export GOOGLE_API_KEY="AIzaSy..."
  1. サーバーを実行します。
uvicorn main:app --port 8080 --host 0.0.0.0
  1. 次の curl コマンドを使用して、エージェントをテストします。
curl -X POST http://localhost:8080/chat \
     -H "Content-Type: application/json" \
     -d '{"name": "Abraham Lincoln"}'

name、birthDate、birthCountry を含む JSON 構造化出力が取得されていることを確認します。

5. Cloud Run にデプロイする

gcloud run deploy コマンドを使用して、エージェント アプリケーションを Cloud Run にデプロイします。次のコマンドは、Cloud Build を使用してコンテナをビルドし、1 つのステップで Cloud Run にデプロイします。

YOUR_API_KEY は、実際の Gemini API キーに置き換えます。

gcloud run deploy gemini-fastapi-service \
  --source . \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated \
  --set-env-vars GOOGLE_API_KEY=<YOUR_API_KEY>

デプロイが完了すると、ターミナルにエンドポイントが表示され、使用できるようになります。

6. Deployment をテストする

Cloud Run エンドポイントを使用して curl を実行し、期待どおりの結果が得られることを確認します。

curl -X POST <CLOUD_RUN_ENDPOINT> \
     -H "Content-Type: application/json" \
     -d '{"name": "Abraham Lincoln"}'

ローカルで実行したアプリケーションと同じ結果が得られるはずです。

7. クリーンアップ

この Codelab で使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。
  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

8. 完了

おめでとうございます!Cloud Run にデプロイされた LangChain エージェントを作成して操作できました。