打造 AI 客服
LangChain
LangChain 是一个用于开发由语言模型驱动的应用程序的框架。它提供灵活的抽象和广泛的工具包,使开发人员能够利用大语言模型(LLM)的强大能力。由于该框架版本迭代较快,开发者需要持续关注其更新以适配最新功能。
AI 客服
AI 客服旨在提供实用的辅助和支持,通过与用户的互动,自动分析用户输入的问题,并根据需求响应适当的回答或建议。
AI 客服可以为企业提高效率、降低成本。通过快速响应提升用户满意度,并减少人工客服的工作负担。例如,原本可能需要 10 人的客服团队,在 AI 的辅助下可能只需要 2 人就能胜任大部分工作。
目前 AI 客服尚无法完全自主解决所有问题,但提升其解决问题能力的探索空间依然很大。例如基于 LangChain 实现日常客服(如售前、售后)流程阶段自动化,通过 LangChain 的代理及工具可以和其他业务系统紧密结合,利用 LangChain 的链可以对会话或阶段进行分析和评估等。
功能优化
本文基于前文实现的简易 AI 客服进行了深度优化。
检索问答优化
优化概述
在之前的实现中使用了 RetrievalQA。这是 LangChain 中的一个模块,用于构建基于检索的问答系统。
RetrievalQA 的主要思想是先从文档库中检索出与问题相关的文档,基于相关性对候选答案进行排序和筛选,然后将这些文档和原始问题一起提供给语言模型,让模型根据上下文生成答案。
本次优化使用 ConversationalRetrievalChain 去实现。该组件用于构建会话式的检索问答代理。它会考虑会话的上下文信息,根据之前的问题和回答来改进当前问题的检索结果。相比单轮的 RetrievalQA,可以在会话过程中不断改进检索性能。
ConversationalRetrievalChain 的主要思想是先构建一个检索工具,对用户的问题进行检索获取相关文档。然后构建一个会话式的代理,内部集成了检索工具。当用户提出问题时,代理首先用检索工具获取相关文档,然后将问题、相关文档以及之前的对话历史作为 prompt 提供给语言模型生成回答。这样可以利用检索结果增强语言模型的理解能力,生成更好的回答。
ConversationBufferMemory 是 LangChain 中的一个组件,用于在会话问答系统中存储对话历史。它可以跟踪对话的上下文,在生成回复时提供给语言模型使用。
代码实现
优化前
qa = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model_name='gpt-3.5-turbo-0613'),
chain_type="stuff",
retriever=vector_store.as_retriever()
)
优化后
memory = ConversationBufferMemory(
memory_key="chat_history",
return_messages=True,
verbose=True
)
qa = ConversationalRetrievalChain.from_llm(
llm=ChatOpenAI(model_name='gpt-3.5-turbo-0613'),
chain_type="stuff",
memory=memory,
retriever=vector_store.as_retriever(),
condense_question_prompt=common_prompt,
verbose=True
)
系统 Prompt 预设
优化概述
系统提示预设可以让模型回答更可控。通过自定义系统模板,可以让 AI 的回复更加符合交互场景的需要,提高用户体验。它为构建会话式问答系统提供了更多可定制性,比如让系统回复更加人性化,丰富系统和用户之间的交互形式,又如控制 AI 哪些可以回答,哪些不能回答。


