使用 Langchain 改进与 SQL 数据库聊天的建议

问题描述 投票:0回答:1

我正在用 python 开发一个脚本来与 SQL Server 数据库聊天。现在我正在使用 Langchain 来连接 OpenAI 的 LLM 模型。我在langchain的文档中发现了两种与SQL数据库聊天的方式:代理和链。在我的测试过程中,我发现 CHAINS 在接收查询(查询是自然语言,而不是 SQL 查询)并返回答案时比代理更快。本次测试仅针对一库一表。

另一个测试包括同一数据库中的第二个表。结果是,AGENTS 工作得非常好,但出现错误:“列名不明确(209 错误)”。但是CHAINS返回错误209。这是因为两个表的顶部都有相同的“头”。我想如果还有其他问题,也许CHAINS再快也无法帮助给出答案。

但是现在我想提高聊天的级别。在 SQL 中拥有两个或更多数据库(每个数据库包含一个或多个表)怎么样?正如您在 LANGCHAIN(链或代理)的文档中看到的,只需使用凭据即可访问相应的数据库。与 python 中的任何其他数据库包类似(sqlalchemy、pymsql...)。

有人可以给我建议,或者可能参与过类似的“chat with SQL”项目。也许在langchain中引入查询之前使用一个层,组织查询来识别每个数据库等等,可能是解决方案。或者最后使用 LLM 与数据库聊天的另一个工具。我很欣赏你的建议。

代理-langchain:https://python.langchain.com/docs/modules/agents/toolkits/sql_database

Chains-Langchain:https://python.langchain.com/docs/modules/chains/popular/sqlite

python sql-server openai-api langchain large-language-model
1个回答
0
投票

您可以做的一件事是创建一个代理执行器并为该执行器提供其他代理作为工具。

这样,您就可以为每个数据库开发一个 SQL 代理,因为目前每个代理仅支持一个数据库连接。

我一直在这样做并且工作正常。就像你说的,代理非常慢,当你使用 gpt-4 时,它甚至更慢。但 gpt-35 对我来说表现非常糟糕。

© www.soinside.com 2019 - 2024. All rights reserved.