Sebelum memulai
Tutorial ini mengasumsikan bahwa Anda telah membaca dan mengikuti petunjuk dalam:
- Mengembangkan agen LangChain: untuk mengembangkan
agentsebagai instanceLangchainAgent. - Autentikasi pengguna untuk mengautentikasi sebagai pengguna guna membuat kueri agen.
- Impor dan inisialisasi SDK untuk menginisialisasi klien guna mendapatkan instance yang di-deploy (jika diperlukan).
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)
dengan
PROJECT_IDadalah Google Cloud project ID yang digunakan untuk mengembangkan dan men-deploy agen, danLOCATIONadalah salah satu wilayah yang didukung.RESOURCE_IDadalah ID agen yang di-deploy sebagaireasoningEngineresource.
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_IDSaat menggunakan Vertex AI SDK untuk Python, objek agent sesuai dengan
class AgentEngine yang berisi hal berikut:
agent.api_resourcedengan informasi tentang agen yang di-deploy. Anda juga dapat memanggilagent.operation_schemas()untuk menampilkan daftar operasi yang didukung agen. Lihat Operasi yang didukung untuk mengetahui detailnya.agent.api_clientyang memungkinkan interaksi layanan sinkronagent.async_api_clientyang 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:
Mengirim kueri ke agen
Perintah:
agent.query(input="What is the exchange rate from US dollars to SEK today?")
setara dengan 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 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:
Buat 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:
- Parameter konfigurasi default:
run_id/run_name: ID untuk operasi.tags/metadata: pengklasifikasi untuk run saat melakukan pelacakan dengan OpenTelemetry.
- Parameter konfigurasi kustom (melalui
configurable):session_id: sesi tempat operasi terjadi (lihat Menyimpan histori chat).thread_id: thread tempat operasi terjadi (lihat Menyimpan Checkpoint).
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)