AI知识库 AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


智能客服背后的黑科技:大模型让流量包办理更简单
发布日期:2024-06-11 08:20:10 浏览次数: 1574
随着人工智能技术的快速发展,智能客服在各行各业的应用越来越广泛。尤其是在办理流量包这一高频业务场景中,利用大模型技术构建的智能客服不仅能提高用户体验,还能显著提升企业的服务效率。本文将为大家揭秘大模型在流量包办理智能客服中的应用原理,并展示如何通过优化对话系统模块,打造出一款优质的智能客服服务。

业务场景:办理流量包的智能客服

流量包产品如下:

在用户需要办理或咨询流量包时,智能客服可以提供包括套餐介绍、推荐、办理等一站式服务。其核心在于大模型技术的应用,通过理解用户需求,精准推荐合适的流量包。

对话系统的基本模块

一个完整的智能客服对话系统主要包含以下模块:
  1. 语音识别(ASR):将用户的语音输入转换为文本。
  2. 语义理解(NLU):利用大模型进行语义理解,解析用户意图。
  3. 对话管理(DM):包括状态跟踪(DST)和对话策略(Policy),管理对话的流畅进行。
  4. 自然语言生成(NLG):生成符合语境的回复文本。
  5. 语音合成(TTS):将文本回复转换为语音输出。

对话流程举例

下面是一个用户办理流量包的对话流程示例
  1. 用户:我要办理流量包。
  2. 智能客服:您好!请问您需要什么样的流量包?我们有经济套餐、畅游套餐、无限套餐和校园套餐。
  3. 用户:我想要一个流量大的。
  4. 智能客服:推荐您选择无限套餐,每月1000G流量,仅需300元。请问您需要办理吗?
  5. 用户:是的,帮我办理吧。
  6. 智能客服:好的,您的无限套餐已办理成功。谢谢使用!


用Prompt实现DST不是唯一选择

在对话管理模块中,状态跟踪(DST)是至关重要的一环。利用Prompt技术实现DST有其独特的优势和挑战:
  • 优点:节省开发时间和成本,快速迭代。
  • 缺点:调优过程复杂,需要通过大量动态例子进行调试和优化。
import openaiimport os
# 加载 .env 文件from dotenv import load_dotenv, find_dotenv_ = load_dotenv(find_dotenv())
# 从环境变量中获得你的 OpenAI Keyopenai.api_key = os.getenv('OPENAI_API_KEY')openai.api_base = os.getenv('OPENAI_API_URL')model = os.getenv('MODEL')
# 基于 prompt 生成文本def get_completion(prompt, model=model): messages = [{"role": "user", "content": prompt}] response = openai.ChatCompletion.create( model=model, messages=messages, temperature=0, # 模型输出的随机性,0 表示随机性最小 ) return response.choices[0].message["content"]
instruction = """你的任务是识别用户对手机流量套餐产品的选择条件。每种流量套餐产品包含三个属性:名称(name),月费价格(price),月流量(data)。根据对话上下文,识别用户在上述属性上的倾向。识别结果要包含整个对话的信息。"""
# 输出描述output_format = """以JSON格式输出。1. name字段的取值为string类型,取值必须为以下之一:经济套餐、畅游套餐、无限套餐、校园套餐 或 null;
2. price字段的取值为一个结构体 或 null,包含两个字段:(1) operator, string类型,取值范围:'<='(小于等于), '>=' (大于等于), '=='(等于)(2) value, int类型
3. data字段的取值为取值为一个结构体 或 null,包含两个字段:(1) operator, string类型,取值范围:'<='(小于等于), '>=' (大于等于), '=='(等于)(2) value, int类型或string类型,string类型只能是'无上限'
4. 用户的意图可以包含按price或data排序,以sort字段标识,取值为一个结构体:(1) 结构体中以"ordering"="descend"表示按降序排序,以"value"字段存储待排序的字段(2) 结构体中以"ordering"="ascend"表示按升序排序,以"value"字段存储待排序的字段
只输出中只包含用户提及的字段,不要猜测任何用户未直接提及的字段。不要输出值为null的字段。"""# DO NOT OUTPUT NULL-VALUED FIELD!
examples = """客服:有什么可以帮您用户:100G套餐有什么
{"data":{"operator":">=","value":100}}
客服:有什么可以帮您用户:100G套餐有什么客服:我们现在有无限套餐,不限流量,月费300元用户:太贵了,有200元以内的不
{"data":{"operator":">=","value":100},"price":{"operator":"<=","value":200}}
客服:有什么可以帮您用户:便宜的套餐有什么客服:我们现在有经济套餐,每月50元,10G流量用户:100G以上的有什么
{"data":{"operator":">=","value":100},"sort":{"ordering"="ascend","value"="price"}}
客服:有什么可以帮您用户:100G以上的套餐有什么客服:我们现在有畅游套餐,流量100G,月费180元用户:流量最多的呢
{"sort":{"ordering"="descend","value"="data"},"data":{"operator":">=","value":100}}"""
# input_text="哪个便宜"# input_text="无限量哪个多少钱"input_text = "流量最大的多少钱"
context = f"""客服:有什么可以帮您用户:有什么100G以上的套餐推荐客服:我们有畅游套餐和无限套餐,您有什么价格倾向吗用户:{input_text}"""
prompt = f"""{instruction}
{output_format}
{examples}
{context}"""
response = get_completion(prompt)print(response)

输出:

{  "sort": {    "ordering": "descend",    "value": "data"  },  "data": {    "operator": ">=",    "value": 100  }}

用Prompt实现NLU,用传统方法维护DST

另一种方案是在自然语言理解(NLU)模块中使用Prompt,同时在状态跟踪(DST)模块中采用传统方法:
  • 优点:DST环节具有更高的可控性,可以结合业务经验设计状态更新机制,确保系统稳定可靠。
  • 缺点:需要深入了解业务逻辑,设计合适的状态更新和冲突解决机制。
这种混合方法既利用了大模型的强大语义理解能力,又保持了对话管理的稳定性,是当前应用中较为常见的策略。
import openaiimport os# 加载 .env 文件from dotenv import load_dotenv, find_dotenv_ = load_dotenv(find_dotenv())
# 从环境变量中获得你的 OpenAI Keyopenai.api_key = os.getenv('OPENAI_API_KEY')openai.api_base = os.getenv('OPENAI_API_URL')model = os.getenv('MODEL')
# 任务描述instruction = """你的任务是识别用户对手机流量套餐产品的选择条件。每种流量套餐产品包含三个属性:名称(name),月费价格(price),月流量(data)。根据用户输入,识别用户在上述三种属性上的倾向。"""
# 输出描述output_format = """以JSON格式输出。1. name字段的取值为string类型,取值必须为以下之一:经济套餐、畅游套餐、无限套餐、校园套餐 或 null;2. price字段的取值为一个结构体 或 null,包含两个字段:(1) operator, string类型,取值范围:'<='(小于等于), '>=' (大于等于), '=='(等于)(2) value, int类型3. data字段的取值为取值为一个结构体 或 null,包含两个字段:(1) operator, string类型,取值范围:'<='(小于等于), '>=' (大于等于), '=='(等于)(2) value, int类型或string类型,string类型只能是'无上限'4. 用户的意图可以包含按price或data排序,以sort字段标识,取值为一个结构体:(1) 结构体中以"ordering"="descend"表示按降序排序,以"value"字段存储待排序的字段(2) 结构体中以"ordering"="ascend"表示按升序排序,以"value"字段存储待排序的字段只输出中只包含用户提及的字段,不要猜测任何用户未直接提及的字段,不输出值为null的字段。"""
examples = """便宜的套餐:{"sort":{"ordering"="ascend","value"="price"}}有没有不限流量的:{"data":{"operator":"==","value":"无上限"}}流量大的:{"sort":{"ordering"="descend","value"="data"}}100G以上流量的套餐最便宜的是哪个:{"sort":{"ordering"="ascend","value"="price"},"data":{"operator":">=","value":100}}月费不超过200的:{"price":{"operator":"<=","value":200}}就要月费180那个套餐:{"price":{"operator":"==","value":180}}经济套餐:{"name":"经济套餐"}"""
input_text = "有没有便宜的套餐"# input_text = "有没有土豪套餐"# input_text = "办个200G的套餐"# input_text = "有没有流量大的套餐"# input_text = "200元以下,流量大的套餐有啥"# input_text = "你说那个10G的套餐,叫啥名字"
prompt = f"""{instruction}{output_format}例如:{examples}用户输入:{input_text}"""# 基于 prompt 生成文本def get_completion(prompt, model=model): messages = [{"role": "user", "content": prompt}] response = openai.ChatCompletion.create( model=model, messages=messages, temperature=0, # 模型输出的随机性,0 表示随机性最小 ) return response.choices[0].message["content"]
response = get_completion(prompt)print(response)

输出
{"sort":{"ordering":"ascend","value":"price"}}

总结

通过大模型技术,智能客服在办理流量包业务中的应用取得了显著成效。无论是利用Prompt技术实现DST,还是采用混合方法结合传统DST和大模型NLU,都在不同程度上提升了系统的智能化和用户体验。未来,随着技术的不断进步,智能客服将在更多领域展现其强大的潜力和价值。

53AI,大模型落地应用首选服务商

定位:开箱即用的大模型落地应用平台

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

年轻人!来一起搞AI吗?

如果你看见AI对商业世界的变革,欢迎来和我们一起探索~

岗位:销售经理

查看详情

岗位:项目经理

查看详情

岗位:产品经理

查看详情

岗位:测试工程师

查看详情

联系我们

售前咨询
186 6662 7370
产品演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询