クイックスタート: Python(smolagents)ウェブアプリをビルドして Cloud Run にデプロイする
このドキュメントでは、smolagents アプリケーションをビルドして Cloud Run にデプロイする方法について説明します。
このクイックスタートの手順に沿って、ソースコードからデプロイすると、Cloud Run によって Dockerfile が自動的に ビルドされます。
始める前に
- アカウントにログインします。 Google Cloud を初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。 Google Cloud新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを 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 プロジェクトの名前に置き換えます。
-
このガイドで既存のプロジェクトを使用する場合は、 このガイドを完了するために必要な権限があることを 確認します。新しいプロジェクトを作成した場合は、 必要な権限がすでに付与されています。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init -
プロジェクトを 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 プロジェクトの名前に置き換えます。
-
このガイドで既存のプロジェクトを使用する場合は、 このガイドを完了するために必要な権限があることを 確認します。新しいプロジェクトを作成した場合は、 必要な権限がすでに付与されています。
ドメイン制限の組織のポリシーでプロジェクトの未認証呼び出しが制限されている場合は、限定公開サービスのテストの説明に従って、デプロイされたサービスにアクセスする必要があります。
-
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 のデフォルトのサービス アカウントが 自動的に作成されます。
- Cloud Run の料金を確認するか、 料金計算ツールで費用を見積もります。
- Gemini モデルで smolagents アプリをデプロイするには、Google AI Studio の API キーが必要です。 Google AI Studio を使用して API キーを生成するには、Gemini API ドキュメントの Gemini API キーを使用する をご覧ください。
必要なロール
このクイックスタートを完了するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
-
プロジェクトに対する Cloud Run 管理者 (
roles/run.admin) -
プロジェクトに対する Cloud Run ソース デベロッパー (
roles/run.sourceDeveloper) -
サービス ID に対するサービス アカウント ユーザー(
roles/iam.serviceAccountUser) -
プロジェクトに対するログ閲覧者(
roles/logging.viewer)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
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 でアプリケーションを作成するには:
my-agent-appという名前の新しいディレクトリを作成し、そのディレクトリに移動します。mkdir my-agent-app cd my-agent-appmain.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))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 サービスを削除するには、次のいずれかの操作を行います。
コンソール
サービスを削除するには:
Google Cloud コンソールで、Cloud Run の [サービス] ページに移動します。
削除するサービスをサービスリストで探し、そのチェックボックスをクリックして選択します。
[削除] をクリックします。これにより、サービスのすべてのリビジョンが削除されます。これにより、サービスのすべてのリビジョンが削除されます。
gcloud
サービスを削除するには、次のコマンドを実行します。
gcloud run services delete SERVICE --region REGION
次のように置き換えます。
- SERVICE: サービスの名前。
- REGION: サービスの Google Cloud リージョン。
テスト プロジェクトを削除する
Google Cloud プロジェクトを削除すると、そのプロジェクト内のすべてのリソースに対する課金が停止します。プロジェクト内のすべての Google Cloud リソースを解放する手順は次のとおりです。
プロジェクトを削除する: Google Cloud
gcloud projects delete PROJECT_ID
次のステップ
コードソースからコンテナをビルドし、リポジトリに push する方法については、以下をご覧ください。