AG2, fork berbasis komunitas dari AutoGen asli, adalah framework open source untuk membangun agen berteknologi AI.
Halaman ini menunjukkan cara mengembangkan agen menggunakan template AG2 khusus framework (class AG2Agent
di Vertex AI SDK untuk Python). Agen menampilkan nilai tukar antara dua mata uang pada tanggal tertentu. Berikut langkah-langkahnya:
- 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 Versi model yang akan digunakan.
model = "gemini-2.0-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-2.0-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 (misalnya, 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-2.0-flash': {'cost': 5.2875e-06,
'prompt_tokens': 34,
'completion_tokens': 62,
'total_tokens': 96}},
'usage_excluding_cached_inference': {'total_cost': 5.2875e-06,
'gemini-2.0-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-2.0-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-2.0-flash", # Or "meta/llama3-405b-instruct-maas".
runnable_name=runnable_name, # Required.
llm_config=llm_config, # Optional.
)
Langkah 2. Menentukan dan menggunakan alat
Setelah Anda 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 mendeskripsikan parameter fungsi, tindakan yang dilakukan fungsi, dan nilai yang ditampilkan fungsi. Informasi ini digunakan oleh model untuk menentukan fungsi mana yang akan digunakan. Anda juga harus menguji fungsi secara lokal untuk memastikan 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 Anda menggunakannya di agen, jalankan perintah berikut:
get_exchange_rate(currency_from="USD", currency_to="SEK")
Responsnya akan mirip dengan berikut ini:
{'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 bawah 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-2.0-flash': {'cost': 0.0002790625,
'prompt_tokens': 757,
'completion_tokens': 34,
'total_tokens': 791}},
'usage_excluding_cached_inference': {'total_cost': 0.0002790625,
'gemini-2.0-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 ingin
(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
- Gunakan agen AG2.
- Mengevaluasi agen.
- Men-deploy agen.
- Memecahkan masalah pengembangan agen.
- Dapatkan dukungan.