You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Ollama Mistral构建Text to SQL应用:SQL Agent报错修复求助

修正后的Ollama+Mistral Text to SQL Agent实现代码

核心问题说明

报错「缺失tool_names、tools变量」是因为SQL Agent初始化时必须明确指定可用的数据库操作工具及对应名称,同时要确保本地模型能调用这些工具获取库表结构,避免生成错误SQL。

完整修正代码

from langchain.llms import Ollama
from langchain.agents import create_sql_agent
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.sql_database import SQLDatabase
from langchain.agents.agent_types import AgentType

# 1. 连接目标数据库(示例为SQLite,替换为你的数据库连接字符串)
db = SQLDatabase.from_uri("sqlite:///your_database.db")

# 2. 初始化Ollama本地Mistral模型
llm = Ollama(model="mistral")

# 3. 创建SQL工具包,包含表结构查询、SQL执行等核心工具
toolkit = SQLDatabaseToolkit(db=db, llm=llm)

# 4. 初始化SQL Agent,补全必填的tools和tool_names参数
agent = create_sql_agent(
    llm=llm,
    toolkit=toolkit,
    agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True,
    tools=toolkit.get_tools(),
    tool_names=[tool.name for tool in toolkit.get_tools()]
)

# 5. 测试Agent功能
response = agent.run("查询用户表中所有年龄大于30的用户姓名")
print(response)

关键修正点

  • 补全tools和tool_names参数:从SQL工具包中自动提取可用工具及名称,解决缺失变量的报错。
  • 绑定数据库与模型:让工具包同时关联数据库和Mistral模型,Agent可实时获取库表结构,避免生成不存在的表或逻辑错误的SQL。
  • 指定适配的Agent类型:使用ZERO_SHOT_REACT_DESCRIPTION类型,适配本地模型的推理逻辑,提升SQL生成准确性。

额外优化建议

  • 可在prompt中预先加入数据库表结构、字段注释等信息,进一步降低错误SQL的生成概率。
  • 确认Ollama已正确拉取Mistral模型(执行ollama pull mistral命令验证),以及数据库连接字符串格式正确。

内容的提问来源于stack exchange,提问作者Abhra Sarkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 02:18:20