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

このドキュメントでは、smolagents アプリケーションをビルドして Cloud Run にデプロイする方法について説明します。

このクイックスタートの手順に沿って、ソースコードからデプロイすると、Cloud Run によって Dockerfile が自動的に ビルドされます。

始める前に

  1. アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud CLI をインストールします。

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

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

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

    プロジェクトを選択または作成するために必要なロール

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

      gcloud projects create PROJECT_ID

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

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

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

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

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

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

  9. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

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

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

    プロジェクトを選択または作成するために必要なロール

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

      gcloud projects create PROJECT_ID

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

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

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

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

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

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

  15. Cloud Run Admin API と Cloud Build API を有効にします。

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

    API を有効にするには、 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。serviceusage.services.enable詳しくは、ロールを割り当てる方法をご覧ください。

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

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

  16. Cloud Run の料金を確認するか、 料金計算ツールで費用を見積もります
  17. Gemini モデルで smolagents アプリをデプロイするには、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 は実際の Google Cloudプロジェクト ID に置き換え、SERVICE_ACCOUNT_EMAIL_ADDRESS は Cloud Build サービス アカウントのメールアドレスに置き換えます。Compute Engine のデフォルト サービス アカウントを Cloud Build サービス アカウントとして使用している場合は、サービス アカウントのメールアドレスに次の形式を使用します。

PROJECT_NUMBER-compute@developer.gserviceaccount.com

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

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

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

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

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

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

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

    import os
    from fastapi import FastAPI, HTTPException
    from pydantic import BaseModel
    from smolagents import CodeAgent, LiteLLMModel, tool
    
    # 1. Define a simple tool for the agent
    @tool
    def get_greeting(name: str) -> str:
      """
      Returns a special greeting for the user.
      Args:
          name: The name of the person to greet.
      """
      return f"Hello {name}, welcome to the agentic world running on Cloud Run!"
    
    # 2. Initialize the Gemini Model via LiteLLM
    # Make sure GEMINI_API_KEY is set in your environment variables
    model = LiteLLMModel(
    model_id="gemini/gemini-2.5-flash", # This is the model name. If a newer model is available, you can use that.
    api_key=os.environ.get("GEMINI_API_KEY")
    )
    
    # 3. Create the CodeAgent
    agent = CodeAgent(
      tools=[get_greeting],
      model=model,
      add_base_tools=True # Adds basic python tools like print
    )
    
    # 4. Setup FastAPI
    app = FastAPI()
    
    class AgentRequest(BaseModel):
      task: str
    
    @app.get("/")
    def health_check():
      return {"status": "running", "service": "smolagents-fastapi"}
    
    @app.post("/run")
    def run_agent(request: AgentRequest):
      try:
        # Run the agent with the user's task
        response = agent.run(request.task)
        return {"response": str(response)}
      except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))
    
  3. requirements.txt という名前のファイルを作成し、次のコードを貼り付けます。

    fastapi
    uvicorn
    smolagents[toolkit]
    litellm
    

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

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

次のコマンドを使用してソースからデプロイします。

  gcloud run deploy smolagents-demo \
    --source . \
    --region us-central1 \
    --no-allow-unauthenticated \
    --set-env-vars GEMINI_API_KEY=API_KEY

API_KEY は、Google AI Studio API キーに置き換えます。

アプリが正常にデプロイされると、Cloud Run にサービス URL(https://smolagents-demo-xyz-uc.a.run.app など)が表示されます。

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

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

  curl -X POST YOUR-SERVICE-URL/run \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
    -d '{"task": "Use the greeting tool to say hello to Gemini User"}'

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

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

{
 "response": "Hello Gemini User, welcome to the agentic world running on Cloud Run!"
}

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

クリーンアップ

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

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

リポジトリを削除する

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

サービスを削除する

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

コンソール

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

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

    Cloud Run に移動

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

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

gcloud

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

gcloud run services delete SERVICE --region REGION

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

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

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

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

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

    gcloud projects delete PROJECT_ID

次のステップ

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