昨天下午同事刚好发来langchain使用OPENAI 来自然语言处理sqlite
https://youtu.be/Tubl4scsXc4?si=Y\_zOIrbkZVtndNoP
刚好有时间可以测一测玩玩
博主github:https://github.com/clairelovesgravy/langchain\_database\_search
目前部分代码还是不太兼容,例如新版本langchain的SQLDatabase和SQLDatabaseChain已经修改到其他的库里了,博主的MYSQL链接问题等等。
新版要求python要高于3.7以上,较低版本无法运行,有包会冲突。本地测试环境:Python 3.10.12
pip install openai langchain langchain-wenxin pymysql langchain\_experimental
例如代码中的
老版本:
ImportError: cannot import name 'SQLDatabaseChain' from 'langchain'
新版本:
from langchain\_experimental.sql import SQLDatabaseChain
老版本:
from langchain import OpenAI, SQLDatabase
新版本:
from langchain.utilities import SQLDatabase
老版本
db = SQLDatabase.from\_uri(
f'mysql://{sys.db\_user}:{sys.db\_password}@{sys.db\_host}:{int(sys.db\_port)}/{sys.db\_db\_name}')
新版本:
db = SQLDatabase.from\_uri(
f'mysql+pymysql://{sys.db\_user}:{sys.db\_password}@{sys.db\_host}:{int(sys.db\_port)}/{sys.db\_db\_name}')
测试OPENAI的key也没了,修改为国内的文心一言,本想直接找现成的使用看看效果,发现文章基本没有,干脆直接自己写个demo把。
使用的LLM模型为:ernie-bot-turbo, 使用国内的文心一言还不能直接将文本转换为SQL,经常提示报错,因为返回了```sql xxxx``` 格式直接带入查询,当SQL使用,肯定报错。
看视频ChatGPT可以直接使用(此处不严谨,没亲自尝试3.5和4是否可以,视频可以,有待论证)
后参考官方文档:
https://python.langchain.com/docs/use\_cases/qa\_structured/sql
国内
可以使用create_sql_query_chain来完成SQL的自然语言处理:
测试代码:
https://github.com/sevck/langchain\_demo
最终效果: