大模型驱动多轮对话在智能营销场景下的应用与实践

文摘   科技   2024-09-23 12:09   北京  

编者荐语:



本文深入剖析了大模型在智能营销中的创新应用,特别是在产品推荐中的实践。通过描述多轮对话的构建过程,向读者展示了大模型如何助力智能营销在企业场景下的落地。诚挚推荐读者深入阅读,以获取这一前沿技术带来的深刻洞见和实践启示。


大模型驱动多轮对话在智能营销场景下的应用与实践
亚信科技(中国)有限公司
摘要本文深入探讨了大语言模型在智能营销领域的应用实践,尤其聚焦于通过构建多轮对话以实现用户与营销助手间的高效互动。该系统不仅显著增强了用户体验,同时也大幅提升了产品推荐的精准度与个性化程度。基于真实场景下的数据测试结果表明,所提出的算法方案能够有效地支撑产品的营销活动提升营销内容的生成质量。

前言
大语言模型凭借其在丰富的文本样本上的学习和理解能力,已在不同领域展示出超乎过往NLP模型的能力。在通信行业,大模型已成功在基站工作参数动态调整、智能客服系统、网络流量监控及异常行为检查、市场趋势与用户行为分析等业务场景落地。

本篇文章将重点探讨大模型驱动产品推荐在智能营销领域的方案应用与实践。利用大语言模型强大的自然语言理解和推理能力实现用户和营销助手之间多轮对话的交互,在向用户准确推荐合适的产品套餐的基础上也提高了用户跟营销助手之间交互的友好性、连续性。真实场景下的数据测试表明,提出的算法实现方案可较好的支持产品营销场景下的产品推荐和营销内容生成。

智能营销场景简介

从用户的需求出发,在整个智能营销的场景中,用户通过在移动端App中跟“智能营销小助”进行交互获得用户反馈。“智能营销小助”当前能够支持的功能有:企业信息查询、企业问答、专线产品推荐等。基于多轮对话的营销产品推荐指用户以多轮对话的形式与“智能营销小助”发起对话聊天,“小助”基于用户输入的内容实时地回复输出营销产品内容。



关键方案设计

(一)整体方案


下图是营销场景下任务型的多轮对话系统设计流图。


图1:大模型驱动多轮对话方案设计流图


首先,用户输入的内容会进入意图识别模块完成用户意图的识别。针对用户初始轮的输入,历史会话管理模块会更新初始会话状态、记录当前初始会话意图。


其次,相对于历史上一轮的输入意图,用户意图跳变判定模块会判断用户当前的输入相对于上一轮输入是否发生意图跳变。如果意图跳变,历史会话管理模块会更新初始会话状态并记录下新一轮会话的意图并基于新意图开始会话;如果不发生意图跳变则会基于用户当前的输入(当前的意图)执行关键槽位的抽取。


然后,抽取到的槽位值将先后执行以下动作:
(1)与历史意图对应的槽位值融合生成融合后的槽位值信息;
(2)以当前抽取到的槽位值更新历史对应的槽位值,以保持历史会话管理模块能够记录下历史该意图下所有最新的槽位值。


随后,执行是否追问判断。该模块将基于系统预制的槽位集合对融合后的槽位信息进行检查,以判断该意图对应历史所有的有效槽位值是否全部填满。全部填满则不需要执行追问,没有填满则需要追问。追问前,会通过槽位选择模块对需要追问的槽位进行选择,以避免已填槽位或已被追问过的槽位被重复追问。确定需要追问的槽位后,会将其配合预置的自然语言模版1转换成一段追问的自然语言描述送到大模型prompt中,通过大模型生成回复内容以实现对用户细粒度上网需求的询问。同时,将融合后的槽位值基于预置的语言模版2转换成一段描述用户上网需求的自然语言送到大模型prompt中,针对用户的上网需求实现营销内容的生成。


构建大模型的prompt。为满足当前的智能营销需求,prompt在构成上依次包括LLM角色扮演、任务描述、产品知识库详情、产品营销策略、COT链、few shot少样本、用户上网需求描述、槽位追问需求、约束性文字描述等几个模块。将构建后的prompt送到大模型生成回复内容。

最后,生成的回复内容及用户当前轮的输入会构成历史对话记录,等待下一轮用户的输入,共同送入到对话系统中开始下一轮的系统处理与回复。


(二)子模块设计


1. 意图识别

在产品营销场景中,常见的意图类别有:网络直播、异网专线、异网宽带、办公场景、视频监控场景等,意图类别之间相对独立且不存在层级依赖关系。考虑到意图识别是整个对话系统的第一个关键模块,务必要做到识别高效且准确。高效是为了节省模块的响应时间,进而降低每一轮对话过程中用户等待系统回复的时间;准确是为了保证系统在每一轮对话回复前都能准确确定用户真实的想法。方案实现上考虑大模型意图识别+规则意图识别二者整体融合的方案。设计大模型进行意图识别的prompt时需要关注以下几个点:

(1)意图类别、数量、含义或常见描述


首先告诉大模型意图的类别数量及每个意图对应的含义或常见描述,方便大模型理解这些意图类别。以下列出意图识别的部分prompt:


“您是一个意图识别算法专家,在多轮对话的场景中我将向您提供一些用户和智能营销助手的历史对话内容以及用户在新一轮的输入。针对我向您提供的用户在新一轮的输入,请您执行意图识别任务。为了完成上述目标,请按照下面的过程,一步一步思考后完成: 1. \n1、首先需要先理解候选的意图信息共有如下{}个类别,每个意图的含义或常见描述如下:\n{}\n2、然后,xxx”


(2)few shot少样本学习


大模型具备强大的少样本学习能力,通过在prompt中引入few shot少样本可有效提高大模型在意图识别分类任务中的能力。例如:


“2. 然后,观察以下意图识别分类案例,学习意图识别分类任务的能力:\n{}\n”


(3)特定准则重点说明

在意图识别场景中,针对有些“顽固”的case,可以通过在prompt中引入特定的识别准则来重点说明。例如:

3. 其次,理解用户在新一轮的输入内容,然后在候选意图选项中找到相应的意图类别。意图识别前,请重点学习并记住以下识别准则:\n{}\n


(4)规则识别和意图融合

利用规则识别意图,更多的需要根据意图的类别特征定制化的设计。营销场景中的意图类别具备较强的特征信号,比较符合规则识别特点。


在某些特定的输入下,大模型意图识别结果会发生“左右摇摆”。为应对该问题可考虑大模型跟规则意图识别结果进行融合,具体的融合方法有:规则优先、模型优先、规则+模型等,方案选择可根据具体的场景及融合后的结果整体判定。同时,融合方案也可较好的支持多意图识别的场景。


2. 槽位提取、更新与问题追问

在多轮对话营销场景中,可通过对用户输入的内容进行槽位值的抽取来准确获取用户的上网需求。实现过程中,意图识别模块确定用户当前轮的意图,槽位抽取模块则基于用户的意图进行预制槽位的抽取,每一轮抽取到的槽位值及对应意图均会被系统记录下来,且在多轮对话不断更新的过程中,相同意图下从最新轮输入的内容中抽取到的槽位值将更新覆盖历史相同的槽位值以保障槽位值的时效性。具体实现时,可借助大模型来进行用户意图槽位值的抽取。

多轮对话生成每一轮的回复内容时,除了生成对应的营销内容外还包括对用户更细颗粒上网需求的追问。这里的追问,是指系统基于预制好的槽位向用户询问。


例如,用户输入:“我们公司计划开设直播业务,需要一个稳定且高速的网络来支持。你们有没有专门为直播设计的网络服务?”


系统识别到用户的意图是网络直播,除了基于用户的需求根据业务定制的推荐策略向用户推荐对应的产品外,还需要向用户追问“有多少个直播终端、有多少个直播间”。这里“直播终端数量”、“直播间数量”则是预制好的槽位,该槽位的确定更多的来自业务需求。


需要重点说明的,并不是每一轮系统回复都会执行问题追问。具体做法是:系统将根据用户当前轮的输入及历史会话内容来判断是否需要执行追问。以下重点描述追问判定逻辑:


在多轮对话场景中,理想情况下假设用户当前轮的输入和历史上一轮输入的意图是相关的,系统利用历史对话管理模块记录下每一轮输入对应的意图及提供的槽位信息。考虑到系统针对每个意图都预制了对应的槽位,系统将判断历史对话中该意图对应的所有槽位是否都已填满。在多轮对话上下轮意图保持不变的情况下,如果该意图对应的槽位没有被填满则会在该轮向用户追问没有被填满的槽位;如果槽位全部已填满则不会再向用户追问。同时,为保证多轮对话的层层递进性,系统将利用从当前轮获取的槽位信息和历史槽位信息进行融合后拼装成一段描述用户上网需求的自然语言,送给大语言模型执行产品推荐。槽位融合的目的在于获取最新、最全的槽位值信息。


请注意,整个槽位的提取、更新、融合和拼装的过程均建立在上下轮意图没有发生跳变的情况下。真实场景下,用户在下一轮的输入内容往往未知,完全有可能输入跟上一轮完全无关的内容,即发生意图跳变。系统一旦判定用户的意图发生跳变则会按照最新的意图开始新一轮的对话,进而同样执行上述类似的槽位提取和追问过程。下面将重点描述意图跳变的判定标准。

3. 意图跳变判定标准

常见方法有,判断当前轮的输入是否和历史上一轮的输入内容相关性,相关性可表通过0到1之间的数值体现。通过设定阈值0.5来确定是否相关,如果相关性大于0.5则认为上下轮对话相关即没有发生意图跳转,小于0.5则认为不相关即发生意图跳转。

另一种方法则是对用户的输入进行意图识别,通过意图识别的结果来判断用户的意图相对于历史上一轮意图是否发生跳变。在实现中考虑到业务需求的特殊性,采用第二种方案。用户意图发生跳变后,系统将基于用户最新的意图开始新一轮的对话,会话初始状态同步更新。


除上述方法外,意图跳变模块还可以通过更细颗粒的策略来实现,例如:设置一个阈值,如果发现与当前意图不匹配的槽位数量超过阈值时或用户意图明确发生跳变的次数超过阈值,则触发意图矫正流程。在接下来的模块中,系统可以主动与用户确认:"根据您提供的信息,我猜测您是想xx,是这样的吗?"。如果用户确认了,就将意图更新为正确的意图;否则保持原意图不变。


4. 生成回复内容


该部分重点描述如何利用大模型生成内容回复。考虑该对话系统主要服务于智能营销的产品推荐场景,将生成内容回复的大模型prompt设计如下:


图2:对话系统生成回复内容Prompt构成图


按照上图从左向右依次是大模型角色扮演及任务描述、产品知识库详情、产品营销策略、用户需求和约束性文字。其中,产品知识库详情借助RAG的思想将待推荐的产品知识库添加到prompt中。为提高大模型推荐产品的准确性和友好度,产品知识库支持配置套餐资费详情、产品优势及成功案例。为提高大模型推荐产品的准确度,具体实现过程中可根据用户当前的意图场景动态的调整待推荐的产品知识库而非一股脑将全部的产品知识全部塞入prompt;产品营销策略除了策略描述外还包括各个场景下的策略few shot样例;用户上网需求和追问需求,主要用于构建user prompt,实现上通常利用当前和历史对话融合后的槽位或待追问槽位结合自然语言模版拼装成自然语言描述;约束性文字主要是针对大模型输出的格式、样式、哪些必须输出、哪些不需要输出的特定说明性文字。


5. 对话管理


从业务需求的角度看,该多轮对话系统建模为面向任务型的对话且应用场景较为聚焦,所以在对话管理的设计上则采用更加轻量化的设计。对话管理主要包括:初始会话状态管理、上下轮对话意图跟踪、历史槽位记录、追问槽位选择、会话状态重置等几个模块。初始会话状态指的是用户发起初始会话或用户意图发生跳转后的会话状态,该状态会记录下用户的意图并仅在上述两种情况下更新初始意图;上下轮对话意图跟踪指系统会跟踪每一轮的用户意图,只有上下文的意图没有发生跳变的情况下,系统才会判断是否需要执行问题追问;为避免已被追问过的槽位被再次追问,追问槽位选择模块会记录下每一轮及过往历史追问过的槽位值,避免相同槽位或问题被二次追问;会话状态重置的作用是当用户结束会话或会话超时自动结束后,对话系统的会话状态会被重置为初始状态,等待用户发起新一轮的对话话题。


6. 会话结束模块


常见的结束对话的方法有:


•  基于用户的输入意图来结束会话:如果用户输入了明确需要结束会话的意图则系统会自动关闭当前会话;

•  通过结束按钮结束会话。“营销助手APP”的前端页面可以设计“结束会话”的按钮,如果用户点击了该按钮则自动关闭当前会话;

•  设定结束会话的等待阈值。系统可设定一个时间阈值(例如1800秒),从用户最后一轮输入的内容开始统计等待时间且从此以后用户一直没有新的会话内容输入,系统等待时间超过阈值则自动结束当前会话。上述方案可在具体场景中按需选择。


对话系统效果展示


以下搭建了简单测试页面用于内部测试使用(非上线页面):

图3:对话系统前端页面效果展示图


从上述页面展示的对话过程中可知,对话系统可准确识别用户的意图并针对用户的上网需求生成准确的产品推荐、营销话术和关联推荐。同时,会有意识的向用户提问更细颗粒度的上网需求。


关键经验分享

本部分重点分享在开发与设计任务型对话系统的关键经验:


•  意图识别要准


通过在prompt中引入意图分类定义、常见描述说明、few shot少样本、思维链等关键信息提高大模型意图识别的准确性,同时强规则意图识别的融合和干预可保证每一轮意图识别的准确性。需要说明的是:prompt需要不断打磨;规则意图识别需要高精准且支持意图拓展。


•  产品推荐要准


考虑到业务需要不同场景下不同产品具备不同的推荐策略,设计之初考虑将营销策略和产品详情不做区分全部送给大模型的方案并不能满足预期。可根据用户意图有针对性的选择对应营销策略及候选产品详情,动态调整营销策略和产品详情,降低送给大模型的prompt token长度,提高大模型推理的泛化效果。


•  槽位自然语言处理化


在多轮对话的过程中,系统会从用户输入的内容中确定意图并抽取对应的槽位值,槽位值融合历史槽位后通过模版拼接成一段描述用户上网需求的自然语言。可根据不同意图场景有针对性的设计模版,并在模版中有针对性的引导大模型按照我们期望的方向来生成回复。


•  让大模型做简单可靠的事情


考虑到推荐策略较为复杂,如果一味的将全部的策略都给到大模型则会让大模型变得“凌乱”。本方案在实现过程中通过代码逻辑有效区分了不同场景下的营销策略,让大模型在相关更加“确定”的维度上生成回复,回复的内容更加可靠、可控、可行。同时生产环境中预置的大模型一般是量化后的模型,量化后的模型能力会降低,从这个角度看,“相对简单可靠的事情”则比较符合大模型推理。


•  对历史对话内容的使用做到张弛有度


针对大模型多轮对话,现有的技术方案或开源框架中均有对历史对话内容的使用,这些方案并不能完全适配当前场景。在本方案中,对历史对话内容的使用有多种不同的使用方式,既利用了历史对话的丰富性又将历史对话的干扰降到最低。


首先,针对单意图槽位抽取时,仅会使用当前轮的输入内容;进行多意图的槽位抽取时为保障抽取槽位值的完备性,会使用历史最近几轮的会话内容。


其次,有效对无用的历史会话内容进行mask处理。大模型生成的营销内容是历史会话中的重要组成部分,该部分内容对意图识别和槽位抽取无益,可对该部分内容进行mask处理后将更“干净”的历史对话内容送给大模型理解。


最后,从当前轮输入获得的槽位和历史对话中获得槽位的更新与融合,可有效地将丰富的槽位信息转化成用户需求送到大模型prompt中。

未来展望

大语言模型天然具备多轮对话的优势,并且国内的多个厂商都已开始将大模型多轮对话替换掉原来的智能客服、智能助手、自动填单等应用。未来,我们期待多轮对对话能够获得更大的突破:

•  更完善的基于agent多轮对话开源框架:尽管多agent已经在多轮对话中有所尝试,我们依然期待未来更加完善的多轮对话开源框架的出现;


 更完备的多轮对话周边工具:大模型的出现可高效的解决现有多轮对话中的关键算法节点,但要支持更加开放的问题回复需要更多完备的周边工具来支持。我们希望看到一些新的开源工具或组件的出现能够有效解决多轮对话的周边问题。

参考资料

[1] OpenAI: A Survey of Techniques for Maximizing LLM Performance,2023

[2] Zihao YI: A Survey on Recent Advances in LLM-Based Multi-turn Dialogue Systems,2024

[3] Hongru Wang: A Survey of the Evolution of Language Model-Based Dialogue Systems 2015

[4] MinlieHuang: Challenges in Building Intelligent Open-domain Dialog Systems,2020

[5] Hongru, Wang: Cue-CoT: Chain-of-thought Prompting for Responding to In-depth Dialogue Questions with LLMs 2023

[6] Hongru Wang: Large Language Models as Source Planner for Personalized Knowledge-grounded Dialogues, 2023

[7] 如何借助 LLM 设计和实现任务型对话agent https://cloud.tencent.com/developer/article/2408175

亚信科技新技术探索
亚信科技的ICT前沿技术观点与行业洞见。展现亚信新技术与产品行业实践成果。
 最新文章