Créer des agents¶
Vous pouvez créer des agents pour Snowflake Intelligence à l’aide des méthodes suivantes :
Dans l’Snowsight
En utilisant l’API REST d’objet d’agent
Avec les commandes SQL des Agents Cortex
Les sections suivantes fournissent des informations sur la façon de créer des agents pour Snowflake Intelligence à l’aide de commandes SQL. Chaque section fournit des informations sur une partie différente de la configuration de l’agent. La dernière section présente un exemple de configuration d’agent qui inclut tous les composants décrits dans cette rubrique.
Pour plus d’informations sur les autres méthodes de création d’un agent et les options disponibles, voir Configurer des agents et interagir avec.
Structure des agents¶
Un agent se compose des éléments suivants :
Le modèle de base qui fournit les bases du comportement de l’agent
Un modèle (l’orchestrateur) qui interprète l’intention, sélectionne les bons outils et planifie la séquence des actions
Instructions relatives au comportement de l’agent
Outils à utiliser par l’agent
Ressources pour les outils
Les sections suivantes fournissent des informations sur la sélection de modèles et la configuration des outils. Cet exemple utilise une vue sémantique, un service Cortex Search et un outil personnalisé pour fournir des réponses. Bien que vous puissiez créer un agent de base qui n’utilise aucun de ces outils, cet agent ne peut s’appuyer que sur le modèle de base pour fournir des réponses. Par conséquent, l’agent n’a pas accès aux données de votre compte Snowflake et dispose d’un contexte limité pour les réponses.
Pour plus d’informations sur les autres composants de l’agent, voir Cortex Agents.
Conditions préalables¶
Pour créer un Agent Cortex, vous devez utiliser un rôle disposant des privilèges suivants :
Privilège |
Objet |
Remarques |
|---|---|---|
CREATE AGENT |
Schéma |
Requis pour créer l’Agent Cortex. |
USAGE |
Base de données, schéma |
Requis pour créer l’Agent Cortex dans la base de données et le schéma spécifiés. |
Le code suivant accorde les privilèges nécessaires pour créer un Agent Cortex :
GRANT USAGE ON DATABASE <database_name> to ROLE <role_name>; GRANT USAGE ON SCHEMA <database_name>.<schema_name> to ROLE <role_name>; GRANT CREATE AGENT ON SCHEMA <database_name>.<schema_name> to ROLE <role_name>;
Outre les privilèges requis pour créer un Agent Cortex, les conditions préalables suivantes sont nécessaires pour connecter l’agent à des outils spécifiques :
- Une vue sémantique pour se connecter à l’agent
Pour plus d’informations sur la création d’une vue sémantique, voir Aperçu des vues sémantiques.
- Un outil Cortex Analyst pour se connecter à l’agent
Pour plus d’informations sur la création d’un outil Cortex Analyst, voir Cortex Analyst.
Données non structurées dans une base de données pour se connecter à l’agent
- Un outil Cortex Search pour se connecter à l’agent
Pour plus d’informations sur la création d’un outil Cortex Search, voir Cortex Search.
- Un outil personnalisé pour se connecter à l’agent
Pour plus d’informations sur la création de fonctions définies par l’utilisateur (UDFs) et des procédures stockées à utiliser comme outils personnalisés, voir Extension de Snowflake avec des fonctions et des procédures.
Pour associer des outils à un agent, le rôle utilisé pour créer l’agent doit disposer des privilèges suivants :
Privilège |
Objet |
Remarques |
|---|---|---|
USAGE |
Cortex Search Service |
Nécessaire pour ajouter le service Cortex Search à l’Agent Cortex. |
SELECT |
Table/Vue |
Nécessaire pour accéder aux objets référencés dans la vue/le modèle sémantique de l’agent. |
USAGE |
Outils |
Nécessaire pour accéder à tous les outils personnalisés à associer à l’agent. Par exemple, si l’outil personnalisé est une procédure stockée, alors vous devez disposer d’une procédure USAGE. |
USAGE |
Vue/modèle sémantique |
Nécessaire pour accéder à la vue/au modèle sémantique à associer à l’agent. |
Bases de la configuration de l’agent¶
Lorsque vous créez un agent, vous devez spécifier des informations sur l’agent, telles que le nom, la description et le modèle. Vous pouvez également spécifier les outils que l’agent peut utiliser et les ressources auxquelles l’agent peut accéder. Ces ressources sont transmises en tant que spécification YAML dans la clause FROM SPECIFICATION de la commande CREATE AGENT.
Les recommandations suivantes fournissent les bonnes pratiques relatives à cette configuration :
Définissez clairement le champ d’application de l’agent : avant d’ajouter des outils ou de rédiger des instructions, déterminez pourquoi l’agent existe, à qui il s’adresse et à quelles questions spécifiques il doit répondre. Cette étape conditionne tout ce qui suit, du choix des outils à la performance et à la confiance. Snowflake vous recommande de limiter la champ d’application de l’agent à un cas d’utilisation spécifique et à forte valeur ajoutée.
Une fois qu’un agent s’avère fiable dans un domaine, vous pouvez reproduire le modèle pour d’autres. Par exemple, vous pouvez avoir un agent pour analyser les données récentes de ventes et de marketing de votre magasin, et un autre qui recommande les meilleures SKUs à présenter au détaillant.
Sélectionnez soigneusement le nombre d’outils : chaque agent doit avoir accès uniquement aux outils dont il a besoin. Pour déterminer cela, il faut tenir compte des documents ou des données dont l’agent a besoin pour atteindre son objectif. Si l’agent doit accéder à des données non structurées, utilisez Cortex Search. Si l’agent doit accéder à des données structurées, utilisez Cortex Analyst. Si l’agent a besoin d’autres outils, vous pouvez utiliser des outils personnalisés.
Rédigez une description utile de l’outil : ces descriptions sont utilisées pour aider l’agent à comprendre ce que fait l’outil et comment l’utiliser. Des descriptions d’outils imprécises peuvent entraîner des défaillances en chaîne et provoquer des « hallucinations ».
Pour créer une description d’outil utile, suivez les instructions suivantes :
Ajoutez un nom d’outil clair et spécifique qui précise le domaine de l’outil (« Client », « Ventes ») et la fonction (« Analyses », « Recherche »).
Rédigez une description d’outil spécifique qui indique à l’agent :
Ce que fait l’outil
À quelles données il accède
Quand l’utiliser
Quand ne pas (NOT) l’utiliser ?
Soyez explicite quant aux entrées attendues de l’outil. Des entrées ambiguës dans vos outils entraînent des appels d’outils incorrects et des erreurs.
Soyez précis.
Spécifiez le format de données.
Donnez des instructions claires sur les données.
Fournissez des recommandations par défaut.
Utilisez une terminologie cohérente.
Pour plus de recommandations sur la configuration des agents, voir `Bonnes pratiques pour la création d’Agents Cortex<https://www.snowflake.com/en/developers/guides/best-practices-to-building-cortex-agents/>`_.
Sélection de modèles¶
Lorsque vous créez un agent, nous vous recommandons de sélectionner auto pour le modèle. Avec cette option, Cortex sélectionne automatiquement le modèle de la meilleure qualité pour votre compte. La qualité s’améliore automatiquement à mesure que de nouveaux modèles deviennent disponibles. Pour plus d’informations sur les modèles disponibles, voir Modèles et régions pris en charge.
L’exemple suivant montre comment spécifier le modèle pour l’agent :
models:
orchestration: auto
Inférence interrégionale¶
Important
L’inférence interrégionale est désactivée par défaut. Nous vous recommandons d’utiliser l’inférence interrégionale pour accéder à l’ensemble des LLMs et éviter les limitations au sein d’une seule région.
Lorsque vous utilisez un modèle qui n’est pas disponible dans la région locale, vous devez utiliser l’inférence interrégionale Cortex. Ce paramètre permet de traiter les demandes d’inférence dans une région différente de la région par défaut. Le paramètre pour l’inférence interrégionale peut uniquement être défini au niveau du compte par le rôle ACCOUNTADMIN, et non au niveau de l’utilisateur ou de la session.
Pour définir le paramètre, utilisez la commande suivante :
ALTER ACCOUNT SET CORTEX_ENABLED_CROSS_REGION = 'ANY_REGION';
Pour plus d’informations sur la configuration de l’inférence interrégionale Cortex, voir Inférence interrégionale.
Connecter les vues sémantiques à l’aide de Cortex Analyst (données structurées)¶
Snowflake Intelligence prend en charge les vues sémantiques, qui sont un type de données structurées avec des instructions indiquant à l’agent comment interroger ou interpréter les données. Les Agents Cortex utilisent Cortex Analyst pour récupérer des données structurées à partir de vues sémantiques en convertissant les requêtes en langage naturel en requêtes SQL. Les agents peuvent effectuer des routages sur plusieurs vues sémantiques pour fournir la réponse.
Chaque vue sémantique doit couvrir un ensemble similaire de tables. Vous pouvez définir des paramètres par défaut spécifiques aux données, par exemple en ajoutant systématiquement un filtre de date couvrant les trois derniers mois si aucune date n’est précisée, ou en excluant systématiquement les comptes internes.
Vous pouvez connecter une vue sémantique à un agent en spécifiant la vue sémantique dans les ressources de l’outil. L’exemple suivant montre comment connecter une vue sémantique à un agent et comment spécifier l’outil Cortex Analyst pour récupérer les données structurées de la vue sémantique :
tools:
- tool_spec:
type: "cortex_analyst_text_to_sql"
name: "<your cortex analyst tool name>"
description: "<clear and specific tool description>"
tool_resources:
<your cortex analyst tool name>:
semantic_view: "<db>.<schema>.<semantic_view>"
Meilleures pratiques pour les vues sémantiques¶
Les vues sémantiques alimentent la manière dont Snowflake Intelligence comprend et interroge vos données. Une vue sémantique bien conçue améliore la précision, réduit la latence et construit la confiance des utilisateurs. Les bonnes pratiques suivantes sont conçues pour vous aider à créer une vue sémantique précise et efficace :
Commencez modestement et de manière ciblée : commencez par 5 à 10 tables dans un seul domaine d’activité. Organisez-les par cas d’utilisation (performance commerciale, métriques du service client) plutôt que par structure de données. Faites évoluer une fois que vous aurez validé la précision.
Rédigez des descriptions claires : les descriptions sont l’élément le plus important. Chaque table et chaque colonne doit comporter une description claire et compréhensible qui explique ce que représentent les données, et pas seulement leur nom. Précisez le contexte, notamment la logique de calcul, les définitions métier et toute terminologie héritée.
Ajoutez des requêtes vérifiées : il s’agit d’exemples de questions associées à des requêtes SQL validées. Elles améliorent la précision des questions similaires, réduisent la latence et aident le système à apprendre vos modèles métier. Commencez par 10 à 20 requêtes qui couvrent vos questions les plus courantes, puis ajoutez-en davantage en fonction de l’utilisation réelle.
Définissez des métriques et des filtres : prédéfinissez des calculs réutilisables (comme les revenus totaux ou la valeur moyenne des commandes) et des conditions communes (comme les clients actifs ou l’année fiscale en cours). Cela peut améliorer considérablement la cohérence.
Utilisez des instructions personnalisées pour la logique métier : ajoutez des instructions de génération SQL pour les particularités des données, les définitions d’exercice comptable, les filtres par défaut ou les règles spécifiques au domaine. Soyez précis : « Si aucun filtre de date n’est fourni, utiliser par défaut les 12 derniers mois » est préférable à « filtrer par date ».
Activez Cortex Search pour la correspondance de texte : pour les colonnes de texte de haute cardinalité telles que les noms de produits, les noms de clients ou les noms d’entreprises, Cortex Search active une correspondance floue lorsque l’entrée de l’utilisateur ne correspond pas exactement à vos données.
Testez et itérez : créez un ensemble d’évaluation de questions représentatives, mesurez la précision et affinez en fonction de modèles d’utilisation réels. Consultez régulièrement les suggestions pour ajouter des requêtes vérifiées et améliorer les descriptions au fil du temps.
Pour plus d’informations sur les bonnes pratiques de création de vues sémantiques, voir Bonnes pratiques relatives aux vues sémantiques dans Cortex Analyst.
Connecter Cortex Search (données non structurées)¶
Pour traiter des données non structurées, vous pouvez connecter un outil Cortex Search à un agent en spécifiant l’outil Cortex Search dans la spécification YAML dans le cadre des ressources de l’outil. Les services Cortex Search récupèrent des documents et des enregistrements dans des sources de données non structurées à l’aide de la recherche sémantique. Les deux principaux cas d’utilisation de Cortex Search sont la génération augmentée par récupération (RAG) et la recherche en entreprise. 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.
Lorsque vous connectez un outil Cortex Search à un agent, il est particulièrement important d’inclure les informations suivantes sur les paramètres et leurs valeurs attendues :
Type et format (avec des exemples)
Si obligatoire ou facultatif (avec valeurs par défaut).
Valeurs ou contraintes valides (énumérations, plages, formats)
Relation avec d’autres paramètres (dépendances, conflits)
Comment obtenir la valeur (en particulier pour les IDs)
L’exemple suivant montre comment connecter un outil Cortex Search à un agent et comment spécifier l’outil Cortex Search dans la spécification YAML :
tools:
- tool_spec:
type: "cortex_search"
name: "<your cortex search tool name>"
description: "<clear and specific tool description>"
tool_resources:
<your cortex search tool name>:
name: "<db>.<schema>.<search_service_name>"
max_results: "5"
filter:
"@eq":
region: "North America"
title_column: "<title_name>"
id_column: "<column_name>"
Ajouter des outils personnalisés¶
Snowflake Intelligence prend en charge les outils personnalisés, qui sont des fonctions définies par l’utilisateur ou des procédures stockées pouvant être utilisées pour mettre en œuvre une logique métier personnalisée. Vous pouvez connecter un outil personnalisé à un agent en spécifiant l’outil personnalisé dans la spécification YAML dans le cadre des ressources de l’outil.
L’exemple suivant montre comment connecter un outil personnalisé à un agent et comment spécifier l’outil personnalisé dans la spécification YAML :
tools:
- tool_spec:
type: "custom_tool"
name: "<your custom tool name>"
description: "<clear and specific tool description>"
tool_resources:
<your custom tool name>:
user-defined-function-argument: "argument1"
Créer un agent¶
Combiner tous les outils et composants pour créer un agent à l’aide de SQL :
CREATE OR REPLACE AGENT <agent_name> COMMENT = 'agent level comment' PROFILE = '{"display_name": "My Business Assistant", "avatar": "business-icon.png", "color": "blue"}' FROM SPECIFICATION $$ models: orchestration: claude-4-sonnet 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 questions, use Search" system: "You are a friendly agent that helps with business questions" sample_questions: - question: "What was our revenue last quarter?" answer: "I'll analyze the revenue data using our financial database." tools: - tool_spec: type: "cortex_analyst_text_to_sql" name: "<your cortex analyst tool name>" description: "<clear and specific tool description>" - tool_spec: type: "cortex_search" name: "<your cortex search tool name>" description: "<clear and specific tool description>" - tool_spec: type: "data_to_chart" name: "data_to_chart" description: "Generates visualizations from data" tool_resources: <your cortex analyst tool name>: semantic_view: "<db>.<schema>.<semantic_view>" <your cortex search tool name>: name: "<db>.<schema>.<search_service_name>" max_results: "5" filter: "@eq": region: "North America" title_column: "<title_name>" id_column: "<column_name>" $$;
Modification d’un agent existant¶
Pour obtenir des instructions sur la modification de la configuration d’un agent existant, y compris l’ajout d’outils et la mise à jour d’autres détails, voir Ajouter des outils.