Membuat agen AG2

Agent Runtime memungkinkan Anda mengembangkan dan men-deploy agen menggunakan template AG2 spesifik per framework, yang merupakan fork AutoGen yang didorong oleh komunitas. Dengan menggunakan class 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:

  1. Menentukan dan mengonfigurasi runnable
  2. Menentukan dan menggunakan alat
  3. 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

Panduan

Pelajari lima cara men-deploy agen di Agent Platform Runtime berdasarkan kebutuhan pengembangan Anda.

Panduan

Menggunakan agen AG2 dengan Agent Platform Runtime.

Panduan

Membuat dan men-deploy agen dasar serta menggunakan layanan evaluasi AI Generatif untuk mengevaluasi agen

Pemecahan masalah

Pelajari cara mengatasi error umum saat membuat agen kustom.

Resource

Temukan referensi dan dukungan untuk Google Agent Platform.