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