1. 构建一个基于大模型的智能客服系统

构建一个基于大模型的智能客服系统 学习卡片

任务说明

构建一个基于大模型的智能客服系统,核心能力包括:对用户输入进行意图识别(查询订单、退换货、物流、人工客服),并根据识别结果调用对应处理逻辑生成回答。系统采用“意图识别 + 规则响应”的轻量架构,大模型仅负责意图分类,业务答案由本地规则给出,避免大模型幻觉并降低响应延迟。

环境依赖

  • Python 3.9+
  • ==1.30.0(或兼容版本,需支持Chat Completions API)
  • 环境变量 _ 已设置

完整实现代码

import os
import json
from  import 

client = (=os.getenv("_"))

# 意图标签与对应业务处理函数映射
INTENT_ACTIONS = {
    "order_query": lambda user_input: f"您的最近一笔订单:订单号 #20240512,金额 ¥299,状态:已发货。",
    "return_exchange": lambda user_input: "退换货政策:签收后7天内支持无理由退换,商品需保持完好。您可在「我的订单」中申请。",
    "logistics": lambda user_input: "您的订单 #20240512 正在运输中,预计2天内送达。快递单号:SF1234567890。",
    "human_service": lambda user_input: "正在为您转接人工客服,当前排队约2分钟,请稍候。",
}

SYSTEM_PROMPT = """你是客服意图分类器。仅输出一个JSON对象,格式为{"intent": "标签"}。
可选标签:order_query(查询订单)、return_exchange(退换货)、logistics(物流查询)、human_service(转人工)。
不要输出任何其他内容。"""

def classify_intent(user_input: str) -> str:
    """调用大模型识别用户意图,返回意图标签"""
    try:
        response = client.chat.completions.create(
            model="-mini",
            messages=[
                {"role": "system", "content": SYSTEM_PROMPT},
                {"role": "user", "content": user_input},
            ],
            temperature=0,
            max_tokens=20,
        )
        content = response.choices[0].message.content.strip()
        intent = json.loads(content)["intent"]
        return intent if intent in INTENT_ACTIONS else "human_service"
    except Exception:
        # 解析失败或API异常时兜底转人工
        return "human_service"

def customer_service_reply(user_input: str) -> str:
    """智能客服主入口:意图识别 + 规则回答"""
    intent = classify_intent(user_input)
    action = INTENT_ACTIONS.get(intent, INTENT_ACTIONS["human_service"])
    return action(user_input)

if __name__ == "__main__":
    # 简单命令行交互验证
    test_inputs = [
        "我想查一下我的订单到哪了",
        "这件衣服不合适,想退货",
        "快递什么时候能送到?",
        "帮我转人工客服",
    ]
    for text in test_inputs:
        print(f"用户: {text}")
        print(f"客服: {customer_service_reply(text)}\n")

运行方式

export _="sk-你的密钥"
python customer_service.py

验证方法与通过标准

  • 功能验证:运行后,四条测试输入应分别输出订单信息、退换货政策、物流状态、转人工提示,且每条回复与对应意图的业务逻辑一致。
  • 意图识别准确性:观察输出内容,确认大模型将“查订单到哪了”识别为物流意图(logistics)而非订单查询(order_query),将“想退货”识别为return_exchange。若某条分类错误,可调整SYSTEM_PROMPT中的示例说明。
  • 异常兜底:临时设置无效的_再运行,系统应返回“正在为您转接人工客服”,不抛出未捕获异常。

常见问题

  • 返回非JSON格式:若大模型偶尔输出多余文字导致json.loads失败,代码已通过except捕获并兜底为human_service,不影响主流程。
  • 意图边界模糊:例如“订单什么时候到”既涉及订单又涉及物流,当前模型可能分类不稳定。可在SYSTEM_PROMPT中增加一句“物流查询优先于订单查询”来约束。