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 di:

Operasi yang didukung

Operasi berikut didukung untuk LangchainAgent:

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

Metode query dan stream_query mendukung jenis argumen yang sama:

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

Membuat kueri agen

Perintah:

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

setara dengan yang berikut ini (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 dihilangkan dalam input, setelan 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 Merepresentasikan input dari pengguna yang berinteraksi dengan model, biasanya dalam bentuk teks atau input interaktif lainnya.
assistant Merepresentasikan 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 pesan lainnya diinterpretasikan (lihat Menangani konten multi-modal).

Mengkueri 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-1.5-pro-preview-0409",
    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:

Mengkueri 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:

  • Parameter konfigurasi default:
  • Parameter konfigurasi kustom (melalui configurable):

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 selanjutnya