徒手使用LangChain搭建一个ChatGPT PDF知识库

Coding Alan 1年前 (2023-05-19) 2419次浏览 0个评论 扫描二维码

环境搭建

首先要在电脑上安装 Python,直接在官网下载安装包进行安装即可:https://www.python.org/downloads/

langchain官网位于https://python.langchain.com/en/latest/index.html,它可以简化对各种大语言模型的使用,比如内置有OpenAI等。

pdfplumber顾名思义,是用于读取和处理PDF文件的,选择这库是因为今年还在更新,并且对中文的支持还不错。本次项目demo会导入自己的PDF文件,并将其作为知识库,回答你的提问。

python-dotenv用于读取.env文件,本例在该文件中放入Open AI平台的key。

streamlit用于绘制 UI界面,当前大多数ChatGPT应用都使用它,如大名鼎鼎的gpt4freestreamlit默认会收集信息进行分析,可通过配置文件关闭,macOS和Linux位于~/.streamlit/config.toml,Windows位于%userprofile%/.streamlit/config.toml,添加如下内容即可:

其它配置项可通过streamlit config show可查看。运行过程中如果界面出现意料之外的报错,可先运行streamlit cache clear清除缓存后再试试。

faiss-cpu是facebook开源用于相似搜索的库,https://github.com/facebookresearch/faiss,GPU版本请使用faiss-gpu

openaitiktoken都是调用ChatGPT接口时使用的。

保留当前使用版本请使用pip freeze > requirements.txt

OpenAI的注册方式这里就不介绍了,最常用的是在https://sms-activate.org/上购买服务获取短信验证码完成注册。

代码开发

知识库搭建和使用流程图如下:

徒手使用LangChain搭建一个ChatGPT PDF知识库

我们在根目录下创建.env文件:

这里的OPENAI_API_KEY名称固定,请不要修改。

然后创建app.py,先进行环境变量的读取(使用编辑器的小伙伴请注意选择刚刚创建的环境,PyCharm应该能自动识别,VScode 请按下快捷键 ctrl/cmd+shift+p进行选择),先测试读取环境变量是否正常

接着搭建页面框架:

运行streamlit run app.py效果如下:

徒手使用LangChain搭建一个ChatGPT PDF知识库

提取文本:

接下对文本进行分片,这里每个分片长充为1000字符,为保留上下文选择了重叠200字符:

接下来配置embedding(词嵌入),也即将离散值转化为连续向量:

为界面添加一个输入框:

最后完成回复的逻辑:

如需追踪花了多少钱,可增加:

徒手使用LangChain搭建一个ChatGPT PDF知识库
完整代码:

国内直连接口超时问题

如果有海外服务器可以直接做代理

网上现在比较通用的方案是使用 Cloudflare Workers,比如下面是 Alan随便找到的一段代码:

但现在xxx.workers.dev在国内也无法访问,所以也是有门槛的,那就是要绑定一个自定义域名。自定义域可在.env文件中添加OPENAI_API_BASE=xxx.xxx.xxx/v1

Nginx反代配置(GitHub):

Vercel反向代理: https://github.com/gaboolic/vercel-reverse-proxy

 

  1. Unsupported OpenAI-Version header provided: 2022-12-01. (HINT: you can provide any of the following supported versions: 2020-10-01, 2020-11-07. Alternatively, you can simply omit this header to use the default version associated with your account.)
    这个问题待探讨,快速解决方法是

     

https://github.com/hwchase17/langchain/commit/8c28ad6daca3420d4428a464cd35f00df8b84f01

参考资料:

https://python.langchain.com/en/latest/index.html

https://bennycheung.github.io/ask-a-book-questions-with-langchain-openai

https://github.com/x-dr/chatgptProxyAPI

https://www.youtube.com/watch?v=wUAUdEw5oxM

喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址