Der Code für die Abfrage eines Agents ist unabhängig davon identisch, ob er lokal ausgeführt oder remote bereitgestellt wird. Daher bezieht sich der Begriff agent
auf dieser Seite austauschbar auf local_agent
oder remote_agent
. Da die unterstützten Vorgänge je nach Framework variieren, finden Sie hier eine Anleitung zur Verwendung frameworkspezifischer Vorlagen:
Framework | Beschreibung |
---|---|
LangChain | Einfachere Nutzung für grundlegende Anwendungsfälle aufgrund der vordefinierten Konfigurationen und Abstraktionen. |
LangGraph | Graphbasierter Ansatz zum Definieren von Workflows mit erweiterten Human-in-the-Loop-Funktionen und Rückspul-/Wiedergabefunktionen. |
AG2 (früher AutoGen) | AG2 bietet ein Multi-Agent-Konversations-Framework als allgemeine Abstraktion zum Erstellen von LLM-Workflows. |
Für benutzerdefinierte Kundenservicemitarbeiter, die nicht auf einer der frameworkspezifischen Vorlagen basieren, gehen Sie so vor:
- Nutzerauthentifizierung
- Agent-Instanz abrufen
- Unterstützte Vorgänge ansehen
- Fragen Sie den Kundenservicemitarbeiter.
- (Falls zutreffend) Antworten des Kundenservicemitarbeiters streamen
Schritt 1: Nutzerauthentifizierung
Folgen Sie der Anleitung unter Umgebung einrichten.
Schritt 2: Instanz eines Kundenservicemitarbeiters abrufen
Um einen Agenten abzufragen, benötigen Sie zuerst eine Instanz eines Agenten. Sie können entweder eine neue Instanz erstellen oder eine vorhandene Instanz eines Agents abrufen.
So rufen Sie den Agenten ab, der einer bestimmten Ressourcen-ID entspricht:
Vertex AI SDK für Python
Führen Sie den folgenden Code aus:
from vertexai import agent_engines
agent = agent_engines.get(RESOURCE_ID)
Alternativ können Sie den vollständigen Ressourcennamen des Kundenservicemitarbeiters angeben:
agent = agent_engines.get("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")
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
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID
Im weiteren Verlauf dieses Abschnitts wird davon ausgegangen, dass Sie eine Instanz mit dem Namen agent
haben.
Schritt 3: Unterstützte Vorgänge
Wenn Sie den Bot lokal entwickeln, haben Sie Zugriff auf die unterstützten Vorgänge und kennen sie. Wenn Sie einen bereitgestellten Agenten verwenden möchten, können Sie die unterstützten Vorgänge auflisten:
Vertex AI SDK für Python
Führen Sie den folgenden Code aus:
agent.operation_schemas()
Anfragen
Führen Sie den folgenden Code aus:
import json
json.loads(response.content).get("spec").get("classMethods")
REST
In spec.class_methods
aus der Antwort auf die curl-Anfrage.
Das Schema für jeden Vorgang ist ein Wörterbuch, das die Informationen zu einer Methode für den Kundenservicemitarbeiter dokumentiert, die Sie aufrufen können. Das folgende Beispiel zeigt das Vorgangsschema für einen synchronen Vorgang:
Mit dem folgenden Befehl wird eine Liste von Schemas im JSON-Format bereitgestellt, die den Vorgängen des remote_app
-Objekts entsprechen:
agent.operation_schemas()
Im Folgenden finden Sie beispielsweise das Schema für den query
-Vorgang einer LangchainAgent
:
{'api_mode': '',
'name': 'query',
'description': """Queries the Agent with the given input and config.
Args:
input (Union[str, Mapping[str, Any]]):
Required. The input to be passed to the Agent.
config (langchain_core.runnables.RunnableConfig):
Optional. The config (if any) to be used for invoking the Agent.
Returns:
The output of querying the Agent with the given input and config.
""", ' ',
'parameters': {'$defs': {'RunnableConfig': {'description': 'Configuration for a Runnable.',
'properties': {'configurable': {...},
'run_id': {...},
'run_name': {...},
...},
'type': 'object'}},
'properties': {'config': {'nullable': True},
'input': {'anyOf': [{'type': 'string'}, {'type': 'object'}]}},
'required': ['input'],
'type': 'object'}}
Dabei gilt:
name
ist der Name des Vorgangs (z.B.agent.query
für einen Vorgang mit dem Namenquery
).api_mode
ist der API-Modus des Vorgangs (""
für synchron,"stream"
für Streaming).description
ist eine Beschreibung des Vorgangs, die auf dem Docstring der Methode basiert.parameters
ist das Schema der Eingabeargumente im OpenAPI-Schemaformat.
Schritt 4: Kundenservicemitarbeiter befragen
So fragen Sie den Agenten mit einem der unterstützten Vorgänge (z.B. query
) ab:
Vertex AI SDK für Python
agent.query(input={"messages": [
("user", "What is the exchange rate from US dollars to Swedish currency?")
]})
Anfragen
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
requests.post(
f"https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/reasoningEngines/{RESOURCE_ID}:query",
headers={
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"Bearer {get_identity_token()}",
},
data=json.dumps({"input": {
"input": {"messages": [
("user", "What is the exchange rate from US dollars to Swedish currency?")
]},
}})
)
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID:query -d '{
"input": {
"input": {"messages": [
("user", "What is the exchange rate from US dollars to Swedish currency?")
]},
}
}'
Die Abfrageantwort ist ein String, der der Ausgabe eines lokalen Anwendungstests ähnelt:
{"input": "What is the exchange rate from US dollars to Swedish currency?",
# ...
"output": "For 1 US dollar you will get 10.7345 Swedish Krona."}
Schritt 5: Antworten des Kundenservicemitarbeiters streamen
Falls zutreffend, kannst du eine Antwort des Agents mit einem der Vorgänge (z.B. stream_query
) streamen:
Vertex AI SDK für Python
agent = agent_engines.get("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")
agent.stream_query(input={"messages": [
("user", "What is the exchange rate from US dollars to Swedish currency?")
]})
Anfragen
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
requests.post(
f"https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/reasoningEngines/{RESOURCE_ID}:streamQuery",
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {get_identity_token()}",
},
data=json.dumps({"input": {
"input": {"messages": [
("user", "What is the exchange rate from US dollars to Swedish currency?")
]},
}}),
stream=True,
)
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID:streamQuery?alt=sse -d '{
"input": {
"input": {"messages": [
("user", "What is the exchange rate from US dollars to Swedish currency?")
]},
}
}'
Die Agent Engine streamt Antworten als Sequenz von iterativ generierten Objekten. Ein Satz von drei Antworten könnte beispielsweise so aussehen:
{'actions': [{'tool': 'get_exchange_rate', ...}]} # first response
{'steps': [{'action': {'tool': 'get_exchange_rate', ...}}]} # second response
{'output': 'The exchange rate is 11.0117 SEK per USD as of 2024-12-03.'} # final response
Nächste Schritte
- Verwenden Sie einen LangChain-Agenten.
- LangGraph-Agent verwenden
- AG2-Kundenservicemitarbeiter verwenden
- Bereitgestellte Anwendung verwalten.