Wdrażanie agenta LangChain w Cloud Run

1. Przegląd

Agent to autonomiczny program, który komunikuje się z modelem AI, aby wykonać operację opartą na celu, korzystając z dostępnych narzędzi i kontekstu. Potrafi podejmować autonomiczne decyzje oparte na faktach.

Do tworzenia agentów używane są platformy agentów, takie jak pakiet Agent Development Kit(ADK), LangChain czy smolagents. Aplikacje agentów utworzone za pomocą takich platform można wdrażać w Cloud Run i udostępniać użytkownikom jako aplikacje bezserwerowe.

W tym ćwiczeniu utworzymy agenta przy użyciu LangChain i wdrożymy go w Cloud Run.

Co utworzysz

Chcesz przejść od prototypu PROMPT do tworzenia agenta? Utworzymy agenta za pomocą LangChain, aby uzyskać informacje o postaci historycznej w uporządkowanym formacie. W ramach tego laboratorium:

  1. Tworzenie prostego agenta do generowania informacji o postaci historycznej w uporządkowanym formacie za pomocą LangChain
  2. Uruchom agenta lokalnie i upewnij się, że działa zgodnie z oczekiwaniami.
  3. Wdrażanie agenta w Cloud Run i wywoływanie go za pomocą adresu URL Cloud Run

Wymagania

  • przeglądarka, np. Chrome lub Firefox;
  • Projekt Google Cloud z włączonymi płatnościami.

2. Zanim zaczniesz

Utwórz projekt

  1. W konsoli Google Cloud na stronie selektora projektów wybierz lub utwórz projekt Google Cloud.
  2. Sprawdź, czy w projekcie Cloud włączone są płatności. Dowiedz się, jak sprawdzić, czy w projekcie są włączone płatności.
  3. Aktywuj Cloud Shell, klikając ten link. Możesz przełączać się między terminalem Cloud Shell (do uruchamiania poleceń w chmurze) a edytorem (do tworzenia projektów), klikając odpowiedni przycisk w Cloud Shell.
  4. Po połączeniu z Cloud Shell sprawdź, czy uwierzytelnianie zostało już przeprowadzone, a projekt jest już ustawiony na Twój identyfikator projektu, używając tego polecenia:
gcloud auth list
  1. Aby potwierdzić, że polecenie gcloud zna Twój projekt, uruchom w Cloud Shell to polecenie:
gcloud config list project
  1. Jeśli projekt nie jest ustawiony, użyj tego polecenia, aby go ustawić:
gcloud config set project <YOUR_PROJECT_ID>
  1. Upewnij się, że masz Pythona w wersji 3.13 lub nowszej.

Informacje o innych poleceniach gcloud i ich użyciu znajdziesz w dokumentacji.

3. Tworzenie agenta LangChain

Struktura projektu

W Cloud Shell utwórz folder o nazwie langchain-app i dodaj do niego te pliki:

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

Kod aplikacji

Oto zależności, które należy dodać w pliku requirements.txt:

fastapi
uvicorn
langchain
langchain-google-genai
python-dotenv

main.py napiszemy kod agenta, który korzysta z modelu Gemini i pobiera informacje o postaci historycznej. Po pobraniu formatuje go w uporządkowany sposób zgodnie z instrukcjami.

Ta implementacja korzysta z nowoczesnej składni 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. Testowanie agenta

Przed wdrożeniem możesz przetestować go lokalnie.

  1. Utwórz klucz interfejsu Gemini API w AI Studio.
  2. Wyeksportuj klucz interfejsu Gemini API jako:
export GOOGLE_API_KEY="AIzaSy..."
  1. Uruchom serwer.
uvicorn main:app --port 8080 --host 0.0.0.0
  1. Przetestuj agenta za pomocą tego polecenia: curl
curl -X POST http://localhost:8080/chat \
     -H "Content-Type: application/json" \
     -d '{"name": "Abraham Lincoln"}'

Sprawdź, czy otrzymujesz uporządkowane dane wyjściowe w formacie JSON zawierające imię i nazwisko, datę urodzenia i kraj urodzenia.

5. Wdrożenie w Cloud Run

Do wdrożenia aplikacji agenta w Cloud Run użyjemy polecenia gcloud run deploy. To polecenie w jednym kroku tworzy kontener za pomocą Cloud Build i wdraża go w Cloud Run.

Zastąp YOUR_API_KEY swoim kluczem interfejsu 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>

Po wdrożeniu w terminalu powinien pojawić się punkt końcowy, który będzie gotowy do użycia.

6. Testowanie wdrożenia

Użyj punktu końcowego Cloud Run i wykonaj curl, aby uzyskać oczekiwane wyniki.

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

Powinien być taki sam jak w przypadku aplikacji uruchomionej lokalnie.

7. Czyszczenie danych

Aby uniknąć obciążenia konta Google Cloud opłatami za zasoby użyte w tym ćwiczeniu w Codelabs, wykonaj te czynności:

  1. W konsoli Google Cloud otwórz stronę Zarządzanie zasobami.
  2. Z listy projektów wybierz projekt do usunięcia, a potem kliknij Usuń.
  3. W oknie wpisz identyfikator projektu i kliknij Wyłącz, aby usunąć projekt.

8. Gratulacje

Gratulacje! Udało Ci się utworzyć agenta LangChain wdrożonego w Cloud Run i wejść z nim w interakcję.