Class Diagram

The diagram below shows the main classes of Propaganda Pipeline and their relationships. The 23 TechniqueRunner subclasses are grouped for clarity.

classDiagram direction TB class Configuracion { +model_name : str +api_key : str +adapter : Any +setup() } class TechniqueRunner { <<abstract>> +name : str +signature : Type[Signature] +run(texto) Dict +postprocess(salida_obj) Dict } class Detectors { <<23 subclasses>> RepetitionRunner ExaggerationRunner ObfuscationRunner LoadedLanguageRunner WhataboutismRunner KairosRunner ConversationKillerRunner SlipperyRunner SloganRunner AppealToValuesRunner RedHerringRunner StrawmanRunner FearPrejudiceRunner AuthorityRunner BandwagonRunner CastingDoubtRunner FlagWavingRunner SmearPoisoningRunner TuQuoqueRunner GuiltByAssociationRunner NameCallingRunner CausalOversimplificationRunner FalseDilemmaRunner } class Analisis { +runners : List[TechniqueRunner] +run(texto) List[Dict] } class ConsistencyModule { +trials : int +threshold : float +run(texto) List[Dict] } class JudgeModule { <<dspy.Module>> +forward(question, candidates, rubric) JudgeOutputNormalized } class SynthesizeModule { <<dspy.Module>> +forward(question, topk) SynthesisOutputNormalized } class SelectJudgeCandidatesModule { <<dspy.Module>> +forward(final_answer, candidates) SelectionOutputNormalized } TechniqueRunner <|-- Detectors Analisis "1" --> "1..*" TechniqueRunner : instantiates ConsistencyModule --> Analisis : wraps JudgeModule ..> SynthesizeModule : feeds topk SynthesizeModule ..> SelectJudgeCandidatesModule : feeds final_answer Configuracion ..> Analisis : configures DSPy