LangChain 实战课
黄佳
新加坡科研局首席研究员
8120 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 28 讲
结束语 & 结课测试 (2讲)
LangChain 实战课
15
15
1.0x
00:00/00:00
登录|注册

22|易速鲜花聊天客服机器人的开发(上)

你好,我是黄佳,欢迎来到 LangChain 实战课!
上节课,咱们的易速鲜花人脉工具成功上线。市场部的朋友们用了都说好。
这节课,我们继续为易速鲜花市场部、销售部和客服部门的员工,以及易速鲜花的广大用户来开发一个聊天机器人。

“聊天机器人”项目说明

聊天机器人(Chatbot)是 LLM 和 LangChain 的核心用例之一,很多人学习大语言模型,学习 LangChain,就是为了开发出更好的、更能理解用户意图的聊天机器人。聊天机器人的核心特征是,它们可以进行长时间的对话并访问用户想要了解的信息。
如图所示,聊天机器人设计过程中的核心组件包括:
聊天模型:这是对话的基础,它更偏向于自然的对话风格。你可以参考 LangChain 相关文档中所支持的聊天模型的列表。尽管大模型(LLM)也可以应用于聊天机器人,但专用的聊天模型(Chat Model)更适合对话场景。
提示模板:帮助你整合默认消息、用户输入、历史交互以及检索时需要的上下文。
记忆:它允许机器人记住与用户之间的先前互动,增强对话连贯性。
检索器:这是一个可选组件,特别适合那些需要提供特定领域知识的机器人。
整体来说,聊天机器人的关键在于其记忆和检索能力,记忆使聊天机器人能够记住过去的交互,而检索则为聊天机器人提供最新的、特定于领域的信息。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了易速鲜花聊天客服机器人的开发过程。文章详细介绍了聊天机器人项目的说明,包括聊天模型、提示模板、记忆和检索器等核心组件。通过代码示例展示了聊天机器人的基本功能和记忆功能的实现。文章内容涵盖了聊天机器人开发的核心技术和实现步骤,对于想要了解聊天机器人开发的读者具有很高的参考价值。文章还介绍了如何通过记忆机制增加聊天机器人的记忆功能,并展示了如何将易速鲜花的内部文档信息嵌入到大模型的知识库中,使机器人成为一个拥有“易速鲜花”价值观的Super客服。整个开发过程使用了LangChain的多项技术,包括提示工程、模型、链、代理、RAG、数据库检索等。通过文档加载、文本分割、文档向量化以及检索功能,这个新的机器人除了常规的聊天功能,还能够检索存储在指定目录中的文档,并基于这些文档提供答案。文章总结了聊天机器人的基本功能和记忆功能的实现,以及对话模型、提示模板、记忆的实现,对读者具有很高的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《LangChain 实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(8)

  • 最新
  • 精选
  • Geek_821c96
    # 调用 Retrieval Chain response = self.qa(user_input) 黄老师,这行代码的内部执行逻辑我不是很理解,您看我理解的对吗: 1.调用openai的接口,把用户输入user_input转换为向量数据。 2.拿向量数据去本地向量数据库匹配qa 3.匹配到答案后,再次拿着答案调用openai获取到结果展示给用户。

    作者回复: 是的,正确的。

    2023-11-27归属地:北京
    1
  • 鲸鱼
    老师,RAG是不是得配合路由链或者代理使用啊,先判断问题类型再去检索?我发现提易速鲜花的问题都能回答的很好,但是说个“你真棒”AI就回答有问题了 你: 你真棒 ChatBot: 对不起,根据提供的信息,我无法确定“语言玫瑰”的含义。这个词组似乎不是标准的成语或常见表达。如果它是特定情境或者某个专业领域的术语,可能需要更多的上下文来提供准确的解释。如果您能提供更多的信息或者上下文,我或许能够帮助解答您的问题。

    作者回复: 嗯?这个现象有点奇怪哦。答非所问,不是ChatGPT应有水准。ChatGPT的水准应该是即使检索不出来答案,也会给你圆上场面。

    2023-11-30归属地:北京
  • Geek_821c96
    # 调用 Retrieval Chain response = self.qa(user_input) 黄老师,这行代码的内部执行逻辑我不是很理解,您看我理解的对吗: 1.调用openai的接口,把用户输入user_input转换为向量数据。 2.拿向量数据去本地向量知识库匹配qa返回。 3.匹配到的答案再次调用openai拿到可展示的答案

    作者回复: 是的,内部是进行了这几个操作。大模型一是帮助做Embedding,而是做生成Synthesis。二者可以都是OpenAI模型,但是不同的模型。

    2023-11-27
  • JC
    老师,第四步有实现的代码吗?

    作者回复: 目前没有啊,交给同学们自己做。

    2023-11-14归属地:广东
    2
  • Allen
    向量数据库 如何保存在本地? 这下次再使用的时候, 直接读取结果就行. 而不用再进行生成向量数据库.

    作者回复: 可以的,很多种方法。https://qdrant.tech/的Cloud里面也可以免费保存一些,其它方法也很多。本地应该也可以。

    2023-11-06归属地:北京
    2
  • 易水流川
    思考题2:使用create_sql_agent实现一个查询订单信息的tool,把这个tool加到Chatbot

    作者回复: 好嘞!!!

    2023-11-05归属地:浙江
  • 蝈蝈
    老师您好,请问一个问题,我用RetrievalQA和RetrievalQAWithSourcesChain 得到的答案完全不一样。我本以为RetrievalQAWithSourcesChain是RetrievalQA增强功能,但结果并不是。 ``` client = qdrant_client.QdrantClient( url=url, prefer_grpc=True ) qdrant = Qdrant( client=client, collection_name=collection_name, embedding_function = OpenAIEmbeddings().embed_query ) retriever = qdrant.as_retriever() llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0) qa_chain = RetrievalQAWithSourcesChain.from_chain_type(llm,retriever=retriever,verbose=True) qa_chain.return_source_documents=True question = """什么是共识算法""" answer = qa_chain(question) print(answer) ``` 用 RetrievalQA 可以正确搜索到答案,但是RetrievalQAWithSourcesChain就搜不到

    作者回复: 这个问题目前我也没有做过更深入的实验去比较,估计要深入这两个Chain的内部实现细节去看了。。。

    2023-11-02归属地:湖北
  • 蝈蝈
    如果想在目前的基础上加入实时搜索的功能,应该如何实现。当用户的问题如果没有在本地向量库检索到,且大模型也没有相关的回答,希望通过加入实时搜索的功能去查找。是通过硬编码的判断还是通过agent代理的方式,来决策这个过程

    作者回复: 就是通过SerpAPI这样的工具实时的搜啊,就是向目前Bing做的事情。每一个环境都可以用Agent来判断是找得到还是找不到最好的答案。

    2023-11-01归属地:湖北
收起评论
显示
设置
留言
8
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部