智能客服助手的设计与优化实践 —— Datawhale wow-agent (1)

171 阅读3分钟

本篇笔记经过学习Datawhale的课程2所作。原课程链接:@Datawhale课程

1. Prompt设计心得

1.1 结构化设计的重要性

良好的prompt结构设计对于AI助手的表现至关重要。基于LangGPT的思想,我们采用了以下核心原则:

  1. 模块化组织

    • 将不同功能的prompt分离(注册、查询、删除等)
    • 使用统一的消息状态管理
    • 便于维护和扩展
  2. 语义一致性

    • 使用统一的令牌系统(如 "registered workers", "query workers")
    • 保持状态转换的清晰性
    • 确保错误处理的一致性
  3. 上下文管理

    • 实现了用户画像系统
    • 保持对话历史
    • 支持个性化服务

1.2 实践中的改进

从最初的基础版本改进到当前版本,主要做了以下优化:

# 优化前:所有prompt混在一起
sys_prompt = """你是一个聪明的客服..."""

# 优化后:模块化管理
SYSTEM_PROMPT = """..."""
REGISTERED_PROMPT = """..."""
QUERY_PROMPT = """..."""

1.3 prompt小模板

以后叫大模型按照下面的模板生成prompt,效果也许会好一点。

# Role: [角色名称]

## Profile
- Author: [作者]
- Version: [版本号]
- Language: [语言]

## Description
[角色描述和主要特征]

## Skills
1. [技能1描述]
2. [技能2描述]
...

## Rules
- [规则1]
- [规则2]
...

## Workflow
1. [步骤1]
2. [步骤2]
...

## Initialization
[初始化设置和启动流程]

2. 智谱API集成简介

原本教程给了自部署的地址,但是没给智谱AI的外链。(评论也提示违规) 不够方便直接集成,这里顺便给一个集成过程,相对简单:

  1. 访问智谱开放平台的控制台拿密钥:open.bigmodel.cn/usercenter/…
  2. 在这里对接openai的sdk用法:open.bigmodel.cn/dev/api/thi…
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv('ZHIPU_API_KEY'),
    base_url="https://open.bigmodel.cn/api/paas/v4/"
)

关键配置:

  • base_url: 智谱AI的API地址
  • chat_model: "glm-4-flash"
  • API密钥管理:使用.env文件存储

3. Demo优化实践

我们简单对demo进行一个数据持久化的优化,具体代码可见:github.com/YYForReal/F…

3.1 数据持久化

最重要的优化是添加了数据持久化层:

class DataManager:
    def __init__(self, data_dir="data"):
        self.data_dir = Path(data_dir)
        self.users_file = self.data_dir / "users.json"
        self.conversations_file = self.data_dir / "conversations.json"
        self.reminders_file = self.data_dir / "reminders.json"

主要改进:

  1. 用户数据持久化
  2. 对话历史记录
  3. 提醒事项管理

3.2 用户体验优化

增加了更多人性化的功能:

class SmartAssistantV2:
    def __init__(self, current_user_id=None):
        self.user_profile = {
            "preferences": {},  # 用户偏好
            "reminders": [],    # 提醒事项
            "history": []       # 历史交互
        }

关键特性:

  1. 用户画像系统
  2. 个性化回复
  3. 任务提醒功能

3.3 代码架构优化

模块化设计

  • prompts.py:提示词管理
  • data_manager.py:数据管理
  • smart_assistant_v2.py:核心业务逻辑

最终实现效果如下:

ba23c5e9b3cb62925b230a91cd773ba.png

对应的user数据源:

image.png

总结与展望

当前的实现已经具备了基础的智能客服功能,并通过数据持久化和用户画像提供了个性化服务。未来可以考虑:

  1. 添加数据库支持,替代JSON文件存储
  2. 实现多轮对话的上下文理解
  3. 增加更多的个性化特征
  4. 添加性能监控和日志系统

通过这次优化实践,我们不仅提升了系统的功能性,也增强了代码的可维护性和可扩展性。这为后续的功能迭代打下了良好的基础。