{"slug": "vanna-ai-el-estandar-de-la-industria-para-text-to-sql", "title": "Vanna AI (El estándar de la industria para Text-to-SQL)", "summary": "Vanna AI has released Vanna 2.0, an open-source framework for building text-to-SQL assistants. The framework supports native connections to Snowflake, BigQuery, PostgreSQL, and MySQL, and includes pre-built interfaces for Slack and web applications. Vanna 2.0 introduces a two-step process: training an AI model or vector index on schema, documentation, and past SQL queries, then generating SQL code with high accuracy.", "body_md": "**Idea central:** Vanna es uno de los frameworks de código abierto más utilizados en la actualidad para crear asistentes de SQL con IA. Funciona en dos pasos: primero entrenas un modelo de IA (o un índice vectorial) con tu esquema, documentación y consultas SQL reales pasadas, y luego genera código con una precisión quirúrgica.\n\n**Ventajas:** Se conecta nativamente a Snowflake, BigQuery, PostgreSQL y MySQL. Incluye interfaces gráficas listas para usar en Slack o aplicaciones web.\n\n`<vanna-chat>`\n\n:`<vanna-chat>`\n\nlo renderiza todo a la perfección.Aquí tienes un ejemplo completo de cómo integrar Vanna con tu aplicación FastAPI y tu sistema de autenticación existentes:\n\n**1. Backend (Python + FastAPI):**\n\n`python`\n\nfrom fastapi import FastAPI\n\nfrom vanna import Agent\n\nfrom vanna.servers.fastapi.routes import register_chat_routes\n\nfrom vanna.servers.base import ChatHandler\n\nfrom vanna.core.user import UserResolver, User, RequestContext\n\nfrom vanna.integrations.anthropic import AnthropicLlmService\n\nfrom vanna.tools import RunSqlTool\n\nfrom vanna.integrations.sqlite import SqliteRunner\n\nfrom vanna.core.registry import ToolRegistry\n\napp = FastAPI()\n\nclass MyUserResolver(UserResolver):\n\nasync def resolve_user(self, request_context: RequestContext) -> User:\n\n# Extraer desde cookies, JWTs, o sesión\n\ntoken = request_context.get_header('Authorization')\n\nuser_data = self.decode_jwt(token) # Tu lógica existente\n\n```\n    return User(\n        id=user_data['id'],\n        email=user_data['email'],\n        group_memberships=user_data['groups']  # Usado para permisos\n    )\n```\n\nllm = AnthropicLlmService(model=\"claude-3-5-sonnet\")\n\ntools = ToolRegistry()\n\ntools.register(RunSqlTool(sql_runner=SqliteRunner(\"./data.db\")))\n\nagent = Agent(\n\nllm_service=llm,\n\ntool_registry=tools,\n\nuser_resolver=MyUserResolver()\n\n)\n\nchat_handler = ChatHandler(agent)\n\nregister_chat_routes(app, chat_handler)\n\n`\n\nSimplemente agrega esta etiqueta HTML en tu página web. Funciona con React, Vue o HTML simple y utiliza tus cookies/JWT existentes:\n\nHTML\n\nsse-endpoint=\"/api/vanna/v2/chat_sse\"\n\ntheme=\"dark\">\n\nAl hacer una pregunta en lenguaje natural, el componente frontend recibe por transmisión ( streaming ):\n\nHerramientas Personalizadas\n\nPuedes extender Vanna con herramientas específicas para tu caso de uso de negocio (por ejemplo, enviar un correo automático con los resultados):\n\nPython\n\nfrom vanna.core.tool import Tool, ToolContext, ToolResult\n\nfrom pydantic import BaseModel, Field\n\nfrom typing import Type\n\nclass EmailArgs(BaseModel):\n\nrecipient: str = Field(description=\"Email recipient\")\n\nsubject: str = Field(description=\"Email subject\")\n\nclass EmailTool(Tool[EmailArgs]):\n\n@property\n\ndef name(self) -> str:\n\nreturn \"send_email\"\n\n``` php\n@property\ndef access_groups(self) -> list[str]:\n    return [\"send_email\"]  # Verificación de permisos\n\ndef get_args_schema(self) -> Type[EmailArgs]:\n    return EmailArgs\n\nasync def execute(self, context: ToolContext, args: EmailArgs) -> ToolResult:\n    user = context.user  # Inyectado automáticamente por Vanna\n\n# Tu lógica de negocio\nawait self.email_service.send(\n    from_email=user.email,\n    to=args.recipient,\n    subject=args.subject\n)\n\nreturn ToolResult(success=True, result_for_llm=f\"Email sent to {args.recipient}\")\n```\n\ntools.register(EmailTool())\n\nCaracterísticas Avanzadas y Casos de Uso\n\n¿Para qué casos es ideal?\n\nEl siguiente flujo detalla el ciclo de vida de una solicitud en Vanna 2.0 desde que el usuario realiza la pregunta hasta que se renderizan los componentes visuales:\n\n`<vanna-chat>`\n\n.`POST`\n\nal endpoint `/api/vanna/v2/chat_sse`\n\nde tu servidor FastAPI, adjuntando las credenciales de autenticación.`read_sales`\n\n) y se los pasa al Agente.| Enfoque | Complejidad | Mejor para | Herramientas clave |\n|---|---|---|---|\n1. LLM + Python puro |\nBaja | Prototipos rápidos, scripts internos. | API de OpenAI, sqlite3 |\n2. Agentes (`smolagents` ) |\nMedia-Alta | Consultas complejas, autocorrección. | Hugging Face, smolagents |\n3. Streamlit + HF |\nMedia | Paneles para usuarios no técnicos | Streamlit, transformers |\n4. RAG Dinámico |\nAlta | Entornos Enterprise con cientos de tablas | BD Vectoriales, DB-GPT |\n5. Vanna AI |\nMedia-Alta | Producción escalable, UI web lista y segura | Vanna, FastAPI |\n\n`SELECT`\n\nsolamente) y usuarios de base de datos blancos con permisos de solo lectura.Si decides inclinarte por la implementación de agentes empresariales con Vanna AI, aquí tienes los accesos directos a sus canales oficiales para resolver dudas de integración avanzada:\n\n***Documentación completa** — Guías completas y referencia detallada de la API de Vanna.\n\n**Foros de discusión de GitHub** — Espacio para sugerencias de nuevas funciones, extensiones y preguntas/respuestas de la comunidad.\n\n**Problemas de GitHub** — Reportes de errores, fallos de conectores y seguimiento de parches.\n\n**Soporte empresarial** — Soporte técnico directo vía `support@vanna.ai`\n\n.\n\n*Este post recopila y adapta ejemplos de fuentes públicas con fines educativos y de referencia para la comunidad de desarrolladores.*\n\nEjemplos Oficiales de Inicio Rápido: GitHub - vanna-ai/vanna-boilerplate (Este repositorio contiene plantillas listas para clonar usando Flask, Streamlit o FastAPI, ideales para no empezar desde cero).\n\nComponente Frontend Oficial (): GitHub - vanna-ai/vanna-components (El código fuente del componente web de interfaz gráfica que vimos en los diagramas si quieres modificar su diseño o comportamiento).\n\nNotebooks de Jupyter con Ejemplos por Base de Datos: En la misma organización de GitHub tienen guías paso a paso en formato Notebook para configuraciones específicas:\n\nPara conectar e instruir con Snowflake: Vanna Snowflake Notebook\n\nPara conectar e instruir con BigQuery: Vanna BigQuery Notebook\n\nPara entornos locales con SQLite: Vanna SQLite Notebook", "url": "https://wpnews.pro/news/vanna-ai-el-estandar-de-la-industria-para-text-to-sql", "canonical_source": "https://dev.to/julio_samuelcortezmaman/vanna-ai-el-estandar-de-la-industria-para-text-to-sql-6k2", "published_at": "2026-07-03 23:40:49+00:00", "updated_at": "2026-07-03 23:48:30.239316+00:00", "lang": "en", "topics": ["large-language-models", "natural-language-processing", "ai-tools", "developer-tools", "generative-ai"], "entities": ["Vanna AI", "Snowflake", "BigQuery", "PostgreSQL", "MySQL", "FastAPI", "Anthropic", "Claude"], "alternates": {"html": "https://wpnews.pro/news/vanna-ai-el-estandar-de-la-industria-para-text-to-sql", "markdown": "https://wpnews.pro/news/vanna-ai-el-estandar-de-la-industria-para-text-to-sql.md", "text": "https://wpnews.pro/news/vanna-ai-el-estandar-de-la-industria-para-text-to-sql.txt", "jsonld": "https://wpnews.pro/news/vanna-ai-el-estandar-de-la-industria-para-text-to-sql.jsonld"}}