Kundenservicemitarbeiter verwenden

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:

  1. Nutzerauthentifizierung
  2. Agent-Instanz abrufen
  3. Unterstützte Vorgänge ansehen
  4. Fragen Sie den Kundenservicemitarbeiter.
  5. (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 Namen query).
  • 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