如何取消MySQL LangChain SQL Agent的10行查询限制?
解决SQL Agent自动添加LIMIT 10的问题
LangChain的SQL数据库工具默认会给生成的查询语句加上LIMIT 10,目的是避免返回过多数据。要取消这个全局限制,按以下步骤操作:
修改SQLDatabase初始化参数
创建SQLDatabase实例时,通过limit参数指定取消限制(设为None即可):from langchain.sql_database import SQLDatabase # 替换为你的MySQL连接URI db = SQLDatabase.from_uri("mysql://用户名:密码@主机地址/数据库名", limit=None)用修改后的数据库实例创建Toolkit
基于修改后的db对象重新生成SQLDatabaseToolkit:from langchain.agents.agent_toolkits import SQLDatabaseToolkit toolkit = SQLDatabaseToolkit(db=db, llm=llm)重新创建SQL Agent
使用新的toolkit初始化Agent,之后生成的查询就不会自动添加LIMIT 10了:agent = create_sql_agent( llm=llm, toolkit=toolkit, verbose=True, agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION, )
如果已经创建了toolkit,也可以直接修改其内部数据库的limit属性来快速生效:
toolkit.db.limit = None
临时方案:如果只是单次查询需要取消限制,也可以在提问时明确说明“查询全表数据,不要添加LIMIT限制”,但这种方式依赖模型理解,稳定性不如配置参数。
内容的提问来源于stack exchange,提问作者Dharmini
相关产品推荐
相关产品推荐

