Menggunakan agen LangChain

Selain petunjuk umum untuk menggunakan agen, halaman ini menjelaskan fitur yang khusus untuk LangchainAgent.

Sebelum memulai

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

Operasi yang didukung

Operasi berikut didukung untuk LangchainAgent:

  • 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