type
status
slug
summary
date
tags
category
password
Multi-select
Status
URL
勘误
标签
类型
icon
Publishe Date
贴文
🪄
如果您正在寻找一篇关于如何在 CSV 数据上构建聊天机器人的详细指南,那么您来对地方了。本文介绍了如何使用 LangChain 和 OpenAI,并在 Streamlit 上创建用户界面,让用户可以与聊天机器人交互。通过嵌入和 vectorstore,聊天机器人不仅可以处理 CSV 数据,而且还可以管理大型数据库。除此之外,本文还介绍了一些技术细节和代码实现,非常适合那些想要创建记忆聊天机器人的人。
此外,本文还提供了一些代码示例,让您可以更轻松地开始编写自己的聊天机器人。作者还提供了一个完整的项目,您可以在 GitHub 上找到它。这个项目包含了所有的代码和资源,让您可以更快地开始编写自己的聊天机器人。
用一个记忆聊天机器人与你的 CSV 文件聊天🤖 | 用 Langchain🦜 和 OpenAI🧠 制作
在这篇文章中,我们将看到如何使用记忆的简单聊天机器人🤖来回答您有关自己 CSV 数据的问题。
- 在过去的几周中,我一直在研究大型语言模型的有趣潜力,以创造各种各样的东西,现在是分享我所学到的知识的时候了!
我们将使用 LangChain🦜将
gpt-3.5
链接到我们的数据上,并使用 Streamlit 创建一个聊天机器人的用户界面。与 ChatGPT 不同,它在数据上提供有限的上下文(我们只能提供最多 4096 个标记),我们的聊天机器人将能够处理 CSV 数据并管理一个大型数据库,这要归功于使用嵌入和 vectorstore。
从 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)唯一剩下的就是启动脚本:
运行上述命令之后的结果
15)使用 LangChain、OpenAI 和 Streamlit,您现在拥有了一个漂亮的聊天机器人,能够基于您的 CSV 文件回答您的问题!
您可以在我的 GitHub 上找到完整的项目。
作者:Yvann
- 作者:Inevitable AI
- 链接:https://www.Inevitableai.ltd/article/share17
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。