クイックスタート: Python(LangChain)ウェブアプリをビルドして Cloud Run にデプロイする

Cloud Run を使用すると、Gemini を使用してクエリに応答する LangChain アプリケーションを構築してデプロイできます。このクイックスタートでは、都市の首都に関する質問に答える Python ウェブアプリをデプロイします。ソースコードからデプロイすると、Cloud Run によってコンテナが自動的にビルドされます。

始める前に

  1. Google Cloud CLI をインストールします。

  2. フェデレーション ID(連携 ID)を使用するように gcloud CLI を構成します。

    詳細については、 フェデレーション ID を使用して gcloud CLI にログインするをご覧ください。

  3. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  4. Cloud de Confiance プロジェクトを作成または選択します。

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者のロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
    • Cloud de Confiance プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Cloud de Confiance プロジェクトの名前に置き換えます。

    • 作成した Cloud de Confiance プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Cloud de Confiance プロジェクト名に置き換えます。

  5. このガイドで既存のプロジェクトを使用する場合は、このガイドを完了するために必要な権限があることを確認します。新しいプロジェクトを作成した場合は、必要な権限がすでに付与されています。

  6. Cloud de Confiance プロジェクトに対して課金が有効になっていることを確認します。

  7. ドメイン制限の組織のポリシーでプロジェクトの未認証呼び出しが制限されている場合は、限定公開サービスのテストの説明に従って、デプロイされたサービスにアクセスする必要があります。

  8. Cloud Run Admin API と Cloud Build API を有効にします(まだ有効になっていない場合)。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法を学習する。

    gcloud services enable run.googleapis.com cloudbuild.googleapis.com

    Cloud Run Admin API を有効にすると、Compute Engine のデフォルトのサービス アカウントが自動的に作成されます。

  9. Cloud Run の料金を確認するか、料金計算ツールで費用を見積もります。
  10. Gemini モデルを使用して LangChain アプリをデプロイするには、Google AI Studio の API キーが必要です。Google AI Studio を使用して API キーを生成するには、Gemini API ドキュメントの Gemini API キーを使用するをご覧ください。この鍵は、サービスのデプロイ時に参照します。

必要なロール

このクイックスタートを完了するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

Cloud Build サービス アカウントにプロジェクトへのアクセス権を付与する

この動作をオーバーライドしない限り、Cloud Build は、ソースコードと Cloud Run リソースのビルドにデフォルトの Cloud Build サービス アカウントとして Compute Engine のデフォルトのサービス アカウントを自動的に使用します。

Cloud Build がソースをビルドできるようにするには、プロジェクトの Cloud Build サービス アカウントに Cloud Run ビルダー(roles/run.builder)のロールを付与します。

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:SERVICE_ACCOUNT_EMAIL_ADDRESS \
    --role=roles/run.builder

PROJECT_ID は実際の Cloud de Confianceプロジェクト ID に置き換え、SERVICE_ACCOUNT_EMAIL_ADDRESS は Cloud Build サービス アカウントのメールアドレスに置き換えます。Compute Engine のデフォルト サービス アカウントを Cloud Build サービス アカウントとして使用している場合は、サービス アカウントのメールアドレスに次の形式を使用します。

PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com

PROJECT_NUMBER は、使用する Cloud de Confianceプロジェクト番号に置き換えます。

プロジェクト ID とプロジェクト番号を確認する方法については、プロジェクトの作成と管理をご覧ください。

Cloud Run ビルダーのロールを付与すると、反映されるまでに数分かかることがあります。

サンプル アプリケーションを作成する

Python でアプリケーションを作成するには:

  1. langchain-gemini-fastapi-app という名前の新しいディレクトリを作成し、そのディレクトリに移動します。

    mkdir langchain-gemini-fastapi-app
    cd langchain-gemini-fastapi-app
    
  2. main.py という名前のファイルを作成し、次のコードを貼り付けます。

    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 StrOutputParser
    
    # Initialize FastAPI
    app = FastAPI(title="LangChain Gemini Cloud Run App")
    
    # 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 Chain
    prompt = ChatPromptTemplate.from_template("You are a helpful assistant. Answer the following question concisely: {topic}")
    output_parser = StrOutputParser()
    
    # Chain: Prompt -> Model -> String Parser
    chain = prompt | llm | output_parser
    
    # 3. Define Request Model
    class QueryRequest(BaseModel):
      topic: str
    
    # 4. Define Endpoint
    @app.post("/chat")
    async def chat(request: QueryRequest):
      try:
          response = await chain.ainvoke({"topic": request.topic})
          return {"response": response}
      except Exception as e:
          raise HTTPException(status_code=500, detail=str(e))
    
    @app.get("/")
    def health_check():
      return {"status": "ok", "service": "Gemini-FastAPI"}
    
  3. requirements.txt という名前のファイルを作成し、次のコードを貼り付けます。

    fastapi
    uvicorn
    langchain
    langchain-google-genai
    python-dotenv
    

ソースから Cloud Run にデプロイする

ソースからのデプロイでは、ソースコードからコンテナ イメージが自動的にビルドされて、デプロイされます。

次のコマンドを使用してソースからデプロイするには:

  gcloud run deploy gemini-fastapi-service \
    --source . \
    --region us-central1 \
    --no-allow-unauthenticated \
    --set-env-vars GEMINI_API_KEY=API_KEY

API_KEY は、Google AI Studio API キーに置き換えます。本番環境では、プレーンな環境変数ではなく、Secret Manager を使用して API キーを処理することをおすすめします。

アプリのデプロイが正常に完了すると、Cloud Run に https://gemini-fastapi-service-xyz-uc.a.run.app などのサービス URL が表示されます。

Cloud Run サービスをテストする

次の curl コマンドを使用してエージェントにクエリを送信し、サービスをテストします。

  curl -X POST YOUR-SERVICE-URL/chat \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
    -d '{"topic": "What is the capital of France?"}'

YOUR-SERVICE-URL は、サービスの URL に置き換えます。

エージェントは次のレスポンスを送信します。

  {
  "response": "Paris"
  }

サービスが正しく動作していることを確認するには、Cloud Run サービスの [ログ] タブを確認します。

クリーンアップ

このページで使用したリソースについて、 Cloud de Confiance アカウントに課金されないようにするには、リソースを含む Cloud de Confiance プロジェクトを削除します。

Cloud de Confiance by S3NS アカウントで追加料金が発生しないようにするには、このクイックスタートでデプロイしたすべてのリソースを削除します。

リポジトリを削除する

デプロイされたサービスが使用されていない場合、Cloud Run の料金は発生しません。ただし、コンテナ イメージを Artifact Registry に保存した場合にも料金が発生する可能性があります。Artifact Registry リポジトリを削除するには、Artifact Registry ドキュメントのリポジトリを削除するの手順を行います。

サービスを削除する

Cloud Run サービスの費用は、リクエストを受け取るまでは発生しません。Cloud Run サービスを削除するには、次のいずれかの操作を行います。

コンソール

サービスを削除するには:

  1. Cloud de Confiance by S3NS コンソールで、Cloud Run の [サービス] ページに移動します。

    Cloud Run に移動

  2. 削除するサービスをサービスリストで探し、そのチェックボックスをクリックして選択します。

  3. [削除] をクリックします。これにより、サービスのすべてのリビジョンが削除されます。

gcloud

サービスを削除するには、次のコマンドを実行します。

gcloud run services delete SERVICE --region REGION

次のように置き換えます。

  • SERVICE: サービスの名前。
  • REGION: サービスの Cloud de Confiance リージョン。

テスト プロジェクトを削除する

Cloud de Confiance プロジェクトを削除すると、そのプロジェクト内のすべてのリソースに対する課金が停止します。プロジェクト内のすべての Cloud de Confiance by S3NS リソースを解放する手順は次のとおりです。

    Cloud de Confiance プロジェクトを削除する:

    gcloud projects delete PROJECT_ID

次のステップ

コードソースからコンテナをビルドし、リポジトリに push する方法については、以下をご覧ください。