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

database

(Erforderlich) URL Ihres Snowflake-Kontos.

schema

(Erforderlich) Schemabezeichner.

Abfrageparameter

Parameter

Beschreibung

createMode

(Optional) Modus der Ressourcenerstellung. Gültige Werte:

  • errorIfExists

  • orReplace

  • ifNotExists

Header der Anforderung

Header

Beschreibung

Authorization

(Erforderliche) Autorisierungstoken. Weitere Informationen dazu finden Sie unter Authentifizierung.

Content-Type

(Erforderlich) Anwendung/json

Anforderungstext

Feld

Typ

Beschreibung

name

string

Name des Agenten.

comment

string

Optionaler Kommentar zum Agenten.

profile

AgentProfile

Informationen zum Agentenprofil (Anzeigename, Avatar, Farbe usw.).

models

ModelConfig

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 Orchestrierung verfügbar.

instructions

AgentInstructions

Anweisungen für das Verhalten des Agenten, einschließlich Antwort, Orchestrierung, System und Beispielfragen.

orchestration

OrchestrationConfig

Konfiguration der Orchestrierung, einschließlich Budgeteinschränkungen (z. B. Sekunden, Token).

tools

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.

tool_resources

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"
    }
  }
}
Copy

Antwort

Eine erfolgreiche Antwort gibt ein JSON-Objekt mit Details zum Status der Cortex Agent-Erstellung zurück.

Antworttext

{"status": "Agent xxxx successfully created."}
Copy

Cortex Agent beschreiben

GET /api/v2/databases/{database}/schemas/{schema}/agents/{name}

Beschreibt einen Cortex Agent.

Anfrage

Pfadparameter

Parameter

Beschreibung

database

(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.

schema

(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.

name

(Erforderlich) Bezeichner für den Agenten.

Header der Anforderung

Header

Beschreibung

Authorization

(Erforderliche) Autorisierungstoken. Weitere Informationen dazu finden Sie unter Authentifizierung.

Content-Type

(Erforderlich) Anwendung/json

Antwort

Eine erfolgreiche Antwort gibt ein JSON-Objekt zurück, das den Cortex Agent beschreibt.

Antwort-Header

Header

Beschreibung

X-Snowflake-Request-ID

Eindeutige ID der API-Anforderung

Link

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"
}
Copy

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

database

(Erforderlich) URL Ihres Snowflake-Kontos. Sie können die GET-Anforderung /api/v2/databases verwenden, um eine Liste der verfügbaren Datenbanken abzurufen.

schema

(Erforderlich) Schemabezeichner. Sie können die GET-Anforderung /api/v2/databases/{Datenbank}/schemas verwenden, um eine Liste der verfügbaren Schemas für die angegebene Datenbank abzurufen.

name

(Erforderlich) Name des Agenten.

Header der Anforderung

Header

Beschreibung

Authorization

(Erforderliche) Autorisierungstoken. Weitere Informationen dazu finden Sie unter Authentifizierung.

Content-Type

(Erforderlich) Anwendung/json

Anforderungstext

Feld

Typ

Beschreibung

comment

string

Optionaler Kommentar zum Agenten.

profile

AgentProfile

Informationen zum Agentenprofil (Anzeigename, Avatar, Farbe usw.).

models

ModelConfig

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 Orchestrierung verfügbar.

instructions

AgentInstructions

Anweisungen für das Verhalten des Agenten, einschließlich Antwort, Orchestrierung, System und Beispielfragen.

orchestration

OrchestrationConfig

Konfiguration der Orchestrierung, einschließlich Budgeteinschränkungen (z. B. Sekunden, Token).

tools

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.

tool_resources

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"
    }
  }
}
Copy

Antwort

Eine erfolgreiche Antwort gibt ein JSON-Objekt mit Details zum Status der Cortex Agent-Aktualisierung zurück.

Antworttext

{"status": "Agent xxxx successfully updated."}
Copy

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

database

(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.

schema

(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

like

(Optional) Ausgabe nach Ressourcename filtern. Der Filter verwendet eine Mustererkennung ohne Berücksichtigung der Groß-/Kleinschreibung, aber mit Unterstützung von SQL-Platzhalterzeichen.

fromName

(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.

showLimit

(Optional) Begrenzt die maximale Anzahl von Zeilen, die vom Befehl zurückgegeben werden. Minimum: 1. Maximum: 10000.

Header der Anforderung

Header

Beschreibung

Authorization

(Erforderliche) Autorisierungstoken. Weitere Informationen dazu finden Sie unter Authentifizierung.

Content-Type

(Erforderlich) Anwendung/json

Antwort

Eine erfolgreiche Antwort gibt ein JSON-Array der Cortex Agent-Ressourcen zurück.

Antwort-Header

Header

Beschreibung

X-Snowflake-Request-ID

Eindeutige ID der API-Anforderung

Link

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": ""
 }
]
Copy

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

database

(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.

schema

(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.

name

(Erforderlich) Bezeichner für den Agenten.

Abfrageparameter

Parameter

Beschreibung

ifExists

(Optional) Gibt an, wie die Anfrage behandelt werden soll, wenn der Agent nicht vorhanden ist.

  • true: Der Endpunkt gibt keinen Fehler aus, wenn der Agent nicht vorhanden ist. Gibt eine 200-Erfolgsantwort zurück, führt aber keine Aktion aus.

  • false: Der Endpunkt gibt einen Fehler aus, wenn der Agent nicht vorhanden ist.

Header der Anforderung

Header

Beschreibung

Authorization

(Erforderliche) Autorisierungstoken. Weitere Informationen dazu finden Sie unter Authentifizierung.

Content-Type

(Erforderlich) Anwendung/json

Antwort

Eine erfolgreiche Antwort gibt eine Bestätigungsmeldung zurück.

Antworttext

{
 "status": "Request successfully completed"
}
Copy

Schemas

AgentInstructions

Feld

Typ

Beschreibung

response

string

Anweisungen zum Generieren der Antwort.

orchestration

string

Diese kundenspezifischen Anweisungen werden verwendet, wenn der Agent plant, welche Tools verwendet werden sollen.

system

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 ..."
}
Copy

AgentProfile

Profilinformationen für einen Data Cortex-Agenten.

Feld

Typ

Beschreibung

display_name

string

Anzeigename für den Agenten.

Beispiel

{
  "display_name": "My Agent"
}
Copy

BudgetConfig

Feld

Typ

Beschreibung

seconds

Ganzzahl

Zeitbudget in Sekunden.

tokens

Ganzzahl

Token-Budget.

Beispiel

{
  "seconds": 30,
  "tokens": 16000
}
Copy

ExecutionEnvironment

Konfiguration für vom Server ausgeführte Tools.

Feld

Typ

Beschreibung

type

string

Der Typ der Ausführungsumgebung, derzeit wird nur Warehouse unterstützt.

warehouse

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.

query_timeout

Ganzzahl

Abfrage-Timeout in Sekunden.

Beispiel

{
  "type": "warehouse",
  "warehouse": "MY_WAREHOUSE",
  "query_timeout": 60
}
Copy

ModelConfig

Feld

Typ

Beschreibung

orchestration

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"
}
Copy

OrchestrationConfig

Feld

Typ

Beschreibung

budget

BudgetConfig

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
  }
}
Copy

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

tool_spec

ToolSpec

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"
    ]
  }
}
Copy

ToolInputSchema

Feld

Typ

Beschreibung

type

string

Der Typ des Eingabeschemaobjekts.

description

string

Eine Beschreibung der Eingabe.

properties

Zuordnung von ToolInputSchema

Beim Typ object Definitionen jedes Eingabeparameters.

items

ToolInputSchema

Beim Typ array das Schema für die Elemente des Arrays.

required

Ein Array von Zeichenfolgen.

Beim Typ object eine Liste der Namen der erforderlichen Eingabeparameter.

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"
  ]
}
Copy

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_file

string

Der Pfad zu einer Datei, die in einem Snowflake-Stagingbereich gespeichert ist, welches das semantische Modell „yaml“ enthält.

semantic_view

string

Der Name des nativen semantischen Modellobjekts von Snowflake.

execution_environment

ExecutionEnvironment

Konfiguration 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
  }
}
Copy

ToolSpec

Spezifikation der Art, Konfiguration und Eingabeanforderungen des Tools.

Feld

Typ

Beschreibung

type

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.

name

string

Eindeutiger Bezeichner zum Verweisen auf diese Toolinstanz. Wird für den Abgleich mit der Konfiguration in „tool_resources“ verwendet.

description

string

Beschreibt das Tool, das für die Toolverwendung berücksichtigt werden soll.

input_schema

ToolInputSchema

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"
    ]
  }
}
Copy