fix(pipeline): 探针 LLM 禁止逐条粘贴摘录并收紧上下文条数

Made-with: Cursor
This commit is contained in:
hub-gif 2026-04-16 15:54:28 +08:00
parent f69e02a27a
commit 872874b41e

View File

@ -99,10 +99,10 @@ PROBE_TEXT_MINING_SYSTEM = """你是用户研究与文本挖掘方向的助手
**任务** ``groups`` **每一项**输出对应 Markdown**顺序与输入一致**
- ``probe_status == "ok"`` ``#### `` + 与该条 ``group`` 字段**完全一致**的细类名作为小节标题(勿用 ``##`` 一级标题);每段约 **100260 字**。
- 内容须包含 **12 **概括该细类评论**主要讨论焦点**综合词频与 TF-IDF**不要罗列具体数字** **12 **说明共现词对**暗示**哪些维度常一起出现**非因果** ``lda.topics`` 非空**12 **说明主题粗分侧重点**明确** LDA 无监督****与矩阵细类一一对应至少 **一句** ``sample_text_snippets`` ``focus_hit_lines`` 中的**原文信息**呼应可保留 ``细类店铺`` 前缀若无可用摘录则写明
- 内容须包含 **12 **概括该细类评论**主要讨论焦点**综合词频与 TF-IDF**不要罗列具体数字** **12 **说明共现词对**暗示**哪些维度常一起出现**非因果** ``lda.topics`` 非空**12 **说明主题粗分侧重点**明确** LDA 无监督****与矩阵细类一一对应**12 **体现 ``sample_text_snippets`` / ``focus_hit_lines`` 中的**用户语气与关切****转述**为主若必须引用原文**全小节合计** **一处**极短引号内容**40 ****不要**输出 ``细类SKU店铺`` 等长前缀若无可用摘录则写明
- ``probe_status == "skipped"``该小节仅 **一句**说明原因
**禁止**编造数据中未出现的品牌价格医学功效或疗效承诺不要把 ``keyword`` 监测词写进用户原话不要输出 Markdown 表格不要声称本段与正式报告 §8 完全同源本任务为**探针解读**
**禁止**编造数据中未出现的品牌价格医学功效或疗效承诺不要把 ``keyword`` 监测词写进用户原话不要输出 Markdown 表格不要声称本段与正式报告 §8 完全同源本任务为**探针解读****禁止**把输入里的 ``sample_text_snippets`` / ``focus_hit_lines`` **逐条罗列****多条整段复制**到输出那不是归纳是重复贴评论
全文末可另起一段 **使用注意**简短点明开放词表统计与人工阅读差异LDA 局限小样本细类不可靠
@ -404,7 +404,8 @@ def _truncate_probe_payload(payload: dict[str, Any]) -> dict[str, Any]:
g2 = dict(g)
sn = g2.get("sample_text_snippets")
if isinstance(sn, list):
g2["sample_text_snippets"] = [str(x)[:260] for x in sn[:12]]
# 条数略减,降低模型「照抄罗列」倾向;仍以转述为主见系统提示
g2["sample_text_snippets"] = [str(x)[:200] for x in sn[:6]]
groups.append(g2)
out["groups"] = groups
return out
@ -444,10 +445,10 @@ def _merge_snippets_from_comment_groups(
row["comment_flat_rows"] = src.get("comment_flat_rows")
fh = src.get("focus_hit_lines")
if isinstance(fh, list):
row["focus_hit_lines"] = [str(x) for x in fh[:14]]
row["focus_hit_lines"] = [str(x) for x in fh[:8]]
sn = src.get("sample_text_snippets")
if isinstance(sn, list):
row["sample_text_snippets"] = [str(x)[:300] for x in sn[:14]]
row["sample_text_snippets"] = [str(x)[:220] for x in sn[:8]]
def _run_probe_text_mining_llm(
@ -694,7 +695,7 @@ def build_markdown(
"",
"## 探针归纳(大模型 · 文本挖掘专用)",
"",
"> 输入为探针 JSON``schema_version``=1每细类含 **word_freq / tfidf / cooccurrence / lda** 及合并后的 **focus_hit_lines、sample_text_snippets**"
"> 输入为探针 JSON``schema_version``=1每细类含 **word_freq / tfidf / cooccurrence / lda** 及合并后的 **focus_hit_lines、sample_text_snippets**(供语境,**非**要求逐条复述)"
"系统提示为脚本内 ``PROBE_TEXT_MINING_SYSTEM``**不是** ``COMMENT_GROUPS_SYSTEM``。",
"",
]