前言
刚翻开了久未打开的简书文章,我发现距离我上次完结的《Rasa对话系统踩坑记》已过去近五年。那时候我家小棉袄还未出生😂。记得在那个时期,任务型对话系统是主流,相关概念如NLU(自然语言理解)、tracker(跟踪器)、action(动作)和story(故事)等等,这些名词已深入人心,Rasa成为这个领域最具代表性的框架。
然而,到了2022年底,ChatGPT的问世彻底改变了这个格局。这款大语言模型的推出让人震惊,感到前所未有的兴奋。随后的半年,一批新的大语言模型相继问世,包括GPT-4、Google的Bard、百度的文心一言和讯飞的星火大模型等等,它们共同营造出大语言模型的繁荣景象。与此同时,基于大语言模型的垂直领域也催生了新的开发概念——Prompt开发。在Prompt开发领域的框架中,Langchain最具代表性。
因此,我开启了一个全新的系列,以Langchain为核心,分享我探索这个框架的经验,就像“摸着石头过河”一样。
Langchain-Chatbot
延续传统,代码传送门:Langchain-Chatbot。
在深入介绍之前,我们先了解一下Langchain。
Langchain是一个用于开发由语言模型驱动的应用程序的框架。它为开发人员提供了一种标准的接口,使他们能够创建超出单个大语言模型(LLM)调用的调用序列。Langchain的核心在于围绕LLMs构建的框架,可以用于聊天机器人、生成式问答、摘要等。Langchain提供了许多工具和模块,包括模型(model)、提示(prompt)、链(chain)、代理(agent)、记忆(memory)等。
这个Langchain-Chatbot项目的目标是实现一个AI占卜功能。下面是简单的效果展示:
项目设计思路如下:
- 首先下载《周易》等占卜相关的书籍,将其放入docs文件夹中。然后通过
OpenAIEmbeddings
将文本转化为向量化(Embedding),并通过FAISS进行索引存储。你也可以选择Pinecone、ElasticSearch、Annoy、Chroma等其他工具进行向量存储。 - 用户提出的问题将使用VectorStore作为先验知识,再结合LLM进行回答。在这个项目中,我使用了OpenAI的
gpt-3.5-turbo
模型作为示例。
结束语
这篇文章主要是对过去的回顾以及Langchain的简单介绍。在接下来的文章中,我将从以下几个方面分享实战经验:
- 搭建UI前端并对接聊天服务
- 实现聊天服务的agent
- 实现memory以及其作用
- 对聊天服务的prompt进行改写和调试
- 实现stream流式传输及前端WebSocket的实现
- UI的修改和服务的部署