- Catégories :
Fonctions de chaîne et fonctions binaires (Fonctions AI)
AGENT_RUN (SNOWFLAKE.CORTEX)¶
Exécute un Agent Cortex sans objet agent et renvoie la réponse sous la forme JSON.
Vous pouvez utiliser cette fonction pour interagir directement avec les Agents Cortex sans créer un objet agent au préalable. Vous fournissez la configuration, y compris le modèle d’orchestration et les outils, dans le corps de la requête.
Note
SNOWFLAKE.CORTEX.AGENT_RUN est un utilitaire qui encapsule l’API REST Cortex Agents Run. Pour la plupart des intégrations d’applications, Snowflake recommande d’appeler directement l’API REST de flux.
Syntaxe¶
SNOWFLAKE.CORTEX.AGENT_RUN( <request_body> )
Arguments¶
request_bodyCorps de la requête JSON à envoyer à l’agent. Cette valeur doit être une chaîne (par exemple, un littéral
$$...$$).Les champs suivants sont pris en charge dans le corps de la requête :
Champ
Type
Description
thread_identier
ID de thread pour la conversation. Si thread_id est utilisé, parent_message_id doit également être transmis.
parent_message_identier
ID du message parent dans le thread. S’il s’agit du premier message, parent_message_id doit correspondre à 0.
messagestableau d”Message
Si thread_id et parent_message_id sont transmis dans la requête, les messages incluent le message actuel de l’utilisateur dans la conversation. Sinon, les messages comprennent l’historique de la conversation et le message actuel. Les messages contiennent à la fois les requêtes des utilisateurs et les réponses des assistants dans l’ordre chronologique.
streambooléen
Renvoyer une réponse streaming (
texte/flux d’événements) ou une réponse JSON non-streaming (application/json). Si « true », la réponse sera envoyée (stream) en tant qu’événements envoyés par le serveur. Si « false », la réponse sera renvoyée en tant que JSON.tool_choiceConfigure la manière dont l’agent doit sélectionner et utiliser les outils pendant l’interaction. Contrôle si l’utilisation des outils est automatique, obligatoire, ou si des outils spécifiques doivent être utilisés.
modelsConfiguration 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.instructionsInstructions relatives au comportement de l’agent, y compris la réponse, l’orchestration, le système et les exemples de questions.
orchestrationConfiguration de l’orchestration, y compris les contraintes budgétaires (par exemple, secondes, jetons).
toolstableau 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_resourcescarte 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
{ "thread_id": 0, "parent_message_id": 0, "messages": [ { "role": "user", "content": [ { "type": "text", "text": "What is the total revenue for 2023?" } ] } ], "stream": false, "tool_choice": { "type": "auto", "name": [ "analyst_tool", "search_tool" ] }, "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" } } }
Important
Le champ stream est ignoré. Une réponse sans flux est toujours renvoyée.
Renvoie¶
Renvoie une chaîne JSON contenant la réponse de l’agent.
Exigences en matière de contrôle d’accès¶
Pour exécuter un agent, vous devez utiliser un rôle permettant d’accéder aux Agents Cortex. Pour plus de détails, voir Exigences en matière de contrôle d’accès.
Notes sur l’utilisation¶
La fonction renvoie une chaîne JSON. Transmettez cette chaîne à TRY_PARSE_JSON pour convertir la réponse en une valeur VARIANT.
Contrairement à DATA_AGENT_RUN (SNOWFLAKE.CORTEX), cette fonction ne nécessite pas que vous créiez d’abord un objet agent. Au lieu de cela, vous fournissez la configuration directement dans le corps de la requête.
Exemples¶
Exécuter un agent et analyser la réponse JSON :
SELECT
TRY_PARSE_JSON(
SNOWFLAKE.CORTEX.AGENT_RUN(
$${
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is the total revenue for 2025?"
}
]
}
],
"models": {
"orchestration": "claude-4-sonnet"
}
}$$
)
) AS resp;
Exemple de valeur de retour :
{
"content": [
{
"text": "The total revenue for 2025 was $100,000.",
"type": "text"
}
],
"metadata": {
"usage": {
"tokens_consumed": [
{
"context_window": 200000,
"input_tokens": {
"cache_read": 0,
"cache_write": 0,
"total": 67,
"uncached": 67
},
"model_name": "claude-4-sonnet",
"output_tokens": {
"total": 38
}
}
]
}
},
"role": "assistant"
}