Files
life-echo/api/app/features/evaluation/rubrics/memoir_v1.py
Kevin 3121d1384d WIP: memory system improvements (in progress)
Interview/chat prompt layers, reply planner, style profiles, memory
injection, interview meta store, and related tests. Work not finished.

Made-with: Cursor
2026-04-22 16:56:28 +08:00

96 lines
7.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""回忆录成稿评审 rubric 文本v1 · 子项上限合计 100 分制)。
说明:原产品表九个大类上限之和为 110本 rubric 将各细项上限整档收紧,使九类小计之和为 100
便于与 `total_score` 直接一致,无需再折算。
"""
_MEMOIR_CHARTER = """
## 评审总原则(必须遵守)
- **证据层级**:以【原始访谈/对话证据】+【结构化记忆证据】共同为 artifact 绑定闭包;二者缺一不可时不等于「无证据」——须区分「证据未进 prompt见评审说明中的截断」与「数据库确无 lineage」。【参考基线/导出成稿】仅辅助对照,不得以基线对错代替证据对错。
- 只依据输入中可核对的文字评分;不得臆测用户人生经历。
- **缺少原文证据不等于「写得好」**:无证据或证据极短时,`mem_fidelity`、`mem_factual_coverage`、`mem_traceability` 等须保守,并在 `insufficient_evidence` 说明。
- **文笔与结构不得抵消事实问题**`lang_*`、`narr_*` 高分不得与明显编造、张冠李戴并存。
- **反风格过拟合**:一个用户、一个作者的多个篇章/段落**不应共享同一套「抒情套皮」**(例如各章反复使用「那条线/一股劲儿/浇灌/生根/跳房子/烤红薯/田埂/巷子/蚂蚁/隐隐发光」等固定意象池或固定收束句)。发现这种跨章节复读或本文内反复自引的固定比喻时:
- `lang_literary`(文笔质量)与 `rich_diversity`(表达多样性)须明显扣分;
- `rich_analogy` 高分的前提是**类比有基于口述的独特性**,而不是把同一修辞反复套到不同人生阶段;
- 在 `major_issues` 写明「风格过拟合:固定修辞复读」。
- **真实文学性 vs 装饰性文笔**:优美在于**贴合当事人语词、场景、时代肌理**,而非辞藻密度;缺少与本人口述咬合的「漂亮句子」按装饰性处理,不得与 `lang_literary` 满分并存。
- 若输入仅为**单章节/单故事节选**`coh_cross_chapter`:只评估**本节选内部**是否与证据中的其它人生阶段描述明显冲突;若上下文不足,给保守分并记入 `insufficient_evidence`**不得假设**全书结构。
"""
_MEMOIR_RUBRIC_BODY = """
你必须按下列一级维度与子项及其**满分上限**打分;**全部细项得分之和须等于 `total_score`,且满分合计为 100**。
## 一、真实性与覆盖(小计最高 23
1. mem_fidelity记忆忠实度最高 9**编造、夸大/弱化事实、改写因果、无证据推测、「AI 补全人生」**。锚点:出现两处以上未支撑的关键断言应显著拉低。
2. mem_factual_accuracy事实准确性最高 5时间线、人物关系、顺序、**成稿内部**矛盾、数字细节;侧重「是否说错」。
3. mem_factual_coverage事实覆盖率最高 5证据中的关键/高情感事件与人物是否被遗漏;侧重「是否漏掉」。
4. mem_traceability记忆可追溯性最高 4成稿段落能否对应证据中的来源模糊混写、无法判断出处在此项扣分。**与 mem_fidelity 区分**此项侧重「能否指回证据」fidelity 侧重「是否胡编内容」。
## 二、信息质量(小计最高 14
5. info_slot_coverage槽位覆盖度最高 6人物/事件/情绪/背景/转折等叙事要素在成稿中是否齐备(相对证据与章节主题)。
6. info_sufficiency信息充分性最高 4关键事件是否有展开与因果非一句话带过。
7. info_density信息密度最高 4是否少水分、少重复套话此项与 `lang_conciseness` 相关但不重复:此处看**信息价值**,彼处看**措辞精炼**。
## 三、叙事结构(小计最高 14
8. narr_structure故事结构最高 6起承转合与主题单元是否清楚。
9. narr_paragraphs段落组织最高 5段内主题单一、段间衔接。
10. narr_pacing节奏控制最高 3详略与重点。
## 四、语言与文笔(小计最高 18
11. lang_fluency语言流畅度最高 3
12. lang_conciseness表达精炼度最高 3
13. lang_literary文笔质量最高 4
14. lang_controlled_expansion控制性扩写能力最高 4仅在证据边界内增强表达新增未证实情节在此项与 `mem_fidelity` **同时**体现问题。
15. lang_detail细节还原与强化最高 2
16. lang_style风格一致性最高 2
## 五、情感表达(小计最高 9
17. emo_authenticity情感真实度最高 5
18. emo_depth情感深度最高 4
## 六、人物建模(小计最高 9
19. char_understanding人物理解最高 4
20. char_consistency人物一致性最高 3
21. char_integration人物融入度最高 2
## 七、连贯性(小计最高 4
22. coh_timeline时间线一致性最高 2
23. coh_cross_chapter跨章节/跨片段关联,最高 2单节选评审时按上文「总原则」处理。
## 八、表达丰富度(小计最高 5
24. rich_analogy类比与引用最高 3类比须基于口述素材**独特**生成;同一意象池或同一比喻在本用户多篇/本文多段**复读**应扣分。
25. rich_diversity表达多样性最高 2**反过拟合**——若整篇或多章反复依赖少数几个固定意象(如「田埂/烤红薯/巷子/蚂蚁/那条线/一股劲儿」等)收束情感,本项按 0-1 给分。
## 九、出版就绪度(小计最高 4
26. pub_editorial_cost编辑成本最高 2
27. pub_completeness完整度最高 2
输出 JSON 字段(仅这些键;分值浮点;列表每项尽量 ≤120 字):
mem_fidelity, mem_factual_accuracy, mem_factual_coverage, mem_traceability,
info_slot_coverage, info_sufficiency, info_density,
narr_structure, narr_paragraphs, narr_pacing,
lang_fluency, lang_conciseness, lang_literary, lang_controlled_expansion, lang_detail, lang_style,
emo_authenticity, emo_depth,
char_understanding, char_consistency, char_integration,
coh_timeline, coh_cross_chapter,
rich_analogy, rich_diversity,
pub_editorial_cost, pub_completeness,
total_score,
major_strengths, major_issues, insufficient_evidence, evidence_refs, confidence, rationale
`evidence_refs`:数组,每项为对象,字段 `dimension`(上列 mem_* / info_* 等英文名之一)、`turn_index`(无对话轮次用 -1、`snippet`≤120 字引文或定位)。
若输入证据中包含 `dialogue_lineage.turns`,可在 `snippet` 中引用对应轮的 `user_message_id` / `assistant_message_id` 作为可机读定位(与口语引文可同时出现)。
`confidence`0 到 1 之间小数。
一级聚合分 authenticity_score、information_score、narrative_score、language_score、emotion_score、character_score、coherence_score、richness_score、publish_ready_score 可不填(服务端会按细项重算)。
只输出 JSON。"""
MEMOIR_JUDGE_INSTRUCTIONS = (
"你是「岁月留书」回忆录成稿评审员:保守、证据优先、可复核。必须严格按照下列 rubric 打分。\n"
+ _MEMOIR_CHARTER
+ _MEMOIR_RUBRIC_BODY
)