AG2-Agent erstellen

Mit Agent Runtime können Sie KI-Agenten mit der frameworkspezifischen AG2-Vorlage entwickeln und bereitstellen. Diese Vorlage ist ein von der Community betriebener Fork von AutoGen. Mit der Klasse AG2Agent im Agent Platform SDK können Sie KI-Agenten erstellen, die komplexe Aufgaben ausführen und in externe Tools eingebunden werden können.

In diesem Dokument wird erläutert, wie Sie einen AG2-Agenten entwickeln, einschließlich der Definition des Modells, des Hinzufügens von Tools und der Anpassung des Orchestrierungsablaufs.

Weitere Informationen zum Verwalten Ihrer bereitgestellten KI-Agenten finden Sie unter Bereitgestellte KI-Agenten verwalten.

So erstellen Sie einen AG2-Agenten:

  1. Ausführbares Programm definieren und konfigurieren
  2. Tool definieren und verwenden
  3. Optional: Orchestrierung anpassen

Hinweis

Folgen Sie der Anleitung unter Umgebung einrichten, um Ihre Umgebung einzurichten.

Schritt 1: Ausführbares Programm definieren und konfigurieren

Geben Sie das Modell an, das Sie verwenden möchten:

model = "gemini-3.5-flash"

Definieren Sie den Namen des ausführbaren Programms:

runnable_name = "Get Exchange Rate Agent"

Optional: Konfigurieren Sie das Modell:

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",
    }]
}

Weitere Informationen zum Konfigurieren des Modells in AG2 finden Sie unter Model Configuration Deep-dive.

Optional: Konfigurieren Sie die Sicherheitseinstellungen des Modells. Das folgende Beispiel zeigt, wie Sie die Sicherheitseinstellungen konfigurieren können:

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

Weitere Informationen zu den Optionen für Sicherheitseinstellungen in Gemini finden Sie unter Sicherheits attribute konfigurieren.

Erstellen Sie einen AG2Agent mit den Modellkonfigurationen:

from vertexai import agent_engines

agent = agent_engines.AG2Agent(
    model=model,                  # Required.
    runnable_name=runnable_name,  # Required.
    llm_config=llm_config,        # Optional.
)

Wenn Sie in einer interaktiven Umgebung (z. B. einem Terminal oder Colab-Notebook) arbeiten, können Sie als Zwischenschritt eine Abfrage ausführen:

response = agent.query(input="What is the exchange rate from US dollars to SEK today?", max_turns=1)

print(response)

Die Antwort ist ein Python-Wörterbuch, das dem folgenden Beispiel ähnelt:

{'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': []}

Optional: Erweiterte Anpassung

Die AG2Agent Vorlage verwendet api_type=="google" standardmäßig, da sie Zugriff auf alle in Google Cloudverfügbaren Foundation Models bietet. Wenn Sie ein Modell verwenden möchten, das nicht über api_type=="google"verfügbar ist, können Sie den llm_config Parameter anpassen.

Eine Liste der in AG2 unterstützten Modelle und ihrer Funktionen finden Sie unter Modellanbieter. Die unterstützten Werte für llm_config= sind für jedes Chatmodell spezifisch. Weitere Informationen finden Sie in der entsprechenden Dokumentation.

Gemini

Standardmäßig installiert.

Wird in AG2Agent verwendet, wenn Sie das Argument llm_config weglassen, z. B.

from vertexai import agent_engines

agent = agent_engines.AG2Agent(
    model=model,                # Required.
    runnable_name=runnable_name # Required.
)

Anthropic

Folgen Sie zuerst der Dokumentation um ein Konto einzurichten und das Paket zu installieren.

Definieren Sie dann eine llm_config:

llm_config = {
    "config_list": [{
        "model": "claude-3-5-sonnet-20240620",            # Required.
        "api_key": "ANTHROPIC_API_KEY",  # Required.
        "api_type": "anthropic",                          # Required.
     }]
}

Verwenden Sie sie schließlich in AG2Agent mit dem folgenden Code:

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

Sie können OpenAI in Verbindung mit der ChatCompletions API von Gemini verwenden.

Definieren Sie zuerst eine 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.
    }]
}

Verwenden Sie sie schließlich in AG2Agent mit dem folgenden Code:

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.
)

Schritt 2: Tool definieren und verwenden

Nachdem Sie Ihr Modell definiert haben, definieren Sie im nächsten Schritt die Tools, die Ihr Modell für Logik verwendet. Ein Tool kann ein AG2-Tool oder eine Python-Funktion sein.

Wenn Sie Ihre Funktion definieren, ist es wichtig, Kommentare einzufügen, die die Parameter der Funktion, ihre Funktionsweise und die Rückgabe vollständig und klar beschreiben. Diese Informationen werden vom Modell verwendet, um zu bestimmen, welche Funktion verwendet werden soll. Sie müssen Ihre Funktion auch lokal testen, um zu bestätigen, dass sie funktioniert.

Verwenden Sie den folgenden Code, um eine Funktion zu definieren, die einen Wechselkurs zurückgibt:

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()

Wenn Sie die Funktion testen möchten, bevor Sie sie in Ihrem KI-Agenten verwenden, führen Sie Folgendes aus:

get_exchange_rate(currency_from="USD", currency_to="SEK")

Die Antwort sollte in etwa so aussehen:

{'amount': 1.0, 'base': 'USD', 'date': '2024-02-22', 'rates': {'SEK': 10.3043}}

Wenn Sie das Tool in AG2Agent verwenden möchten, fügen Sie es der Liste der Tools unter dem Argument tools= hinzu:

from vertexai import agent_engines

agent = agent_engines.AG2Agent(
    model=model,                 # Required.
    runnable_name=runnable_name, # Required.
    tools=[get_exchange_rate],   # Optional.
)

Sie können den KI-Agenten lokal testen, indem Sie Testabfragen an ihn durchführen. Führen Sie den folgenden Befehl aus, um den KI-Agenten lokal mit US-Dollar und schwedischen Kronen zu testen:

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

Die Antwort ist ein Wörterbuch, das dem folgenden ähnelt:

{'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': []}

Schritt 3: Orchestrierung anpassen

Alle AG2-Agenten implementieren die ConversableAgent-Schnittstelle, die Eingabe- und Ausgabeschemas für die Orchestrierung bereitstellt. Für die AG2Agent Vorlage muss ein ausführbares Programm erstellt werden, damit sie auf Abfragen antworten kann. Standardmäßig erstellt AG2Agent ein solches ausführbares Programm, indem das Modell mit Toolsverknüpft wird.

Sie können die Orchestrierung anpassen, wenn Sie (i) einen Assistant Agenten implementieren möchten, der eine Aufgabe mit einem Modell löst, oder (ii) einen User Proxy Agenten implementieren möchten, der Code ausführen und Feedback an die anderen Agenten geben kann, oder (iii) einen Reasoning Agenten implementieren möchten, der eine Aufgabe mit einem Modell und der Tree-of-Thought-Methode löst. Dazu müssen Sie das ausführbare Standardprogramm beim Erstellen AG2Agent überschreiben, indem Sie das runnable_builder= Argument mit einer Python-Funktion der folgenden Signatur angeben:


def runnable_builder(
    **runnable_kwargs,
):

So haben Sie verschiedene Möglichkeiten, die Orchestrierungslogik anzupassen.

Assistant Agent

Im einfachsten Fall können Sie den runnable_builder für AG2Agent überschreiben, um einen Assistant Agent ohne Orchestrierung zu erstellen.

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,
)

User Proxy Agent

Im einfachsten Fall können Sie den runnable_builder für AG2Agent überschreiben, um einen User Proxy Agent ohne Orchestrierung zu erstellen.

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,
)

Reasoning Agent

Im einfachsten Fall können Sie den runnable_builder für AG2Agent überschreiben, um einen Reasoning Agent ohne Orchestrierung zu erstellen.

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,
)

Nächste Schritte

Anleitung

Hier erfahren Sie mehr über die fünf Möglichkeiten, einen KI-Agenten in Agent Platform Runtime bereitzustellen.

Anleitung

AG2-Agenten mit Agent Platform Runtime verwenden.

Anleitung

Einen einfachen KI-Agenten erstellen und bereitstellen und den Gen AI Evaluation Service verwenden, um den KI-Agenten zu bewerten.

Fehlerbehebung

Hier erfahren Sie, wie Sie häufige Fehler beim Erstellen benutzerdefinierter KI-Agenten beheben.

Ressource

Ressourcen und Support für Google Agent Platform.