| 123456789101112131415161718192021222324252627282930313233 |
- """筛选:判断帖子是否值得提取为创作知识。"""
- from __future__ import annotations
- from typing import Optional
- from creation_knowledge.integrations.llm import ChatFn, default_chat
- from creation_knowledge.jsonio import to_bool
- from creation_knowledge.models import ExtractedContent, Post, ScreeningResult
- from creation_knowledge.prompts import load_prompt
- from creation_knowledge.stages._common import content_for_llm
- SYSTEM = "你是严谨的创作知识筛选器,只认能指导内容创作的知识,作品本身不算。"
- def screen_post(
- post: Post,
- content: ExtractedContent,
- *,
- chat: Optional[ChatFn] = None,
- env_file: str = ".env",
- ) -> ScreeningResult:
- chat = chat or default_chat(env_file)
- user = load_prompt("screen").format(
- title=post.title or "(无)",
- topics="、".join(post.topic_list) or "(无)",
- content=content_for_llm(post, content) or "(空)",
- )
- data = chat(SYSTEM, user)
- return ScreeningResult(
- passed=to_bool(data.get("passed")),
- score=int(data.get("score") or 0),
- reason=str(data.get("reason") or ""),
- )
|