基于langchain的工具调用实践--LLM对话与知识库问答

基于langchain的工具调用实践

实现内容

  • 安装langchain框架
  • 构建本地知识库,安装任一大模型
  • 基于langchain和本地知识库实现问答功能

主要步骤

准备

根据https://github.com/chatchat-space/Langchain-Chatchat进行操作,使用最新版本。

在Anaconda3中创建虚拟环境,指定Python版本为3.10.12。由于个人笔记本性能有限,故采取轻量部署方案,即采用在线API实现LLM和Embeddings相关功能,这里我选用的是智谱API。将项目部署到本地后,在虚拟环境中输入pip install -r requirements_lite.txt安装依赖。推荐使用pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple更换pip源,可以不出错地安装依赖。

配置

根据https://github.com/chatchat-space/Langchain-Chatchat/wiki/%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE进行详细配置。先执行python copy_config_example.py以生成config文件及备份config_example。首先配置模型配置项model_config.py。LLM和Embeddings模型我均选用智谱API实现,因此需要更改模型名称及配置API:

# 选用的 Embedding 名称
EMBEDDING_MODEL = "zhipu-api"
# 要运行的 LLM 名称,可以包括本地模型和在线模型。列表中本地模型将在启动项目时全部加载。
LLM_MODELS = ["zhipu-api"]
# 线上模型配置
ONLINE_LLM_MODEL = {
    ...
    # 具体注册及api key获取请前往 http://open.bigmodel.cn
    "zhipu-api": {
        "api_key": "your_api_key",
        "version": "chatglm_turbo",  # 可选包括 "chatglm_turbo"
        "provider": "ChatGLMWorker",
    },
    ...
}

然后配置数据库配置kb_config.py。在这里我们需要配置默认使用的知识库(也可以运行时在WebUI中修改)。其余部分如分词器配置我们不用动。向量数据库使用faiss即可,无需安装faiss-gpu,因为lite版依赖已经安装了faiss-cpu,且性能足够。

DEFAULT_KNOWLEDGE_BASE = "your_kb_name"

这里你需要输入的是你的知识库的名称。要创建自己的知识库,需要在/knowledge_base文件夹新建文件夹(名称就作为你的知识库的名称),然后在其中放入需要AI学习的文件即可。如项目本身提供了知识库sample,那么可以通过DEFAULT_KNOWLEDGE_BASE = "sample"来将sample设置为默认使用的知识库。

其余所有没有提到的config文件都不用修改,采用默认设置即可。

接下来初始化知识库。运行python init_database.py --recreate-vs来初始化知识库。在构建知识库test时,会频繁报错no module named 'xxx',这是因为读取.pdf或.pptx中的内容需要安装对应的依赖,使用pip install所有找不到的模块即可。注意,因为无法直接读取.pdf的文字内容,仅仅安装fitz还会报module 'fitz' has no attribute 'open'**的错误,还需要安装pymupdf来实现OCR功能。**这样就可以正常读取.pdf文件中的内容了。知识库初始化完毕后,还会生成向量文件。当看到已将向量库 ('kb_name', 'current_model_name') 保存到磁盘时,表示知识库构建成功。

实验结果

启动&测试

一键启动脚本startup.py,运行python startup.py -a 即可启动所有服务。

image-20231216115934726

图1 WebUI界面

测试LLM对话,能正常回答说明无问题,采用在线API实现回答。

屏幕截图 2023-12-16 120231

图2 LLM对话测试结果

切换为知识库问答模式,提问和知识库相关的问题,先测试知识库sample,可以正常回答。显示知识库匹配结果,说明可以正常结合本地知识库回答问题。

image-20231216125826995

图3 知识库问答 知识库sample测试结果

再测试个人知识库gcglppt。我上传了某门课的课件作为知识库,并询问它这门课的作业题,得到了一个较为满意的答案。

image-20231216130105162

图4 知识库问答 知识库gcglppt测试结果

杂问题

  • 知识库问答报错API通信遇到错误:peer closed connection without sending complete message body (incomplete chunked read)

更换openai版本为0.28.1

  • 中文提问知识库问答报错API通信遇到错误:peer closed connection without sending complete message body (incomplete chunked read),英文提问正常

部署该项目的0.2.7版本,重新构建知识库,并根据报错信息逐步修改/server/chat下相关文件的内容

  • 24
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值