AG2Agent di Agent Platform SDK, Anda dapat membuat agen yang melakukan
tugas kompleks dan terintegrasi dengan alat eksternal.
Dokumen ini menjelaskan cara mengembangkan agen AG2, termasuk menentukan model, menambahkan alat, dan menyesuaikan alur orkestrasi.
Untuk mengetahui informasi selengkapnya tentang mengelola agen yang di-deploy, lihat Mengelola agen yang di-deploy.
Untuk membuat agen AG2:
- Menentukan dan mengonfigurasi runnable
- Menentukan dan menggunakan alat
- Opsional: Menyesuaikan orkestrasi
Sebelum memulai
Pastikan lingkungan Anda disiapkan dengan mengikuti langkah-langkah dalam Menyiapkan lingkungan Anda.
Langkah 1. Menentukan dan mengonfigurasi runnable
Tentukan model yang ingin Anda gunakan:
model = "gemini-3.5-flash"
Tentukan nama runnable yang akan digunakan:
runnable_name = "Get Exchange Rate Agent"
Opsional: Konfigurasi model:
from google.cloud.aiplatform.aiplatform import initializer
llm_config = {
"config_list": [{
"project_id": initializer.global_config.project,
"location": initializer.global_config.location,
"model": "gemini-3.5-flash",
"api_type": "google",
}]
}
Untuk mempelajari lebih lanjut cara mengonfigurasi model di AG2, lihat Pembahasan Mendalam Konfigurasi Model.
Opsional: Konfigurasi setelan keamanan model. Berikut adalah contoh cara mengonfigurasi setelan keamanan:
from vertexai.generative_models import HarmBlockThreshold, HarmCategory
safety_settings = {
HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_ONLY_HIGH,
HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_ONLY_HIGH,
HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_ONLY_HIGH,
HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_ONLY_HIGH,
}
for config_item in llm_config["config_list"]:
config_item["safety_settings"] = safety_settings
Untuk mempelajari lebih lanjut opsi yang tersedia untuk setelan keamanan di Gemini, lihat Mengonfigurasi atribut keamanan.
Buat
AG2Agent
menggunakan konfigurasi model:
from vertexai import agent_engines
agent = agent_engines.AG2Agent(
model=model, # Required.
runnable_name=runnable_name, # Required.
llm_config=llm_config, # Optional.
)
Jika Anda menjalankan di lingkungan interaktif (seperti terminal atau notebook Colab), Anda dapat menjalankan kueri sebagai langkah pengujian perantara:
response = agent.query(input="What is the exchange rate from US dollars to SEK today?", max_turns=1)
print(response)
Responsnya adalah kamus Python yang mirip dengan contoh berikut:
{'chat_id': None,
'chat_history': [{'content': 'What is the exchange rate from US dollars to Swedish currency?',
'role': 'assistant',
'name': 'user'},
{'content': 'I do not have access to real-time information, including currency exchange rates. To get the most up-to-date exchange rate from US dollars to Swedish Krona (SEK), I recommend using a reliable online currency converter or checking with your bank. \n',
'role': 'user',
'name': 'Exchange Rate Agent'}],
'summary': 'I do not have access to real-time information, including currency exchange rates. To get the most up-to-date exchange rate from US dollars to Swedish Krona (SEK), I recommend using a reliable online currency converter or checking with your bank. \n',
'cost': {'usage_including_cached_inference': {'total_cost': 5.2875e-06,
'gemini-3.5-flash': {'cost': 5.2875e-06,
'prompt_tokens': 34,
'completion_tokens': 62,
'total_tokens': 96}},
'usage_excluding_cached_inference': {'total_cost': 5.2875e-06,
'gemini-3.5-flash': {'cost': 5.2875e-06,
'prompt_tokens': 34,
'completion_tokens': 62,
'total_tokens': 96}}},
'human_input': []}
Opsional: Penyesuaian lanjutan
Template
AG2Agent
menggunakan api_type=="google" secara default, karena memberikan akses ke semua
model dasar yang tersedia di Google Cloud. Untuk menggunakan model yang tidak tersedia melalui api_type=="google", Anda dapat menyesuaikan parameter llm_config.
Untuk mengetahui daftar model yang didukung di AG2 dan kemampuannya, lihat
Penyedia Model.
Kumpulan nilai yang didukung untuk llm_config= khusus untuk setiap model chat, jadi Anda harus melihat dokumentasinya masing-masing untuk mengetahui detailnya.
Gemini
Diinstal secara default.
Digunakan dalam AG2Agent saat Anda menghilangkan argumen llm_config, misalnya
from vertexai import agent_engines
agent = agent_engines.AG2Agent(
model=model, # Required.
runnable_name=runnable_name # Required.
)
Anthropic
Pertama, ikuti dokumentasinya untuk menyiapkan akun dan menginstal paket.
Selanjutnya, tentukan llm_config:
llm_config = {
"config_list": [{
"model": "claude-3-5-sonnet-20240620", # Required.
"api_key": "ANTHROPIC_API_KEY", # Required.
"api_type": "anthropic", # Required.
}]
}
Terakhir, gunakan di AG2Agent dengan kode berikut:
from vertexai import agent_engines
agent = agent_engines.AG2Agent(
model="claude-3-5-sonnet-20240620", # Required.
runnable_name=runnable_name, # Required.
llm_config=llm_config, # Optional.
)
OpenAI
Anda dapat menggunakan OpenAI bersama dengan ChatCompletions API Gemini.
Pertama, tentukan llm_config:
import google.auth
from google.cloud.aiplatform.aiplatform import initializer
project = initializer.global_config.project
location = initializer.global_config.location
base_url = f"https://{location}-aiplatform.googleapis.com/v1beta1/projects/{project}/locations/{location}/endpoints/openapi"
# Note: the credential lives for 1 hour by default.
# After expiration, it must be refreshed.
creds, _ = google.auth.default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
llm_config = {
"config_list": [{
"model": "google/gemini-3.5-flash", # Required.
"api_type": "openai", # Required.
"base_url": base_url, # Required.
"api_key": creds.token, # Required.
}]
}
Terakhir, gunakan di AG2Agent dengan kode berikut:
from vertexai import agent_engines
agent = agent_engines.AG2Agent(
model="google/gemini-3.5-flash", # Or "meta/llama3-405b-instruct-maas".
runnable_name=runnable_name, # Required.
llm_config=llm_config, # Optional.
)
Langkah 2. Menentukan dan menggunakan alat
Setelah menentukan model, langkah berikutnya adalah menentukan alat yang digunakan model Anda untuk melakukan penalaran. Alat dapat berupa alat AG2 atau fungsi Python.
Saat menentukan fungsi, Anda harus menyertakan komentar yang sepenuhnya dan jelas menjelaskan parameter fungsi, apa yang dilakukan fungsi, dan apa yang dikembalikan fungsi. Informasi ini digunakan oleh model untuk menentukan fungsi mana yang akan digunakan. Anda juga harus menguji fungsi secara lokal untuk mengonfirmasi bahwa fungsi tersebut berfungsi.
Gunakan kode berikut untuk menentukan fungsi yang menampilkan nilai tukar:
def get_exchange_rate(
currency_from: str = "USD",
currency_to: str = "EUR",
currency_date: str = "latest",
):
"""Retrieves the exchange rate between two currencies on a specified date.
Uses the Frankfurter API (https://api.frankfurter.app/) to obtain
exchange rate data.
Args:
currency_from: The base currency (3-letter currency code).
Defaults to "USD" (US Dollar).
currency_to: The target currency (3-letter currency code).
Defaults to "EUR" (Euro).
currency_date: The date for which to retrieve the exchange rate.
Defaults to "latest" for the most recent exchange rate data.
Can be specified in YYYY-MM-DD format for historical rates.
Returns:
dict: A dictionary containing the exchange rate information.
Example: {"amount": 1.0, "base": "USD", "date": "2023-11-24",
"rates": {"EUR": 0.95534}}
"""
import requests
response = requests.get(
f"https://api.frankfurter.app/{currency_date}",
params={"from": currency_from, "to": currency_to},
)
return response.json()
Untuk menguji fungsi sebelum menggunakannya di agen, jalankan perintah berikut:
get_exchange_rate(currency_from="USD", currency_to="SEK")
Responsnya akan terlihat seperti berikut:
{'amount': 1.0, 'base': 'USD', 'date': '2024-02-22', 'rates': {'SEK': 10.3043}}
Untuk menggunakan alat di dalam AG2Agent, Anda akan menambahkannya ke
daftar alat di bagian argumen tools=:
from vertexai import agent_engines
agent = agent_engines.AG2Agent(
model=model, # Required.
runnable_name=runnable_name, # Required.
tools=[get_exchange_rate], # Optional.
)
Anda dapat menguji agen secara lokal dengan melakukan kueri pengujian terhadapnya. Jalankan perintah berikut untuk menguji agen secara lokal menggunakan dolar AS dan Krona Swedia:
response = agent.query(input="What is the exchange rate from US dollars to Swedish currency?", max_turns=2)
Responsnya adalah kamus yang mirip dengan berikut ini:
{'chat_id': None,
'chat_history': [{'content': 'What is the exchange rate from US dollars to Swedish currency?',
'role': 'assistant',
'name': 'user'},
{'content': '',
'tool_calls': [{'id': '2285',
'function': {'arguments': '{"currency_from": "USD", "currency_to": "SEK"}',
'name': 'get_exchange_rate'},
'type': 'function'}],
'role': 'assistant'},
{'content': "{'amount': 1.0, 'base': 'USD', 'date': '2025-02-27', 'rates': {'SEK': 10.6509}}",
'tool_responses': [{'tool_call_id': '2285',
'role': 'tool',
'content': "{'amount': 1.0, 'base': 'USD', 'date': '2025-02-27', 'rates': {'SEK': 10.6509}}"}],
'role': 'tool',
'name': 'user'},
{'content': 'The current exchange rate is 1 USD to 10.6509 SEK. \n',
'role': 'user',
'name': 'Get Exchange Rate Agent'},
{'content': 'What is the exchange rate from US dollars to Swedish currency?',
'role': 'assistant',
'name': 'user'},
{'content': '',
'tool_calls': [{'id': '4270',
'function': {'arguments': '{"currency_from": "USD", "currency_to": "SEK"}',
'name': 'get_exchange_rate'},
'type': 'function'}],
'role': 'assistant'},
{'content': "{'amount': 1.0, 'base': 'USD', 'date': '2025-02-27', 'rates': {'SEK': 10.6509}}",
'tool_responses': [{'tool_call_id': '4270',
'role': 'tool',
'content': "{'amount': 1.0, 'base': 'USD', 'date': '2025-02-27', 'rates': {'SEK': 10.6509}}"}],
'role': 'tool',
'name': 'user'},
{'content': 'The current exchange rate is 1 USD to 10.6509 SEK. \n',
'role': 'user',
'name': 'Get Exchange Rate Agent'}],
'summary': 'The current exchange rate is 1 USD to 10.6509 SEK. \n',
'cost': {'usage_including_cached_inference': {'total_cost': 0.0002790625,
'gemini-3.5-flash': {'cost': 0.0002790625,
'prompt_tokens': 757,
'completion_tokens': 34,
'total_tokens': 791}},
'usage_excluding_cached_inference': {'total_cost': 0.0002790625,
'gemini-3.5-flash': {'cost': 0.0002790625,
'prompt_tokens': 757,
'completion_tokens': 34,
'total_tokens': 791}}},
'human_input': []}
Langkah 3. Menyesuaikan orkestrasi
Semua agen AG2 menerapkan antarmuka ConversableAgent,
yang menyediakan skema input dan output untuk orkestrasi. Template
AG2Agent
memerlukan runnable untuk dibuat agar dapat merespons kueri. Secara
default,
AG2Agent
akan membuat runnable tersebut dengan mengikat model dengan
alat.
Anda mungkin ingin menyesuaikan orkestrasi jika Anda bermaksud (i) menerapkan
Agen
Asisten
yang menyelesaikan tugas dengan model, atau (ii) menerapkan Agen
Proxy Pengguna
yang dapat mengeksekusi kode dan memberikan masukan kepada agen lain, atau (iii)
menerapkan Agen
Penalaran yang
menyelesaikan tugas dengan model dan penalaran tree-of-thought. Untuk melakukannya, Anda harus
mengganti runnable default saat membuat
AG2Agent
dengan menentukan argumen runnable_builder= dengan fungsi Python dari
tanda tangan berikut:
def runnable_builder(
**runnable_kwargs,
):
Hal ini memberikan berbagai opsi untuk menyesuaikan logika orkestrasi.
Agen Asisten
Dalam kasus paling sederhana, untuk membuat agen asisten tanpa orkestrasi,
Anda dapat mengganti runnable_builder untuk AG2Agent.
from vertexai import agent_engines
def runnable_builder(**kwargs):
from autogen import agentchat
return agentchat.AssistantAgent(**kwargs)
agent = agent_engines.AG2Agent(
model=model,
runnable_name=runnable_name,
runnable_builder=runnable_builder,
)
Agen Proxy Pengguna
Dalam kasus paling sederhana, untuk membuat agen proxy pengguna tanpa orkestrasi,
Anda dapat mengganti runnable_builder untuk AG2Agent.
from vertexai import agent_engines
def runnable_builder(**kwargs):
from autogen import agentchat
return agentchat.UserProxyAgent(**kwargs)
agent = agent_engines.AG2Agent(
model=model,
runnable_name=runnable_name,
runnable_builder=runnable_builder,
)
Agen Penalaran
Dalam kasus paling sederhana, untuk membuat agen penalaran tanpa orkestrasi,
Anda dapat mengganti runnable_builder untuk AG2Agent.
from vertexai import agent_engines
def runnable_builder(**kwargs):
from autogen import agentchat
return agentchat.ReasoningAgent(**kwargs)
agent = agent_engines.AG2Agent(
model=model,
runnable_name=runnable_name,
runnable_builder=runnable_builder,
)
Langkah berikutnya
Men-deploy agen
Pelajari lima cara men-deploy agen di Agent Platform Runtime berdasarkan kebutuhan pengembangan Anda.
Mengevaluasi agen Anda
Membuat dan men-deploy agen dasar serta menggunakan layanan evaluasi AI Generatif untuk mengevaluasi agen
Memecahkan masalah pembuatan agen
Pelajari cara mengatasi error umum saat membuat agen kustom.