feat(llm): classify 前置 + 黑名单 drop 删文章 + 排版用 .diary-para
- enrichment._enrich_classify 前置,返回 (drop, categories)
- 注入 {blocklist} 占位符到 prompt(全局 + per-source 合并)
- drop=True → 整篇 DELETE,后 3 步直接 skip
- 兜底:即使 LLM 没正确返回 drop 字段,本地也匹配一次
- enrichment._enrich_format 排版段落 class 名固定为 diary-para
- CSS 仍内联到 style,前端 .diary-para 兜底
- enrichment._merge_blocklist: 全局 + per-source 合并去重保序
- schemas/llm.LlmSettingOut/Update 暴露 blocklist_tags
- DEFAULT_PROMPTS.classify_prompt 加 {blocklist} + drop 字段说明
This commit is contained in:
@@ -18,6 +18,8 @@ class LlmSettingOut(BaseModel):
|
||||
image_model: str = "agnes-image-2.1-flash"
|
||||
interval_sec: float = 2.0
|
||||
enabled: bool = True
|
||||
# 全局屏蔽分类标签;与 sources.blocklist_tags 合并后注入 classify prompt
|
||||
blocklist_tags: list[str] = []
|
||||
updated_at: datetime | None = None
|
||||
|
||||
|
||||
@@ -33,6 +35,7 @@ class LlmSettingUpdate(BaseModel):
|
||||
image_model: str | None = Field(default=None, min_length=1, max_length=64)
|
||||
interval_sec: float | None = Field(default=None, ge=0.0, le=60.0)
|
||||
enabled: bool | None = None
|
||||
blocklist_tags: list[str] | None = None
|
||||
|
||||
|
||||
# === 默认提示词(模板,用户可改)===
|
||||
@@ -50,7 +53,10 @@ DEFAULT_PROMPTS = {
|
||||
"classify_prompt": (
|
||||
"你是新闻分类助手。请阅读以下新闻,返回 2-5 个最相关的分类标签(多标签)。\n"
|
||||
"可选标签(可自由组合,不限于此): 时政 / 经济 / 科技 / 军事 / 社会 / 国际 / 体育 / 文化 / 环境 / 健康 / 金融 / 能源 / 气候\n"
|
||||
"严格要求:只返回 JSON,形如 {\"categories\": [\"时政\", \"国际\", \"经济\"]},不要其他内容。\n\n"
|
||||
"黑名单分类(若新闻属于或主要围绕这些领域,务必将 drop 设为 true): {blocklist}\n"
|
||||
"严格要求:只返回 JSON,形如 {\"categories\": [\"时政\", \"国际\", \"经济\"], \"drop\": false},"
|
||||
"若新闻属于或主要围绕黑名单中的任何分类,将 drop 设为 true 并把该分类放入 categories。"
|
||||
"不要其他内容。\n\n"
|
||||
"标题:{title}\n摘要:{summary}\n正文(节选):{body}\n"
|
||||
),
|
||||
"commentary_prompt": (
|
||||
|
||||
Reference in New Issue
Block a user