Men-deploy Agen LangChain di Cloud Run

1. Ringkasan

Agen adalah program otonom yang berkomunikasi dengan model AI untuk melakukan operasi berbasis sasaran menggunakan alat dan konteks yang dimilikinya serta mampu membuat keputusan otonom yang didasarkan pada kebenaran.

Framework agen seperti Agent Development Kit(ADK), LangChain, smolagents digunakan untuk membuat agen. Aplikasi agen yang dibuat melalui framework tersebut dapat di-deploy ke Cloud Run, dan dapat disediakan untuk pengguna sebagai aplikasi tanpa server.

Dalam codelab ini, kita akan membuat agen menggunakan LangChain dan men-deploy-nya ke Cloud Run.

Yang akan Anda buat

Siap beralih dari PROMPT prototipe ke Membangun agen??? Kita akan membuat agen menggunakan LangChain untuk mendapatkan informasi tentang tokoh sejarah dalam format terstruktur. Sebagai bagian dari lab ini, Anda akan:

  1. Membangun agen sederhana untuk membuat informasi tentang tokoh sejarah dalam format terstruktur menggunakan LangChain
  2. Menjalankan agen secara lokal, dan memastikan agen berfungsi seperti yang diharapkan
  3. Men-deploy agen ke Cloud Run, dan memanggilnya menggunakan URL Cloud Run

Persyaratan

  • Browser, seperti Chrome atau Firefox
  • Project Google Cloud yang mengaktifkan penagihan.

2. Sebelum memulai

Membuat project

  1. Di Konsol Google Cloud, di halaman pemilih project, pilih atau buat project Google Cloud.
  2. Pastikan penagihan diaktifkan untuk project Cloud Anda. Pelajari cara memeriksa apakah penagihan diaktifkan di project.
  3. Aktifkan Cloud Shell dengan mengklik link ini. Anda dapat beralih antara Terminal Cloud Shell (untuk menjalankan perintah cloud) dan Editor (untuk membangun project) dengan mengklik tombol yang sesuai dari Cloud Shell.
  4. Setelah terhubung ke Cloud Shell, Anda dapat memeriksa bahwa Anda sudah diautentikasi dan project ditetapkan ke project ID Anda menggunakan perintah berikut:
gcloud auth list
  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda.
gcloud config list project
  1. Jika project Anda belum ditetapkan, gunakan perintah berikut untuk menetapkannya:
gcloud config set project <YOUR_PROJECT_ID>
  1. Pastikan Anda memiliki Python 3.13+

Baca dokumentasi untuk mempelajari perintah gcloud dan penggunaannya.

3. Membuat Agen LangChain

Struktur Project

Di Cloud Shell, buat folder bernama langchain-app, dan tambahkan file berikut di dalamnya:

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

Kode Aplikasi

Berikut adalah dependensi yang harus Anda tambahkan di requirements.txt:

fastapi
uvicorn
langchain
langchain-google-genai
python-dotenv

Di main.py, kita akan menulis kode agen yang menggunakan model Gemini, dan mengambil informasi tentang tokoh sejarah. Setelah diambil, format informasi tersebut akan diubah menjadi format terstruktur seperti yang diarahkan.

Implementasi ini menggunakan sintaksis LCEL (LangChain Expression Language) modern.

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. Menguji Agen

Sebelum men-deploy, Anda dapat mengujinya secara lokal.

  1. Buat kunci Gemini API di AI Studio.
  2. Ekspor kunci Gemini API sebagai:
export GOOGLE_API_KEY="AIzaSy..."
  1. Jalankan server.
uvicorn main:app --port 8080 --host 0.0.0.0
  1. Uji agen menggunakan perintah curl berikut:
curl -X POST http://localhost:8080/chat \
     -H "Content-Type: application/json" \
     -d '{"name": "Abraham Lincoln"}'

Pastikan Anda mendapatkan output terstruktur JSON yang berisi nama, tanggal lahir, dan negara kelahiran.

5. Men-deploy ke Cloud Run

Kita akan menggunakan perintah gcloud run deploy untuk men-deploy aplikasi agen ke Cloud Run. Perintah berikut membangun container menggunakan Cloud Build dan men-deploy-nya ke Cloud Run dalam satu langkah.

Ganti YOUR_API_KEY dengan kunci Gemini API Anda yang sebenarnya.

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

Setelah di-deploy, Anda akan melihat endpoint di terminal yang siap digunakan.

6. Melakukan Pengujian Deployment

Gunakan endpoint Cloud Run, dan lakukan curl untuk memastikan Anda mendapatkan hasil yang diharapkan.

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

Anda akan mendapatkan hasil yang sama seperti yang Anda dapatkan di aplikasi yang berjalan secara lokal.

7. Pembersihan

Agar akun Google Cloud Anda tidak dikenakan biaya untuk resource yang digunakan dalam codelab ini, ikuti langkah-langkah berikut:

  1. Di Konsol Google Cloud, buka halaman Manage resources.
  2. Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

8. Selamat

Selamat! Anda telah berhasil membuat dan berinteraksi dengan agen LangChain yang di-deploy di Cloud Run.