尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Vanna 2.0 实战:自然语言生成SQL

Vanna 2.0 实战:自然语言生成SQL Vanna 2.0 实战自然语言生成SQL【免费下载链接】vanna Chat with your SQL database . Accurate Text-to-SQL Generation via LLMs using Agentic Retrieval .项目地址: https://gitcode.com/GitHub_Trending/va/vannaVanna 2.0 是用自然语言生成SQL的Python框架适合数据分析师和内部系统开发者。没有它你得手写SQL还得自己搭聊天界面。读完这篇你能拿到一份最小可运行的配置和一份上生产前的检查清单。Vanna到底替你省了什么事没有Vanna时每次数据问题的流程是业务方丢来一句话你查表结构、写SQL、跑出来、再手动把截图发过去。不熟的表结构要反复查文档列名写错一次就返工一次。接入Vanna后流程压缩成一句话用户在对话框输入自然语言问题Agent生成SQL、执行、把表格和图表流式推回前端。模型写SQL时RAG把相关资料喂给模型参考的检索技术会提供表结构和示例查询执行失败时报错信息也会传回让模型自行修正。主要省下三件事手写SQL自然语言问一句SQL自动生成并执行聊天前端vanna-chat组件丢进任意页面不用自己写权限过滤每个查询按用户身份和组自动限定范围三步跑通Vanna第一步装。一条命令要求Python 3.9及以上pip install vanna终端里pip show vanna能看到版本号即成功。第二步配。接上LLM注册SQL执行工具。下面用Anthropic和SQLite举例换OpenAI、Ollama也是同样写法from vanna import Agent from vanna.core.registry import ToolRegistry from vanna.tools import RunSqlTool from vanna.integrations.anthropic import AnthropicLlmService from vanna.integrations.sqlite import SqliteRunner # 选择你的LLM llm AnthropicLlmService(modelclaude-sonnet-4-5) # 注册SQL执行工具指向你自己的数据库 tools ToolRegistry() tools.register(RunSqlTool(sql_runnerSqliteRunner(./data.db))) agent Agent(llm_servicellm, tool_registrytools)这段代码跑完没有报错说明配置通过。第三步跑。一条命令起一个演示服务python -m vanna.servers --example mock_quickstart终端打印出服务地址后打开页面提一个问题看到回复流式返回即成功。Vanna在你的工作里能干什么当你需要回答临时数据问题的时候。业务方问销售额前十的客户是谁过去你写查询、截图、发过去下次再问还得重写。现在直接把这句话丢进对话框进度提示、数据表格、图表、一句话总结依次流式返回图表可以直接分享。当你需要把数据入口开放给全公司的时候。Vanna自带FastAPI和Flask集成注册好路由后你现有的登录态会被自动解析成用户身份查询按该用户所属的组自动限定范围。HR能看到薪资表其他人看不到权限逻辑不用你手写。当你需要超出SQL范围的能力的时候。继承Tool基类把发邮件、建工单等业务逻辑封装成工具注册进去Agent会根据问题自动选用。入口始终是一个对话框用户不用学新操作。上生产之前要检查什么安全隔离挂上你自己的UserResolver用户身份解析器→ 每个请求拿到真实用户身份给工具设置access_groups → 不在组内的用户调不动这个工具开启行级过滤 → 同一张表查询每个用户只看到自己的数据性能调优在LLM调用上挂中间件middleware→ 加上缓存和成本统计在AgentConfig里限制最大迭代次数 → Agent不会循环重试烧掉预算监控与日志开启审计日志audit组件 → 每条查询按用户留痕合规可查接上可观察性observability追踪 → 每次请求的完整链路可回放用评估模块跑回归数据集 → 模型升级后准确率变化一眼可见踩过的坑 解法生成的SQL总是报错原因模型不认识你的表结构列名全靠猜。 解法把表DDL和常用示例查询注册进Agent Memory内置ChromaDB等向量库让RAG检索提供。 验证同一个问题连问三遍全部成功。不同用户查到了彼此的数据原因用户身份没解析出来行级过滤没触发。 解法实现UserResolver从请求头里解析出用户和所属组传给Agent。 验证用两个不同账号登录对比同一问题的查询结果。前端只有文字没有表格和图表原因流式没开或者组件没指向流式接口。 解法AgentConfig里开启stream_responses把vanna-chat的sse-endpoint指向chat_sse接口。 验证界面里表格和图表逐个流式出现。装完就报ImportError原因LLM驱动和数据库连接器都是可选依赖基础包不带。 解法装对应extras比如pip install vanna[anthropic] vanna[postgres]。 验证Python里import对应模块不再抛ImportError。接下来可以往哪走想加新工具参考工具实现源码复制一份改execute逻辑即可。想改请求处理流程看workflow处理源码在前后插入自己的逻辑。从0.x升级先读迁移指南用LegacyVannaAdapter包住旧实例新旧接口并行跑。下次有人问上个月的销售额是多少你不用再打开数据库把这句话丢进对话框就行。今天就动手挑一个手头的小SQLite库把三步配置跑完问出第一个问题。【免费下载链接】vanna Chat with your SQL database . Accurate Text-to-SQL Generation via LLMs using Agentic Retrieval .项目地址: https://gitcode.com/GitHub_Trending/va/vanna创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表