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岁的员工都有谁

输出

相关推荐
AGV算法笔记5 分钟前
CVPR 2025 最新感知算法解读:GaussianLSS 如何用 Gaussian Splatting 重构 BEV 表示?
算法·重构·自动驾驶·3d视觉·感知算法·多视角视觉
俊哥V7 分钟前
AI一周事件 · 2026-04-22 至 2026-04-28
人工智能·ai
用户83562907805113 分钟前
用 Python 轻松在 Excel 工作表中应用条件格式
后端·python
red1giant_star17 分钟前
Python根据文件后缀统计文件大小、找出文件位置(仿Everything)
后端·python
Black蜡笔小新18 分钟前
AI大模型训练工作站/私有化本地化AI模型训推工作站DLTM为农业生产装上AI“慧眼”
人工智能·ai大模型
小星AI19 分钟前
Claude Code Agent SDK 从入门到精通,一步到位
人工智能·agent·cursor
端平入洛21 分钟前
梯度是什么:PyTorch 自动求导详解
人工智能·深度学习
时序之心22 分钟前
上海交大、东北大学:时序分类与感知领域的两项前沿突破
人工智能·分类·时间序列
雷欧力29 分钟前
如何使用 Claude API?3 种接入方案实测,附完整代码(2026)
python·claude
小五兄弟30 分钟前
YouTube 肖像检测扩展背后:短剧出海版权保护的技术实现与实战策略
大数据·人工智能