feat: 完整功能部署 v1.0
新增功能: - 天网协作系统 (HTTP API 端口 6060) - 三种工作流 (查找图片/处理图片/转人工派单) - 图片任务数据库 (支持客户后续增加需求) - 图绘派单系统集成 (API: 8005) - 文字检测与加价 (60-80 元高价值订单) - 风险评估与接单判断 - 作图失败自动转人工 新增文档: - 项目功能汇总.md - 三种工作流功能说明.md - 文字加价功能说明.md - 风险评估功能说明.md - 图片任务数据库功能说明.md - 图绘派单系统集成说明.md - 作图失败转接人工说明.md - DEPLOYMENT.md - TIANWANG_INTEGRATION.md 核心修改: - core/pydantic_ai_agent.py - core/workflow.py - core/websocket_client.py - image/image_analyzer.py - services/service_tuhui_dispatch.py - db/image_tasks_db.py 版本:v1.0 日期:2026-02-28
This commit is contained in:
101
features/price_negotiation_with_registration.md
Normal file
101
features/price_negotiation_with_registration.md
Normal file
@@ -0,0 +1,101 @@
|
||||
# 压价引导注册功能
|
||||
|
||||
## 功能说明
|
||||
|
||||
当客户觉得价格太贵时,AI 客服会分两步应对:
|
||||
|
||||
### 第一步:直接让价
|
||||
- 只让价一次
|
||||
- 不低于底线价格
|
||||
- 话术自然多变
|
||||
|
||||
### 第二步:引导客户自己去注册
|
||||
如果让价后客户还是嫌贵,引导客户**自己去注册 xinhui.cloud**获取新用户余额。
|
||||
|
||||
## ⚠️ 核心要求
|
||||
|
||||
1. **每个话术都必须带网站地址 xinhui.cloud**
|
||||
2. **强调客户自己去弄**(自己去操作/自己下单/自己弄)
|
||||
3. 语气直接,不要软
|
||||
4. 不要说具体金额
|
||||
|
||||
## 触发条件
|
||||
|
||||
客户消息包含以下关键词:
|
||||
- "贵"
|
||||
- "有点贵"
|
||||
- "太贵了"
|
||||
- "便宜点"
|
||||
- "少点"
|
||||
- "打折"
|
||||
|
||||
## 话术示例(每个都带网站)
|
||||
|
||||
### 让价话术
|
||||
- "那给你少点,XX 吧"
|
||||
- "最低 XX 了"
|
||||
- "给你个优惠价 XX"
|
||||
- "看你诚心要,XX 给你"
|
||||
|
||||
### 注册引导话术(让价后仍嫌贵时使用)
|
||||
**每个话术都必须包含 xinhui.cloud 网址!**
|
||||
|
||||
1. 「嫌贵就去 xinhui.cloud 注册个号,自己有余额可以弄」
|
||||
2. 「xinhui.cloud 去注册下,新用户送体验金,自己弄便宜」
|
||||
3. 「去 xinhui.cloud 注册个账号,里面有余额,自己下单划算」
|
||||
4. 「自己上 xinhui.cloud 注册,新人有福利,比直接找我便宜」
|
||||
5. 「xinhui.cloud 去注册个号,自己充值有优惠,自己弄吧」
|
||||
6. 「嫌贵就自己去 xinhui.cloud 弄,注册送余额,比找我划算」
|
||||
7. 「xinhui.cloud 注册个号,自己充值自己弄,便宜些」
|
||||
8. 「去 xinhui.cloud 注册,里面有余额可以用,自己操作吧」
|
||||
|
||||
## 对话示例
|
||||
|
||||
```
|
||||
客户:这个多少钱?
|
||||
AI: 20 元
|
||||
|
||||
客户:太贵了,便宜点吧
|
||||
AI: 那给你少点,15 吧
|
||||
|
||||
客户:还是有点贵
|
||||
AI: 嫌贵就去 xinhui.cloud 注册个号,自己有余额可以弄
|
||||
```
|
||||
|
||||
或:
|
||||
|
||||
```
|
||||
客户:有点贵啊
|
||||
AI: 最低 15 了
|
||||
|
||||
客户:还是贵
|
||||
AI: xinhui.cloud 去注册下,新用户送体验金,自己弄便宜
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. ⚠️ **每个话术都必须带 xinhui.cloud 网址**
|
||||
2. ⚠️ **强调"自己去弄""自己操作""自己下单"**
|
||||
3. 不说具体余额金额
|
||||
4. 每次选择不同话术变体
|
||||
5. 只在让价后仍嫌贵时使用
|
||||
6. 语气直接,不要软
|
||||
|
||||
## 代码位置
|
||||
|
||||
- 技能文档:`/skills/customer-service/customer-skill.md`
|
||||
- Agent 代码:`/core/pydantic_ai_agent.py` 第 1745 行
|
||||
|
||||
## 测试方法
|
||||
|
||||
```bash
|
||||
# 启动 AI 客服系统
|
||||
systemctl start ai-cs
|
||||
|
||||
# 查看日志
|
||||
journalctl -u ai-cs -f
|
||||
```
|
||||
|
||||
模拟客户消息:"太贵了,便宜点吧"
|
||||
|
||||
预期 AI 回复:先让价,如仍嫌贵则引导客户自己去 xinhui.cloud 注册
|
||||
129
features/risk_customer_detection.md
Normal file
129
features/risk_customer_detection.md
Normal file
@@ -0,0 +1,129 @@
|
||||
# 找茬客户识别功能
|
||||
|
||||
## 功能说明
|
||||
|
||||
识别高风险找茬客户,建议 AI 客服不做这单,直接拒绝或转人工。
|
||||
|
||||
---
|
||||
|
||||
## 🚨 高风险信号(识别 3 个以上→拒绝接单)
|
||||
|
||||
| 信号 | 示例 | 风险等级 |
|
||||
|------|------|----------|
|
||||
| **下单后立即申请退款** | 刚拍下就退款 0.88 元 | 🔴 高 |
|
||||
| **从高价砍到低价** | 30 元砍到 10 元 | 🔴 高 |
|
||||
| **反复问退款(2 次+)** | "不满意可以退吗"×2 | 🔴 高 |
|
||||
| **质疑服务内容** | "源文件还是什么" | 🟡 中 |
|
||||
| **质疑价值** | "就一张图片" | 🟡 中 |
|
||||
| **想占便宜** | "小一点就快一点的嘛" | 🟡 中 |
|
||||
| **重复问同一问题** | 同样的问题问 2 次+ | 🔴 高 |
|
||||
|
||||
---
|
||||
|
||||
## 应对策略
|
||||
|
||||
### 识别到 3 个以上高风险信号
|
||||
|
||||
**直接拒绝接单**
|
||||
|
||||
**话术示例**:
|
||||
- 「不好意思,这单做不了」
|
||||
- 「去别家做吧」
|
||||
- 「这单接不了,你找别人吧」
|
||||
|
||||
**不要**:
|
||||
- ❌ 不要解释原因
|
||||
- ❌ 不要讨价还价
|
||||
- ❌ 不要妥协
|
||||
|
||||
---
|
||||
|
||||
## 真实案例分析
|
||||
|
||||
### 案例:高风险找茬客户
|
||||
|
||||
**对话记录**:
|
||||
```
|
||||
客户:这个原图有吗
|
||||
AI: 没问题,拍下安排。
|
||||
客户:拍啦
|
||||
[客户立即申请退款 0.88 元]
|
||||
客户:太贵了,10 元
|
||||
AI: 30
|
||||
[退款成功]
|
||||
客户:要多久?
|
||||
客户:300×50cm
|
||||
AI: 1 个小时
|
||||
客户:小一点就快一点的嘛
|
||||
客户:20 可以吗
|
||||
AI: [不回应]
|
||||
客户:25
|
||||
客户:源文件还是什么?
|
||||
客户:就一张图片
|
||||
客户:不满意可以退吗
|
||||
客户:不满意可以退吗(第 2 次问)
|
||||
AI: 去别家做吧
|
||||
```
|
||||
|
||||
**风险信号识别**:
|
||||
1. ✅ 下单后立即申请退款
|
||||
2. ✅ 从 30 砍到 10 元
|
||||
3. ✅ 质疑价值("就一张图片")
|
||||
4. ✅ 想占便宜("小一点就快一点")
|
||||
5. ✅ 重复问退款(2 次)
|
||||
|
||||
**结论**:5 个高风险信号 → **拒绝接单** ✅
|
||||
|
||||
---
|
||||
|
||||
## 代码位置
|
||||
|
||||
- Agent 代码:`/core/pydantic_ai_agent.py` - 找茬客户识别规则
|
||||
- 技能文档:`/skills/customer-service/customer-skill.md` - 客服话术指南
|
||||
|
||||
---
|
||||
|
||||
## 测试方法
|
||||
|
||||
### 模拟高风险客户
|
||||
|
||||
```bash
|
||||
# 启动 AI 客服
|
||||
systemctl start ai-cs
|
||||
|
||||
# 查看日志
|
||||
journalctl -u ai-cs -f
|
||||
```
|
||||
|
||||
**模拟对话**:
|
||||
```
|
||||
客户:20 可以吗
|
||||
AI: 最低 30
|
||||
客户:25
|
||||
客户:不满意可以退吗
|
||||
客户:不满意可以退吗(第 2 次)
|
||||
```
|
||||
|
||||
**预期 AI 回复**:
|
||||
- 「不好意思,这单做不了」
|
||||
- 「去别家做吧」
|
||||
|
||||
---
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **识别 3 个以上信号才拒绝**:不要误伤正常客户
|
||||
2. **话术简洁**:不要解释原因
|
||||
3. **态度坚定**:不要妥协
|
||||
4. **不调用报价工具**:直接拒绝
|
||||
|
||||
---
|
||||
|
||||
## 与转人工的区别
|
||||
|
||||
| 情况 | 处理方式 |
|
||||
|------|----------|
|
||||
| 退款/投诉/情绪激动 | 转人工 |
|
||||
| 找茬客户(3 个+信号) | 直接拒绝 |
|
||||
| 敏感内容 | 直接拒绝 |
|
||||
|
||||
158
features/text_surcharge.md
Normal file
158
features/text_surcharge.md
Normal file
@@ -0,0 +1,158 @@
|
||||
# 文字加价功能
|
||||
|
||||
## 功能说明
|
||||
|
||||
当识别到图片含有很多文字时,AI 客服系统会自动提高报价,不能低价。
|
||||
|
||||
**核心原则**:有文字跟没文字是两个价格!
|
||||
|
||||
---
|
||||
|
||||
## 价格规则
|
||||
|
||||
### 含文字很多时
|
||||
|
||||
| 原复杂度 | 原价区间 | 加价后 | 加价后区间 |
|
||||
|---------|---------|--------|----------|
|
||||
| simple | 10-15 元 | → normal | 15-20 元 |
|
||||
| normal | 15-20 元 | → complex | 20-25 元 |
|
||||
| complex | 20-25 元 | 保持不变 | 20-25 元 |
|
||||
| hard | 25-30 元 | 保持不变 | 25-30 元 |
|
||||
|
||||
### 判断标准
|
||||
|
||||
**含文字很多**(需要加价):
|
||||
- ✅ 图片里有大量小字
|
||||
- ✅ 需要精细保留文字清晰度
|
||||
- ✅ 文字需要清晰化处理
|
||||
|
||||
**不含文字或文字很少**(不加价):
|
||||
- ❌ 图片干净,没文字
|
||||
- ❌ 只有零星几个大字
|
||||
|
||||
---
|
||||
|
||||
## 代码修改
|
||||
|
||||
### 1. image_analyzer.py
|
||||
|
||||
文件:`/root/ai_customer_service/ai_cs/image/image_analyzer.py`
|
||||
|
||||
**修改位置**:第 528-542 行
|
||||
|
||||
```python
|
||||
# 【重要】含文字很多时,不能低价,必须 complex 起步(20 元以上)
|
||||
# 有文字跟没文字是两个价格
|
||||
if has_text == "yes":
|
||||
if complexity == "simple":
|
||||
# 简单但含文字 → 提升到 normal 价格
|
||||
price_min, price_max = self.PRICE_MAP["normal"]
|
||||
reason = "含文字,需精细处理"
|
||||
elif complexity == "normal":
|
||||
# normal 含文字 → 提升到 complex 价格
|
||||
price_min, price_max = self.PRICE_MAP["complex"]
|
||||
reason = "含文字,需精细处理"
|
||||
# complex/hard 保持原价,已经够高
|
||||
```
|
||||
|
||||
### 2. pydantic_ai_agent.py
|
||||
|
||||
文件:`/root/ai_customer_service/ai_cs/core/pydantic_ai_agent.py`
|
||||
|
||||
**修改位置**:第 863-869 行
|
||||
|
||||
```python
|
||||
【文字加价规则】⚠️ 重要
|
||||
- 含文字很多时不能低价,有文字跟没文字是两个价格
|
||||
- 含文字的图必须 complex 起步(20 元以上)
|
||||
- 客户嫌贵时明确告知:「有文字跟没文字是两个价格」
|
||||
- 简单图但含文字 → normal 价格(15-20 元)
|
||||
- normal 图含文字 → complex 价格(20-25 元)
|
||||
```
|
||||
|
||||
### 3. customer-skill.md
|
||||
|
||||
文件:`/root/ai_customer_service/ai_cs/skills/customer-service/customer-skill.md`
|
||||
|
||||
**新增章节**:⑫ 文字加价规则
|
||||
|
||||
---
|
||||
|
||||
## 对话示例
|
||||
|
||||
### 示例 1:简单图但含文字
|
||||
|
||||
```
|
||||
客户:[发送一张含文字的图片]
|
||||
AI: 图里有不少字,要精细处理,20 元
|
||||
客户:这么贵
|
||||
AI: 有文字的图跟没文字的价格不一样,已经是最低价了
|
||||
```
|
||||
|
||||
### 示例 2:normal 图含文字
|
||||
|
||||
```
|
||||
客户:这个多少钱?
|
||||
AI: 25 元
|
||||
客户:太贵了
|
||||
AI: 含文字的图要精细处理,成本更高,跟没文字的价格不一样
|
||||
```
|
||||
|
||||
### 示例 3:客户问为什么贵
|
||||
|
||||
```
|
||||
客户:这个为什么比那个贵?
|
||||
AI: 这个图含文字,需要精细处理,有文字跟没文字是两个价格
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 话术要点
|
||||
|
||||
### 必须包含的信息
|
||||
1. ✅ 明确告知「有文字跟没文字是两个价格」
|
||||
2. ✅ 说明「文字需要精细处理」
|
||||
3. ✅ 强调「已经是最低价」
|
||||
|
||||
### 常用话术
|
||||
- 「有文字跟没文字是两个价格」
|
||||
- 「文字处理要精细,成本高」
|
||||
- 「含文字的图都这个价」
|
||||
- 「文字越多越贵」
|
||||
- 「已经是最低价了,含文字的都这样」
|
||||
|
||||
---
|
||||
|
||||
## 测试方法
|
||||
|
||||
### 测试步骤
|
||||
|
||||
1. **准备测试图片**
|
||||
- 一张含有很多小字的图片
|
||||
- 一张干净的图片(对比)
|
||||
|
||||
2. **发送给 AI 客服**
|
||||
```bash
|
||||
systemctl start ai-cs
|
||||
journalctl -u ai-cs -f
|
||||
```
|
||||
|
||||
3. **验证报价**
|
||||
- 含文字图片:应该报价 20 元以上
|
||||
- 干净图片:正常报价 10-15 元
|
||||
|
||||
### 预期结果
|
||||
|
||||
- ✅ 含文字图片自动加价
|
||||
- ✅ 客户嫌贵时明确告知「有文字跟没文字是两个价格」
|
||||
- ✅ 价格必须为 5 的整数倍
|
||||
|
||||
---
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. **只针对小字**:大字不加价
|
||||
2. **价格必须为 5 的倍数**:15/20/25/30
|
||||
3. **明确告知客户**:不要偷偷加价
|
||||
4. **坚持原则**:客户嫌贵也要说明原因
|
||||
|
||||
137
features/tuhui_upload.md
Normal file
137
features/tuhui_upload.md
Normal file
@@ -0,0 +1,137 @@
|
||||
# 图绘上传功能
|
||||
|
||||
## 功能说明
|
||||
|
||||
AI 客服处理完图片后,上传到图绘平台并定价,告诉客户「这个图片是找到的」,然后问客户要下载还是购买。
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 重要话术
|
||||
|
||||
**必须说**:
|
||||
- ✅ 「找到了!图片已经上传到图绘平台了」
|
||||
- ✅ 「你是要下载还是直接购买?」
|
||||
- ✅ 「价格 XX 元」
|
||||
|
||||
**不要说**:
|
||||
- ❌ 「处理好了」
|
||||
- ❌ 「修复好了」
|
||||
- ❌ 「AI 修复的」
|
||||
|
||||
---
|
||||
|
||||
## 使用流程
|
||||
|
||||
1. **客户发图** → AI 客服收到图片
|
||||
2. **图片处理** → 调用图片处理工具
|
||||
3. **上传图绘** → 调用 `upload_to_tuhui_platform()` 工具
|
||||
4. **返回话术** → 「找到了!...你是要下载还是购买?」
|
||||
|
||||
---
|
||||
|
||||
## 对话示例
|
||||
|
||||
### 示例 1:标准流程
|
||||
|
||||
```
|
||||
客户:[发送图片]
|
||||
AI: 收到了,稍等...
|
||||
|
||||
[AI 调用图片处理工具]
|
||||
[AI 调用 upload_to_tuhui_platform 工具]
|
||||
|
||||
AI: 找到了!图片已经上传到图绘平台了,作品 ID: 123
|
||||
AI: 你是要下载还是直接购买?价格 20 元。
|
||||
```
|
||||
|
||||
### 示例 2:客户选择下载
|
||||
|
||||
```
|
||||
AI: 找到了!图片已经上传到图绘平台了
|
||||
AI: 你是要下载还是直接购买?价格 20 元。
|
||||
|
||||
客户:下载
|
||||
AI: 好的,拍下后就可以下载了
|
||||
```
|
||||
|
||||
### 示例 3:客户选择购买
|
||||
|
||||
```
|
||||
AI: 你是要下载还是直接购买?价格 20 元。
|
||||
|
||||
客户:购买
|
||||
AI: 好的,拍下就行,付款后发你高清原图
|
||||
```
|
||||
|
||||
### 示例 4:客户问在哪里
|
||||
|
||||
```
|
||||
客户:弄好了吗
|
||||
AI: 找到了,已经上传到图绘平台了
|
||||
AI: 作品 ID: 123,你是要下载还是购买?
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 配置说明
|
||||
|
||||
### .env 配置
|
||||
|
||||
```bash
|
||||
# 图绘平台配置
|
||||
TUHUI_BASE_URL=http://127.0.0.1:8002
|
||||
TUHUI_PHONE=17520145271 # 图绘账号手机号
|
||||
TUHUI_PASSWORD=zuowei1216 # 图绘账号密码
|
||||
TUHUI_DEFAULT_PRICE=20 # 默认定价(元)
|
||||
```
|
||||
|
||||
### AI Agent 工具
|
||||
|
||||
```python
|
||||
@self.agent.tool
|
||||
async def upload_to_tuhui_platform(
|
||||
ctx: RunContext[AgentDeps],
|
||||
image_path: str,
|
||||
title: str,
|
||||
price: int = 20
|
||||
) -> str:
|
||||
"""将处理好的图片上传到图绘平台并定价"""
|
||||
# 返回:「找到了!图片已经上传到图绘平台了,作品 ID: 123。你是要下载还是直接购买?价格 20 元。」
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 代码位置
|
||||
|
||||
- 上传服务:`/services/service_tuhui_upload.py`
|
||||
- Agent 工具:`/core/pydantic_ai_agent.py` 第 220 行
|
||||
- 客服话术:`/skills/customer-service/customer-skill.md` 第⑭节
|
||||
|
||||
---
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. ⚠️ **必须说「找到了」**,不要说「处理好了」
|
||||
2. ⚠️ **必须问「要下载还是购买」**
|
||||
3. ⚠️ **必须说价格**
|
||||
4. ✅ 图片是"找到的",不是"处理的"
|
||||
5. ✅ 客户可以选择下载或购买
|
||||
|
||||
---
|
||||
|
||||
## 测试方法
|
||||
|
||||
```bash
|
||||
# 1. 配置图绘账号
|
||||
vi /root/ai_customer_service/ai_cs/.env
|
||||
|
||||
# 2. 重启 AI 客服
|
||||
systemctl restart ai-cs
|
||||
|
||||
# 3. 查看日志
|
||||
journalctl -u ai-cs -f
|
||||
|
||||
# 4. 发送图片测试
|
||||
# 观察日志中的上传结果和话术
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user