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 天前
Python执行命令并保存输出到文件
python
冷小鱼1 天前
pgvector 向量数据库完全指南:PostgreSQL 生态的 AI 增强
数据库·人工智能·postgresql
陈天伟教授1 天前
人工智能应用- 天文学家的助手:08. 星系定位与分类
前端·javascript·数据库·人工智能·机器学习
啵啵鱼爱吃小猫咪1 天前
机械臂阻抗控制github项目-mujoco仿真
开发语言·人工智能·python·机器人
MaximusCoder1 天前
等保测评命令——Centos Linux
linux·运维·经验分享·python·安全·centos
yunyun321231 天前
用Python生成艺术:分形与算法绘图
jvm·数据库·python
放下华子我只抽RuiKe51 天前
算法的试金石:模型训练、评估与调优的艺术
人工智能·深度学习·算法·机器学习·自然语言处理·数据挖掘·线性回归
m0_662577971 天前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
oem1101 天前
C++中的享元模式实战
开发语言·c++·算法
流云鹤1 天前
每日一题0316
算法