文档聊天机器人 — 多个文件、主题、聊天窗口和聊天历史记录。由GPT提供支持。

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/dissorial/doc-chatbot

doc-chatbot: GPT-4 x Pinecone x LangChain x MongoDB

注意 - 右侧包含了该应用程序的部署版本链接,但是如果您尝试登录谷歌账号,将无法成功。我在那里使用了自己的API密钥,并且只限制访问权限仅限于我自己。请按照下面的说明运行或部署您自己的版本。

功能

  • 创建多个聊天主题
  • 使用Google OAuth进行登录,并将聊天记录存储在与您的电子邮件相关的MongoDB中
  • 为每个主题上传任意数量的文件
  • 为每个主题创建任意数量的聊天窗口
  • 在浏览器内上传文件,将其转换为嵌入向量,并将嵌入向量存储在命名空间中并上传到Pinecone,还可以从浏览器中删除Pinecone命名空间
  • 使用MongoDB上传和自动检索所有聊天的历史记录
  • 支持.pdf.docx.txt文件格式
+ LangChain和Pinecone

主聊天区域

ad1a1b7183001537

 

设置页面

ad1a1b7183001547

 

免责声明

该存储库最初是由mayooearGPT-4 & LangChain存储库派生而来的。我原本计划做一些小的更改以满足我的需求,但最终却进行了以下操作:

  • 添加了一些API路由(包括Pinecone和MongoDB)
  • 创建了一堆新的(大型和小型)组件
  • 完全改变了样式
  • 设置了MongoDB
  • 将所有npm脚本转换为在浏览器中运行
  • 还有其他的一些杂项更改

这就是为什么我将其发布为一个独立的存储库。尽管如此,本自述文件的某些部分也是从那里借用的。

本地设置

克隆存储库

bashCopy code
git clone https://github.com/dissorial/pdf-chatbot.git

Pinecone设置

在Pinecone上创建一个账号。进入Indexes页面,点击Create index。输入任意名称,将Dimensions设置为1536,其余保持默认。然后进入API keys页面,点击Create API key


MongoDB设置

在MongoDB上创建一个账号。在仪表板上,点击New Project并命名。然后点击Create project。您将被重定向到Database Deployments页面。点击Build a database,选择M0 FREE。选择任意提供商和地区,但可以保持默认设置。在底部为您的集群命名,并点击Create

用户名和密码应该在此处预填。点击Create user。在IP access list中,点击Add my current API address,然后点击Finish and closeGo to databases。在您的集群旁边,将有一个Connect按钮。点击进入,然后转到Drivers。在Add your connection string into your application code下方,您将找到您的MongoDB_URI。将其复制到您的env文件中,并将<password>替换为您的密码(在您点击Create user时使用的密码)。完成。


Google身份验证设置

转到Google开发者控制台并创建一个新项目。

OAuth同意屏幕

  • 导航到APIs & Services,然后点击OAuth consent screen。点击External,然后点击Create。为应用程序命名,填写电子邮件/开发人员联系信息字段,然后继续。在Scopes部分,点击Add or remove scopes,然后勾选.../auth.userinfo.email,然后点击Save and continue。在Test users section中,添加自己的邮箱地址,然后点击Save and Continue,然后点击Back to dashboard

凭据

转到Credentials(仍然在APIs and Services下),然后点击Create credentials,然后点击OAuth Client ID。在Application type下选择Web application,并为其命名。

Authorized JavaScript origins下,添加http://localhost:3000。在Authorized redirect URIs下,添加http://localhost:3000/api/auth/callback/google

然后点击Create。这也将显示您的Google Client ID和秘钥。


安装软件包

Copy code
yarn install

设置您的.env文件

  • .env.example重命名为.env
  • 您的.env文件应如下所示:
makefileCopy codeOPENAI_API_KEY=

PINECONE_API_KEY=
PINECONE_ENVIRONMENT=
PINECONE_INDEX_NAME=

MONGODB_URI=''

GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=

JWT_SECRET=

ALLOWED_EMAIL_DOMAIN='@gmail.com'

NODE_ENV=development

OpenAI API

  • 访问OpenAI以获取API密钥,并将其插入到您的.env文件中。

NextAuth Secret

  • 您可以通过在Git Bash中运行openssl rand -base64 32来生成此密钥。

JWT Secret

  • 您可以通过在Git Bash中运行openssl rand -base64 32来生成此密钥。

NextAuth URL

Allowed email domain

  • 默认为'@gmail.com'。如果要使用任何电子邮件域,请从pages/api/auth/[...nextauth].ts的选项中删除callback

Node environment

  • 默认为development。在生产环境中,将其设置为'production'(不带引号)

其他设置

  • utils/makechain.ts中,根据您自己的用例调整QA_PROMPT。如果您可以访问gpt-4 API,请将new OpenAI中的modelName更改为gpt-4

运行应用程序

运行npm run dev。一旦本地开发环境启动,请使用Google登录,然后转到左下角的Settings。上传您的文件并为它们设置一个'namespace'。在这里,'namespace'与您对话的主题是同义词。通过这种方式,您可以将多个文件上传到多个命名空间,并保持针对不同主题和文件的多个对话。

与文件聊天

如果您现在返回到主页,您应该在左侧边栏上看到您的命名空间。点击它,创建一个新的聊天,并与该特定命名空间的嵌入文件进行对话。


故障排除

通用错误

  • 确保您正在运行最新版本的Node。运行node -v命令检查您的版本。
  • 如果您遇到特定文件的问题,请尝试先将其转换为文本,或者尝试使用不同的文件。有可能文件损坏、被扫描过,或者需要OCR技术将其转换为文本。
  • 考虑记录环境变量并确保它们被正确暴露。
  • 确认您正在使用与该存储库相同的LangChain和Pinecone版本。
  • 检查您是否已创建包含有效的API密钥、环境和索引名称的.env文件。
  • 确保您的全局环境中没有多个OPENAPI密钥。如果存在多个密钥,项目中的本地env文件将被系统的环境变量覆盖。

Pinecone错误

  • 确保您的Pinecone仪表板环境和索引与.env文件中的值匹配。
  • 确认您已将向量维度设置为1536。
  • 请注意,Starter(免费)计划用户的Pinecone索引在7天不活动后会被删除。为了防止这种情况发生,在7天之前向Pinecone发送API请求以重置计数器。
  • 如果问题仍然存在,请考虑使用新的Pinecone项目、索引和克隆的存储库重新开始。

鸣谢

该存储库的前端受到了ChatGPT的启发。

标签:工具分享, ChatGPT