Agents konfigurieren und mit ihnen interagieren

Sie können einen Agenten auf der Snowsight oder unter Verwendung der REST API erstellen und den Agenten dann in Ihre Anwendung integrieren, um Aufgaben auszuführen oder auf Abfragen zu antworten. Sie müssen zunächst ein Agentenobjekt erstellen, das Informationen wie die Metadaten und Tools sowie Anweisungen zur Orchestrierung enthält, mit denen der Agent eine Aufgabe ausführen oder Fragen beantworten kann. Sie können dann das Agentenobjekt in Ihrer Anwendung referenzieren, um die Funktionalität des Agenten zu integrieren. Sie können einen Thread so konfigurieren, dass der Kontext im Speicher beibehalten wird, sodass der Client den Kontext nicht bei jedem Gesprächswechsel senden muss.

Bemerkung

Snowflake REST-APIs unterstützen die Authentifizierung über programmatische Zugriffstoken (PATs), die Authentifizierung über ein Schlüsselpaar mit JSON-Web Token (JWTs) und OAuth. Weitere Details dazu finden Sie unter Authentifizierung von Snowflake REST APIs mit Snowflake.

Einen Agenten erstellen

Erstellen Sie ein Agentenobjekt, indem Sie die Datenbank und das Schema angeben, in dem sich der Agent befinden soll, sowie einen Namen und eine Beschreibung für den Agenten. Geben Sie außerdem den Anzeigenamen, den Avatar und die Farbe an. Diese Attribute werden von der Clientanwendung verwendet, um den Agenten anzuzeigen. Der Anzeigename wird auch als Handle herangezogen, um den Agenten in Konversationen zu referenzieren.

Die folgenden Beispiele zeigen, wie Sie ein Agentenobjekt auf der Snowsight oder mithilfe der REST API erstellen:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü die Option AI & ML » Agents aus.

  3. Wählen Sie Create agent aus.

  4. Geben Sie für Agent object name einen Namen für den Agenten an, der den Benutzern in der UI angezeigt wird.

  5. Geben Sie für Display name einen Namen für den Agenten an, der für Administratoren in der Agentenliste angezeigt wird.

  6. Wählen Sie Create agent aus.

  7. Stellen Sie dem Agenten allgemeine Wissensanfragen.

Tools hinzufügen

Nachdem Sie den Agenten erstellt haben, müssen Sie Tools hinzufügen und Anweisungen für die toolübergreifende Orchestrierung bereitstellen. Agenten unterstützen die folgenden Arten von Tools:

  • Cortex Analyst: Sie geben die semantischen Ansichten an, damit Cortex Analyst diese zum Abrufen strukturierter Daten verwenden kann. Die Agenten können über mehrere semantische Ansichten routen, um die Antwort bereitzustellen.

  • Cortex Search: Sie stellen die Cortex Search-Indizes als Tools bereit, einschließlich zugehöriger Informationen wie Suchfilter, Spaltennamen und Metadaten. Der Cortex Agent verwendet die Cortex Search-Indizes, um unstrukturierte Daten abzurufen.

  • Kundenspezifische Tools: Sie können Code für eine bestimmte Geschäftslogik als gespeicherte Prozedur oder benutzerdefinierte Funktion (User-Defined Function, UDF) implementieren. Alternativ können Sie auch die kundenspezifischen Tools verwenden, um mit APIs Daten aus Ihren Backend-Systemen abzurufen.

Sie geben auch die von jedem Tool verwendeten Ressourcen an. Bei Cortex Analyst geben Sie z. B. das Warehouse zusammen mit dem Timeout für die SQL-Abfrageausführung an. Ähnlich wie bei Cortex Search geben Sie die Filter und Spaltennamen an, die in der Suchabfrage verwendet werden, ebenso wie die maximalen Ergebnisse in der Suchantwort. Bei kundenspezifischen Tools geben Sie die Warehouse-Details an.

Um die Konfiguration für einen bestehenden Agenten zu ändern, führen Sie die folgenden Schritte aus:

  1. Wählen Sie Edit aus.

  2. Beschreiben Sie unter Description den Agenten und wie Benutzer mit ihm interagieren können.

  3. Um Beispielfragen hinzuzufügen, die Benutzer dem Agenten stellen können, geben Sie eine Beispielfrage ein, und wählen Sie Add a question aus.

  4. Wählen Sie Tools aus. Fügen Sie eines oder mehrere der folgenden Tools hinzu.

    • So fügen Sie dem Agenten in Cortex Analyst eine semantische Ansicht hinzu: In diesem Abschnitt wird davon ausgegangen, dass Sie bereits eine semantische Ansicht erstellt haben. Weitere Informationen zu semantischen Ansichten und deren Erstellung finden Sie unter Überblick über die semantischen Ansichten.

      1. Suchen Sie nach Cortex Analyst und wählen Sie die entsprechende Schaltfläche + Add aus.

      2. Geben Sie für Name einen Namen für die semantische Ansicht ein.

      3. Wählen Sie Semantic view aus.

      4. Wählen Sie die semantische Ansicht aus, die der Agent verwendet.

      5. Wählen Sie für Warehouse das Warehouse aus, das der Agent für Abfragen verwendet.

      6. Geben Sie für Query timeout (seconds) die maximale Zeit in Sekunden an, die der Agent auf den Abschluss einer Abfrage wartet, bevor das Zeitlimit überschritten wird.

      7. Beschreiben Sie unter Description die semantische Ansicht.

      8. Wählen Sie Add aus.

    • So fügen Sie dem Agenten einen Cortex Search Service hinzu: In diesem Abschnitt wird davon ausgegangen, dass Sie bereits einen Cortex Search Service erstellt haben. Informationen zum Erstellen eines Cortex Search Service finden Sie unter Cortex Search. Sie können auch eine Cortex Knowledge Extension verwenden (CKE), die für Sie freigegeben ist. Ein Tutorial, das eine CKE verwendet, finden Sie unter Problembehandlung.

      1. Suchen Sie nach Cortex Search Services und wählen Sie die entsprechende Schaltfläche + Add aus.

      2. Geben Sie unter Name einen Namen für den Cortex Search Service ein.

      3. Beschreiben Sie unter Description den Cortex Search Service.

      4. Wählen Sie unter Search service den Cortex Search Service aus, den der Agent verwendet.

      5. Wählen Sie Add aus.

    • So fügen Sie dem Agenten ein kundenspezifisches Tool hinzu: Durch Hinzufügen von kundenspezifischen Tools können Sie die Funktionalität Ihrer Agenten erweitern. Mit kundenspezifischen Tools kann der Agent gespeicherte Prozeduren und Funktionen aufrufen, die Sie definiert haben, um Aktionen auszuführen oder Berechnungen durchzuführen. In diesem Abschnitt wird davon ausgegangen, dass Sie bereits ein kundenspezifisches Tool erstellt haben. Weitere Informationen zu Prozeduren und Funktionen finden Sie unter Erweitern von Snowflake um Funktionen und Prozeduren.

      1. Suchen Sie nach Custom tools und wählen Sie die entsprechende Schaltfläche + Add aus.

      2. Geben Sie unter Name einen Namen für das kundenspezifische Tool ein.

      3. Wählen Sie unter Resource type aus, ob das kundenspezifische Tool eine Funktion oder eine Prozedur ist. Informationen darüber, ob Sie eine Funktion oder Prozedur verwenden sollten, finden Sie unter Entscheidung über das Schreiben einer gespeicherten Prozedur oder einer benutzerdefinierten Funktion.

      4. Wählen Sie unter Custom tool identifier die vorhandene Funktion oder Prozedur aus, die Sie als kundenspezifisches Tool hinzufügen möchten.

      5. Die zugehörigen Parameter für die Funktion oder Prozedur werden automatisch angezeigt. Sie können Parameter für das kundenspezifische Tool manuell hinzufügen, indem Sie einen Namen, einen Typ und eine Beschreibung hinzufügen und auswählen, ob der Parameter erforderlich ist. Sie können auch Parameter ändern, die automatisch ausgefüllt werden.

      6. Wählen Sie für :ui:`Warehouse`das Warehouse aus, das der Agent für die Ausführung des kundenspezifischen Tools verwendet. Sie müssen ein Warehouse manuell auswählen.

      7. Beschreiben Sie unter Description das kundenspezifische Tool und dessen Verwendung.

      8. Wählen Sie Add aus.

      9. Nachdem Sie das kundenspezifische Tool erstellt haben, stellen Sie sicher, dass den Benutzern USAGE-Berechtigungen für die Funktion oder Prozedur gewährt werden, die Sie als kundenspezifisches Tool hinzugefügt haben. Bei der Verwendung von gespeicherten Prozeduren geben Agents an, ob die Prozedur mit Eigentümer- oder Aufruferrechten ausgeführt wird. Weitere Informationen zu Eigentümer- und Aufruferrechten finden Sie unter Erläuterungen zu gespeicherten Prozeduren mit Aufruferrechten und Eigentümerrechten.

  5. Wählen Sie Save aus.

Orchestrierung angeben

Cortex Agents orchestrieren die Aufgabe, indem sie sie in eine Abfolge von Unteraufgaben aufteilen und das richtige Tool für jede Unteraufgabe identifizieren. Sie geben das LLM an, das der Agent verwenden soll, um diese Orchestrierung durchzuführen. Sie können die Orchestrierung auch beeinflussen, indem Sie Anweisungen bereitstellen. Stellen Sie sich zum Beispiel einen Agenten vor, der so aufgebaut ist, dass er Fragen zu Einzelhandelsprodukten beantwortet. Sie können die Orchestrierungsanweisung "Use the search tool for all requests related to refunds" verwenden, um sicherzustellen, dass der Agent nur Details zur Rückerstattungsrichtlinie bereitstellt (mithilfe von Cortex Search) und nicht tatsächlich die Rückerstattungsbeträge berechnet (mithilfe von Cortex Analyst). Sie können auch Anweisungen formulieren, um die Antwort an eine bestimmte Marke oder Tonalität anzupassen, z. B.: "Always provide provide a concise response; maintain a friendly tone".

  1. Wählen Sie Orchestration aus.

  2. Wählen Sie als Orchestration model das Modell aus, das der Agent für die Orchestrierung verwendet.

  3. Stellen Sie unter Planning instructions Anweisungen bereit, die die Auswahl des Tools durch den Agenten auf der Grundlage von vom Benutzer bereitgestellten Eingaben beeinflussen. Dazu können spezifische Anweisungen gehören, wann welches Tool verwendet werden soll, oder sogar, dass ein Tool immer am Anfang oder Ende einer Antwort verwendet werden soll.

  4. Stellen Sie unter Response instruction Anweisungen bereit, die das Modell zur Erstellung von Antworten verwendet. Geben Sie zum Beispiel an, ob der Agent die Diagrammerstellung priorisieren oder ob er einen bestimmten Tonfall gegenüber den Benutzern beibehalten soll.

  5. Wählen Sie Save aus.

Zugriff auf den Agenten einrichten

Richten Sie Zugriffsrichtlinien über die Snowsight-UI oder mithilfe von SQL ein, sodass die Benutzer auf den Agenten zugreifen können. Geben Sie die Rolle an, über die Zugriff auf den Agenten gewährt werden soll.

  1. Wählen Sie Access aus.

  2. Um einer Rolle Zugriff auf den Agenten zu gewähren, wählen Sie Add role und dann im Dropdown-Menü die Rolle aus.

  3. Wählen Sie Save aus.

Agenten überprüfen

Nachdem Sie den Agenten erstellt haben, können Sie ihn überprüfen, um alle Parameter zu verifizieren.

Bemerkung

Wenn Sie Agenten über die Snowsight überprüfen, können Sie sie nur auf der UI zur Agentenadministration anzeigen. Sie können Agenten nicht im Datenbankobjekt-Explorer anzeigen.

  1. Wählen Sie im Navigationsmenü die Option AI & ML » Agents aus.

  2. Wählen Sie in der Liste der Agenten denjenigen aus, zu dem Sie Details anzeigen möchten. Dadurch wird eine neue Seite geöffnet, die einen Überblick über die Agentendetails enthält.

  3. Um sich alle Details zum Agenten anzusehen, wählen Sie Next aus.

Agenten testen

Nachdem Sie den Agenten erstellt haben, können Sie ihn testen, um zu sehen, wie er auf Abfragen der Benutzer reagiert. Sie können den Agenten auch mit Anforderung zur Agentenausführung mit Agentenobjekt testen.

Um den Agenten zu testen, gehen Sie wie folgt vor:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü die Option AI & ML » Agents aus.

  3. Wählen Sie in der Liste der Agenten den entsprechenden Agenten aus.

  4. Geben Sie auf der Seite mit den Agentendetails eine Abfrage im Agent-Playground ein.

  5. Überprüfen Sie, ob der Agent wie erwartet auf die Abfrage antwortet. Wenn der Agent nicht wie erwartet antwortet, ändern die Konfiguration des Agenten, indem Sie die Schritte unter Tools hinzufügen ausführen.

Mit dem Agent interagieren

Nachdem Sie das Agentenobjekt erstellt haben, können Sie den Agenten über die REST API direkt in Ihre Anwendung integrieren. Verwenden Sie einen Thread, um den Kontext während der Interaktion beizubehalten. Das Agentenobjekt und der Thread in Kombination vereinfachen den Clientanwendungscode.

Einen Thread erstellen

Erstellen Sie einen Thread, um den Kontext während einer Konversation beizubehalten. Wenn der Thread erfolgreich erstellt wurde, gibt das System eine Thread ID zurück.

curl -X POST "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/cortex/threads" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer $PAT" \
--data '{
    "origin_application": <application_name>,
}'
Copy

Eine Anfrage an den Agenten senden

Um mit dem Agenten interagieren zu können, müssen Sie das Agentenobjekt, die Thread-ID und eine eindeutige parent_message_id als Teil Ihrer REST API-Anforderung übergeben. Die anfängliche parent_message_id sollte 0 sein.

curl -X POST "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/databases/{database}/schemas/{schema}/agents/{name}:run" \
 --header 'Content-Type: application/json' \
 --header 'Accept: application/json' \
 --header "Authorization: Bearer $PAT" \
 --data '{
     "thread_id": <thread id for context>,
     "parent_message_id": <parent message id>,
     "messages": [
      {
         "role": "user",
         "content": [
           {
            "type": "text",
             "text": "What are the projected transportation costs for the next three quarters? "
             }
         ]
       }
     ],
     "tool_choice": {
       "type": "required",
       "name": [
         "Analyst1",
         "Search1"
       ]
     }
 }'
Copy

Feedback über den Agenten sammeln

Sie können Feedback von Benutzern zu den Antworten des Agenten sammeln. Dieses Feedback kann Ihnen dabei helfen, den Agenten zu verfeinern, während Sie Ihren Anwendungsfall durchlaufen. Benutzer können eine objektive Bewertung (positiv/negativ) abgeben und über eine Nachricht eine subjektivere Rückmeldung übermitteln. Außerdem können Benutzer das Feedback anhand einer von vielen Kategorien klassifizieren.

curl -X POST "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/databases/<database-name>/schemas/<schema-name>/agents/<agent-name>:feedback:" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer $PAT" \
--data '{
    "request_id": "<request-id>",
    "positive": true
    "feedback_message": "This answer was great",
    "categories":[
        "category1", "category2", "category3"
    ],
    "thread_id": "<thread-id>"
}'
Copy

Ohne Agentenobjekt interagieren

In manchen Fällen möchten Sie mit der Verwendung von Cortex Agents ohne ein Agentenobjekt loslegen, indem Sie agent:run verwenden. Dies kann z. B. dann nützlich sein, wenn Sie einen Anwendungsfall schnell ausprobieren möchten. Weitere Informationen über die REST API finden Sie unter Agent ohne Ausführung eines Agentenobjekts.

Bemerkung

Wenn Sie mit einem Agenten interagieren, ohne ein Agentenobjekt zu erstellen, müssen Sie den Kontext für den Agenten bei jeder Anfrage manuell pflegen.