框架: 前文实体索引压缩为名字清单(每章16万→2万token砍86%,判重只需名字)
This commit is contained in:
parent
1444dfb956
commit
be6e36f8e3
@ -86,7 +86,10 @@ def render_contracts(contracts):
|
||||
|
||||
|
||||
def scaffold_prompt(title, ch, ch_title, text, prev_entities):
|
||||
ents = json.dumps(prev_entities, ensure_ascii=False) if prev_entities else "(第一章,为空)"
|
||||
# 前文实体压缩(创始人 2026-07-14):判重只需名字清单,不必重发型+摘要全档——
|
||||
# 全量 json 到后期每章膨胀到 15 万+ token(深空第 557 章 2851 实体≈15 万),是次数被压的真凶
|
||||
_names = sorted({(e.get("名称") or e.get("name") or "").strip() for e in prev_entities} - {""}) if prev_entities else []
|
||||
ents = "、".join(_names) if _names else "(第一章,为空)"
|
||||
wc = len(text.replace("\n", "").replace(" ", ""))
|
||||
cap = max(60, int(wc * 0.05)) # 绝对字数上限(纯比例约束 M3 会写超,首轮实测 9.8%–19%)
|
||||
# 缓存友好(read-context「稳定度递减吃前缀缓存」):固定规则段全部前置吃前缀缓存,
|
||||
@ -95,7 +98,7 @@ def scaffold_prompt(title, ch, ch_title, text, prev_entities):
|
||||
对参考书的当前章(书名/章号/正文见文末材料区)做三件事:
|
||||
1) 逆推本章细纲:章目标/关键事件/出场角色/伏笔动作(埋·推·收)/章末钩子。**细纲全文不得超过文末给出的字数上限**(约本章正文的 5%;超标会被校验脚本机械退回)。细纲是结构骨架,不是缩写复述——用短语与分号,不写完整句子。
|
||||
2) 抽实体增量(脚手架级索引):{ENTITY_CRITERIA}
|
||||
判重:文末给出前文已收录实体,不重报(除非本章给出新身份,则在一句话摘要里并入)。
|
||||
判重:文末给出前文已收录实体的**名字清单**,清单内的实体本章不重报(若本章赋予其新身份,可在摘要里点明);清单外的本章新实体照抽。
|
||||
3) 报范式候选线索(**只报线索不出卡**,出卡由窗级聚类另做):本章表现突出、疑似可跨书复用的写法。五型候选:craft=单点叙事装置(删去它场景仍成立);combat=整场武力对抗的打法;emotion=整场情绪戏的推进;scene_pattern=拍卖/谈判/审讯等场景公式;trope=跨章复用的情节公式。
|
||||
每条线索给四项:type(五型之一,拿不准填"?")、name(2–8 字短名,作者口头会说的话,禁书内专名禁修饰堆叠)、clue(一句话:这个写法怎么运作,用{PLACEHOLDERS}等抽象指代)、evidence(一句话:本章哪里这样写、为何突出,可用专名)。
|
||||
0–5 条/章,平庸章 0 条正常;门槛比出卡低——拿不准的报上来,窗级聚类会过滤。
|
||||
@ -105,7 +108,7 @@ def scaffold_prompt(title, ch, ch_title, text, prev_entities):
|
||||
|
||||
━━━ 本章材料(每章不同,非规则)━━━
|
||||
【当前章】《{title}》第 {ch} 章《{ch_title}》|正文约 {wc} 字|细纲上限 {cap} 字
|
||||
【前文实体索引】
|
||||
【前文实体名字清单(判重用,已在列的不重报)】
|
||||
{ents}
|
||||
【本章正文】
|
||||
{text}"""
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user