langchain 在使用"SQLDatabaseChain.from_llm"进行的所有查询中都生成了语法错误,

eoigrqb6  于 2个月前  发布在  其他
关注(0)|答案(2)|浏览(27)

在使用langchain-google-genai包生成并执行SQL查询时,遇到了一个问题。生成的SQL查询包含Markdown风格的代码块分隔符,这在执行时会导致语法错误。

期望的行为是:生成的SQL查询不应包含Markdown风格的代码块分隔符或其他非SQL语法元素。它应该产生一个干净的SQL查询,可以在不出现错误的情况下执行。

请建议如何处理这个问题,或者是否有可以应用的修复方法来防止这个问题。

系统信息:
langchain-experimental==0.0.64
google-generativeai==0.7.2
langchain==0.2.12

3okqufwl

3okqufwl1#

我建议使用基于LCEL的SQL链,而不是实验性的SQL链:

from langchain.chains import create_sql_query_chain
from langchain_community.utilities import SQLDatabase

db = SQLDatabase.from_uri(f"mysql+pymysql://{db_user}:{db_password}@{db_host}/{db_name}",sample_rows_in_table_info=3)
llm = <Your LLM Model>
chain = create_sql_query_chain(llm, db)
response = chain.invoke({"question": "quantity of nike shirts of white colour?"})

这肯定会解决你的问题。

jogvjijk

jogvjijk2#

是的,这个方法可以工作,尽管它没有在数据库上执行查询来检索数据,但仍然比SQLDatabaseChain好得多。感谢帮助。

相关问题