使用ChatOpenAI调用SQL Database Agent触发OutputParserException求助
解决LangChain SQL Agent使用ChatOpenAI时的解析错误问题
问题描述
在使用LangChain的SQL Database Agent查询PostgreSQL数据库时,尝试将底层大模型从text-davinci-003切换为ChatOpenAI(gpt-3.5-turbo或GPT-4),核心诉求包括:
- 降低模型调用成本
- 提升响应性能
- 解决
text-davinci-003仅4k token的容量限制,需要至少两倍的token处理能力
但切换后执行Agent时触发解析错误,报错提示无法识别LLM输出格式。
代码示例
from langchain.agents.agent_toolkits import SQLDatabaseToolkit from langchain.sql_database import SQLDatabase from langchain.agents import create_sql_agent from langchain.llms import OpenAI from langchain.chat_models import ChatOpenAI import os os.environ["OPENAI_API_KEY"] = "" db = SQLDatabase.from_uri( "postgresql://<my-db-uri>", engine_args={ "connect_args": {"sslmode": "require"}, }, ) llm = ChatOpenAI(model_name="gpt-3.5-turbo") toolkit = SQLDatabaseToolkit(db=db, llm=llm) agent_executor = create_sql_agent( llm=llm, toolkit=toolkit, verbose=True, ) agent_executor.run("list the tables in the db. Give the answer in a table json format.")
错误信息
> Entering new AgentExecutor chain... Traceback (most recent call last): File "/home/ramlah/Documents/projects/langchain-test/sql.py", line 96, in <module> agent_executor.run("list the tables in the db. Give the answer in a table json format.") File "/home/ramlah/Documents/projects/langchain/langchain/chains/base.py", line 236, in run return self(args[0], callbacks=callbacks)[self.output_keys[0]] File "/home/ramlah/Documents/projects/langchain/langchain/chains/base.py", line 140, in __call__ raise e File "/home/ramlah/Documents/projects/langchain/langchain/chains/base.py", line 134, in __call__ self._call(inputs, run_manager=run_manager) File "/home/ramlah/Documents/projects/langchain/langchain/agents/agent.py", line 953, in _call next_step_output = self._take_next_step( File "/home/ramlah/Documents/projects/langchain/langchain/agents/agent.py", line 773, in _take_next_step raise e File "/home/ramlah/Documents/projects/langchain/langchain/agents/agent.py", line 762, in _take_next_step output = self.agent.plan( File "/home/ramlah/Documents/projects/langchain/langchain/agents/agent.py", line 444, in plan return self.output_parser.parse(full_output) File "/home/ramlah/Documents/projects/langchain/langchain/agents/mrkl/output_parser.py", line 51, in parse raise OutputParserException( langchain.schema.OutputParserException: Could not parse LLM output: `Action: list_tables_sql_db, ''`
解决方案
LangChain版本0.0.215的更新已修复ChatOpenAI与SQL Database Agent之间的输出解析兼容问题,升级到该版本及以上即可解决此错误。
升级命令
pip install --upgrade langchain==0.0.215
若需使用最新功能,可去掉版本号直接执行:
pip install --upgrade langchain
内容的提问来源于stack exchange,提问作者RamlahAziz
相关产品推荐
相关产品推荐

