🚀使用 LangChain 和 OpenAI 在 CSV 数据上构建聊天机器人
00 分钟
2023-5-10
2023-8-26
type
status
slug
summary
date
tags
category
password
Text
AI summary
AI custom autofill
Multi-select
Status
URL
hashtag
勘误
标签
标题
类型
贴文
🪄
icon
如果您正在寻找一篇关于如何在 CSV 数据上构建聊天机器人的详细指南,那么您来对地方了。本文介绍了如何使用 LangChain 和 OpenAI,并在 Streamlit 上创建用户界面,让用户可以与聊天机器人交互。通过嵌入和 vectorstore,聊天机器人不仅可以处理 CSV 数据,而且还可以管理大型数据库。除此之外,本文还介绍了一些技术细节和代码实现,非常适合那些想要创建记忆聊天机器人的人。
此外,本文还提供了一些代码示例,让您可以更轻松地开始编写自己的聊天机器人。作者还提供了一个完整的项目,您可以在 GitHub 上找到它。这个项目包含了所有的代码和资源,让您可以更快地开始编写自己的聊天机器人。
 

 
 

用一个记忆聊天机器人与你的 CSV 文件聊天🤖 | 用 Langchain🦜 和 OpenAI🧠 制作

notion image
在这篇文章中,我们将看到如何使用记忆的简单聊天机器人🤖来回答您有关自己 CSV 数据的问题。
  • 在过去的几周中,我一直在研究大型语言模型的有趣潜力,以创造各种各样的东西,现在是分享我所学到的知识的时候了!
我们将使用 LangChain🦜将 gpt-3.5 链接到我们的数据上,并使用 Streamlit 创建一个聊天机器人的用户界面。
与 ChatGPT 不同,它在数据上提供有限的上下文(我们只能提供最多 4096 个标记),我们的聊天机器人将能够处理 CSV 数据并管理一个大型数据库,这要归功于使用嵌入和 vectorstore。
notion image
从 LangChain 博客 中创建聊天机器人所使用的过程图

代码

现在让我们实践一下吧!我们将使用很少的 Python 语法在 CSV 数据上开发我们的聊天机器人。
免责声明:这个代码是我创建的聊天机器人的简化版,它没有优化来减少 OpenAI API 成本,如果您想要一个更高性能和优化的聊天机器人,请随时查看我的 GitHub 项目:yvann-hub/Robby-chatbot,或者在 Robby-chatbot.com 上测试应用程序🚀。
1)首先,我们将安装必要的库:
2)导入我们的聊天机器人所需的库:
3)我们要求用户输入他们的 OpenAI API 密钥,并下载其聊天机器人将基于的 CSV 文件。
4)为了以较低的成本测试聊天机器人,您可以使用这个轻量级的 CSV 文件:[fishfry-locations.csv](<https://drive.google.com/file/d/18i7tN2CqrmoouaSqm3hDfAk17hmWx94e/view?usp=sharing>)
5)如果用户上传了 CSV 文件,我们将使用来自 LangChain 的 [CSVLoader](<https://python.langchain.com/en/latest/modules/indexes/document_loaders/examples/csv.html?highlight=csvloader>) 类来加载它。
6)LangChain CSVLoader 类允许我们将 CSV 文件拆分为唯一的行。这可以通过显示数据内容来看到:
7)现在,将 CSV 文件切分允许我们使用 OpenAI 嵌入将其提供给我们的 vectorstore (FAISS)。
嵌入允许将由 CSVLoader 切分的部分转换为向量,然后根据给定文件的每一行内容表示基于内容的索引。
在实践中,当用户提出问题时,将在 vectorstore 中执行搜索,并将最佳匹配的索引返回到 LLM,LLM 将重新组织找到的索引的内容,为用户提供格式化的响应。
我建议深入理解 vectorstore 和 embeddings 概念以获得更好的理解。
8)然后,我们通过提供所需的聊天模型 gpt-3.5-turbo (或 gpt-4)和存储通过 OpenAIEmbeddings() 将我们的文件转换为向量的 FAISS vectorstore 来添加 [ConversationalRetrievalChain](<https://python.langchain.com/en/latest/modules/chains/index_examples/chat_vector_db.html?highlight=conversationalretri>)
此链允许我们拥有一个具有记忆的聊天机器人,同时依赖于一个 vectorstore 从我们的文档中找到相关信息。
此函数允许我们将用户的问题和对话历史记录提供给 ConversationalRetrievalChain,以生成聊天机器人的响应。
9)st.session_state[‘history’] 存储用户在 Streamlit 网站上的对话历史记录。
如果您想对这个聊天机器人进行改进,可以查看我的 GitHub 👀
通过创建 st.session_state[‘history’] 和聊天中显示的第一条消息来初始化聊天机器人会话。
[‘generated’] 对应于聊天机器人的响应。
[‘past’] 对应于用户提供的消息。
10)容器不是必需的,但可以通过将用户的问题区域放置在聊天消息下方来改善 UI。
11)现在,配置好 session.state 和容器。
12)我们可以设置 UI 部分,允许用户输入并将其问题作为参数发送到我们的 conversational_chat 函数中。
13)此最后一部分允许使用 [streamlit_chat](<https://pypi.org/project/streamlit-chat/>) 模块在 Streamlit 网站上显示用户和聊天机器人的消息。
14)唯一剩下的就是启动脚本:
notion image
运行上述命令之后的结果
15)使用 LangChain、OpenAI 和 Streamlit,您现在拥有了一个漂亮的聊天机器人,能够基于您的 CSV 文件回答您的问题!
您可以在我的 GitHub 上找到完整的项目。

作者:Yvann

评论