Hinweis
In diesem Lernprogramm wird davon ausgegangen, dass Sie die Anleitung in den folgenden Artikeln gelesen und befolgt haben:
- LangChain-Agenten erstellen: zum Erstellen von
agentals Instanz vonLangchainAgent. - Nutzerauthentifizierung: zum Authentifizieren als Nutzer für das Abfragen des Agenten.
- SDK importieren und initialisieren: zum Initialisieren des Clients für das Abrufen einer bereitgestellten Instanz (falls erforderlich).
Instanz eines Agenten abrufen
Um einen LangchainAgent abzufragen, müssen Sie zuerst
eine neue Instanz erstellen oder
eine vorhandene Instanz abrufen.
So rufen Sie den LangchainAgent ab, der einer bestimmten Ressourcen-ID entspricht:
Agent Platform SDK
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:
PROJECT_IDist die Google Cloud Projekt-ID, unter der Sie Agenten erstellen und bereitstellen.LOCATIONist eine der unterstützten Regionen.RESOURCE_IDist die ID des bereitgestellten Agenten alsreasoningEngineRessource.
Python-Bibliothek für Anfragen
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_IDWenn Sie das Agent Platform SDK verwenden, entspricht das agent Objekt einer
AgentEngine Klasse, die Folgendes enthält:
agent.api_resourcemit Informationen zum bereitgestellten Agenten. Sie können auchagent.operation_schemas()aufrufen, um die Liste der Vorgänge zurückzugeben die deragentunterstützt. Weitere Informationen finden Sie unter Unterstützte Vorgänge.agent.api_client, der synchrone Dienstinteraktionen ermöglichtagent.async_api_client, der asynchrone Dienstinteraktionen ermöglicht
Im Rest 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: zum synchronen Abrufen einer Antwort auf eine Abfrage.stream_query: zum Streamen einer Antwort auf eine Abfrage.
Die Methoden query und stream_query unterstützen dieselben Argumenttypen:
input: die Nachrichten, die an den Agenten gesendet werden sollen.config: die Konfiguration (falls zutreffend) für den Kontext der Abfrage.
Agent abfragen
Verwenden Sie die LangchainAgent.query Methode, um den Agenten mit einer Eingabe abzufragen:
agent.query(input="What is the exchange rate from US dollars to SEK today?")
entspricht dem Folgenden (in vollständiger Form):
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 die role in der Eingabe weggelassen wird, wird standardmäßig "user" verwendet.
| Rolle | Beschreibung |
|---|---|
system |
Wird verwendet, um dem Chatmodell mitzuteilen, wie es sich verhalten soll, und um zusätzlichen Kontext bereitzustellen. Wird nicht von allen Chatmodellanbietern unterstützt. |
user |
Stellt die Eingabe eines Nutzers dar, der mit dem Modell interagiert, normalerweise in Form von Text oder einer anderen interaktiven Eingabe. |
assistant |
Stellt eine Antwort des Modells dar, die Text oder eine Anfrage zum Aufrufen von Tools enthalten kann. |
tool |
Eine Nachricht, die verwendet wird, um die Ergebnisse eines Toolaufrufs an das Modell zurückzugeben, nachdem externe Daten oder eine Verarbeitung abgerufen wurden. |
Der 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-3.5-flash",
runnable_builder=lambda model, **kwargs: model,
)
Multimodale Nachrichten werden durch Inhaltsblöcke dargestellt, die einen type und entsprechende Daten angeben. Im Allgemeinen geben Sie für multimodale Inhalte
den type als "media" an, den file_uri als Cloud Storage-URI
und den mime_type zum Interpretieren der Datei.
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
Beim Abfragen des Agenten können Sie auch eine config für den Agenten angeben, die
dem Schema einer RunnableConfig folgt.
Zwei häufige Szenarien sind:
- Standardkonfigurationsparameter:
run_id/run_name: Kennung für die Ausführung.tags/metadata: Klassifikator für die Ausführung beim Tracing mit OpenTelemetry.
- Benutzerdefinierte Konfigurationsparameter (über
configurable):session_id: die Sitzung, unter der die Ausführung stattfindet (siehe Chatverlauf speichern).thread_id: der Thread, unter dem die Ausführung stattfindet (siehe Checkpoints speichern).
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)