import dspy from typing import List class IngestionSignature(dspy.Signature): """You are an expert Dungeon Master's assistant. Analyze the provided notes and extract a concise synopsis and relevant metadata. synopsis = A one-sentence summary of the document. tags = Relevant tags (NPCs, Locations, Items, Plot Points). entities = Key names of people, places, or factions. "note -> synopsis:str, tags: list[str], entities: list[str]" /no_think """ note: str = dspy.InputField(desc="The DM notes or session recap content.") answer: dict[str,str|List] = dspy.OutputField(desc="the metadata dictionary with the keys; synopsis, tags, entities") class IngestionAgent(dspy.Module): def __init__(self): self.ingest = dspy.Predict(IngestionSignature)