Cortex Agents¶
Les Cortex Agents orchestrent les sources de données structurées et non structurées pour fournir des informations. Ils planifient des tâches, utilisent des outils pour exécuter ces tâches et génèrent des réponses. Les Agents utilisent Cortex Analyst (structurées) et Cortex Search (non structurées) comme outils, ainsi que des LLMs, pour analyser les données. Cortex Search extrait des informations de sources non structurées, tandis que Cortex Analyst génère du SQL pour traiter des données structurées. Un support complet pour l’identification et l’exécution des outils permet de fournir des applications sophistiquées basées sur les données de l’entreprise.
Le flux de travail comprend quatre éléments clés :
Planification : Les applications passent souvent du traitement de données provenant de sources structurées à celui de sources non structurées. Prenons l’exemple d’une appli conversationnelle conçue pour répondre aux requêtes des utilisateurs. Un utilisateur professionnel peut d’abord demander à connaître les principaux distributeurs en fonction de leur chiffre d’affaires (structurées), puis passer à la recherche d’un contrat (non structurées). Les Cortex Agents peuvent analyser une requête pour orchestrer un plan et parvenir à la solution ou à la réponse.
Explorer les options : Lorsque l’utilisateur pose une question ambiguë (par exemple, « Parlez-moi d’Acme Supplies »), l’agent envisage différentes permutations (produits, lieu ou personnel de vente) pour retirer l’ambiguïté et améliorer la précision.
Diviser en sous-tâches : Les Cortex Agents peuvent diviser une tâche ou une requête (par exemple, « Quelles sont les différences entre les conditions contractuelles pour Acme Supplies et Acme Stationery ? ») en plusieurs parties pour une réponse plus précise.
Effectuer un routage entre les outils : L’agent sélectionne l’outil adéquat, Cortex Analyst ou Cortex Search, pour garantir un accès régi et la conformité aux politiques de l’entreprise.
Utilisation de l’outil : Grâce à la mise en place d’un plan, l’agent récupère les données de manière efficace. Cortex Search extrait des informations de sources non structurées, tandis que Cortex Analyst génère du SQL pour traiter des données structurées. Un support complet pour l’identification et l’exécution des outils permet de fournir des applications sophistiquées basées sur les données de l’entreprise.
Réflexion : Après chaque utilisation de l’outil, l’agent évalue les résultats pour déterminer les étapes suivantes, à savoir demander des éclaircissements, itérer ou générer une réponse finale. Cette orchestration lui permet de traiter des requêtes de données complexes tout en garantissant l’exactitude et la conformité dans le périmètre sécurisé de Snowflake.
Surveillance et adaptation : Après le déploiement, les clients peuvent suivre les métriques, analyser les performances et affiner les comportements pour des améliorations continues. Sur l’application client, les développeurs peuvent utiliser TruLens pour contrôler l’interaction avec l’Agent. En surveillant et en affinant en permanence les contrôles de gouvernance, les entreprises peuvent en toute confiance faire évoluer les agents AI tout en maintenant la sécurité et la conformité.
Pour consulter des tutoriels afin de vous aider pour la prise en main, voir Tutoriels des Cortex Agents.
Note
Bien que Snowflake s’efforce de fournir des réponses de haute qualité, l’exactitude des réponses LLM ou des citations fournies n’est pas garantie. Vous devez examiner toutes les réponses de l’API des Agents avant de les proposer à vos utilisateurs.
Exigences en matière de contrôle d’accès¶
L’utilisateur effectuant la requête doit avoir :
USAGE sur le Cortex Search Service référencé dans la requête.
USAGE sur la base de données, le schéma et les tables référencés dans le modèle sémantique de Cortex Analyst
Un rôle auquel a été attribué le rôle de base de données CORTEX_USER. Pour plus d’informations, voir Privilèges requis.
Comment utiliser l’API de l’Agent¶
Cette section présente les étapes de création d’un agent à l’aide de l’API de l’Agent.
Configurer l’authentification de l’API REST¶
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 modèle sémantique pour Cortex Analyst¶
Vous pouvez utiliser Cortex Analyst pour créer des requêtes SQL à partir de la langue naturelle. Pour utiliser Cortex Analyst, vous devez créer un modèle sémantique. Pour plus d’informations, voir Créer un modèle sémantique.
Créer un Cortex Search Service¶
Utilisez Cortex Search pour rechercher dans vos données. Pour plus d’informations, voir CREATE CORTEX SEARCH SERVICE.
Note
Le DEFAULT_ROLE de l’utilisateur effectuant la requête doit avoir le privilège USAGE sur le Cortex Search Service, ainsi que sur la base de données et le schéma dans lesquels il réside.
Appeler l’API¶
Tout d’abord, localisez l’URL de votre compte Snowflake. Une fois que vous avez votre URL et votre PAT, vous pouvez interroger l’API d’Agents à partir de la ligne de commande avec cURL, en utilisant la syntaxe suivante :
curl -X POST "$SNOWFLAKE_ACCOUNT_BASE_URL/api/v2/cortex/agent:run" \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header "Authorization: Bearer $PAT" \
--data '{
"model": "llama3.1-70b",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "what are the top 3 customers by revenue"
}
]
}
],
"tools": [
{
"tool_spec": {
"type": "cortex_search",
"name": "transcript_search"
}
},
{
"tool_spec": {
"type": "cortex_analyst_text_to_sql",
"name": "data_model"
}
}
],
"tool_resources": {
"transcript_search": {"name": "testdb.testschema.transcript_search_service"},
"data_model": {"semantic_model_file": "@testdb.testschema.stage/sample_data_model.yaml"}
}
}'
La réponse est transmise au client sous forme de flux incrémentiel.
Modèles pris en charge¶
Vous pouvez utiliser les modèles suivants avec les Cortex Agents pour générer la réponse. Veuillez noter que le modèle n’est pas utilisé pour l’orchestration.
llama3.1-70b
llama3.3-70b
mistral-large2
claude-3-5-sonnet
Vous pouvez également spécifier une instruction de réponse pour personnaliser les réponses de l’agent.
{
"response_instruction": "You will always maintain a friendly tone and provide concise response"
}
Important
Les Cortex Agents utilisent des modèles qui peuvent ne pas être disponibles dans toutes les régions. Pour plus d’informations, voir Disponibilité.
Disponibilité de la région¶
Les Cortex Agents sont disponibles dans les régions suivantes :
Fonction
(Modèle)
|
AWS US West 2
(Oregon)
|
AWS US East 1
(Virginie du Nord)
|
AWS Europe Central 1
(Francfort)
|
AWS Europe Ouest 1
(Irlande)
|
AWS AP Sud-Est 2
(Sydney)
|
AWS AP Nord-Est 1
(Tokyo)
|
Azure Est US 2
(Virginie)
|
Azure Europe de l’Ouest
(Pays-Bas)
|
AWS
(inter-régionale)
|
---|---|---|---|---|---|---|---|---|---|
COMPLETE
(
claude-3-5-sonnet ) |
✔ |
✔ |
✔ |
||||||
COMPLETE
(
llama3.2-1b ) |
✔ |
✔ |
|||||||
COMPLETE
(
llama3.2-3b ) |
✔ |
✔ |
|||||||
COMPLETE
(
llama3.1-8b ) |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
llama3.1-70b |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
llama3.3-70b |
✔ |
✔ |
✔ |
||||||
snowflake-llama-3.3-70b |
✔ |
✔ |
|||||||
llama3.1-405b |
✔ |
✔ |
✔ |
✔ |
|||||
snowflake-llama-3.1-405b |
✔ |
✔ |
|||||||
snowflake-arctic |
✔ |
✔ |
✔ |
||||||
deepseek-r1 |
✔ |
||||||||
reka-core |
✔ |
✔ |
|||||||
reka-flash |
✔ |
✔ |
✔ |
✔ |
|||||
mistral-large2 |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
mixtral-8x7b |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
mistral-7b |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
jamba-instruct |
✔ |
✔ |
✔ |
✔ |
|||||
jamba-1.5-mini |
✔ |
✔ |
✔ |
✔ |
|||||
jamba-1.5-large |
✔ |
✔ |
|||||||
gemma-7b |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|||
e5-base-v2 |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||
snowflake-arctic-embed-m |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
snowflake-arctic-embed-m-v1.5 |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
snowflake-arctic-embed-l-v2.0 |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
nv-embed-qa-4 |
✔ |
✔ |
|||||||
multilingual-e5-large |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
Considérations relatives aux clients¶
En aperçu, les Cortex Search Services engendrent des coûts selon les détails annoncés dans la Snowflake Service Consumption Table.
Créer un Cortex Agent¶
Nous allons utiliser les Cortex Agents pour mettre en place une application conversationnelle qui répond aux questions des utilisateurs professionnels concernant les termes d’un contrat. Passons en revue les principaux éléments. (Pour le tutoriel complet, voir Prise en main des Cortex Agents).
Étape 1. Spécifiez les outils que vous souhaitez utiliser dans la requête
{
"tools": [
{
"tool_spec": {
"name": "data_model",
"type": "cortex_analyst_text_to_sql"
}
},
{
"tool_spec": {
"name": "transcript_search",
"type": "cortex_search"
}
},
{
"tool_spec": {
"type": "sql_exec",
"name": "sql_exec"
}
},
{
"tool_spec": {
"type": "data_to_chart",
"name": "data_to_chart"
}
}
]
}
Étape 2. Fournissez des arguments statiques (ressources) aux outils que le Cortex Agent peut utiliser pour appeler les outils
{
"tool_resources": {
"data_model": {
"semantic_model_file": "@cortex_tutorial_db.public.revenue_semantic_model.yaml"
},
"transcript_search": {
"name": "cortex_tutorial_db.public.contract_terms",
"max_results": 5,
"title_column": "TRANSCRIPT_TITLE",
"id_column": "TRANSCRIPT_ID",
"filter": {"@eq": {"TRANSCRIPT_TYPE": "ENTERPRISE"} }
}
}
}
Étape 3. Nous allons maintenant spécifier le modèle et l’invite du système pour générer la réponse
{
"model": "claude-3-5-sonnet",
"messages": [
{
"role": "system",
"content": {
"type": "text",
"text": "You’re a friendly assistant to answer questions."
}
}
]
}
Étape 4. Créez un fichier de modélisation sémantique qui sera utilisé par l’outil Analyst pour accéder aux données structurées
Suivez les étapes 1 à 3 de ce guide pour créer un modèle sémantique Cortex Analyst Prise en main des Cortex Agents
Étape 5. Ensuite, nous avons défini un service de recherche pour que l’outil Search accède aux données non structurées
Suivez les étapes 4 et 5 de ce guide pour créer le service Cortex Search Service Prise en main des Cortex Agents
Étape 6. Nous sommes maintenant prêts à interagir avec l’Agent. Vous utiliserez le champ messages pour envoyer des requêtes et recevoir des réponses
{
"model": "claude-3-5-sonnet",
"messages": [
{
"role": "system",
"content": [
{
"type": "text",
"text": "You’re a friendly assistant to answer questions"
}
]
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "hello"
}
]
},
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "hi there!"
}
]
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "..."
}
]
}
]
}
Étape 7. Au fur et à mesure de l’interaction, l’Agent identifie les outils et exécute (côté service) pour accomplir la tâche. Dans l’exemple ci-dessous, l’Agent identifie Text2SQL comme l’outil et exécute pour obtenir la requête SQL. Au cours de l’interaction, l’Agent peut demander l’utilisation d’un outil pour l’application client (côté client). Par exemple, l’Agent spécifie la requête SQL qui doit être exécutée.
{
"role": "assistant",
"content": [
{
"type": "tool_use",
"tool_use": {
"tool_use_id": "tool_001",
"name": "cortex_analyst_text_to_sql",
"input": {
"query": "...",
"semantic_model_file": "..."
}
}
},
{
"type": "tool_results",
"tool_results": {
"status": "success",
"tool_use_id": "tool_001",
"content": [
{
"type": "json",
"json": {
"sql": "select * from table"
}
}
]
}
},
{
"type": "tool_use",
"tool_use": {
"tool_use_id": "tool_002",
"name": "sql_exec",
"input": {
"sql": "select * from table"
}
}
}
]
}