Configurer des agents et interagir avec¶
Vous pouvez créer un agent dans Snowsight ou à l’aide de l’API REST, puis intégrer l’agent dans votre application pour effectuer des tâches ou répondre à des requêtes. Vous devez commencer par créer un objet d’agent contenant des informations telles que les métadonnées, les outils et les instructions d’orchestration que l’agent peut utiliser pour effectuer une tâche ou répondre à des questions. Vous pouvez ensuite référencer l’objet d’agent dans votre application pour y intégrer la fonctionnalité de l’agent. Vous pouvez configurer un thread pour garder le contexte en mémoire, afin que le client n’ait pas à envoyer le contexte à chaque étape de la conversation.
Note
Les APIs REST de Snowflake prennent en charge l’authentification par jeton d’accès programmatique (PATs), l’authentification par paire de clés à l’aide de JSON Web Tokens (JWTs), et OAuth. Pour plus de détails, voir Authentification d”Snowflake REST APIs avec Snowflake.
Créer un agent¶
Créez un objet d’agent en spécifiant la base de données et le schéma dans lesquels l’agent doit être situé, ainsi qu’un nom et une description pour l’agent. De plus, spécifiez son nom d’affichage, son avatar et sa couleur. Ces attributs sont utilisés par l’application cliente pour afficher l’agent. Le nom d’affichage est également utilisé comme identifiant pour faire référence à l’agent dans les conversations.
Les exemples suivants montrent comment créer un objet d’agent à partir de Snowsight ou à l’aide de l’API REST :
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez AI & ML » Agents.
Sélectionnez Create agent.
Pour Agent object name, indiquez un nom pour l’agent qui est affiché aux utilisateurs dans l’UI.
Pour Display name, indiquez le nom de l’agent qui est affiché aux administrateurs dans la liste des agents.
Sélectionnez Create agent.
Invitez l’agent avec des requêtes de connaissances générales.
Créez un objet d’agent en spécifiant la base de données et le schéma dans lesquels l’agent sera créé, ainsi que les paramètres nécessaires à l’agent. Vous pouvez également spécifier des champs d’outils lors de la création de l’objet d’agent.
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": "llama3.3-70B" } }'
Ajouter des outils¶
Après avoir créé l’agent, vous devez ajouter des outils et fournir des instructions sur la manière d’orchestrer les outils. Les agents prennent en charge les types d’outils suivants :
Cortex Analyst : Vous spécifiez les vues sémantiques afin que Cortex Analyst puisse les utiliser pour récupérer des données structurées. Les agents peuvent effectuer des routages sur plusieurs vues sémantiques pour fournir la réponse.
Cortex Search : Vous fournissez les indices Cortex Search sous forme d’outils, y compris les informations connexes comme les filtres de recherche, les noms de colonnes et les métadonnées. L’Agent Cortex utilise les indices Cortex Search pour récupérer des données non structurées.
Outils personnalisés : Vous pouvez implémenter le code d’une logique métier spécifique en tant que procédure stockée ou fonction définie par l’utilisateur (UDF). Vous pouvez également utiliser les outils personnalisés pour récupérer des données à partir de vos systèmes backend à l’aide d’APIs.
Vous indiquez également les ressources utilisées par chaque outil. Par exemple, sur Cortex Analyst, vous spécifiez l’entrepôt ainsi que le délai d’attente pour l’exécution de la requête SQL. De la même manière, pour Cortex Search, vous spécifiez les filtres et les noms de colonnes utilisés dans la requête de recherche, ainsi que les résultats maximums dans la réponse de recherche. Pour les outils personnalisés, vous fournirez les détails de l’entrepôt.
Pour modifier la configuration d’un agent existant, procédez comme suit :
Sélectionnez Edit.
Pour Description, décrivez l’agent et comment les utilisateurs peuvent interagir avec lui.
Pour ajouter des exemples de questions que les utilisateurs peuvent poser à l’agent, saisissez un exemple de questions et sélectionnez Add a question.
Sélectionnez Tools. Ajoutez un ou plusieurs des outils suivants.
Pour ajouter une vue sémantique dans Cortex Analyst à l’agent : Cette section suppose que vous avez déjà créé une vue sémantique. Pour plus d’informations sur les vues sémantiques et sur la manière de les créer, voir Aperçu des vues sémantiques.
Cherchez Cortex Analyst et sélectionnez le bouton:ui:
+ Addrespectif.Pour Name, saisissez un nom pour la vue sémantique.
Sélectionnez Semantic view.
Sélectionnez la vue sémantique utilisée par l’agent.
Pour Warehouse, sélectionnez l’entrepôt que l’agent utilise pour exécuter les requêtes.
Pour Query timeout (seconds), indiquez le temps maximal en secondes pendant lequel l’agent attend une requête pour se terminer avant l’expiration du délai.
Pour Description, décrivez la vue sémantique.
Sélectionnez Add.
Pour ajouter un service Cortex Search à l’agent : Cette section suppose que vous avez déjà créé un Cortex Search Service. Pour plus d’informations sur la création d’un Cortex Search Service, voir Cortex Search. Vous pouvez également utiliser une Cortex Knowledge Extension (CKE) qui est partagée avec vous. Pour un tutoriel qui utilise une CKE, voir Résolution des problèmes.
Cherchez Cortex Search Services et sélectionnez le bouton:ui:
+ Addrespectif.Pour Name, saisissez un nom pour le Cortex Search Service.
Pour Description, décrivez le Cortex Search Service.
Pour Search service, sélectionnez le Cortex Search Service utilisé par l’agent.
Sélectionnez Add.
Pour ajouter un outil personnalisé à l’agent : En ajoutant des outils personnalisés, vous pouvez étendre les fonctionnalités de vos agents. Avec les outils personnalisés, l’agent peut appeler des procédures et des fonctions stockées que vous avez définies pour effectuer des actions ou des calculs. Cette section suppose que vous avez déjà créé un outil personnalisé. Pour des informations sur les procédures et les fonctions, voir Extension de Snowflake avec des fonctions et des procédures.
Cherchez Custom tools et sélectionnez le bouton:ui:
+ Addrespectif.Pour Name, saisissez un nom pour l’outil personnalisé.
Pour Resource type, sélectionnez si l’outil personnalisé est une fonction ou une procédure. Pour plus d’informations sur l’utilisation d’une fonction ou d’une procédure, voir Choisir d’écrire une procédure stockée ou une fonction définie par l’utilisateur.
Pour Custom tool identifier, sélectionnez la fonction existante ou la procédure que vous souhaitez ajouter comme outil personnalisé.
Les paramètres relatifs à la fonction ou à la procédure apparaissent automatiquement. Vous pouvez ajouter manuellement des paramètres pour l’outil personnalisé en ajoutant un nom, un type, une description et en indiquant si le paramètre est obligatoire. Vous pouvez également modifier les paramètres qui sont automatiquement renseignés.
Pour Warehouse, sélectionnez l’entrepôt que l’agent utilise pour exécuter l’outil personnalisé. Vous devez sélectionner manuellement un entrepôt.
Pour Description, décrivez l’outil personnalisé et comment l’utiliser.
Sélectionnez Add.
Après avoir créé l’outil personnalisé, assurez-vous que les utilisateurs disposent des privilèges USAGE pour la fonction ou la procédure que vous avez ajoutée en tant qu’outil personnalisé. Lorsque vous utilisez des procédures stockées, les agents déterminent si la procédure s’exécute avec les droits du propriétaire ou ceux de l’appelant. Pour plus d’informations sur les droits du propriétaire et de l’appelant, voir Présentation des procédures stockées des droits de l’appelant et des droits du propriétaire.
Sélectionnez Save.
Pour ajouter des outils à un agent à l’aide de l’API REST, ajoutez les charges utiles suivantes dans le cadre d’une requête à Mettre à jour un Agent Cortex. Vous pouvez également spécifier ces champs lors de la création de l’objet d’agent.
Ajouter un outil Cortex Analyst et des ressources d’outils : L’exemple suivant montre comment ajouter un outil Cortex Analyst et des ressources d’outils à un objet d’agent existant.
Ajouter un outil Cortex Analyst
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" } } ] }'Ajouter une ressource d’outil Cortex Analyst
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"} } } }'Ajouter un outil Cortex Search et des ressources d’outils : L’exemple suivant montre comment ajouter un outil Cortex Search et des ressources d’outils à un objet d’agent existant.
Ajouter un outil Cortex Search
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" } }'Ajouter une ressource d’outil Cortex Search
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 } } }'Ajouter un outil personnalisé et des ressources d’outils : L’exemple suivant montre comment ajouter un outil personnalisé et des ressources d’outils à un objet d’agent existant.
Ajouter un outil personnalisé
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" } } ] }'Ajouter une ressource d’outil personnalisée
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" } } }'
Spécifier l’orchestration¶
Les Agents Cortex orchestrent la tâche en la divisant en une séquence de sous-tâches et en identifiant l’outil approprié pour chaque sous-tâche. Vous spécifiez le LLM que l’agent doit utiliser pour effectuer cette orchestration. Vous pouvez également influencer l’orchestration en fournissant des instructions. Prenons l’exemple d’un agent conçu pour répondre à des questions sur des produits vendus au détail. Vous pouvez utiliser l’instruction d’orchestration "Use the search tool for all requests related to refunds" pour vous assurer que l’agent ne fournit que des détails sur la politique de remboursement (à l’aide de Cortex Search) et ne calcule pas réellement le montant des remboursement (à l’aide de Cortex Analyst). Vous pouvez également spécifier des instructions pour aligner la réponse sur une forme ou une tonalité, comme "Always provide provide a concise response; maintain a friendly tone".
Sélectionnez Orchestration.
Pour le Orchestration model, sélectionnez le modèle que l’agent utilise pour gérer l’orchestration.
Pour Planning instructions, fournissez des instructions qui influencent la sélection des outils par l’agent sur la base des données fournies par l’utilisateur. Il peut s’agir d’instructions spécifiques sur l’utilisation de chaque outil, voire sur l’utilisation obligatoire de chaque outil au début ou à la fin d’une réponse.
Pour Response instruction, fournissez des instructions que le modèle utilise pour la génération de réponses. Par exemple, indiquez si vous souhaitez que l’agent donne la priorité à la création de graphiques ou conserve un certain registre avec les utilisateurs.
Sélectionnez Save.
Pour mettre à jour un agent à l’aide de l’API REST, ajoutez les charges utiles suivantes dans le cadre d’une requête à Mettre à jour un Agent Cortex. Vous pouvez également spécifier ces champs lors de la création de l’objet d’agent. La procédure suivante montre comment mettre à jour l’agent avec des instructions de planification et de réponse et comment spécifier le modèle LLM utilisé pour l’orchestration.
Mettre à jour le modèle LLM
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" }'
Spécifier les instructions de planification et de réponse
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." } }'
Configurer l’accès à l’agent¶
Configurez des politiques d‘accès depuis l’UI de Snowsight ou à l’aide de SQL pour que les utilisateurs puissent accéder à l’agent. Spécifiez le rôle permettant d’accéder à l’agent.
Sélectionnez Access.
Pour donner à un rôle l’accès à l’agent, sélectionnez Add role, puis sélectionnez le rôle dans le menu déroulant.
Sélectionnez Save.
GRANT USAGE PRIVILEGE ON AGENT my_agent TO ROLE test_rl;
Examiner l’agent¶
Après avoir créé l’agent, vous pouvez l’examiner pour vérifier tous les paramètres.
Note
Lors de l’examen des agents depuis Snowsight, vous pouvez uniquement voir les agents dans l’UI d’administration des agents. Vous ne pouvez pas voir les agents dans l’explorateur d’objets de la base de données.
Dans le menu de navigation, sélectionnez AI & ML » Agents.
Dans la liste des agents, sélectionnez l’agent dont vous souhaitez voir les détails. Cela ouvre une nouvelle page qui vous donne un aperçu des détails de l’agent.
Pour examiner tous les détails de l’agent, sélectionnez Next.
Vous pouvez lister et décrire des agents à l’aide d’APIs REST.
Listez tous les agents.
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" \
Décrivez l’agent souhaité.
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" \
Tester l’agent¶
Après avoir créé l’agent, vous pouvez le tester pour voir comment il répond aux requêtes des utilisateurs. Vous pouvez également tester l’agent à l’aide de l’Requête d’exécution d’agent avec objet d’agent.
Pour tester l’agent, suivez les étapes suivantes :
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez AI & ML » Agents.
Sélectionnez l’agent dans la liste des agents.
Sur la page des détails de l’agent, saisissez une requête dans le playground de l’agent.
Vérifiez que l’agent répond à la requête comme attendu. Si l’agent ne répond pas comme attendu, modifiez la configuration de l’agent en suivant les étapes à la section Ajouter des outils.
Interagir avec l’agent¶
Après avoir créé l’objet d’agent, vous pouvez intégrer l’agent directement dans votre application à l’aide de l’API REST. Pour maintenir le contexte lors de l’interaction, utilisez un thread. La combinaison de l’objet d’agent et du thread simplifie le code de l’application cliente.
Créer un thread¶
Créez un thread pour maintenir le contexte pendant une conversation. Lorsque le thread est correctement créé, le système renvoie un Thread ID.
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>,
}'
Envoyer une requête à l’agent¶
Pour interagir avec l’agent, vous devez transmettre l’objet d’agent, l’ID du thread et un parent_message_id unique dans le cadre de votre requête d’API REST. L’parent_message_id initial devrait correspondre à 0.
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"
]
}
}'
Recueillir des commentaires sur l’agent¶
Vous pouvez recueillir les commentaires des utilisateurs sur les réponses données par l’agent. Ces commentaires peuvent vous aider à affiner l’agent au fur et à mesure que vous itérez sur votre cas d’utilisation. Les utilisateurs peuvent fournir une évaluation objective (positive ou négative), ainsi que des détails plus subjectifs dans un message. Les utilisateurs peuvent également catégoriser les commentaires dans l’une des nombreuses catégories.
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>"
}'
Interagir sans objet d’agent¶
Dans certains cas, vous souhaiterez peut-être commencer à utiliser des Agents Cortex en utilisant l’agent:run sans objet d’agent. Par exemple, cela peut être utile lorsque vous souhaitez tester rapidement un cas d’utilisation. Pour plus d’informations sur l’API REST, consultez Exécution d’agent sans objet d’agent.
Note
Lorsque vous interagissez avec un agent sans créer d’objet d’agent, vous devez maintenir manuellement le contexte de l’agent à chaque requête.