I am using the SQL Database Agent to query a postgres database. I want to use gpt 4 or gpt 3.5 models in the OpenAI llm passed to the agent, but it says I must use ChatOpenAI. Using ChatOpenAI throws parsing errors.
The reason for wanting to switch models is reduced cost, better performance and most importantly - token limit. The max token size is 4k for 'text-davinci-003' and I need at least double that.
Here is my code
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.")
When I do, it throws an error in the chain midway saying
> 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, ''`
Please help. Thanks!
Update
The recent updates to langchain version 0.0.215
seem to have fixed this issue, for me at least.
The previously accepted answer never seemed to work for me. However, as per a Github thread on the same issue, the way to handle this is like so.
agent_executor = create_sql_agent(llm,
db=db,
agent_type="openai-tools",
agent_executor_kwargs={'handle_parsing_errors':True},
verbose=True)