位置:首页 > 技术资讯 > 大模型黑科技赋能智能客服 流量包办理更简单高效

大模型黑科技赋能智能客服 流量包办理更简单高效

时间:2026-07-25  |  作者:318050  |  阅读:0

人工智能技术的发展让智能客服变得无处不在。尤其是在办理流量包这种高频场景里,大模型驱动的智能客服既能显著提升用户体验,也能有效提高企业服务效率。

那么,背后到底是怎么实现的?

我们今天就来拆解一下大模型在流量包办理智能客服中的应用原理。看看如何通过优化对话系统模块,打造出一款真正好用的智能客服。

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

流量包产品如下:

智能客服背后的黑科技:大模型让流量包办理更简单

当用户需要办理或咨询流量包时,智能客服可以提供套餐介绍、推荐、办理等一站式服务。

其核心支撑是大模型技术——通过理解用户需求,精准推荐合适的流量包。

对话系统的基本模块

一个完整的智能客服对话系统,通常由以下几个核心模块组成:

  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 openai
import os

# 加载 .env 文件
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

# 从环境变量中获得你的 OpenAI Key
openai.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 openai
import os
# 加载 .env 文件
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

# 从环境变量中获得你的 OpenAI Key
openai.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,还是采用混合方法——用大模型做NLU、用传统逻辑做DST,都能在不同程度上提升系统的智能化和用户体验。

可以预见,随着技术持续迭代,智能客服将在更多领域展现出更大的潜力和价值。

来源:整理自互联网
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多