TextToSql——Vanna的安装与使用

Vanna 2.0是一个用户感知的AI代理框架,它将LLM连接到您的数据库,让您和数据库聊天。

安装 Vanna 依赖

powershell 复制代码
pip install 'vanna[fastapi,httpx,mysql,ollama]'

准备

本文示例需要读者提前安装好 Ollama,并下载 gpt-oss:20b 模型。

其次还要安装好MySQL并建立好数据库和表。

本文示例所用数据库中的表信息如下

其中employees中数据如下

编写 python 代码

python 复制代码
from vanna import Agent
from vanna.core.registry import ToolRegistry
from vanna.core.user import UserResolver, User, RequestContext
from vanna.tools import RunSqlTool, VisualizeDataTool
from vanna.tools.agent_memory import SaveQuestionToolArgsTool, SearchSavedCorrectToolUsesTool, SaveTextMemoryTool
from vanna.servers.fastapi import VannaFastAPIServer
from vanna.integrations.ollama import OllamaLlmService
from vanna.integrations.mysql import MySQLRunner
from vanna.integrations.local.agent_memory import DemoAgentMemory

# 配置大模型
llm = OllamaLlmService(
    model="gpt-oss:20b",
    host="http://localhost:11434"
)

# 配置数据库,根据实际情况修改配置
db_tool = RunSqlTool(
    sql_runner=MySQLRunner(
        host="localhost",
        database="demo",
        user="root",
        password="123",
        port=3306
    )
)

# 配置agent记忆
agent_memory = DemoAgentMemory(max_items=1000)

# 配置用户认证
class SimpleUserResolver(UserResolver):
    async def resolve_user(self, request_context: RequestContext) -> User:
        user_email = request_context.get_cookie('vanna_email') or 'guest@example.com'
        group = 'admin' if user_email == 'admin@example.com' else 'user'
        return User(id=user_email, email=user_email, group_memberships=[group])

user_resolver = SimpleUserResolver()

# 创建agent
tools = ToolRegistry()
tools.register_local_tool(db_tool, access_groups=['admin', 'user'])
tools.register_local_tool(SaveQuestionToolArgsTool(), access_groups=['admin'])
tools.register_local_tool(SearchSavedCorrectToolUsesTool(), access_groups=['admin', 'user'])
tools.register_local_tool(SaveTextMemoryTool(), access_groups=['admin', 'user'])
tools.register_local_tool(VisualizeDataTool(), access_groups=['admin', 'user'])

agent = Agent(
    llm_service=llm,
    tool_registry=tools,
    user_resolver=user_resolver,
    agent_memory=agent_memory
)

# 运行服务
server = VannaFastAPIServer(agent)
server.run(port=8011)  # 访问 http://localhost:8011

访问Vanna

例如输入

demo数据库中有哪些表

输出

例如输入

23岁的员工都有谁

输出

相关推荐
财富自由且长命百岁20 小时前
移动端老兵转型端侧 AI:第一周,我跑通了 ResNet50 推理
机器学习
美酒没故事°20 小时前
Open WebUI安装指南。搭建自己的自托管 AI 平台
人工智能·windows·ai
云烟成雨TD20 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
Csvn20 小时前
🌟 LangChain 30 天保姆级教程 · Day 13|OutputParser 进阶!让 AI 输出自动转为结构化对象,并支持自动重试!
python·langchain
小O的算法实验室20 小时前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
AI攻城狮20 小时前
用 Obsidian CLI + LLM 构建本地 RAG:让你的笔记真正「活」起来
人工智能·云原生·aigc
鸿乃江边鸟20 小时前
Nanobot 从onboard启动命令来看个人助理Agent的实现
人工智能·ai
lpfasd12320 小时前
基于Cloudflare生态的应用部署与开发全解
人工智能·agent·cloudflare
俞凡20 小时前
DevOps 2.0:智能体如何接管故障修复和基础设施维护
人工智能
comedate20 小时前
[OpenClaw] GLM 5 关于电影 - 人工智能 - 的思考
人工智能·电影评价