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

输出

相关推荐
天翼云开发者社区30 分钟前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈39 分钟前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
FishCoderh44 分钟前
Python自动化办公实战:批量重命名文件,告别手动操作
python
躺平大鹅1 小时前
Python函数入门详解(定义+调用+参数)
python
Ray Liang1 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx
曲幽2 小时前
我用FastAPI接ollama大模型,差点被asyncio整崩溃(附对话窗口实战)
python·fastapi·web·async·httpx·asyncio·ollama
颜酱2 小时前
单调栈:从模板到实战
javascript·后端·算法
shengjk12 小时前
NanoClaw 深度剖析:一个"AI 原生"架构的个人助手是如何运转的?
人工智能
西门老铁4 小时前
🦞OpenClaw 让 MacMini 脱销了,而我拿出了6年陈的安卓机
人工智能