⛓️分享|使用openai和langchain,在不到30行的Python代码中创建自己的聊天框并进行训练
00 分钟
2023-5-11
2023-8-26
type
status
slug
summary
date
tags
category
password
Text
AI summary
AI custom autofill
Multi-select
Status
URL
hashtag
勘误
标签
标题
类型
贴文
🪄
icon
 
本文深入探讨了如何使用Langchain和OpenAI创建聊天机器人,以及如何将文本数据转换为向量,如何创建向量存储器,如何使用OpenAI API创建对话模型,以及如何使用ConversationalRetrievalChain对象将模型和向量存储器结合在一起,用于根据文本数据回答问题。
作者非常详细地介绍了如何使用CSV文件将文本数据读入Document对象的列表中,并使用Langchain的内置模块将文本转换为向量。此外,作者还提供了完整的Python代码和示例CSV文件,以及与ChatBox的示例对话,使读者能够更好地了解如何使用Langchain和OpenAI构建聊天机器人。
这篇文章提供了一个很好的起点,让读者了解如何使用Langchain和OpenAI构建聊天机器人。如果您想深入了解聊天机器人的开发,那么本文一定不容错过。
 

 
notion image
在本教程中,我们将探讨如何使用Langchain和OpenAI创建自己的聊天机器人。Langchain是一个Python库,提供了一个易于使用的接口,用于构建对话式AI系统,而OpenAI是一家为开发人员提供一套基于AI的工具和服务的公司。通过结合这两个强大的工具,我们可以创建一个聊天框,它可以根据文本数据回答问题。
该过程涉及使用包含文本数据的CSV文件对聊天机器人进行训练。我们将使用Langchain的内置模块将文本转换为向量,创建向量存储和构建对话检索链。检索链使用来自OpenAI的预训练语言模型,根据文本数据生成用户查询的回答。
使用Langchain和OpenAI构建聊天机器人的好处之一是,它允许我们利用预训练语言模型的强大功能,而无需从头开始训练它们。这可以节省我们的时间和资源,因为预训练模型已经学会了理解自然语言并回答问题。此外,Langchain提供了一个用户友好的界面,用于构建对话式AI系统,使得我们可以轻松地对聊天机器人设计进行实验和迭代。
在开始之前,重要的是要注意,我们需要从OpenAI获得API密钥并将其添加到我们的环境变量中。此API密钥将允许我们访问OpenAI的语言模型和其他AI服务。说到这里,让我们深入了解如何使用Langchain和OpenAI创建自己的聊天机器人!
完整代码
代码的细节:
这些行导入了代码运行所需的必要库和模块。具体来说,这个代码使用了 csvosopenailangchain.embeddings.openailangchain.chat_modelslangchain.chainslangchain.vectorstoreslangchain.vectorstores.base 模块。
这个函数将CSV文件读入一个Document对象的列表中,稍后可以用于创建向量存储。file参数是CSV文件的路径,text_cols参数是将每个文档用作文本数据的列名的列表。
该代码从名为OPENAI_API_KEY的环境变量中检索OpenAI API密钥。如果环境变量未设置,则代码将打印一条消息并退出。
这些行创建了一个对话检索链,可以用于根据文本数据回答问题。
首先,该代码使用read_csv_into_vector_document函数从CSV文件中读取数据,该函数创建一个Document对象的列表。
接下来,该代码使用OpenAI API密钥创建了一个OpenAIEmbeddings对象。该对象用于将文本数据嵌入向量。
然后,该代码使用FAISS模块创建向量存储器,该库用于高效的密集向量相似性搜索和聚类。向量存储器是从Document对象列表和OpenAIEmbeddings对象创建的。
接下来,该代码创建了一个名为ChatOpenAI的对话模型,该模型基于OpenAI API。此对象用于回答问题。
最后,该代码创建了一个ConversationalRetrievalChain对象,该对象将模型和向量存储器结合在一起。该对象可以用于根据文本数据回答问题。
该代码获取用户的输入并将其传递给ConversationalRetrievalChain对象的__call__方法,该方法根据问题生成回答。__call__方法采用一个包含两个键的字典:question,它包含用户的输入,以及chat_history,它是与对话模型的先前交互的列表。__call__方法返回一个仅包含一个键answer的字典,该键包含模型对问题的回答。将此响应打印到控制台。
总的来说,这个代码创建了一个对话检索链,它可以根据文本数据回答问题。使用OpenAIEmbeddings对象将文本数据嵌入向量,使用FAISS模块创建向量存储器,使用ChatOpenAI模型回答问题,使用ConversationalRetrievalChain对象将模型和向量存储器结合在一起。代码提示用户输入并使用对话检索链回答其问题。

附录:

示例CSV文件
training_data.csv
与ChatBox的示例对话
notion image
 
Github:
 

作者:Ebo Jackson

评论