Agents konfigurieren und mit ihnen interagieren¶
Wichtig
Standardmäßig verwendet Cortex Agents die Standardrolle und das Standard-Warehouse von Benutzenden. Wenn andere Benutzende den Agenten verwenden, stellen Sie sicher, dass folgende Aktionen durchgeführt wurden:
Festlegen einer Standardrolle
Festlegen eines Standard-Warehouses
Gewähren der USAGE-Berechtigung für den Agenten für die Standardrolle
Weitere Informationen zum Gewähren der USAGE-Berechtigung finden Sie unter Anforderungen an die Zugriffssteuerung.
Sie müssen die Standardrolle des Benutzers verwenden, wenn Sie Cortex Agents aufrufen oder aktualisieren. Um einer anderen Rolle zu erlauben, den Agenten zu verwenden, gewähren Sie dieser Rolle die USAGE-Berechtigung für den Agenten.
GRANT USAGE ON AGENT <database_name>.<schema_name>.<agent_name> TO ROLE <role_name>;
Sie können einen Agenten mit den folgenden Methoden erstellen:
In Snowsight
Durch Verwendung der Agents REST API
Mit den Cortex Agents SQL-Befehlen
You can then integrate the agent into your application to perform tasks or respond to queries. You must first create an agent object that contains information such as the metadata, tools, and orchestration instructions that the agent can use to perform a task or answer questions. You can then reference the agent object in your application to integrate the agent’s functionality. You can configure a thread to maintain the context in memory, so that the client does not have to send the context at every turn of the conversation.
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:
Melden Sie sich bei Snowsight an.
Wählen Sie im Navigationsmenü die Option AI & ML » Agents aus.
Wählen Sie Create agent aus.
Geben Sie für Agent object name einen Namen für den Agenten an, der den Benutzern in der UI angezeigt wird.
Geben Sie für Display name einen Namen für den Agenten an, der für Administratoren in der Agentenliste angezeigt wird.
Wählen Sie Create agent aus.
Stellen Sie dem Agenten allgemeine Wissensanfragen.
Erstellen Sie ein Agentenobjekt, indem Sie die Datenbank und das Schema angeben, in dem der Agent erstellt werden soll, sowie die für den Agenten erforderlichen Parameter. Sie können auch Toolfelder angeben, wenn Sie das Agentenobjekt erstellen.
curl -X POST "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/databases/<database-name>/schemas/<schema-name>/agents" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header "Authorization: Bearer $PAT" \ --data '{ "name": "TransportationAgent", "comment": "This agent handles queries related to transportation methods and costs.", "models": { "orchestration": "claude-4-sonnet" } }'
Tools hinzufügen¶
After you’ve created the agent, you need to add tools and provide instructions on how to orchestrate across the tools. Agents support the following tool types:
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.
To modify the configuration for an existing agent, follow these steps:
Wählen Sie im Navigationsmenü die Option AI & ML » Agents aus.
- Wählen Sie in der Liste der Agenten den Agenten aus, den Sie ändern möchten.
Die Details zur Konfiguration des Agenten werden angezeigt.
Wählen Sie Edit aus.
Beschreiben Sie unter Description den Agenten und wie Benutzer mit ihm interagieren können.
Um Beispielfragen hinzuzufügen, die Benutzer dem Agenten stellen können, geben Sie eine Beispielfrage ein, und wählen Sie Add a question aus.
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.
Suchen Sie nach Cortex Analyst und wählen Sie die entsprechende Schaltfläche + Add aus.
Geben Sie für Name einen Namen für die semantische Ansicht ein.
Wählen Sie Semantic view aus.
Wählen Sie die semantische Ansicht aus, die der Agent verwendet.
Wählen Sie für Warehouse das Warehouse aus, das der Agent für Abfragen verwendet.
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.
Beschreiben Sie unter Description die semantische Ansicht.
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.
Suchen Sie nach Cortex Search Services und wählen Sie die entsprechende Schaltfläche + Add aus.
Geben Sie unter Name einen Namen für den Cortex Search Service ein.
Beschreiben Sie unter Description den Cortex Search Service.
Wählen Sie unter Search service den Cortex Search Service aus, den der Agent verwendet.
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.
Suchen Sie nach Custom tools und wählen Sie die entsprechende Schaltfläche + Add aus.
Geben Sie unter Name einen Namen für das kundenspezifische Tool ein.
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.
Wählen Sie unter Custom tool identifier die vorhandene Funktion oder Prozedur aus, die Sie als kundenspezifisches Tool hinzufügen möchten.
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.
Bemerkung
Snowflake Cortex unterstützt keine gespeicherten Prozeduren und benutzerdefinierten Tools mit einem Parameter vom Typ
object.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.
Beschreiben Sie unter Description das kundenspezifische Tool und dessen Verwendung.
Wählen Sie Add aus.
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.
Wählen Sie Save aus.
Um Tools mithilfe der REST API zu einem Agenten hinzuzufügen, fügen Sie die folgenden Nutzlasten als Teil einer Anforderung zu Cortex Agent aktualisieren hinzu. Sie können diese Felder auch angeben, wenn Sie das Agent-Objekt erstellen.
Cortex Analyst-Tool und -Toolressourcen hinzufügen: Das folgende Beispiel zeigt, wie Sie ein Cortex Analyst-Tool und -Toolressourcen zu einem bestehenden Agentenobjekt hinzufügen.
Cortex Analyst-Tool hinzufügen
curl -X PUT "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/databases/<database-name>/schemas/<schema-name>/agents/<agent-name>" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header "Authorization: Bearer $PAT" \ --data '{ "tools": [ { "tool_spec": { "description": "Analyst to analyze price", "type": "cortex_analyst_text_to_sql", "name": "Analyst1" } } ] }'Cortex Analyst-Toolressource hinzufügen
curl -X PUT "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/databases/<database-name>/schemas/<schema-name>/agents/<agent-name>" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header "Authorization: Bearer $PAT" \ --data '{ "tool_resources": { "Analyst1": { "semantic_model_file": "stage1", "semantic_view": "The name of the Snowflake native semantic model object", "execution_environment": {"type":"warehouse", "warehouse":"my_wh"} } } }'Cortex Search-Tool und -Toolressourcen hinzufügen: Das folgende Beispiel zeigt, wie Sie ein Cortex Search-Tool und -Toolressourcen zu einem bestehenden Agentenobjekt hinzufügen.
Cortex Search-Tool hinzufügen
curl -X PUT "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/databases/<database-name>/schemas/<schema-name>/agents/<agent-name>" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header "Authorization: Bearer $PAT" \ --data '{ "tool_spec": { "type": "cortex_search", "name": "Search1" } }'Cortex Search-Toolressource hinzufügen
curl -X PUT "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/databases/<database-name>/schemas/<schema-name>/agents/<agent-name>" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header "Authorization: Bearer $PAT" \ --data '{ "tool_resources": { "Search1": { "search_service": "db.schema.service_name", "filter": {"@eq": {"region": "North America"} }, "max_results": 5 } } }'Kundenspezifische Tools und Toolressourcen hinzufügen: Das folgende Beispiel zeigt, wie Sie kundenspezifische Tools und Toolressourcen zu einem bestehenden Agentenobjekt hinzufügen.
Kundenspezifisches Tool hinzufügen
curl -X PUT "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/databases/<database-name>/schemas/<schema-name>/agents/<agent-name>" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header "Authorization: Bearer $PAT" \ --data '{ "tools": [ { "tool_spec": { "description": "Custom tool", "type": "generic", "name": "custom1" } } ] }'Kundenspezifische Toolressourcen hinzufügen
curl -X PUT "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/databases/<database-name>/schemas/<schema-name>/agents/<agent-name>" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header "Authorization: Bearer $PAT" \ --data '{ "tool_resources": { "Custom1": { "user-defined-function-argument": "argument1" } } }'
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".
Wählen Sie Orchestration aus.
Wählen Sie als Orchestration model das Modell aus, das der Agent für die Orchestrierung verwendet.
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.
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.
Wählen Sie Save aus.
Um einen Agenten mithilfe der REST API zu aktualisieren, fügen Sie die folgenden Nutzlasten als Teil einer Anforderung zu Cortex Agent aktualisieren hinzu. Sie können diese Felder auch angeben, wenn Sie das Agent-Objekt erstellen. Die folgende Prozedur zeigt, wie Sie den Agenten mit Planungs- und Antwortanweisungen aktualisieren und das für die Orchestrierung verwendete LLM-Modell angeben.
LLM-Modell aktualisieren
curl -X PUT "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/databases/<database-name>/schemas/<schema-name>/agents/<agent-name>" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header "Authorization: Bearer $PAT" \ --data '{ "models": { "orchestration": "llama3.3-70B" }'
Planungs- und Antwortanweisungen angeben
curl -X PUT "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/databases/<database-name>/schemas/<schema-name>/agents/<agent-name>" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header "Authorization: Bearer $PAT" \ --data '{ "instructions": { "response": "Always provide a concise response and maintain a friendly tone.", "orchestration": "<orchestration instructions>", "system": "You are a helpful data agent." } }'
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.
Wählen Sie Access aus.
Um einer Rolle Zugriff auf den Agenten zu gewähren, wählen Sie Add role und dann im Dropdown-Menü die Rolle aus.
Wählen Sie Save aus.
GRANT USAGE ON AGENT my_agent TO ROLE test_rl;
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.
Wählen Sie im Navigationsmenü die Option AI & ML » Agents aus.
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.
Um sich alle Details zum Agenten anzusehen, wählen Sie Next aus.
Sie können Agenten über REST APIs auflisten und beschreiben.
Listen Sie alle Agenten auf.
curl -X GET "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/databases/{database}/schemas/{schema}/agents:" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header "Authorization: Bearer $PAT" \
Beschreiben Sie den gewünschten Agenten.
curl -X GET "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/databases/{database}/schemas/{schema}/agents/{name}:" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header "Authorization: Bearer $PAT" \
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:
Melden Sie sich bei Snowsight an.
Wählen Sie im Navigationsmenü die Option AI & ML » Agents aus.
Wählen Sie in der Liste der Agenten den entsprechenden Agenten aus.
Geben Sie auf der Seite mit den Agentendetails eine Abfrage im Agent-Playground ein.
Ü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>,
}'
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"
]
}
}'
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>"
}'
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.