Files
tw/项目功能汇总.md
jimi c39840fe15 feat: 添加 AI Agent 对话测试工具 + 代码优化
主要变更:

- 新增 tests/test_ai_chat.py: AI Agent 对话测试工具

- 优化 core/pydantic_ai_agent.py 和 db/chat_log_db.py

- 清理归档文件,更新文档

Made-with: Cursor
2026-02-28 16:19:35 +08:00

13 KiB
Raw Blame History

AI 客服系统 - 完整功能汇总

版本: v1.0 | 更新日期: 2026-02-28 | 服务器: 1.12.50.92


目录

  1. 天网协作系统
  2. 三种工作流
  3. 文字检测与加价
  4. 风险评估与接单判断
  5. 作图失败转接人工
  6. 图片任务数据库
  7. 图绘派单系统
  8. 价格策略总览
  9. 技术架构

天网协作系统

说明: 接收天网下发的任务,支持指定客户回复触发。

API 地址: http://127.0.0.1:6060

接口列表:

接口 方法 说明
/api/task/receive POST 接收任务
/api/task/status/:id GET 查询任务状态
/api/task/cancel POST 取消任务
/api/task/list GET 任务列表
/api/health GET 健康检查

触发类型:

类型 说明
specified_customer_reply 指定客户回复指定内容(推荐)
customer_reply 任意客户回复指定内容
customer_keyword 任意客户说某关键词
customer_payment 客户付款
time_reach 到达指定时间

详细的 API 接口文档、请求示例、数据库结构等见 部署文档.md


三种工作流

根据客户说的话,自动判断执行不同的工作流程。

工作流 1查找图片

触发词: "找一下"、"找图"、"找原图"、"帮我找"、"能找到吗"、"有吗"、"有没有"

客户:找一下这个图 [图片]
  ↓
AI 检测到"找一下"关键词 → 执行查找图片工作流
  ↓
1. 创建任务operation=find
2. 上传图片到图绘平台
3. 更新任务状态为 completed
  ↓
AI: 找到了图片在这里http://tuhui.cloud/works/123

工作流 2处理图片

触发词: "做一下"、"处理一下"、"安排"、"开始做"、"弄一下"、"修一下"、"P一下"、"P图"

客户:做一下 [图片]
  ↓
AI 检测到"做一下"关键词 → 执行处理图片工作流
  ↓
1. 创建任务operation=enhance
2. 回复"稍等,我看看...好的,可以做,马上处理"
3. 启动图片处理流程
  ↓
AI: 做好了,请查看 [结果图]

工作流 3转人工派单

触发词: "做不了"、"处理不了"、"弄不了"、"无法处理"、"做不到"、"搞不定"

AI 判断无法处理 / 客户说"做不了"
  ↓
执行转人工派单工作流
  ↓
1. 创建任务operation=manual
2. 查询在线设计师
3. 有人在线 → 派单;无人 → 通知稍后联系
  ↓
AI: 好的,已帮您安排设计师处理,请稍候

技术实现

组件 文件 说明
工作流路由器 core/workflow_router.py 关键词检测与匹配
工作流执行器 core/workflow.py 三种工作流的具体实现
消息处理器 core/pydantic_ai_agent.py _handle_image_workflow() 方法

注意事项:

  • 关键词匹配支持多种说法,自动识别
  • 置信度 >0.9 才执行对应工作流
  • 无人在线时通知客户稍后联系,企业微信预警
  • 所有工作流都保存到数据库

文字检测与加价

AI 客服自动分析图片中的文字数量,根据文字数量和分层需求自动加价。

文字数量加价

文字数量 加价
none +0 元
少量 (1-10 字) +5 元
中量 (11-50 字) +15 元
大量 (51-200 字) +30 元
极多 (200 字以上) +50 元

文字分层需求加价

分层需求 加价
no +0 元
yes有文字 +50 元起
yes无文字 +30 元

特殊价格

条件: 文字数量=大量/极多 且 分层需求=yes → 60-80 元

使用场景

场景 1: 少量文字,不分层

  • 复杂度 simple + 少量文字 → 15 + 5 = 20 元
  • AI: "这张图比较简单不过有少量文字需要处理20 元。"

场景 2: 大量文字,需要分层

  • 复杂度 complex + 大量文字 + 分层 → 调整到 80 元
  • AI: "这张图文字比较多,有 100 多字需要分层文件80 元。"

价格计算流程

客户发送图片 → 判断基础复杂度 → 检测文字数量 → 询问分层需求
  → 计算总价(基础+文字+分层)→ 特殊价格处理60-80 元)→ 报价

配置位置

修改价格规则: image/image_analyzer.py(查找文字加价相关代码)

注意事项:

  • 文字数量通过视觉 AI 自动识别
  • 分层需求需从对话中识别
  • 最终价格必须是 5 的倍数

风险评估与接单判断

AI 客服自动分析图片风险,判断是否可以接单。

敏感内容检测(一票否决)

敏感内容 = yes → 直接拒绝,不接单

检测内容: 色情/黄色/擦边/裸露、性暗示、涉政/政治敏感、暴力/血腥、违禁品

话术: "这类不做哦" / "不好意思,这个接不了"

禁止说: "发图来看看"、过多解释

风险等级

风险 是否接单 说明
none 接单 印花/图案/logo/风景/产品,效果稳定
low 接单 有人脸但清晰,需说明风险(相似度 70-90%
high ⚠️ 谨慎 严重模糊/老照片人像/需打印,需说明限制

可做判断

可做 是否接单 说明
yes 接单 效果有把握
partial ⚠️ 可接 能处理但有限制,需说明风险
no 不接 无法处理(纯黑/纯白/完全损坏/敏感内容)

分析流程

客户发送图片 → 敏感内容检测yes→拒绝→ 风险评估none/low/high
  → 可做判断yes/partial/no→ 决策(接单/谨慎/拒绝)→ 回复客户

话术模板

高风险提示:

  • "这张比较模糊,修复后清晰了但人脸可能跟原来有差异"
  • "老照片修复后人脸可能有轻微变化"
  • "建议先看效果确认再打印"

正常接单:

  • "这个没问题XX 元"
  • "可以处理XX 元,满意再付"

配置位置

  • 风险判断规则: image/image_analyzer.py(查找"风险评估""敏感内容检测"
  • 拒绝话术: core/pydantic_ai_agent.py(查找"拒绝"

作图失败转接人工

当 AI 作图失败或效果不佳时,系统自动转接人工客服。

触发场景

场景 触发条件 话术
AI 作图失败 API 报错/超时/质量不达标 "处理遇到点问题,我帮您转接人工"
客户不满意 说"效果不好"/"不满意"/要求重做 "好的,我帮您转接人工客服处理"
特殊要求 AI 无法处理的复杂需求 "这个需求比较特殊,帮您转接人工"

转接流程

作图失败/客户不满意 → 通知客户 → 转接人工客服 → 企业微信预警

技术实现

  • 失败检测: core/pydantic_ai_agent.py 中的 process_image_gemini 函数
  • 转接工具: transfer_to_human tool标记 need_transfer=True

注意事项:

  • 作图失败必须转人工,不自动重试超过 2 次
  • 转接前告知客户原因
  • 记录转接原因便于后续优化

图片任务数据库

图片任务保存到 SQLite 数据库,支持持久化和需求变更。

数据库表

image_tasks图片任务表:

字段 类型 说明
task_id TEXT 任务 ID主键
customer_id TEXT 客户 ID
original_image TEXT 原图 URL
operation TEXT 操作类型enhance/remove_bg/vectorize
requirements TEXT 需求 JSON
customer_notes TEXT 客户备注/需求细节
status TEXT 状态
result_image TEXT 结果图 URL
error_message TEXT 错误信息
retry_count INTEGER 重试次数
acc_id / acc_type TEXT 店铺 ID / 平台类型
created_at / paid_at / completed_at TEXT 时间戳

task_requirement_changes需求变更表:

字段 类型 说明
task_id TEXT 任务 ID外键
change_type TEXT 变更类型add_note/modify_operation/add_requirement
old_value / new_value TEXT 变更前后值
changed_at TEXT 变更时间
changed_by TEXT 变更者customer/staff

任务状态流转

pending待付款→ paid已付款→ processing处理中→ awaiting_confirm待确认→ completed已完成
                                                                                 ↘ failed失败

API 接口

# 创建任务
workflow.create_image_task(customer_id, original_image, operation)

# 添加需求
await workflow.add_customer_requirement(task_id, customer_id, requirement)

# 修改操作类型
await workflow.modify_operation(task_id, customer_id, new_operation)

# 查询任务
task = workflow.get_task(task_id)
tasks = workflow.get_customer_tasks(customer_id)

# 查询需求变更历史
history = workflow.get_task_requirement_history(task_id)

数据库操作

sqlite3 /root/ai_customer_service/ai_cs/db/image_tasks.db

# 查询所有任务
SELECT task_id, customer_id, status, created_at FROM image_tasks ORDER BY created_at DESC LIMIT 10;

# 查询待处理任务
SELECT * FROM image_tasks WHERE status='pending';

# 查询需求变更
SELECT task_id, change_type, old_value, new_value, changed_at FROM task_requirement_changes WHERE task_id='TASK_001';

注意事项:

  • 所有任务自动保存,重启不丢失
  • 付款前可修改操作类型,付款后不允许
  • 所有变更都有历史记录

图绘派单系统

AI 客服系统接入图绘派单系统 API实现自动派单给在线设计师。

API 信息

项目
API 地址 http://1.12.50.92:8005
API Key tuhui_dispatch_key_2026
认证方式 Header: X-API-Key

核心接口

接口 方法 说明
/dispatch/queue GET 获取派单队列
/online/designers GET 获取在线设计师
/tasks POST 创建任务
/tasks/{id}/assign POST 分配任务
/tasks/{id} GET 查询任务状态
/tasks/{id}/complete POST 完成任务

转人工派单流程

AI 判断做不了
  ↓
1. 查询在线设计师 → GET /online/designers → ["橘子", "婷婷"]
  ↓
2. 创建派单任务 → POST /tasks → {"task_id": "ea853bd9"}
  ↓
3. 分配给设计师 → POST /tasks/ea853bd9/assign → {"designer_name": "橘子"}
  ↓
4. 企业微信通知设计师
  ↓
5. 回复客户:"好的,已帮您安排设计师处理,请稍候"

代码调用示例

from services.service_tuhui_dispatch import get_tuhui_dispatch_client

client = get_tuhui_dispatch_client()

# 查询在线设计师
designers = await client.get_online_designers()  # ["橘子", "婷婷"]

# 创建任务
task_id = await client.create_task(
    task_name="图片处理-1234",
    description="客户需要做高清修复",
    task_type="image_process",
    priority=2
)

# 分配任务
await client.assign_task(task_id, designer_name="橘子", notes="AI 客服自动派单")

# 完成任务
await client.complete_task(task_id, notes="客户已确认")

设计师在线状态 API

GET  http://huichang.online:8001/online         # 查询在线设计师
POST http://huichang.online:8001/update-status   # 更新设计师状态

相关代码位置

组件 文件
派单客户端 services/service_tuhui_dispatch.pyTuhuiDispatchClient 类)
工作流集成 core/workflow.pytransfer_to_designer_workflow() 方法)

价格策略总览

基础价格

复杂度 价格区间 说明
simple 10-15 元 画面简单干净
normal 15-20 元 一般复杂度
complex 20-25 元 细节偏多
hard 25-30 元 非常复杂

加价规则

项目 条件 加价
文字少量 1-10 字 +5 元
文字中量 11-50 字 +15 元
文字大量 51-200 字 +30 元
文字极多 200+ 字 +50 元
分层(有文字) 需要 PSD 分层 +50 元起
分层(无文字) 仅需分层 +30 元

高价值订单

文字分层 + 大量文字 → 特殊价格 60-80 元(封顶)


技术架构

核心组件

组件 文件 说明
天网协作 api/http_server.py HTTP API 服务器
工作流程 core/workflow.py 工作流执行器
AI Agent core/pydantic_ai_agent.py AI 对话引擎
图片分析 image/image_analyzer.py 图片复杂度识别
派单客户端 services/service_tuhui_dispatch.py 图绘派单 API
任务数据库 db/image_tasks_db.py 任务持久化

数据库

数据库 位置 说明
任务数据库 db/image_tasks.db 图片任务
客户档案 db/customer.db 客户画像
聊天记录 chat_log_db/chat_log.db 聊天历史
天网任务 db/task_db/tasks.db 天网任务调度

API 端口

服务 端口 说明
AI 客服 API 6060 天网任务接收
派单系统 8005 设计师派单
图绘平台 8002 图片上传