feat: make article summary prompt independent from daily digest
- Add outputs/prompts/article-summary-prompt.txt with deep knowledge note schema (core_conclusion, main_argument, key_methods, etc.) - Add ArticleSummaryResult Pydantic model for the new schema - Add validate_article_summary_payload() validator - Add optional validator param to run_loop_payload(); defaults to existing validate_llm_result_payload so daily digest is unaffected - Update article_summary.py: new prompt path, new validator, new Markdown output with Chinese section headers
This commit is contained in:
@@ -7,7 +7,7 @@ import json
|
||||
import os
|
||||
import re
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
from typing import Any, Callable
|
||||
|
||||
import httpx
|
||||
|
||||
@@ -183,7 +183,10 @@ def run_loop_payload(
|
||||
model: str | None,
|
||||
api_url: str | None,
|
||||
output_path: Path | None = None,
|
||||
validator: Callable[[dict[str, Any], dict[str, Any] | None], ValidationReport] | None = None,
|
||||
) -> tuple[int, dict[str, Any] | None, ValidationReport | None]:
|
||||
# validator 为 None 时使用日报摘要默认校验器;传入自定义 validator 时使用传入的
|
||||
resolved_validator = validator if validator is not None else validate_llm_result_payload
|
||||
prompt_template = load_text(prompt_path)
|
||||
if output_path is not None:
|
||||
output_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
@@ -223,7 +226,7 @@ def run_loop_payload(
|
||||
if output_path is not None:
|
||||
save_json(output_path, result_payload)
|
||||
|
||||
report = validate_llm_result_payload(result_payload, extracted_payload)
|
||||
report = resolved_validator(result_payload, extracted_payload)
|
||||
_save_attempt_artifact(
|
||||
output_path,
|
||||
f"attempt-{attempt}.validation.json",
|
||||
|
||||
Reference in New Issue
Block a user