Skip to content

Huang-Xuwei/AutoPE

Repository files navigation

AutoPE — 智能客服 Prompt 自动优化系统

项目简介

AutoPE (Automatic Prompt Engineering) 是一个基于 多智能体博弈 的提示词自动优化框架。系统通过模拟 客服(Seller)消费者(Buyer) 的对话,由 评审团(Judge Panel) 评分,再由 策略优化器(Optimizer) 迭代改进客服的提示词策略。

核心思路:不靠人工调 prompt,而是让 AI 自己在对话博弈中进化出更好的 prompt。


系统架构

┌─────────────────────────────────────────────────────┐
│                  OptimizationLoop                   │
│              (autope/core/optimization_loop.py)      │
│                                                     │
│  ┌──────────┐    对话     ┌──────────┐              │
│  │  Buyer   │◄──────────►│  Seller  │              │
│  │  Agent   │            │  Agent   │              │
│  └──────────┘            └──────────┘              │
│       │                       │                     │
│       │    用户画像            │ 产品知识库 + 可变策略  │
│       │    (user_profiles)    │ (knowledge_base)     │
│       │                       │                     │
│       ▼                       ▼                     │
│  ┌─────────────────────────────────┐                │
│  │        Judge Panel (3位评审)      │                │
│  │  专业度 │ 服务质量 │ 销售转化      │                │
│  └──────────────┬──────────────────┘                │
│                 │ 评分 + 反馈                        │
│                 ▼                                   │
│  ┌──────────────────────┐                           │
│  │   Optimizer Agent    │                           │
│  │  (策略优化器)         │──► 生成新策略 ──► 下一轮    │
│  └──────────────────────┘                           │
└─────────────────────────────────────────────────────┘

单轮流程

  1. Buyer 发言 — 根据用户画像,模拟消费者的自然反应
  2. Seller 回复 — 根据产品知识库 + 当前策略,给出客服回复
  3. 状态判断 — LLM 判断对话是否结束(success/fail/end/continue)
  4. 重复 1-3 直到对话结束(或达到最大轮次)
  5. Judge 评分 — 3 位评审从不同角度打分(0-10)
  6. Optimizer 优化 — 每 3 轮根据评分反馈迭代更新客服策略

项目结构

AutoPE/
├── run_autope.py                  # 入口脚本
├── autope/
│   ├── config.py                  # 配置(API Key、模型参数)
│   ├── llm.py                     # Gemini API 调用封装
│   ├── models.py                  # 数据结构(UserProfile, SimulationResult)
│   ├── agents/
│   │   ├── user_agent.py          # Buyer 智能体
│   │   ├── sales_agent.py         # Seller 智能体
│   │   ├── judge_agent.py         # Judge 评审 + JudgePanel
│   │   └── optimizer_agent.py     # Optimizer 策略优化器
│   ├── core/
│   │   └── optimization_loop.py   # 主循环(编排所有 Agent)
│   └── prompts/
│       ├── prompt_loader.py       # 所有 Prompt 模板(核心)
│       └── judge_prompts.py       # Judge prompt 加载
├── data/
│   ├── business_knowledge_base.json  # 产品知识库(客服的知识来源)
│   └── user_profiles.json            # 用户画像(消费者角色数据)
├── utils/                         # 数据转换工具(辅助)
├── analyze.py                     # 实验结果分析脚本
└── *.md                           # Prompt 的可读版本(参考用)

核心模块说明

模块 文件 职责
Buyer Agent agents/user_agent.py 模拟消费者,基于画像生成自然对话
Seller Agent agents/sales_agent.py 模拟客服,基于知识库+策略推荐产品
Judge Panel agents/judge_agent.py 3 位评审打分(专业度/服务/转化)
Optimizer agents/optimizer_agent.py 参考评分+历史最佳策略,生成新策略
Loop core/optimization_loop.py 编排上述 Agent,管理实验数据持久化
Prompts prompts/prompt_loader.py 所有 Prompt 模板的唯一来源
LLM llm.py Gemini API 调用(JSON 输出模式)

快速开始

1. 环境准备

# Python 3.10+
pip install google-genai

2. 设置 API Key

# Linux / macOS
export GEMINI_API_KEY="your-api-key-here"

# Windows PowerShell
$env:GEMINI_API_KEY = "your-api-key-here"

或直接在 autope/config.py 中修改:

API_KEY = "your-api-key-here"

3. 运行

python run_autope.py

4. 查看结果

运行后会在 exp_history/run_<时间戳>/ 下生成:

文件 内容
rounds.jsonl 每轮完整记录(对话、评分、策略)
qa_pairs.jsonl 每个对话 turn 的详细数据
strategy_history.jsonl 策略演化历史
detailed_logs.jsonl 全量日志

analyze.py 分析结果:

# 修改 analyze.py 中的 base 变量指向目标实验目录
python analyze.py

运行示例

典型控制台输出

=== Round 1 Start ===
  [对话状态判断] continue | 客户还在了解阶段
  [对话状态判断] continue | 客户在询问价格
  [对话状态判断] success | 客户表示愿意下单
分数: 7.33 | 用户ID: 1 | 结果: success
评价: judge_1:推荐方向正确,但可以更深入 | judge_2:服务态度好 | judge_3:成交但过程可以更自然

=== Round 2 Start ===
  [对话状态判断] continue | 双方还在交流
  [对话状态判断] end | 对话自然结束
分数: 5.67 | 用户ID: 2 | 结果: end
评价: judge_1:推荐缺乏针对性 | judge_2:节奏太快 | judge_3:未推进到决策阶段

=== Round 3 Start ===
  ...
分数: 6.50 | 用户ID: 3 | 结果: success

执行策略优化...
策略已更新

策略演化示例

初始策略(Round 1-3):

- 礼貌开场,了解客户的使用场景和预算。
- 不要一次推荐太多产品,先聚焦客户最关心的需求。

优化后策略(Round 4+):

- 开场先确认客户身份和使用场景,不急于推荐。
- 针对客户提到的具体痛点,从知识库中精准匹配1-2款产品。
- 用对比方式帮客户理解不同产品的差异,而不是单方面推销。
- 客户犹豫时,主动提供试用体验或无理由退换的信息降低决策风险。

配置参数

autope/config.py 中调整:

参数 默认值 说明
MODEL_NAME gemini-3-flash-preview LLM 模型
TEMPERATURE 0.8 生成温度
MAX_OUTPUT_TOKENS 2000 最大输出 token
DEFAULT_MAX_TURNS 20 单轮对话最大 turn 数
DEFAULT_REPEAT_TIMES 3 每个用户画像重复次数
DEFAULT_USER_LIMIT 20 使用的用户画像数量上限

扩展指南

自定义用户画像

编辑 data/user_profiles.json,保持以下结构:

{
    "user_id": 1,
    "full_profile": {
        "人口信息": { "姓名": "...", "职业": "...", ... },
        "心理特征": { "性格": "...", ... },
        "动态特征": { "使用经历": "...", "产品需求": "...", ... }
    },
    "seller_view": {
        "known_info": { "人口信息": { ... } },
        "inferred_profile": {
            "心理特征": { "性格": "Unknown", ... },
            "动态特征": { "使用经历": "Unknown", ... }
        }
    }
}

full_profile = Buyer 可见的完整画像(上帝视角) seller_view = Seller 初始只能看到 known_info,通过对话逐步推断 inferred_profile

自定义产品知识库

编辑 data/business_knowledge_base.json,添加你的产品和服务信息。

自定义 Prompt

所有 Prompt 集中在 autope/prompts/prompt_loader.py,修改对应的模板变量即可。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages