© 2026FindAgent  · @simprr
返回列表
v

vanna-ai/vanna

🤖 Chat with your SQL database 📊. Accurate Text-to-SQL Generation via LLMs using Agentic Retrieval 🔄.

agentaidata-visualizationdatabasellmragsqltext-to-sql
⭐

23.1k

Stars

🔱

2.3k

Forks

👁

150

Watchers

📋

293

Issues

PythonMIT创建于 2023/5/13更新于 今天
在 GitHub 上查看访问主页
README
由 Gemini 翻译整理

Vanna 2.0:将问题转化为数据洞察

自然语言 → SQL → 答案。 现已支持企业级安全性和用户感知权限。

Python License Code style: black

https://github.com/user-attachments/assets/476cd421-d0b0-46af-8b29-0f40c73d6d83

Vanna2 Demo


2.0 版本的新功能

🔐 全链路用户感知 — 查询会根据用户权限自动过滤。

🎨 现代化 Web 界面 — 美观的预置 <vanna-chat> 组件。

⚡ 流式响应 — 实时显示表格、图表和进度更新。

🔒 企业级安全 — 行级安全性(Row-level security)、审计日志、速率限制。

🔄 生产环境就绪 — 支持 FastAPI 集成、可观测性(Observability)和生命周期钩子。

从 0.x 版本升级? 请查看 迁移指南 | 更新日志


快速上手

尝试使用示例数据

快速开始

配置

配置说明

Web 组件





使用您现有的 Cookies/JWT。兼容 React、Vue 或纯 HTML。


你将获得什么

通过自然语言提问,即可获得:

1. 流式进度更新

2. SQL 代码块(默认仅对“管理员”用户可见)

3. 交互式数据表

4. 图表(Plotly 可视化)

5. 自然语言总结

所有内容均实时流式传输至您的 Web 组件。


为什么选择 Vanna 2.0?

✅ 立即启动

  • 生产环境级聊天界面
  • 为您的数据库定制的 Agent
  • 可嵌入任何网页

✅ 企业级安全

全链路用户感知 — 身份信息贯穿系统提示词(System prompts)、工具执行和 SQL 过滤。 行级安全性 — 查询根据用户权限自动过滤。 审计日志 — 追踪每个用户的查询以满足合规性要求。 速率限制 — 通过生命周期钩子实现按用户配额限制。

✅ 内置精美 Web UI

预置 <vanna-chat> 组件 — 无需自己构建聊天界面。 流式表格与图表 — 丰富的组件,不仅限于文本。 响应式且可定制 — 适用于移动端、桌面端,支持亮色/深色主题。 框架无关 — 兼容 React、Vue 和纯 HTML。

✅ 适配您的技术栈

任意 LLM: OpenAI、Anthropic、Ollama、Azure、Google Gemini、AWS Bedrock、Mistral 等。 任意数据库: PostgreSQL、MySQL、Snowflake、BigQuery、Redshift、SQLite、Oracle、SQL Server、DuckDB、ClickHouse 等。 自定义身份验证: 支持您现有的系统 — Cookies、JWT、OAuth 令牌。 适配框架: FastAPI、Flask。

✅ 可扩展且有明确导向

自定义工具 — 扩展 Tool 基类。 生命周期钩子 — 配额检查、日志记录、内容过滤。 LLM 中间件 — 缓存、提示词工程(Prompt engineering)。 可观测性 — 内置追踪(Tracing)和指标监控。


架构

Vanna2 Diagram


工作原理

sequenceDiagram
    participant U as 👤 用户
    participant W as 🌐 Web组件
    participant S as 🐍 您的服务器
    participant A as 🤖 Agent
    participant T as 🧰 工具

    U->>W: "展示第四季度销售额"
    W->>S: POST /api/vanna/v2/chat_sse (带身份认证)
    S->>A: User(id=alice, groups=[read_sales])
    A->>T: 执行 SQL 工具 (用户感知)
    T->>T: 应用行级安全规则
    T->>A: 过滤后的结果
    A->>W: 流式传输: 表格 → 图表 → 总结
    W->>U: 展示精美 UI

核心概念:

  1. 用户解析器 (User Resolver) — 您可以定义如何从请求(Cookies、JWT 等)中提取用户身份。
  2. 用户感知工具 (User-Aware Tools) — 工具会根据用户的组权限自动检查访问限制。
  3. 流式组件 (Streaming Components) — 后端向前端流式传输结构化的 UI 组件(表格、图表)。
  4. 内置 Web UI — 预置的 <vanna-chat> 组件可完美渲染所有内容。

结合您的身份认证进行生产环境部署

以下是将 Vanna 集成到现有 FastAPI 应用及身份认证系统的完整示例:

from fastapi import FastAPI
from vanna import Agent
from vanna.servers.fastapi.routes import register_chat_routes
from vanna.servers.base import ChatHandler
from vanna.core.user import UserResolver, User, RequestContext
from vanna.integrations.anthropic import AnthropicLlmService
from vanna.tools import RunSqlTool
from vanna.integrations.sqlite import SqliteRunner
from vanna.core.registry import ToolRegistry

# 您的现有 FastAPI 应用
app = FastAPI()

# 1. 定义您的用户解析器 (使用您现有的身份认证系统)
class MyUserResolver(UserResolver):
    async def resolve_user(self, request_context: RequestContext) -> User:
        # 从 Cookies、JWT 或 Session 中提取
        token = request_context.get_header('Authorization')
        user_data = self.decode_jwt(token)  # 您的现有逻辑

        return User(
            id=user_data['id'],
            email=user_data['email'],
贡献者
zaazsCwlAe
项目信息
默认分支main
LicenseMIT License
创建时间2023/5/13
最近更新今天
GAI 中文摘要

Vanna 是一个基于大语言模型和智能体检索技术的开源 Python 框架,旨在实现自然语言与 SQL 数据库之间的无缝交互。该工具能够将用户的自然语言问题精准转化为 SQL 查询,从而直接获取数据洞察、表格及可视化图表,显著降低了数据访问的门槛。

支持通过自然语言对话生成 SQL 查询,并自动转化为交互式表格、数据图表及自然语言总结。 内置企业级安全机制,支持行级权限控制、审计日志记录以及针对不同用户的速率限制。 提供开箱即用的 Web 组件,可无缝嵌入 React、Vue 或原生 HTML 应用,并支持实时流式响应。 具备极强的兼容性,适配包括 OpenAI、Ollama 等主流大模型,以及 PostgreSQL、MySQL、Snowflake 等多种主流数据库。 允许开发者通过生命周期钩子和自定义工具进行扩展,满足特定业务场景下的定制化需求。

适用于企业内部的数据分析师、产品经理或业务人员,帮助他们在无需掌握 SQL 语法的情况下,快速从复杂数据库中获取业务见解。该框架尤其适合需要快速构建安全、可扩展的数据对话系统的开发团队,用于集成到现有的企业数据分析平台或 Web 应用中。