forked from Ikalus1988/MisakaNet
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlesson-wxauto-im-feedback-collection-jsonl-queu.json
More file actions
16 lines (16 loc) · 2.02 KB
/
Copy pathlesson-wxauto-im-feedback-collection-jsonl-queu.json
File metadata and controls
16 lines (16 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"task_id": "lesson-wxauto-im-feedback-collection-jsonl-queu",
"title": "IM 机器人反馈收集与 JSONL 队列审核模式",
"domain": "rag",
"tags": [
"rag",
"feedback",
"queue",
"jsonl",
"wechat"
],
"problem": "RAG 知识库的 IM 机器人(wxauto 微信)只提供单向问答能力,用户不满意时无反馈渠道。知识库质量改进完全依赖离线人工审计,无法捕捉真实使用场景中的问题。",
"solution": "实现三部分:\n\n### 1. 反馈关键词拦截\n在消息处理循环中,先于所有问答逻辑检查内容是否为反馈关键词:\n\n```python\nFB_GOOD = {\"好评\", \"👍\", \"good\", \"好用\", \"准确\", \"正确\", \"赞\"}\nFB_BAD = {\"差评\", \"👎\", \"bad\", \"不好用\", \"不对\", \"错了\", \"错误\", \"不准确\"}\n\nif any(k in cleaned_text for k in FB_BAD):\n # 写入 badcase_pending.jsonl\nelif any(k in cleaned_text for k in FB_GOOD):\n # 写入 approved 队列(作为正样本)\n```\n\n### 2. 会话级上下文追踪\n维护 `_last_question[sender]` 字典,记录每位用户的上一条提问。\n\n```python\n# 正常回答后记录\n_last_question[sender_key] = current_question\n\n# 用户说\"差评\"时取出\nkb_learning.add_feedback(\n query_text=_last_question.get(sender_key, \"\"),\n feedback=\"bad\",\n sender=sender,\n)\n```\n\n### 3. JSONL 作为审核队列\n\nJSONL(每行一个 JSON 对象)作为待审队列格式的优势:\n- 可读性:任何文本编辑器可直接查看和修改\n- 可追加:`open(\"file\", \"a\")` 原子追加,无需锁\n- 可过滤:grep / jq / Python list comprehension 都支持\n- 零依赖:Python 标准库即可读写\n\n```\nbadcase_pending.jsonl ←── daily_audit 写入 + IM 反馈写入\n │\n badcase_review.py 审核\n │\n ├── approve → badcase_approved.jsonl\n └── reject → badcase_rejected.jsonl\n```",
"source": "lessons/contrib/wxauto-im-feedback-collection-jsonl-queue.md",
"test_cmd": ""
}