Menggunakan agen LangChain

Sebelum memulai

Tutorial ini mengasumsikan bahwa Anda telah membaca dan mengikuti petunjuk dalam:

Mendapatkan instance agen

Untuk membuat kueri LangchainAgent, Anda harus membuat instance baru atau mendapatkan instance yang ada terlebih dahulu.

Untuk mendapatkan LangchainAgent yang sesuai dengan ID resource tertentu:

Vertex AI SDK untuk Python

Jalankan kode berikut:

import vertexai

client = vertexai.Client(  # For service interactions via client.agent_engines
    project="PROJECT_ID",
    location="LOCATION",
)

agent = client.agent_engines.get(name="projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")

print(agent)

di mana

Library permintaan Python

Jalankan kode berikut:

from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests

def get_identity_token():
    credentials, _ = google_auth.default()
    auth_request = google_requests.Request()
    credentials.refresh(auth_request)
    return credentials.token

response = requests.get(
f"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID",
    headers={
        "Content-Type": "application/json; charset=utf-8",
        "Authorization": f"Bearer {get_identity_token()}",
    },
)

REST API

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID

Saat menggunakan Vertex AI SDK untuk Python, objek agent sesuai dengan class AgentEngine yang berisi hal berikut:

  • agent.api_resource dengan informasi tentang agen yang di-deploy. Anda juga dapat memanggil agent.operation_schemas() untuk menampilkan daftar operasi yang didukung agen. Lihat Operasi yang didukung untuk mengetahui detailnya.
  • agent.api_client yang memungkinkan interaksi layanan sinkron
  • agent.async_api_client yang memungkinkan interaksi layanan asinkron

Bagian selanjutnya mengasumsikan bahwa Anda memiliki instance AgentEngine, yang diberi nama agent.

Operasi yang didukung

Operasi berikut didukung:

  • query: untuk mendapatkan respons terhadap kueri secara sinkron.
  • stream_query: untuk melakukan streaming respons terhadap kueri.

Metode query dan stream_query mendukung jenis argumen yang sama:

  • input: pesan yang akan dikirim ke agen.
  • config: konfigurasi (jika berlaku) untuk konteks kueri.

Membuat kueri agen

Perintah:

agent.query(input="What is the exchange rate from US dollars to SEK today?")

setara dengan berikut (dalam bentuk lengkap):

agent.query(input={
    "input": [ # The input is represented as a list of messages (each message as a dict)
        {
            # The role (e.g. "system", "user", "assistant", "tool")
            "role": "user",
            # The type (e.g. "text", "tool_use", "image_url", "media")
            "type": "text",
            # The rest of the message (this varies based on the type)
            "text": "What is the exchange rate from US dollars to Swedish currency?",
        },
    ]
})

Peran digunakan untuk membantu model membedakan berbagai jenis pesan saat merespons. Jika role tidak ada dalam input, nilai defaultnya adalah "user".

Peran Deskripsi
system Digunakan untuk memberi tahu model chat cara berperilaku dan memberikan konteks tambahan. Tidak didukung oleh semua penyedia model chat.
user Mewakili input dari pengguna yang berinteraksi dengan model, biasanya dalam bentuk teks atau input interaktif lainnya.
assistant Mewakili respons dari model, yang dapat mencakup teks atau permintaan untuk memanggil alat.
tool Pesan yang digunakan untuk meneruskan hasil pemanggilan alat kembali ke model setelah data atau pemrosesan eksternal diambil.

type pesan juga akan menentukan cara penafsiran bagian pesan lainnya (lihat Menangani konten multi-modal).

Mengirim kueri ke agen dengan konten multi-modal

Kita akan menggunakan agen berikut (yang meneruskan input ke model dan tidak menggunakan alat apa pun) untuk mengilustrasikan cara meneruskan input multimodal ke agen:

agent = agent_engines.LangchainAgent(
    model="gemini-2.0-flash",
    runnable_builder=lambda model, **kwargs: model,
)

Pesan multimodal direpresentasikan melalui blok konten yang menentukan type dan data yang sesuai. Secara umum, untuk konten multimodal, Anda akan menentukan type menjadi "media", file_uri untuk mengarah ke URI Cloud Storage, dan mime_type untuk menafsirkan file.

Gambar

agent.query(input={"input": [
    {"type": "text", "text": "Describe the attached media in 5 words!"},
    {"type": "media", "mime_type": "image/jpeg", "file_uri": "gs://cloud-samples-data/generative-ai/image/cricket.jpeg"},
]})

Video

agent.query(input={"input": [
    {"type": "text", "text": "Describe the attached media in 5 words!"},
    {"type": "media", "mime_type": "video/mp4", "file_uri": "gs://cloud-samples-data/generative-ai/video/pixel8.mp4"},
]})

Audio

agent.query(input={"input": [
    {"type": "text", "text": "Describe the attached media in 5 words!"},
    {"type": "media", "mime_type": "audio/mp3", "file_uri": "gs://cloud-samples-data/generative-ai/audio/pixel.mp3"},
]})

Untuk mengetahui daftar jenis MIME yang didukung oleh Gemini, buka dokumentasi di:

Mengirim kueri ke agen dengan konfigurasi yang dapat dijalankan

Saat membuat kueri agen, Anda juga dapat menentukan config untuk agen (yang mengikuti skema RunnableConfig). Dua skenario umum adalah:

Sebagai contoh:

import uuid

run_id = uuid.uuid4()  # Generate an ID for tracking the run later.

response = agent.query(
    input="What is the exchange rate from US dollars to Swedish currency?",
    config={  # Specify the RunnableConfig here.
        "run_id": run_id                               # Optional.
        "tags": ["config-tag"],                        # Optional.
        "metadata": {"config-key": "config-value"},    # Optional.
        "configurable": {"session_id": "SESSION_ID"}   # Optional.
    },
)

print(response)

Langkah berikutnya