Avanzado 2 min de lectura

Cortex Agents: Workflows de IA Multi-Paso

Construye agentes inteligentes con Cortex Agents que combinan búsqueda, ejecución de SQL, APIs externas y memoria de conversación.

¿Qué son los Cortex Agents?

Un Cortex Agent es un LLM que puede usar herramientas para completar tareas complejas de múltiples pasos:

  1. Recibe una pregunta o instrucción
  2. Decide qué herramienta usar (búsqueda, SQL, API)
  3. Ejecuta la herramienta
  4. Interpreta el resultado
  5. Decide el siguiente paso o responde

Herramientas disponibles

HerramientaTipoPara qué
cortex_analyst_toolBuilt-inTexto → SQL sobre datos estructurados
cortex_search_toolBuilt-inBúsqueda semántica sobre documentos
sql_exec_toolBuilt-inEjecutar SQL arbitrario
Python functionsCustomLlamar APIs externas, calcular

Crear un Agente

from snowflake.cortex.agents import CortexAgent

agente = CortexAgent(
    session=session,
    model="claude-3-5-sonnet",
    tools=[
        # Cortex Analyst para datos estructurados
        {"type": "cortex_analyst", "semantic_model_file": "@stage/modelo.yaml"},
        # Cortex Search para documentación
        {"type": "cortex_search", "service": "busqueda_docs"},
    ],
    instructions="""Eres un asistente de datos de ventas de LATAM.
    Responde con datos precisos cuando sea posible.
    Si no tienes información, dilo claramente."""
)

# Conversación multi-turno
respuesta = agente.run("¿Cuáles fueron las ventas de México en el Q3?")
print(respuesta.message)

# El agente recuerda el contexto
respuesta2 = agente.run("¿Y comparado con el Q2?")
print(respuesta2.message)

Ejemplo completo: Asistente de Análisis

import streamlit as st
from snowflake.snowpark.context import get_active_session
from snowflake.cortex.agents import CortexAgent

session = get_active_session()

@st.cache_resource
def get_agent():
    return CortexAgent(
        session=session,
        model="claude-3-5-sonnet",
        tools=[
            {"type": "cortex_analyst", "semantic_model_file": "@models/ventas_model.yaml"},
            {"type": "cortex_search", "service": "documentacion_busqueda"},
        ],
        instructions="Eres un analista de ventas senior de LATAM. Responde en español."
    )

agent = get_agent()

st.title("Asistente de Análisis LATAM")

if "history" not in st.session_state:
    st.session_state.history = []

for msg in st.session_state.history:
    with st.chat_message(msg["role"]):
        st.markdown(msg["content"])

if prompt := st.chat_input("¿Qué quieres analizar?"):
    st.session_state.history.append({"role": "user", "content": prompt})
    with st.chat_message("assistant"):
        with st.spinner("Analizando..."):
            response = agent.run(prompt)
            st.markdown(response.message)
    st.session_state.history.append({"role": "assistant", "content": response.message})

Gestión de versiones y aliases

-- Crear un agente como objeto de Snowflake (alternativa declarativa)
CREATE CORTEX AGENT asistente_ventas
  COMMENT = 'Agente de análisis de ventas LATAM'
  AS $$
  {
    "model": "claude-3-5-sonnet",
    "tools": [
      {"type": "cortex_analyst", "semantic_model_file": "@stage/modelo.yaml"}
    ]
  }
  $$;

-- Versionar y crear alias
ALTER CORTEX AGENT asistente_ventas ADD VERSION v2 USING $$...$$;
ALTER CORTEX AGENT asistente_ventas SET DEFAULT VERSION = v2;

Casos de uso empresariales

  • Analista de negocio que puede hacer preguntas sobre datos sin saber SQL
  • Helpdesk automático que combina búsqueda en documentos + consulta de datos del cliente
  • Asistente de FinOps que analiza costos y sugiere optimizaciones
  • Monitor de alertas que explica anomalías en lenguaje natural
#cortex-agents #agentes #tools #workflow #rag