LangChain-Agent verwenden

Hinweise

In dieser Anleitung wird davon ausgegangen, dass Sie die Anleitung unter folgenden Links gelesen und befolgt haben:

Instanz eines Agenten abrufen

Wenn Sie eine LangchainAgent abfragen möchten, müssen Sie zuerst eine neue Instanz erstellen oder eine vorhandene Instanz abrufen.

So rufen Sie die LangchainAgent für eine bestimmte Ressourcen-ID ab:

Vertex AI SDK für Python

Führen Sie den folgenden Code aus:

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)

Dabei gilt:

Python-Bibliothek „requests“

Führen Sie den folgenden Code aus:

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_ID

Wenn Sie das Vertex AI SDK für Python verwenden, entspricht das agent-Objekt einer AgentEngine-Klasse, die Folgendes enthält:

  • eine agent.api_resource mit Informationen zum bereitgestellten Agent. Sie können auch agent.operation_schemas() aufrufen, um die Liste der Vorgänge zurückzugeben, die vom Agent unterstützt werden. Weitere Informationen finden Sie unter Unterstützte Vorgänge.
  • eine agent.api_client, die synchrone Dienstinteraktionen ermöglicht
  • ein agent.async_api_client, das asynchrone Dienstinteraktionen ermöglicht

Im weiteren Verlauf dieses Abschnitts wird davon ausgegangen, dass Sie eine AgentEngine-Instanz mit dem Namen agent haben.

Unterstützte Vorgänge

Die folgenden Vorgänge werden unterstützt:

  • query: um synchron eine Antwort auf eine Anfrage zu erhalten.
  • stream_query: zum Streamen einer Antwort auf eine Anfrage.

Sowohl die query- als auch die stream_query-Methode unterstützen dieselben Argumenttypen:

  • input: die Nachrichten, die an den Agent gesendet werden sollen.
  • config: Die Konfiguration (falls zutreffend) für den Kontext der Anfrage.

Agent abfragen

Der Befehl bewirkt Folgendes:

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

entspricht dem Folgenden (in Langform):

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

Rollen helfen dem Modell, beim Antworten zwischen verschiedenen Arten von Nachrichten zu unterscheiden. Wenn role in der Eingabe weggelassen wird, wird standardmäßig "user" verwendet.

Rolle Beschreibung
system Damit wird dem Chatmodell mitgeteilt, wie es sich verhalten soll, und es werden zusätzliche Informationen bereitgestellt. Wird nicht von allen Chatmodellanbietern unterstützt.
user Stellt die Eingabe eines Nutzers dar, der mit dem Modell interagiert, in der Regel in Form von Text oder anderen interaktiven Eingaben.
assistant Stellt eine Antwort des Modells dar, die Text oder eine Anfrage zum Aufrufen von Tools enthalten kann.
tool Eine Nachricht, mit der die Ergebnisse eines Tool-Aufrufs an das Modell zurückgegeben werden, nachdem externe Daten oder Verarbeitung abgerufen wurden.

Die type der Nachricht bestimmt auch, wie der Rest der Nachricht interpretiert wird (siehe Multimodale Inhalte verarbeiten).

Agent mit multimodalen Inhalten abfragen

Wir verwenden den folgenden Agenten (der die Eingabe an das Modell weiterleitet und keine Tools verwendet), um zu veranschaulichen, wie multimodale Eingaben an einen Agenten übergeben werden:

agent = agent_engines.LangchainAgent(
    model="gemini-2.0-flash",
    runnable_builder=lambda model, **kwargs: model,
)

Multimodale Nachrichten werden durch Inhaltsblöcke dargestellt, in denen ein type und entsprechende Daten angegeben sind. Im Allgemeinen würden Sie für multimodalen Inhalt type als "media", file_uri als Cloud Storage-URI und mime_type für die Interpretation der Datei angeben.

Bild

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

Eine Liste der von Gemini unterstützten MIME-Typen finden Sie in der Dokumentation zu:

Agent mit einer ausführbaren Konfiguration abfragen

Wenn Sie den Agent abfragen, können Sie auch ein config für den Agent angeben (das dem Schema eines RunnableConfig entspricht). Zwei häufige Szenarien sind:

  • Standardkonfigurationsparameter:
    • run_id / run_name: Kennzeichnung für den Lauf.
    • tags / metadata: Klassifikator für den Lauf beim Tracing mit OpenTelemetry.
  • Benutzerdefinierte Konfigurationsparameter (über configurable):

Beispiel:

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)

Nächste Schritte