写点什么

ChatGPT 入门案例|商务智能对话客服(一)

作者:TiAmo
  • 2023-02-15
    江苏
  • 本文字数:3577 字

    阅读完需:约 12 分钟

ChatGPT入门案例|商务智能对话客服(一)

ChatGPT 是人工智能研究实验室 OpenAI 新推出的一种人工智能技术驱动的自然语言处理工具,使用了 Transformer 神经网络架构,也是 GPT-3.5 架构,这是一种用于处理序列数据的模型,拥有语言理解和文本生成能力,尤其是它会通过连接大量的语料库来训练模型,这些语料库包含了真实世界中的对话,使得 ChatGPT 具备上知天文下知地理,还能根据聊天的上下文进行互动的能力,做到与真正人类几乎无异的聊天场景进行交流。

ChatGPT 不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。本篇为大家带来与 ChatGPT 相关的入门案例——“商务智能对话客服”的成果展示,后续我们将通过实例说明远程交互式、本地交互式以及定制型客服的应用。


01、智能客服功能架构


问答智能客服简介


问答型(Question and Answer,QA)智能客服根据问题检索答案,并返回用户可以理解的结果,注重一问一答的流程处理,侧重知识推理以及问答匹配。在任务处理过程中,问答系统的部分功能与信息查询类似,比如均需要根据用户提出的问题进行答案检索,但在输入/输出的具体内容、信息获取过程和应用场景等方面可能存在差异。

可以根据不同角度(如应用领域、答案形式以及语料格式等)对问答系统进行分类。基于应用领域可分为限定域问答系统和开放域问答系统。限定域问答系统是指系统所能处理的问题只限定于特定领域或特定范围,比如只限于医学、商务或者金融领域等,而开放域问答系统面向的领域范围可以更广。根据支持技术分类,可分为数据库系统、对话式系统、阅读理解系统、问题集系统、知识库系统等。


智能问答客服功能架构


典型的问答系统包含问题输入、问题理解、信息检索、信息抽取、答案排序、答案生成和结果输出等。首先由用户提出问题,检索操作通过在知识库中查询得到相关信息,并依据特定规则从提取到的信息中抽取相应的候选答案特征向量,最后筛选候选答案输出结果给用户,参见图 1。








■ 图 1 智能问答客服基本流程

02、智能问答客服框架


问答型自动应用客服主要围绕问题提出、问题理解和候选答案的筛选等这几个中心点展开,根据用户输入的问题信息,理解用户问题的主要意图并识别问题的主题范畴,从相应知识库或者数据库(如外部知识库或者内部知识库)中检索答案,无法检索信息时可能借助推理生成候选答案,通过机器学习或深度算法进行最佳答案甄别,并将最优答案以用户容易理解的方式输出,一般包含问题处理、问题映射、查询构建、知识推理以及消歧排序等主要处理模块。

问题处理

问题处理流程识别问题中包含的信息,判断问题的主题信息和主题范畴归属,比如一般问题和特定主题问题的区分,然后提取与主题相关的关键信息,如人物信息、地点信息和时间信息等。

问题映射

根据用户咨询的问题,进行问题映射。通过相似度匹配和同义词表等解决映射问题,可能需要执行拆分和合并操作。

查询构建

通过对输入问题进行处理,将问题转换为计算机可以理解的查询语言,然后查询知识图谱或者数据库,通过检索获得相应备选答案。

知识推理

根据问题属性进行推理,如果属于知识图谱或者数据库中已知定义信息,则直接查找并返回结果。如果问题属性未定义,则需要通过机器算法或深度学习推理生成答案。

消歧排序

根据知识图谱中查询返回的单数或者复数备选答案,结合问题属性进行消歧处理和优先级排序,输出最优答案。


03、问答智能客服实战


目前基于模板的客服应用程序比较多,介绍三种方法。

第一种是基于远程模式的问答对话,需要提前创建问答知识库(QnA Maker Knowledge Base)服务,常见的知识库模板比较多,网址https://docs.microsoft.com/en-us/azure/cognitive-services/qnamaker/quickstarts/create-publish-knowledge-base?tabs=v1提供了一种模板的相应信息。本文的知识库使用微软 Azure 系统提供的模板文件 qna_chitchat_caring.tsv,通过导出后导入方式上传到智能客服应用中。

第二种是基于本地模板的问答对话应用,需要提前将模板下载到本地安装。

第三种是基于用户定制的问答系统,这种方式用户需要编写自定义代码。后两种方法在下一篇展开。

基于 Python 框架的智能对话应用模板可以在网址https://github.com/microsoft/BotBuilder-Samples/tree/main/samples/python下载。使用到的其他应用包括 Bot Framework Emulator(下载网址为https://github.com/Microsoft/BotFramework-Emulator/releases/tag/v4.13.0),代理应用程序 Ngrok(下载网址为https://ngrok.com/download)。启动环境执行 pip install botbuilder.ai 安装智能客服相应库文件。

基于远程交互模式问答客服

基于远程服务器模板的交互模式的主要操作步骤如下。

(1) 在微软 Azure 官网主页注册账户,网址为https://azure.microsoft.com/en-us/。注册成功后登录到 Azure Portal 页面,网址为https://portal.azure.com/#home

(2) 切换到 Azure Portal 页面,选择 QnA makers 创建服务 QnA Service,如图 2 所示。


 ■ 图 2 微软远程问答客服创建界面

 3) 单击 QnA Maker Portal 选项,如图 3 所示。


■ 图 3 问答创建选项 

 (4) 单击 Create a QnA Service 按钮创建知识库,参见图 4。


 ■ 图 4 创建问答服务

 (5) 根据提示完成步骤(1)~步骤(4),然后单击 Create your KB 按钮完成知识库创建,参见图 5。


 ■ 图 5 创建知识库

 (6) 知识库完成创建后,单击 Save and train 按钮,最后单击 Publish 按钮,如图 6 所示。


 ■ 图 6 发布智能客服

(7) 知识库完成创建后,单击 My knowledge bases 按钮确认知识库详细信息,参见图 7。


■ 图 7 确认知识库信息

(8) 单击 View Code 按钮,确认并记录主机地址、知识库和认证键值。

POST /knowledgebases/knowledgebases-id/generateAnswerHost: https://host-addressAuthorization: EndpointKey EndpointKey -idContent-Type: application/json{"question":"<Your question>"}
复制代码

(9) 新建 app.py 文件,从 botbuilder.core 库导入 BotFrameworkAdapter、BotFrameworkAdapterSettings、TurnContext、ConversationState、MemoryStorage 类,导入网页框架 Flask 库以及 asynciobotbuilder.schema.Activity。主要代码如下。

app = Flask(__name__)loop = asyncio.get_event_loop() botframework = BotFrameworkAdapterSettings("","")botadapter = BotFrameworkAdapter(botframework) remotebot = RemoteBot() @app.route("/api/messages",methods=["POST"])def messages():    if "application/json" in request.headers["content-type"]:        context = request.json    else:        return Response(status = 415)     activity = Activity().deserialize(context)        if "Authorization" in request.headers:        outcome = request.headers["Authorization"]    else:        outcome=""     async def call_fun(turncontext):        await remotebot.on_turn(turncontext)    task = loop.create_task(        botadapter.process_activity(activity,outcome,call_fun)        )    loop.run_until_complete(task) if __name__ == '__main__':    app.run('localhost',4000)
复制代码

(10) 新创建 remotebot.py 文件,主要代码如下。

from botbuilder.core import TurnContext,ActivityHandler,MessageFactoryfrom botbuilder.ai.qna import QnAMaker,QnAMakerEndpoint class RemoteBot(ActivityHandler):    def __init__(self):       endpoint = QnAMakerEndpoint("knowledgebases-id","EndpointKey -id","https://host-address")       self.botmaker = QnAMaker(endpoint)     async def on_message_activity(self,context:TurnContext):      response = await self.botmaker.get_answers(context)      if response and len(response) > 0:         await context.send_activity(MessageFactory.text(response[0].answer))
复制代码

 (11) 在 app.py 路径下启动命令行窗口,执行命令 python app.py 启动客服程序,命令行窗口提示 Running on http://localhost:4000 的信息,其中,4000 是 app.py 中配置的端口 PORT 属性值,参见图 8。


■ 图 8 启动页面

(12) 启动 Bot Framework Emulator 程序,单击左下角设置按钮,在 Path to ngrok 中选择下载的 ngrok.exe 的路径位置,勾选 Bypass ngrok for local addresses,Run ngrok when the Emulator starts up 以及 Use version 1.0 authentication tokens 复选框,参见图 9 和图 10。


■ 图 9 智能客服客户端


■ 图 10 智能客服客户端模拟器设置

(13) 单击 Open Bot 按钮,在客服程序 URL 中输入“http://localhost:4000/api/messages”,然后单击 Connect 按钮,参见图 11。


■ 图 11 远程连接设置

(14) 智能客服应用对话画面启动后,确认右边窗口中的日志输出正常,以及 Ngrok 应用处于代理监听状态,然后在左边窗口中输入需要咨询的问题,测试远程客服程序提供的回复结果,参见图 12。


■ 图 12 远程连接对话测试

发布于: 刚刚阅读数: 3
用户头像

TiAmo

关注

有能力爱自己,有余力爱别人! 2022-06-16 加入

CSDN全栈领域优质创作者;阿里云创作者社区专家博主、技术博主、星级博主、阿里云ACE;华为云享专家;

评论

发布
暂无评论
ChatGPT入门案例|商务智能对话客服(一)_AI_TiAmo_InfoQ写作社区