Cortex Agents REST API¶
Sie können die REST API von Cortex Agent verwenden, um Cortex Agent-Objekte in Ihrem Snowflake-Konto zu erstellen, zu verwalten und mit ihnen zu interagieren.
Cortex Agent erstellen¶
POST /api/v2/databases/{database}/schemas/{schema}/agents
Erstellt ein neues Cortex Agent-Objekt mit den angegebenen Attributen und Informationen.
Anfrage¶
Pfadparameter¶
Parameter |
Beschreibung |
|---|---|
|
(Erforderlich) URL Ihres Snowflake-Kontos. |
|
(Erforderlich) Schemabezeichner. |
Abfrageparameter¶
Parameter |
Beschreibung |
|---|---|
|
(Optional) Modus der Ressourcenerstellung. Gültige Werte:
|
Header der Anforderung¶
Header |
Beschreibung |
|---|---|
|
(Erforderliche) Autorisierungstoken. Weitere Informationen dazu finden Sie unter Authentifizierung. |
|
(Erforderlich) Anwendung/json |
Anforderungstext¶
Feld |
Typ |
Beschreibung |
|---|---|---|
|
string |
Name des Agenten. |
|
string |
Optionaler Kommentar zum Agenten. |
|
Informationen zum Agentenprofil (Anzeigename, Avatar, Farbe usw.). |
|
|
Modellkonfiguration für den Agenten. Enthält das Orchestrierungsmodell (z. B. claude-4-sonnet). Wenn keines angegeben ist, wird ein Modell automatisch ausgewählt. Derzeit nur für den Schritt der |
|
|
Anweisungen für das Verhalten des Agenten, einschließlich Antwort, Orchestrierung, System und Beispielfragen. |
|
|
Konfiguration der Orchestrierung, einschließlich Budgeteinschränkungen (z. B. Sekunden, Token). |
|
|
Array von Tool |
Auflistung der Tools, die dem Agenten zur Verfügung stehen. Jedes Tool enthält eine „tool_spec“ mit Typ, Name, Beschreibung und Eingabeschema. Tools können über eine entsprechende Konfiguration in „tool_resources“ verfügen. |
|
Zuordnung von ToolResource |
Konfiguration für jedes Tool, auf das im Tools-Array verwiesen wird. Die Schlüssel müssen mit dem Namen des jeweiligen Tools übereinstimmen. |
Beispiel
{
"name": "MY_AGENT",
"comment": "An agent to answer questions about all my data",
"profile": {
"display_name": "My Agent"
},
"models": {
"orchestration": "claude-4-sonnet"
},
"instructions": {
"response": "You will respond in a friendly but concise manner",
"orchestration": "For any query related to revenue we should use Analyst; For all policy questions we should use Search",
"system": "You are a friendly agent ..."
},
"orchestration": {
"budget": {
"seconds": 30,
"tokens": 16000
}
},
"tools": [
{
"tool_spec": {
"type": "generic",
"name": "get_revenue",
"description": "Fetch the delivery revenue for a location.",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
}
}
},
"required": [
"location"
]
}
}
],
"tool_resources": {
"get_revenue": {
"type": "function",
"execution_environment": {
"type": "warehouse",
"warehouse": "MY_WH"
},
"identifier": "DB.SCHEMA.UDF"
}
}
}
Antwort¶
Eine erfolgreiche Antwort gibt ein JSON-Objekt mit Details zum Status der Cortex Agent-Erstellung zurück.
Antworttext¶
{"status": "Agent xxxx successfully created."}
Cortex Agent beschreiben¶
GET /api/v2/databases/{database}/schemas/{schema}/agents/{name}
Beschreibt einen Cortex Agent.
Anfrage¶
Pfadparameter¶
Parameter |
Beschreibung |
|---|---|
|
(Erforderlich) Bezeichner für die Datenbank, zu der die Ressource gehört. Sie können die GET-Anforderung „/api/v2/databases“ verwenden, um eine Liste der verfügbaren Datenbanken zu erhalten. |
|
(Erforderlich) Bezeichner für das Schema, zu dem die Ressource gehört. Sie können die GET-Anforderung „/api/v2/databases/{Datenbank}/schemas“ verwenden, um eine Liste der verfügbaren Schemas für die angegebene Datenbank zu erhalten. |
|
(Erforderlich) Bezeichner für den Agenten. |
Header der Anforderung¶
Header |
Beschreibung |
|---|---|
|
(Erforderliche) Autorisierungstoken. Weitere Informationen dazu finden Sie unter Authentifizierung. |
|
(Erforderlich) Anwendung/json |
Antwort¶
Eine erfolgreiche Antwort gibt ein JSON-Objekt zurück, das den Cortex Agent beschreibt.
Antwort-Header¶
Header |
Beschreibung |
|---|---|
|
Eindeutige ID der API-Anforderung |
|
Links zur Ergebnisseite (z. B. erste Seite, letzte Seite usw.). Der Header kann mehrere URL-Einträge mit unterschiedlichen „rel“-Attributwerten enthalten, die die zurückzugebende Seite (erste, nächste, vorherige und letzte Seite) angeben. |
Antworttext¶
Der Text der Antwort enthält die Details des Cortex Agent.
{
"agent_spec": "{\"models\":{\"orchestration\":\"llama3.1-70B\"},\"experimental\":{\"foo\":\"bar\",\"nested\":{\"key\":\"value\"}},\"orchestration\":{\"budget\":{\"seconds\":30,\"tokens\":16000}},\"instructions\":{\"response\":\"You will respond in a friendly but concise manner\",\"orchestration\":\"For any revenue question use Analyst; for policy use Search\",\"system\":\"You are a friendly agent.\",\"sample_questions\":[{\"question\":\"question 1\"},{\"question\":\"question 2\"},{\"question\":\"question 3\"}]},\"tools\":[{\"tool_spec\":{\"type\":\"cortex_analyst_text_to_sql\",\"name\":\"Analyst1\",\"description\":\"test\"}},{\"tool_spec\":{\"type\":\"cortex_analyst_sql_exec\",\"name\":\"SQL_exec1\"}},{\"tool_spec\":{\"type\":\"cortex_search\",\"name\":\"Search1\"}},{\"tool_spec\":{\"type\":\"web_search\",\"name\":\"web_search_1\"}},{\"tool_spec\":{\"type\":\"generic\",\"name\":\"get_weather\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and state\"}},\"required\":[\"Location\"]}}}],\"tool_unable_to_answer\":\"I don't know the answer to that\",\"tool_resources\":{\"Analyst1\":{\"semantic_model_file\":\"stage1\"},\"Analyst2\":{\"semantic_view\":\"db.schema.semantic_view\"},\"Search1\":{\"name\":\"db.schema.service_name\",\"Max_results\":\"5\",\"filter\":{\"@eq\":{\"region\":\"North America\"}},\"Title_column\":\"<title_name>\",\"ID_column\":\"<column_name>\"},\"SQL_exec1\":{\"Name\":\"my_warehouse\",\"Timeout\":\"30\",\"AutoExecute\":\"true\"},\"web_search\":{\"name\":\"web_search_1\",\"Function\":\"db/schema/search_web\"}}}",
"name": "MY_AGENT1",
"database_name": "TEST_DATABASE",
"schema_name": "TEST_SCHEMA",
"owner": "ACCOUNTADMIN",
"created_on": "1967-06-23T07:00:00.123+00:00"
}
Cortex Agent aktualisieren¶
PUT /api/v2/databases/{database}/schemas/{schema}/agents/{name}
Aktualisiert einen vorhandenen Cortex Agent mit den angegebenen Attributen und Informationen.
Anfrage¶
Pfadparameter¶
Parameter |
Beschreibung |
|---|---|
|
(Erforderlich) URL Ihres Snowflake-Kontos. Sie können die GET-Anforderung |
|
(Erforderlich) Schemabezeichner. Sie können die GET-Anforderung |
|
(Erforderlich) Name des Agenten. |
Header der Anforderung¶
Header |
Beschreibung |
|---|---|
|
(Erforderliche) Autorisierungstoken. Weitere Informationen dazu finden Sie unter Authentifizierung. |
|
(Erforderlich) Anwendung/json |
Anforderungstext¶
Feld |
Typ |
Beschreibung |
|---|---|---|
|
string |
Optionaler Kommentar zum Agenten. |
|
Informationen zum Agentenprofil (Anzeigename, Avatar, Farbe usw.). |
|
|
Modellkonfiguration für den Agenten. Enthält das Orchestrierungsmodell (z. B. claude-4-sonnet). Wenn keines angegeben ist, wird ein Modell automatisch ausgewählt. Derzeit nur für den Schritt der |
|
|
Anweisungen für das Verhalten des Agenten, einschließlich Antwort, Orchestrierung, System und Beispielfragen. |
|
|
Konfiguration der Orchestrierung, einschließlich Budgeteinschränkungen (z. B. Sekunden, Token). |
|
|
Array von Tool |
Auflistung der Tools, die dem Agenten zur Verfügung stehen. Jedes Tool enthält eine „tool_spec“ mit Typ, Name, Beschreibung und Eingabeschema. Tools können über eine entsprechende Konfiguration in „tool_resources“ verfügen. |
|
Zuordnung von ToolResource |
Konfiguration für jedes Tool, auf das im Tools-Array verwiesen wird. Die Schlüssel müssen mit dem Namen des jeweiligen Tools übereinstimmen. |
Beispiel
{
"comment": "An agent to answer questions about all my data",
"profile": {
"display_name": "My Agent"
},
"models": {
"orchestration": "claude-4-sonnet"
},
"instructions": {
"response": "You will respond in a friendly but concise manner",
"orchestration": "For any query related to revenue we should use Analyst; For all policy questions we should use Search",
"system": "You are a friendly agent ..."
},
"orchestration": {
"budget": {
"seconds": 30,
"tokens": 16000
}
},
"tools": [
{
"tool_spec": {
"type": "generic",
"name": "get_revenue",
"description": "Fetch the delivery revenue for a location.",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
}
}
},
"required": [
"location"
]
}
}
],
"tool_resources": {
"get_revenue": {
"type": "function",
"execution_environment": {
"type": "warehouse",
"warehouse": "MY_WH"
},
"identifier": "DB.SCHEMA.UDF"
}
}
}
Antwort¶
Eine erfolgreiche Antwort gibt ein JSON-Objekt mit Details zum Status der Cortex Agent-Aktualisierung zurück.
Antworttext¶
{"status": "Agent xxxx successfully updated."}
Cortex Agents auflisten¶
GET /api/v2/databases/{database}/schemas/{schema}/agents
Listet die Cortex Agents unter der angegebenen Datenbank und dem angegebenen Schema auf.
Anfrage¶
Pfadparameter¶
Parameter |
Beschreibung |
|---|---|
|
(Erforderlich) Bezeichner für die Datenbank, zu der die Ressource gehört. Sie können die GET-Anforderung „/api/v2/databases“ verwenden, um eine Liste der verfügbaren Datenbanken zu erhalten. |
|
(Erforderlich) Bezeichner für das Schema, zu dem die Ressource gehört. Sie können die GET-Anforderung „/api/v2/databases/{Datenbank}/schemas“ verwenden, um eine Liste der verfügbaren Schemas für die angegebene Datenbank zu erhalten. |
Abfrageparameter¶
Parameter |
Beschreibung |
|---|---|
|
(Optional) Ausgabe nach Ressourcename filtern. Der Filter verwendet eine Mustererkennung ohne Berücksichtigung der Groß-/Kleinschreibung, aber mit Unterstützung von SQL-Platzhalterzeichen. |
|
(Optional) Ermöglicht das Abrufen von Zeilen nur nach der ersten Zeile, deren Objektname mit der angegebenen Zeichenfolge übereinstimmt. Es wird zwischen Groß-/Kleinschreibung unterschieden; es muss nicht der vollständige Name sein. |
|
(Optional) Begrenzt die maximale Anzahl von Zeilen, die vom Befehl zurückgegeben werden. Minimum: 1. Maximum: 10000. |
Header der Anforderung¶
Header |
Beschreibung |
|---|---|
|
(Erforderliche) Autorisierungstoken. Weitere Informationen dazu finden Sie unter Authentifizierung. |
|
(Erforderlich) Anwendung/json |
Antwort¶
Eine erfolgreiche Antwort gibt ein JSON-Array der Cortex Agent-Ressourcen zurück.
Antwort-Header¶
Header |
Beschreibung |
|---|---|
|
Eindeutige ID der API-Anforderung |
|
Links zur Ergebnisseite (z. B. erste Seite, letzte Seite usw.). Der Header kann mehrere URL-Einträge mit unterschiedlichen „rel“-Attributwerten enthalten, die die zurückzugebende Seite (erste, nächste, vorherige und letzte Seite) angeben. |
Antworttext¶
[
{
"name": "my_agent",
"database": "TEST_DB",
"schema": "TEST_SCHEMA",
"created_on": "2024-06-01T12:00:00Z",
"owner": "ACCOUNTADMIN",
"comment": "Sample agent"
},
{
"name": "another_agent",
"database": "TEST_DB",
"schema": "TEST_SCHEMA",
"created_on": "2024-06-02T08:30:00Z",
"owner": "SYSADMIN",
"comment": ""
}
]
Cortex Agent löschen¶
DELETE /api/v2/databases/{database}/schemas/{schema}/agents/{name}
Löscht einen Cortex Agent mit dem angegebenen Namen. Ist der Parameter ifExists auf true festgelegt, ist die Operation erfolgreich, auch wenn der Agent nicht vorhanden ist. Andernfalls schlägt die Operation fehl, wenn der Agent nicht gelöscht werden kann.
Anfrage¶
Pfadparameter¶
Parameter |
Beschreibung |
|---|---|
|
(Erforderlich) Bezeichner für die Datenbank, zu der die Ressource gehört. Sie können die GET-Anforderung „/api/v2/databases“ verwenden, um eine Liste der verfügbaren Datenbanken zu erhalten. |
|
(Erforderlich) Bezeichner für das Schema, zu dem die Ressource gehört. Sie können die GET-Anforderung „/api/v2/databases/{Datenbank}/schemas“ verwenden, um eine Liste der verfügbaren Schemas für die angegebene Datenbank zu erhalten. |
|
(Erforderlich) Bezeichner für den Agenten. |
Abfrageparameter¶
Parameter |
Beschreibung |
|---|---|
|
(Optional) Gibt an, wie die Anfrage behandelt werden soll, wenn der Agent nicht vorhanden ist.
|
Header der Anforderung¶
Header |
Beschreibung |
|---|---|
|
(Erforderliche) Autorisierungstoken. Weitere Informationen dazu finden Sie unter Authentifizierung. |
|
(Erforderlich) Anwendung/json |
Antwort¶
Eine erfolgreiche Antwort gibt eine Bestätigungsmeldung zurück.
Antworttext¶
{
"status": "Request successfully completed"
}
Schemas¶
AgentInstructions¶
Feld |
Typ |
Beschreibung |
|---|---|---|
|
string |
Anweisungen zum Generieren der Antwort. |
|
string |
Diese kundenspezifischen Anweisungen werden verwendet, wenn der Agent plant, welche Tools verwendet werden sollen. |
|
string |
Systemanweisungen für den Agenten. |
Beispiel
{
"response": "You will respond in a friendly but concise manner",
"orchestration": "For any query related to revenue we should use Analyst; For all policy questions we should use Search",
"system": "You are a friendly agent ..."
}
AgentProfile¶
Profilinformationen für einen Data Cortex-Agenten.
Feld |
Typ |
Beschreibung |
|---|---|---|
|
string |
Anzeigename für den Agenten. |
Beispiel
{
"display_name": "My Agent"
}
BudgetConfig¶
Feld |
Typ |
Beschreibung |
|---|---|---|
|
Ganzzahl |
Zeitbudget in Sekunden. |
|
Ganzzahl |
Token-Budget. |
Beispiel
{
"seconds": 30,
"tokens": 16000
}
ExecutionEnvironment¶
Konfiguration für vom Server ausgeführte Tools.
Feld |
Typ |
Beschreibung |
|---|---|---|
|
string |
Der Typ der Ausführungsumgebung, derzeit wird nur |
|
string |
Name des Warehouse. Es wird zwischen Groß-/Kleinschreibung unterschieden. Wenn es sich um einen Bezeichner ohne Anführungszeichen handelt, geben Sie den Namen in Großbuchstaben an. |
|
Ganzzahl |
Abfrage-Timeout in Sekunden. |
Beispiel
{
"type": "warehouse",
"warehouse": "MY_WAREHOUSE",
"query_timeout": 60
}
ModelConfig¶
Feld |
Typ |
Beschreibung |
|---|---|---|
|
string |
Modell, das für die Orchestrierung verwendet werden soll. Wenn keines angegeben ist, wird ein Modell automatisch ausgewählt. |
Beispiel
{
"orchestration": "claude-4-sonnet"
}
OrchestrationConfig¶
Feld |
Typ |
Beschreibung |
|---|---|---|
|
Budgeteinschränkungen für den Agenten. Wenn mehr als eine Einschränkung angegeben ist, wird die Anfrage bei der ersten Einschränkung beendet. |
Beispiel
{
"budget": {
"seconds": 30,
"tokens": 16000
}
}
Tool¶
Definiert ein Tool, das vom Agenten verwendet werden kann. Tools stellen bestimmte Fähigkeiten wie Datenanalyse, Suche oder allgemeine Funktionen bereit.
Feld |
Typ |
Beschreibung |
|---|---|---|
|
Spezifikation der Art, Konfiguration und Eingabeanforderungen des Tools. |
Beispiel
{
"tool_spec": {
"type": "generic",
"name": "get_revenue",
"description": "Fetch the delivery revenue for a location.",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
}
}
},
"required": [
"location"
]
}
}
ToolInputSchema¶
Feld |
Typ |
Beschreibung |
|---|---|---|
|
string |
Der Typ des Eingabeschemaobjekts. |
|
string |
Eine Beschreibung der Eingabe. |
|
Zuordnung von ToolInputSchema |
Beim Typ |
|
Beim Typ |
|
|
Ein Array von Zeichenfolgen. |
Beim Typ |
Beispiel
{
"type": "object",
"description": "Input for my custom tool",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
}
},
"items": {},
"required": [
"location"
]
}
ToolResource¶
Konfiguration für das Analysetool Text-to-SQL. Stellt Parameter für die SQL-Abfragegenerierung und -ausführung bereit. Es muss genau eines von „semantic_model_file“ oder „semantic_view“ angegeben werden.
Feld
Typ
Beschreibung
semantic_model_filestring
Der Pfad zu einer Datei, die in einem Snowflake-Stagingbereich gespeichert ist, welches das semantische Modell „yaml“ enthält.
semantic_viewstring
Der Name des nativen semantischen Modellobjekts von Snowflake.
execution_environmentKonfiguration für die Ausführung der generierten SQL-Abfrage.
Beispiel
{ "semantic_model_file": "@db.schema.stage/semantic_model.yaml", "semantic_view": "db.schema.semantic_view", "execution_environment": { "type": "warehouse", "warehouse": "MY_WAREHOUSE", "query_timeout": 60 } }Konfiguration der Suchfunktionalität. Legt fest, wie die Suche und das Abrufen von Dokumenten durchgeführt werden soll.
Feld
Typ
Beschreibung
search_servicestring
Der vollqualifizierte Name des Suchservice.
title_columnstring
Die Titelspalte des Dokuments.
id_columnstring
Die ID-Spalte des Dokuments.
filterObjekt
Filtern der Abfrage nach Suchergebnissen.
Beispiel
{ "search_service": "database.schema.service_name", "title_column": "account_name", "id_column": "account_id", "filter": { "@eq": { "<column>": "<value>" } } }
Feld
Typ
Beschreibung
typestring
Ob das Tool serverseitig ausgeführt wird, unabhängig davon, ob es sich um eine gespeicherte Prozedur oder eine UDF handelt.
execution_environment
identifierstring
Vollqualifizierter Name der gespeicherten Prozedur oder UDF.
Beispiel
{ "type": "function", "execution_environment": { "type": "warehouse", "warehouse": "MY_WAREHOUSE", "query_timeout": 60 }, "identifier": "MY_DB.MY_SCHEMA.MY_UDF" }
ToolSpec¶
Spezifikation der Art, Konfiguration und Eingabeanforderungen des Tools.
Feld |
Typ |
Beschreibung |
|---|---|---|
|
string |
Die Art der Tool-Fähigkeit. Dies können spezielle Arten wie „cortex_analyst_text_to_sql“ oder „generic“ für allgemeine Tools sein. |
|
string |
Eindeutiger Bezeichner zum Verweisen auf diese Toolinstanz. Wird für den Abgleich mit der Konfiguration in „tool_resources“ verwendet. |
|
string |
Beschreibt das Tool, das für die Toolverwendung berücksichtigt werden soll. |
|
JSON-Schemadefinition der erwarteten Eingabeparameter für dieses Tool. Sie wird an den Agenten weitergeleitet, sodass dieser die Struktur kennt, der er beim Generieren der Eingabe für ToolUses folgen soll. Erforderlich für generische Tools zur Angabe ihrer Eingabeparameter. |
Beispiel
{
"type": "generic",
"name": "get_weather",
"description": "lorem ipsum",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
}
},
"required": [
"location"
]
}
}