Déployer l'agent LangChain sur Cloud Run

1. Présentation

Un agent est un programme autonome qui communique avec un modèle d'IA pour effectuer une opération basée sur un objectif à l'aide des outils et du contexte dont il dispose. Il est capable de prendre des décisions autonomes basées sur la vérité.

Les frameworks d'agents tels que Agent Development Kit(ADK), LangChain et smolagents sont utilisés pour créer des agents. Les applications d'agent créées à l'aide de ces frameworks peuvent être déployées sur Cloud Run et mises à la disposition des utilisateurs en tant qu'applications sans serveur.

Dans cet atelier de programmation, nous allons créer un agent à l'aide de LangChain et le déployer sur Cloud Run.

Ce que vous allez faire

Prêt à passer du prototype PROMPT à la création d'un agent ? Nous allons créer un agent à l'aide de LangChain pour obtenir des informations sur un personnage historique dans un format structuré. Au cours de cet atelier, vous allez :

  1. Créez un agent simple pour générer des informations sur le personnage historique dans un format structuré à l'aide de LangChain.
  2. Exécutez l'agent localement et assurez-vous qu'il fonctionne comme prévu.
  3. Déployer l'agent sur Cloud Run et l'appeler à l'aide de l'URL Cloud Run

Conditions requises

  • Un navigateur tel que Chrome ou Firefox
  • Un projet Google Cloud avec facturation activée.

2. Avant de commencer

Créer un projet

  1. Dans la console Google Cloud, sur la page du sélecteur de projet, sélectionnez ou créez un projet Google Cloud.
  2. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
  3. Cliquez sur ce lien pour activer Cloud Shell. Vous pouvez basculer entre le terminal Cloud Shell (pour exécuter des commandes cloud) et l'éditeur (pour créer des projets) en cliquant sur le bouton correspondant dans Cloud Shell.
  4. Une fois connecté à Cloud Shell, vérifiez que vous êtes déjà authentifié et que le projet est défini sur votre ID de projet à l'aide de la commande suivante :
gcloud auth list
  1. Exécutez la commande suivante dans Cloud Shell pour vérifier que la commande gcloud connaît votre projet.
gcloud config list project
  1. Si votre projet n'est pas défini, utilisez la commande suivante pour le définir :
gcloud config set project <YOUR_PROJECT_ID>
  1. Assurez-vous d'avoir Python 3.13 ou version ultérieure.

Consultez la documentation pour connaître les autres commandes gcloud et leur utilisation.

3. Créer un agent LangChain

Structure du projet

Dans Cloud Shell, créez un dossier nommé langchain-app et ajoutez-y les fichiers suivants :

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

Code de l'application

Voici les dépendances que vous devez ajouter dans requirements.txt :

fastapi
uvicorn
langchain
langchain-google-genai
python-dotenv

Dans main.py, nous allons écrire le code de l'agent qui utilise le modèle Gemini et récupère les informations sur la figure historique. Une fois récupérées, les informations sont mises en forme de manière structurée, comme demandé.

Cette implémentation utilise la syntaxe LCEL (LangChain Expression Language) moderne.

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. Tester l'agent

Avant de déployer la fonction, vous pouvez la tester localement.

  1. Créez une clé API Gemini dans AI Studio.
  2. Exportez la clé API Gemini comme suit :
export GOOGLE_API_KEY="AIzaSy..."
  1. Exécutez le serveur.
uvicorn main:app --port 8080 --host 0.0.0.0
  1. Testez l'agent à l'aide de la commande curl suivante :
curl -X POST http://localhost:8080/chat \
     -H "Content-Type: application/json" \
     -d '{"name": "Abraham Lincoln"}'

Vérifiez que vous obtenez une sortie structurée au format JSON contenant le nom, la date de naissance et le pays de naissance.

5. Déployer dans Cloud Run

Nous allons utiliser la commande gcloud run deploy pour déployer l'application d'agent sur Cloud Run. La commande suivante crée le conteneur à l'aide de Cloud Build et le déploie sur Cloud Run en une seule étape.

Remplacez YOUR_API_KEY par votre clé API Gemini.

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

Une fois le point de terminaison déployé, il devrait s'afficher dans le terminal et être prêt à l'emploi.

6. Tester le déploiement

Utilisez le point de terminaison Cloud Run et exécutez curl pour vous assurer d'obtenir les résultats attendus.

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

Vous devriez obtenir le même résultat que celui obtenu avec l'application exécutée en local.

7. Effectuer un nettoyage

Pour éviter que les ressources utilisées dans cet atelier de programmation soient facturées sur votre compte Google Cloud :

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.
  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

8. Félicitations

Félicitations ! Vous avez créé un agent LangChain et interagi avec lui, déployé sur Cloud Run.