API REST des Cortex Agents

Vous pouvez utiliser l’API REST des Agents Cortex pour créer, gérer et interagir avec des objets d’Agents Cortex dans votre compte Snowflake.

Créer un Agent Cortex

POST /api/v2/databases/{database}/schemas/{schema}/agents

Crée un nouvel objet d’Agent Cortex avec les attributs et la spécification spécifiés.

Requête

Paramètres de chemin

Paramètre

Description

database

(Obligatoire) URL de votre compte Snowflake.

schema

(Obligatoire) Identificateur du schéma.

Paramètres de requête

Paramètre

Description

createMode

(Facultatif) Mode de création de ressources. Valeurs valides :

  • errorIfExists

  • orReplace

  • ifNotExists

En-têtes de requête

En-tête

Description

Authorization

(Obligatoire) Jeton d’autorisation. Pour plus d’informations, voir Authentification.

Content-Type

(Obligatoire) application/json

Corps de requête

Champ

Type

Description

name

string

Nom de l’agent.

comment

string

Commentaire facultatif sur l’agent.

profile

AgentProfile

Informations sur le profil de l’agent (nom d’affichage, avatar, couleur, etc.).

models

ModelConfig

Configuration du modèle pour l’agent. Inclut le modèle d’orchestration (par exemple, claude-4-sonnet). S’il n’est pas fourni, un modèle est automatiquement sélectionné. Actuellement disponible uniquement pour l’étape d’orchestration.

instructions

AgentInstructions

Instructions relatives au comportement de l’agent, y compris la réponse, l’orchestration, le système et les exemples de questions.

orchestration

OrchestrationConfig

Configuration de l’orchestration, y compris les contraintes budgétaires (par exemple, secondes, jetons).

tools

tableau d”Tool

Liste des outils disponibles pour l’agent à utiliser. Chaque outil inclut une tool_spec avec un type, un nom, une description et un schéma d’entrée. Les outils peuvent avoir une configuration correspondante dans tool_resources.

tool_resources

carte de ToolResource

Configuration pour chaque outil référencé dans le tableau des outils. Les clés doivent correspondre au nom de l’outil correspondant.

Exemple

{
  "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

Réponse

Une réponse réussie renvoie un objet JSON avec des détails sur l’état de création de l’Agent Cortex.

Corps de réponse

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

Décrire un Agent Cortex

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

Décrit un Agent Cortex.

Requête

Paramètres de chemin

Paramètre

Description

database

(Obligatoire) Identificateur de la base de données à laquelle appartient la ressource. Vous pouvez utiliser la requête GET/api/v2/databases pour obtenir une liste des bases de données disponibles.

schema

(Obligatoire) Identificateur du schéma auquel appartient la ressource . Vous pouvez utiliser la requête GET/api/v2/databases/{database}/schemas pour obtenir une liste des schémas disponibles pour la base de données spécifiée.

name

(Obligatoire) Identificateur de l’agent.

En-têtes de requête

En-tête

Description

Authorization

(Obligatoire) Jeton d’autorisation. Pour plus d’informations, voir Authentification.

Content-Type

(Obligatoire) application/json

Réponse

Une réponse réussie renvoie un objet JSON décrivant l’Agent Cortex.

En-têtes de réponse

En-tête

Description

X-Snowflake-Request-ID

ID unique de la requête API.

Link

Liens vers la page de résultats (par exemple, la première page, la dernière page, etc.). L’en-tête peut inclure plusieurs entrées URL avec différentes valeurs d’attribut réelles qui spécifient la page à renvoyer (première, suivante, précédente et dernière).

Corps de réponse

Le corps de réponse contient les détails de l’Agent Cortex.

{
  "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

Mettre à jour un Agent Cortex

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

Met à jour un Agent Cortex existant avec les attributs et la spécification spécifiés.

Requête

Paramètres de chemin

Paramètre

Description

database

(Obligatoire) URL de votre compte Snowflake. Vous pouvez utiliser la requête GET /api/v2/databases pour obtenir une liste des bases de données disponibles.

schema

(Obligatoire) Identificateur du schéma. Vous pouvez utiliser la requête GET /api/v2/databases/{database}/schemas pour obtenir une liste des schémas disponibles pour la base de données spécifiée.

name

(Obligatoire) Nom de l’agent.

En-têtes de requête

En-tête

Description

Authorization

(Obligatoire) Jeton d’autorisation. Pour plus d’informations, voir Authentification.

Content-Type

(Obligatoire) application/json

Corps de requête

Champ

Type

Description

comment

string

Commentaire facultatif sur l’agent.

profile

AgentProfile

Informations sur le profil de l’agent (nom d’affichage, avatar, couleur, etc.).

models

ModelConfig

Configuration du modèle pour l’agent. Inclut le modèle d’orchestration (par exemple, claude-4-sonnet). S’il n’est pas fourni, un modèle est automatiquement sélectionné. Actuellement disponible uniquement pour l’étape d’orchestration.

instructions

AgentInstructions

Instructions relatives au comportement de l’agent, y compris la réponse, l’orchestration, le système et les exemples de questions.

orchestration

OrchestrationConfig

Configuration de l’orchestration, y compris les contraintes budgétaires (par exemple, secondes, jetons).

tools

tableau d”Tool

Liste des outils disponibles pour l’agent à utiliser. Chaque outil inclut une tool_spec avec un type, un nom, une description et un schéma d’entrée. Les outils peuvent avoir une configuration correspondante dans tool_resources.

tool_resources

carte de ToolResource

Configuration pour chaque outil référencé dans le tableau des outils. Les clés doivent correspondre au nom de l’outil correspondant.

Exemple

{
  "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

Réponse

Une réponse réussie renvoie un objet JSON avec des détails sur l’état de mise à jour de l’Agent Cortex.

Corps de réponse

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

Liste d’Agents Cortex

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

Répertorie les Agents Cortex sous la base de données et le schéma spécifiés.

Requête

Paramètres de chemin

Paramètre

Description

database

(Obligatoire) Identificateur de la base de données à laquelle appartient la ressource. Vous pouvez utiliser la requête GET/api/v2/databases pour obtenir une liste des bases de données disponibles.

schema

(Obligatoire) Identificateur du schéma auquel appartient la ressource . Vous pouvez utiliser la requête GET/api/v2/databases/{database}/schemas pour obtenir une liste des schémas disponibles pour la base de données spécifiée.

Paramètres de requête

Paramètre

Description

like

(Facultatif) Filtre la sortie par nom de ressource. Utilise une concordance de motif insensible à la casse avec prise en charge des caractères génériques SQL.

fromName

(Facultatif) Active la récupération des lignes uniquement après la première ligne dont le nom d’objet correspond à la chaîne spécifiée. Sensible à la casse et n’a pas besoin d’être le nom complet.

showLimit

(Facultatif) Limite le nombre maximal de lignes renvoyées par la commande. Minimum : 1. Maximum : 10 000.

En-têtes de requête

En-tête

Description

Authorization

(Obligatoire) Jeton d’autorisation. Pour plus d’informations, voir Authentification.

Content-Type

(Obligatoire) application/json

Réponse

Une réponse réussie renvoie un tableau JSON des ressources de l’Agent Cortex.

En-têtes de réponse

En-tête

Description

X-Snowflake-Request-ID

ID unique de la requête API.

Link

Liens vers la page de résultats (par exemple, la première page, la dernière page, etc.). L’en-tête peut inclure plusieurs entrées URL avec différentes valeurs d’attribut réelles qui spécifient la page à renvoyer (première, suivante, précédente et dernière).

Corps de réponse

[
 {
  "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

Supprimer un Agent Cortex

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

Supprime un Agent Cortex portant le nom spécifié. Si le paramètre ifExists est défini sur true, l’opération réussit même si l’agent n’existe pas. Sinon, l’opération échoue si l’agent ne peut pas être supprimé.

Requête

Paramètres de chemin

Paramètre

Description

database

(Obligatoire) Identificateur de la base de données à laquelle appartient la ressource. Vous pouvez utiliser la requête GET/api/v2/databases pour obtenir une liste des bases de données disponibles.

schema

(Obligatoire) Identificateur du schéma auquel appartient la ressource . Vous pouvez utiliser la requête GET/api/v2/databases/{database}/schemas pour obtenir une liste des schémas disponibles pour la base de données spécifiée.

name

(Obligatoire) Identificateur de l’agent.

Paramètres de requête

Paramètre

Description

ifExists

(Facultatif) Indique comment gérer la requête si l’agent n’existe pas.

  • true : Le point de terminaison ne génère pas d’erreur si l’agent n’existe pas. Il renvoie une réponse de réussite de 200, mais ne prend aucune mesure.

  • false : Le point de terminaison génère une erreur si l’agent n’existe pas.

En-têtes de requête

En-tête

Description

Authorization

(Obligatoire) Jeton d’autorisation. Pour plus d’informations, voir Authentification.

Content-Type

(Obligatoire) application/json

Réponse

Une réponse réussie renvoie un message de confirmation.

Corps de réponse

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

Schémas

AgentInstructions

Champ

Type

Description

response

string

Instructions pour la génération de la réponse.

orchestration

string

Ces instructions personnalisées sont utilisées lorsque l’agent planifie les outils à utiliser.

system

string

Instructions système pour l’agent.

Exemple

{
  "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

Informations de profil pour un agent Data Cortex.

Champ

Type

Description

display_name

string

Nom d’affichage de l’agent.

Exemple

{
  "display_name": "My Agent"
}
Copy

BudgetConfig

Champ

Type

Description

seconds

entier

Budget temporel en secondes.

tokens

entier

Budget du jeton.

Exemple

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

ExecutionEnvironment

Configuration pour les outils exécutés par le serveur.

Champ

Type

Description

type

string

Type d’environnement d’exécution. Actuellement, seul warehouse est pris en charge.

warehouse

string

Nom de l’entrepôt. Sensible à la casse. S’il s’agit d’un identificateur sans guillemets, indiquez le nom en majuscules.

query_timeout

entier

Délai d’attente de la requête en secondes.

Exemple

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

ModelConfig

Champ

Type

Description

orchestration

string

Modèle à utiliser pour l’orchestration. S’il n’est pas fourni, un modèle est automatiquement sélectionné.

Exemple

{
  "orchestration": "claude-4-sonnet"
}
Copy

OrchestrationConfig

Champ

Type

Description

budget

BudgetConfig

Contraintes budgétaires pour l’agent. Si plus d’une contrainte est spécifiée, la première contrainte atteinte mettra fin à la requête.

Exemple

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

Tool

Définit un outil qui peut être utilisé par l’agent. Les outils offrent des capacités spécifiques telles que l’analyse des données, la recherche ou des fonctions génériques.

Champ

Type

Description

tool_spec

ToolSpec

Spécification du type, de la configuration et des exigences d’entrée de l’outil.

Exemple

{
  "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

Champ

Type

Description

type

string

Le type de l’objet du schéma d’entrée.

description

string

Description de ce qu’est l’entrée.

properties

carte de ToolInputSchema

Si le type est object, définitions de chaque paramètre d’entrée.

items

ToolInputSchema

Si le type est array, schéma des éléments du tableau.

required

array of string

Si le type est object, liste des noms de paramètres d’entrée requis.

Exemple

{
  "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

Configuration pour l’outil d’analyse text-to-SQL. Fournit des paramètres pour la génération et l’exécution de requêtes SQL. Un seul semantic_model_file ou semantic_view précisément doit être fourni.

Champ

Type

Description

semantic_model_file

string

Chemin d’accès à un fichier stocké dans une zone de préparation Snowflake contenant le modèle sémantique yaml.

semantic_view

string

Nom de l’objet du modèle sémantique natif de Snowflake.

execution_environment

ExecutionEnvironment

Configuration de l’exécution de la requête SQL générée.

Exemple

{
  "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

Spécification du type, de la configuration et des exigences d’entrée de l’outil.

Champ

Type

Description

type

string

Type de capacité de l’outil. Il peut s’agir de types spécialisés comme « cortex_analyst_text_to_sql » ou « generic » pour les outils à usage général.

name

string

Identificateur unique pour référencer cette instance d’outil. Utilisé pour faire correspondre la configuration dans tool_resources.

description

string

Description de l’outil à prendre en compte pour l’utilisation d’outil.

input_schema

ToolInputSchema

Définition du schéma JSON des paramètres d’entrée attendus pour cet outil. Ces informations seront transmises à l’agent pour qu’il ait connaissance de la structure qu’il doit suivre lors de la génération de l’entrée pour ToolUses. Requis pour permettre aux outils génériques de spécifier leurs paramètres d’entrée.

Exemple

{
  "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