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

输出

相关推荐
疯狂打码的少年1 分钟前
【数据结构】栈的应用:表达式求值(后缀表达式)
java·数据结构·笔记·算法
liwulin05065 分钟前
【PYTHON】使用Selenium + ChromeDriver以及XPATH语法
开发语言·python·selenium
copyer_xyf6 分钟前
Agentic RAG 实战:PostgreSQL + LangGraph 一条链路
python·postgresql·agent
HiDev_12 分钟前
【非标自动化】plc执行顺序问题、扫描周期问题
深度学习·算法·机器学习
chuan.bai12 分钟前
Java RAG 实战(第 3 篇):从交互式聊天到多轮上下文
java·人工智能·macos·ai
动力 continue13 分钟前
Python 元类与异常类:类的“制造工厂”与“报错定制师”
开发语言·python·制造
雪隐17 分钟前
个人电脑玩AI-16让5060 Ti给你打工——MiniMax H3 提速实录:从"泡杯茶等视频"到"视频等你",一张 5060 Ti 的自我修养
前端·人工智能·后端
深兰科技19 分钟前
深兰科技亮相天津医疗器械创新生态大会,DeepAgent智能体赋能医疗医美并签约天津OPC项目
人工智能·科技·r语言·symfony·视觉大模型·深兰科技·deepagent智能体
cxr82820 分钟前
从“对象本体”到“关系本体”
人工智能·架构
147API21 分钟前
Python批量生成蒸馏数据,并发、重试、幂等和断点续跑
开发语言·jvm·python