本篇笔记经过学习Datawhale的课程2所作。原课程链接:@Datawhale课程
1. Prompt设计心得
1.1 结构化设计的重要性
良好的prompt结构设计对于AI助手的表现至关重要。基于LangGPT的思想,我们采用了以下核心原则:
-
模块化组织:
- 将不同功能的prompt分离(注册、查询、删除等)
- 使用统一的消息状态管理
- 便于维护和扩展
-
语义一致性:
- 使用统一的令牌系统(如 "registered workers", "query workers")
- 保持状态转换的清晰性
- 确保错误处理的一致性
-
上下文管理:
- 实现了用户画像系统
- 保持对话历史
- 支持个性化服务
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的外链。(评论也提示违规) 不够方便直接集成,这里顺便给一个集成过程,相对简单:
- 访问智谱开放平台的控制台拿密钥:open.bigmodel.cn/usercenter/…
- 在这里对接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"
主要改进:
- 用户数据持久化
- 对话历史记录
- 提醒事项管理
3.2 用户体验优化
增加了更多人性化的功能:
class SmartAssistantV2:
def __init__(self, current_user_id=None):
self.user_profile = {
"preferences": {}, # 用户偏好
"reminders": [], # 提醒事项
"history": [] # 历史交互
}
关键特性:
- 用户画像系统
- 个性化回复
- 任务提醒功能
3.3 代码架构优化
模块化设计:
- prompts.py:提示词管理
- data_manager.py:数据管理
- smart_assistant_v2.py:核心业务逻辑
最终实现效果如下:
对应的user数据源:
总结与展望
当前的实现已经具备了基础的智能客服功能,并通过数据持久化和用户画像提供了个性化服务。未来可以考虑:
- 添加数据库支持,替代JSON文件存储
- 实现多轮对话的上下文理解
- 增加更多的个性化特征
- 添加性能监控和日志系统
通过这次优化实践,我们不仅提升了系统的功能性,也增强了代码的可维护性和可扩展性。这为后续的功能迭代打下了良好的基础。