ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Vanna 2.0 实战:3 步把自然语言变成可执行 SQL,权限还跟着人走

Vanna 2.0 实战:3 步把自然语言变成可执行 SQL,权限还跟着人走 Vanna 2.0 实战3 步把自然语言变成可执行 SQL权限还跟着人走【免费下载链接】vanna Chat with your SQL database . Accurate Text-to-SQL Generation via LLMs using Agentic Retrieval .项目地址: https://gitcode.com/GitHub_Trending/va/vanna业务同学天天找开发提数开发被 SQL 需求淹没Vanna 2.0 做的事就一件让一句中文直接变成可执行的 SQL 查询再把结果以表格、图表流式吐回前端顺带按调用者身份做行级过滤。30 秒跑通不接数据库先验证框架先装包pip install vanna没有 API Key 也能跑通流程用内置的 Mock LLM 把框架走一遍仓库里就有现成入口 mock_quickstart.pyimport asyncio from vanna import Agent, MockLlmService, User # 无 Key 也能跑通先验证框架 async def main(): agent Agent(llm_serviceMockLlmService(response_content你好)) user User(idu1, usernamedev, emaildevexample.com, permissions[]) async for comp in agent.send_message(useruser, message你好, conversation_idc1): if hasattr(comp, content): print(comp.content, end) asyncio.run(main())真正查库把 LLM 和 SQLite 接上即可完整示例见 minimal_example.pypip install vanna[sqlite] vanna[anthropic]from vanna import Agent from vanna.core.registry import ToolRegistry from vanna.integrations.anthropic import AnthropicLlmService from vanna.integrations.sqlite import SqliteRunner from vanna.tools import RunSqlTool tools ToolRegistry() tools.register(RunSqlTool(sql_runnerSqliteRunner(./data.db))) agent Agent(llm_serviceAnthropicLlmService(modelclaude-sonnet-4-5), tool_registrytools)怎么把一句话变成能直接跑的 SQLVanna 不是关键词模板替换走的是 RAG生成 SQL 前先从向量库里检索相关的表结构、字段定义和历史问答对把它们作为上下文交给 LLM。表和字段没喂进去模型只能猜列名错一次就白跑一轮。检索不到相似示例时SQL 风格会和你的库里习惯不一致。SQL 报错后框架会把错误信息回灌给 LLM自动重试修正。权限怎么做到人不同、数据不同核心是一个 UserResolver你从 JWT、cookie 里解析出用户身份Vanna 把它注入 Agent。from vanna.core.user import User, UserResolver, RequestContext # 复用你自己的鉴权从 JWT 解析身份和权限组 class MyUserResolver(UserResolver): async def resolve_user(self, ctx: RequestContext) - User: data self.decode_jwt(ctx.get_header(Authorization)) return User(iddata[id], emaildata[email], group_membershipsdata[groups]) agent Agent(llm_servicellm, tool_registrytools, user_resolverMyUserResolver())注册工具时用access_groups声明所需权限组不匹配的用户直接调不动查询执行层再叠行级过滤同一句问题销售和管理员拿到的行不一样每次调用都有审计记录。机制细节可以看 核心模块 下的tool/与user/。落到真实场景数据团队分析师把重复取数需求喂成示例问答业务在内置的vanna-chat组件里自己提问十分钟内拿结果SQL 默认只对 admin 展示普通人只看到答案。多租户 SaaS接入方不写鉴权代码沿用现有 JWT租户 A 的用户问全量问题行级过滤自动只返回 A 的数据审计日志按人留痕过合规检查时直接导出。常见坑与调优SQL 生成不对原因是表结构和真实示例没注册进向量库。解法是先灌 schema再补几组覆盖业务口径的问答对效果提升最明显。响应太慢LLM 多轮工具调用是主因。限制max_iterations、给 LLM 加缓存中间件、开启流式返回体感延迟会降很多。0.x 升级报错2.0 换了 Agent API旧的VannaBase用不上了。仓库自带的LegacyVannaAdapter能包装旧实例先接上新界面再逐步迁移路径见 MIGRATION_GUIDE.md。Vanna 2.0 把问问题 → 出 SQL → 看数据这条链路做成了带用户权限、可流式渲染、能直接进生产的标准件想继续深入可以翻 src/vanna/core/。【免费下载链接】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),仅供参考
返回列表