Add reusable LLM parser profiles with multi-event extract.
Support kind=llm profiles (instruction/schema), optional multi-event posts via #eN URLs, and recover stale running/queued parse jobs after worker crashes. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -33,6 +33,25 @@ def flatten_pair_config(
|
||||
limit: int = 100,
|
||||
) -> dict:
|
||||
"""Expand Profile + Channel into Redis/CP source_config."""
|
||||
kind = (profile.kind or "heuristic").strip().lower()
|
||||
if kind == "llm":
|
||||
from contracts.llm_profile import LlmProfile
|
||||
|
||||
if not profile.llm_profile:
|
||||
raise ValueError("ParserProfile.llm_profile is empty")
|
||||
llm = LlmProfile.model_validate(profile.llm_profile)
|
||||
cfg = TelegramSourceConfig(
|
||||
channel=channel.channel.strip(),
|
||||
limit=limit,
|
||||
extract_mode="llm",
|
||||
extract_schema=llm.extract_schema,
|
||||
instruction=llm.instruction,
|
||||
required_fields=list(llm.required_fields),
|
||||
multi_event=bool(llm.multi_event),
|
||||
sample_post=profile.sample_post or None,
|
||||
)
|
||||
return cfg.model_dump()
|
||||
|
||||
if not profile.heuristic_profile:
|
||||
raise ValueError("ParserProfile.heuristic_profile is empty")
|
||||
cfg = TelegramSourceConfig(
|
||||
|
||||
Reference in New Issue
Block a user