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 |
|---|---|
|
(Obligatoire) URL de votre compte Snowflake. |
|
(Obligatoire) Identificateur du schéma. |
Paramètres de requête¶
Paramètre |
Description |
|---|---|
|
(Facultatif) Mode de création de ressources. Valeurs valides :
|
En-têtes de requête¶
En-tête |
Description |
|---|---|
|
(Obligatoire) Jeton d’autorisation. Pour plus d’informations, voir Authentification. |
|
(Obligatoire) application/json |
Corps de requête¶
Champ |
Type |
Description |
|---|---|---|
|
string |
Nom de l’agent. |
|
string |
Commentaire facultatif sur l’agent. |
|
Informations sur le profil de l’agent (nom d’affichage, avatar, couleur, etc.). |
|
|
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’ |
|
|
Instructions relatives au comportement de l’agent, y compris la réponse, l’orchestration, le système et les exemples de questions. |
|
|
Configuration de l’orchestration, y compris les contraintes budgétaires (par exemple, secondes, jetons). |
|
|
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. |
|
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"
}
}
}
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."}
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 |
|---|---|
|
(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. |
|
(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. |
|
(Obligatoire) Identificateur de l’agent. |
En-têtes de requête¶
En-tête |
Description |
|---|---|
|
(Obligatoire) Jeton d’autorisation. Pour plus d’informations, voir Authentification. |
|
(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 |
|---|---|
|
ID unique de la requête API. |
|
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"
}
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 |
|---|---|
|
(Obligatoire) URL de votre compte Snowflake. Vous pouvez utiliser la requête GET |
|
(Obligatoire) Identificateur du schéma. Vous pouvez utiliser la requête GET |
|
(Obligatoire) Nom de l’agent. |
En-têtes de requête¶
En-tête |
Description |
|---|---|
|
(Obligatoire) Jeton d’autorisation. Pour plus d’informations, voir Authentification. |
|
(Obligatoire) application/json |
Corps de requête¶
Champ |
Type |
Description |
|---|---|---|
|
string |
Commentaire facultatif sur l’agent. |
|
Informations sur le profil de l’agent (nom d’affichage, avatar, couleur, etc.). |
|
|
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’ |
|
|
Instructions relatives au comportement de l’agent, y compris la réponse, l’orchestration, le système et les exemples de questions. |
|
|
Configuration de l’orchestration, y compris les contraintes budgétaires (par exemple, secondes, jetons). |
|
|
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. |
|
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"
}
}
}
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."}
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 |
|---|---|
|
(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. |
|
(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 |
|---|---|
|
(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. |
|
(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. |
|
(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 |
|---|---|
|
(Obligatoire) Jeton d’autorisation. Pour plus d’informations, voir Authentification. |
|
(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 |
|---|---|
|
ID unique de la requête API. |
|
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": ""
}
]
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 |
|---|---|
|
(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. |
|
(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. |
|
(Obligatoire) Identificateur de l’agent. |
Paramètres de requête¶
Paramètre |
Description |
|---|---|
|
(Facultatif) Indique comment gérer la requête si l’agent n’existe pas.
|
En-têtes de requête¶
En-tête |
Description |
|---|---|
|
(Obligatoire) Jeton d’autorisation. Pour plus d’informations, voir Authentification. |
|
(Obligatoire) application/json |
Réponse¶
Une réponse réussie renvoie un message de confirmation.
Corps de réponse¶
{
"status": "Request successfully completed"
}
Schémas¶
AgentInstructions¶
Champ |
Type |
Description |
|---|---|---|
|
string |
Instructions pour la génération de la réponse. |
|
string |
Ces instructions personnalisées sont utilisées lorsque l’agent planifie les outils à utiliser. |
|
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 ..."
}
AgentProfile¶
Informations de profil pour un agent Data Cortex.
Champ |
Type |
Description |
|---|---|---|
|
string |
Nom d’affichage de l’agent. |
Exemple
{
"display_name": "My Agent"
}
BudgetConfig¶
Champ |
Type |
Description |
|---|---|---|
|
entier |
Budget temporel en secondes. |
|
entier |
Budget du jeton. |
Exemple
{
"seconds": 30,
"tokens": 16000
}
ExecutionEnvironment¶
Configuration pour les outils exécutés par le serveur.
Champ |
Type |
Description |
|---|---|---|
|
string |
Type d’environnement d’exécution. Actuellement, seul |
|
string |
Nom de l’entrepôt. Sensible à la casse. S’il s’agit d’un identificateur sans guillemets, indiquez le nom en majuscules. |
|
entier |
Délai d’attente de la requête en secondes. |
Exemple
{
"type": "warehouse",
"warehouse": "MY_WAREHOUSE",
"query_timeout": 60
}
ModelConfig¶
Champ |
Type |
Description |
|---|---|---|
|
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"
}
OrchestrationConfig¶
Champ |
Type |
Description |
|---|---|---|
|
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
}
}
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 |
|---|---|---|
|
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"
]
}
}
ToolInputSchema¶
Champ |
Type |
Description |
|---|---|---|
|
string |
Le type de l’objet du schéma d’entrée. |
|
string |
Description de ce qu’est l’entrée. |
|
carte de ToolInputSchema |
Si le type est |
|
Si le type est |
|
|
array of string |
Si le type est |
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"
]
}
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_filestring
Chemin d’accès à un fichier stocké dans une zone de préparation Snowflake contenant le modèle sémantique yaml.
semantic_viewstring
Nom de l’objet du modèle sémantique natif de Snowflake.
execution_environmentConfiguration 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 } }Configuration de la fonctionnalité de recherche. Définit comment la recherche et la récupération de documents doivent être effectuées.
Champ
Type
Description
search_servicestring
Nom entièrement qualifié du service de recherche.
title_columnstring
Colonne de titres du document.
id_columnstring
Colonne d’ID du document.
filterobjet
Filtre la requête pour les résultats de la recherche.
Exemple
{ "search_service": "database.schema.service_name", "title_column": "account_name", "id_column": "account_id", "filter": { "@eq": { "<column>": "<value>" } } }
Champ
Type
Description
typestring
Indique si l’outil est exécuté côté serveur, qu’il s’agisse d’une procédure stockée ou d’une UDF.
execution_environment
identifierstring
Nom entièrement qualifié de la procédure stockée ou de la UDF.
Exemple
{ "type": "function", "execution_environment": { "type": "warehouse", "warehouse": "MY_WAREHOUSE", "query_timeout": 60 }, "identifier": "MY_DB.MY_SCHEMA.MY_UDF" }
ToolSpec¶
Spécification du type, de la configuration et des exigences d’entrée de l’outil.
Champ |
Type |
Description |
|---|---|---|
|
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. |
|
string |
Identificateur unique pour référencer cette instance d’outil. Utilisé pour faire correspondre la configuration dans tool_resources. |
|
string |
Description de l’outil à prendre en compte pour l’utilisation d’outil. |
|
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"
]
}
}