# LLM Gateway Routing Rules # Maps task_type → model + prompt template + validation config routing_rules: # ─── PRE-CLASSIFICATION ──────────────────────────────────────────────────── pre_classify: model: qwen2.5:3b tier: fast prompt_template: pre_classify temperature: 0.1 max_tokens: 256 output_format: json requires_fact_check: false validators: [] callers: [all] # ─── MAGATAMA — TEPPEKI Security Intelligence ───────────────────────────── magatama_threat_analysis: model: magatama:32b tier: large prompt_template: magatama_threat_analysis temperature: 0.1 max_tokens: 4096 output_format: text requires_fact_check: false validators: [banlist, length] callers: [magatama, shieldx, shieldy, switchblade, internal] magatama_ciso_report: model: magatama:32b tier: large prompt_template: magatama_ciso_report temperature: 0.2 max_tokens: 4096 output_format: text requires_fact_check: false validators: [banlist, length] callers: [magatama, switchblade, internal] magatama_compliance_gap: model: magatama:32b tier: large prompt_template: magatama_compliance_gap temperature: 0.1 max_tokens: 4096 output_format: json requires_fact_check: false validators: [schema, length] callers: [magatama, switchblade, internal] magatama_incident_response: model: magatama:32b tier: large prompt_template: magatama_incident_response temperature: 0.1 max_tokens: 4096 output_format: text requires_fact_check: false validators: [banlist, length] callers: [magatama, shieldy, internal] magatama_bgp_security: model: magatama:32b tier: large prompt_template: magatama_bgp_security temperature: 0.1 max_tokens: 2048 output_format: text requires_fact_check: true validators: [fact_checker, length] callers: [magatama, peercortex, switchblade, internal] magatama_vuln_triage: model: magatama:32b tier: large prompt_template: magatama_vuln_triage temperature: 0.1 max_tokens: 2048 output_format: json requires_fact_check: false validators: [schema, length] callers: [magatama, shieldx, shieldy, internal] # ─── CTX-REPORT MORNING BRIEFING ────────────────────────────────────────── ctx_morning_briefing: model: qwen2.5:32b tier: large prompt_template: ctx_morning_briefing temperature: 0.7 max_tokens: 512 output_format: text requires_fact_check: false validators: [] callers: [ctx-report, internal] # ─── INTERNAL ───────────────────────────────────────────────────────────── internal_ban_detect: model: qwen2.5:3b tier: fast prompt_template: internal_ban_detect temperature: 0.1 max_tokens: 256 output_format: json requires_fact_check: false validators: [] callers: [internal] internal_prompt_improve: model: qwen2.5:14b tier: medium prompt_template: internal_prompt_improve temperature: 0.4 max_tokens: 2048 output_format: text requires_fact_check: false validators: [] callers: [internal] # ─── TIP: TRANSCEIVER INTELLIGENCE PLATFORM ──────────────────────────────── tip_transceiver_enrich: model: qwen2.5:14b tier: medium prompt_template: tip_transceiver_enrich temperature: 0.2 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, tip_validator, length] callers: [tip-scraper, internal] tip_datasheet_extract: model: qwen2.5:14b tier: medium prompt_template: tip_datasheet_extract temperature: 0.1 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, tip_validator] callers: [tip-scraper, internal] tip_compatibility_parse: model: qwen2.5:14b tier: medium prompt_template: tip_compatibility_parse temperature: 0.1 max_tokens: 512 output_format: json requires_fact_check: false validators: [schema, tip_validator] callers: [tip-scraper, internal] tip_blog_generator: model: qwen2.5:32b tier: large prompt_template: tip_blog_generator temperature: 0.6 max_tokens: 3072 output_format: text requires_fact_check: false validators: [banlist, language, length] callers: [tip-scraper, internal, n8n] tip_faq_answer: model: qwen2.5:14b tier: medium prompt_template: tip_faq_answer temperature: 0.3 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, tip_validator, length] callers: [tip-scraper, internal] tip_hype_cycle_narrative: model: qwen2.5:14b tier: medium prompt_template: tip_hype_cycle_narrative temperature: 0.5 max_tokens: 2500 output_format: text requires_fact_check: false validators: [banlist, length] callers: [tip-scraper, internal, n8n] tip_price_anomaly: model: qwen2.5:14b tier: medium prompt_template: tip_price_anomaly temperature: 0.2 max_tokens: 512 output_format: json requires_fact_check: false validators: [schema, tip_validator] callers: [tip-scraper, internal] tip_vendor_classify: model: qwen2.5:7b tier: fast prompt_template: tip_vendor_classify temperature: 0.1 max_tokens: 256 output_format: json requires_fact_check: false validators: [schema, tip_validator] callers: [tip-scraper, internal] tip_product_description: model: qwen2.5:14b tier: medium prompt_template: tip_product_description temperature: 0.3 max_tokens: 1024 output_format: text requires_fact_check: false validators: [schema, banlist, language, tip_validator, length] callers: [tip-scraper, internal] tip_technical_summary: model: qwen2.5:14b tier: medium prompt_template: tip_technical_summary temperature: 0.2 max_tokens: 512 output_format: json requires_fact_check: true validators: [schema, tip_validator, length] callers: [tip-scraper, internal] tip_competitor_analysis: model: qwen2.5:32b tier: large prompt_template: tip_competitor_analysis temperature: 0.4 max_tokens: 2048 output_format: text requires_fact_check: false validators: [banlist, tip_validator, length] callers: [tip-scraper, internal, n8n] tip_price_extraction: model: qwen2.5:14b tier: medium prompt_template: tip_price_extraction temperature: 0.0 max_tokens: 256 output_format: json requires_fact_check: false validators: [schema, tip_validator] callers: [tip-scraper, internal] tip_market_analysis: model: qwen2.5:32b tier: large prompt_template: tip_market_analysis temperature: 0.5 max_tokens: 3072 output_format: text requires_fact_check: false validators: [banlist, length] callers: [tip-scraper, internal, n8n] tip_hype_cycle: model: deepseek-r1:32b tier: large prompt_template: tip_hype_cycle temperature: 0.3 max_tokens: 2048 output_format: json requires_fact_check: false validators: [schema, tip_validator, length] callers: [tip-scraper, internal] tip_faq_generation: model: qwen2.5:14b tier: medium prompt_template: tip_faq_generation temperature: 0.4 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, banlist, tip_validator] callers: [tip-scraper, internal] tip_vendor_profile: model: qwen2.5:14b tier: medium prompt_template: tip_vendor_profile temperature: 0.3 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, tip_validator, length] callers: [tip-scraper, internal] tip_blog_post: model: qwen2.5:32b tier: large prompt_template: tip_blog_post temperature: 0.6 max_tokens: 3072 output_format: text requires_fact_check: false validators: [banlist, language, length] callers: [tip-scraper, internal, n8n] tip_spec_extraction: model: qwen2.5:14b tier: medium prompt_template: tip_spec_extraction temperature: 0.1 max_tokens: 512 output_format: json requires_fact_check: false validators: [schema, tip_validator] callers: [tip-scraper, internal] # ─── EO GLOBAL PULSE (template-based) ────────────────────────────────────── eo_business_card_ocr: model: qwen2.5:14b tier: medium prompt_template: eo_business_card_ocr temperature: 0.1 max_tokens: 512 output_format: json requires_fact_check: false validators: [schema, banlist] callers: [eo-global-pulse, internal] eo_voice_to_crm: model: qwen2.5:14b tier: medium prompt_template: eo_voice_to_crm temperature: 0.2 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, banlist] callers: [eo-global-pulse, internal] eo_event_prep_brief: model: qwen2.5:14b tier: medium prompt_template: eo_event_prep_brief temperature: 0.4 max_tokens: 2048 output_format: text requires_fact_check: false validators: [banlist, length] callers: [eo-global-pulse, internal] eo_attendee_enrich: model: qwen2.5:14b tier: medium prompt_template: eo_attendee_enrich temperature: 0.3 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, banlist] callers: [eo-global-pulse, internal] eo_meeting_suggest: model: qwen2.5:14b tier: medium prompt_template: eo_meeting_suggest temperature: 0.5 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, banlist] callers: [eo-global-pulse, internal] eo_lead_qualify: model: qwen2.5:14b tier: medium prompt_template: eo_lead_qualify temperature: 0.3 max_tokens: 512 output_format: json requires_fact_check: false validators: [schema, banlist] callers: [eo-global-pulse, internal] eo_debrief_generate: model: qwen2.5:32b tier: large prompt_template: eo_debrief_generate temperature: 0.4 max_tokens: 3072 output_format: text requires_fact_check: false validators: [banlist, length] callers: [eo-global-pulse, internal] eo_ticket_summarize: model: qwen2.5:7b tier: fast prompt_template: eo_ticket_summarize temperature: 0.2 max_tokens: 512 output_format: text requires_fact_check: false validators: [banlist, length] callers: [eo-global-pulse, internal] # ─── EO GLOBAL PULSE ──────────────────────────────────────────────────────── eo_member_summary: model: qwen2.5:14b tier: medium prompt_template: eo_member_summary temperature: 0.4 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, language, length] callers: [eo-global-pulse, internal] eo_meeting_notes: model: qwen2.5:14b tier: medium prompt_template: eo_meeting_notes temperature: 0.3 max_tokens: 2048 output_format: text requires_fact_check: false validators: [banlist, length] callers: [eo-global-pulse, internal] eo_chapter_report: model: qwen2.5:32b tier: large prompt_template: eo_chapter_report temperature: 0.4 max_tokens: 3072 output_format: text requires_fact_check: false validators: [banlist, language, length] callers: [eo-global-pulse, internal] eo_learning_recommendation: model: qwen2.5:14b tier: medium prompt_template: eo_learning_recommendation temperature: 0.5 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, banlist] callers: [eo-global-pulse, internal] eo_forum_moderation: model: qwen2.5:14b tier: medium prompt_template: eo_forum_moderation temperature: 0.2 max_tokens: 256 output_format: json requires_fact_check: false validators: [schema, banlist] callers: [eo-global-pulse, internal] eo_event_agenda: model: qwen2.5:14b tier: medium prompt_template: eo_event_agenda temperature: 0.5 max_tokens: 2048 output_format: text requires_fact_check: false validators: [banlist, length] callers: [eo-global-pulse, internal] eo_travel_brief: model: qwen2.5:14b tier: medium prompt_template: eo_travel_brief temperature: 0.4 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, language] callers: [eo-global-pulse, internal] # ─── PEERCORTEX (template-based) ──────────────────────────────────────────── pc_as_narrative: model: qwen2.5:14b tier: medium prompt_template: pc_as_narrative temperature: 0.3 max_tokens: 1024 output_format: text requires_fact_check: true validators: [banlist, fact_checker, length] callers: [peercortex, internal] pc_health_summary: model: qwen2.5:14b tier: medium prompt_template: pc_health_summary temperature: 0.2 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, length] callers: [peercortex, internal] pc_rpki_explain: model: qwen2.5:14b tier: medium prompt_template: pc_rpki_explain temperature: 0.3 max_tokens: 512 output_format: text requires_fact_check: true validators: [fact_checker, length] callers: [peercortex, internal] pc_anomaly_hypothesis: model: qwen2.5:14b tier: medium prompt_template: pc_anomaly_hypothesis temperature: 0.4 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, length] callers: [peercortex, internal] pc_peer_recommendation: model: qwen2.5:14b tier: medium prompt_template: pc_peer_recommendation temperature: 0.4 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, banlist] callers: [peercortex, internal] pc_incident_brief: model: qwen2.5:14b tier: medium prompt_template: pc_incident_brief temperature: 0.2 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, length] callers: [peercortex, internal] # ─── PEERCORTEX ────────────────────────────────────────────────────────────── peercortex_asn_analysis: model: qwen2.5:14b tier: medium prompt_template: peercortex_asn_analysis temperature: 0.2 max_tokens: 1024 output_format: text requires_fact_check: true validators: [banlist, fact_checker, length] callers: [peercortex, internal] peercortex_routing_summary: model: qwen2.5:14b tier: medium prompt_template: peercortex_routing_summary temperature: 0.3 max_tokens: 1024 output_format: text requires_fact_check: true validators: [fact_checker, length] callers: [peercortex, internal] peercortex_ix_report: model: qwen2.5:14b tier: medium prompt_template: peercortex_ix_report temperature: 0.3 max_tokens: 1024 output_format: text requires_fact_check: true validators: [fact_checker, length] callers: [peercortex, internal] peercortex_health_report: model: qwen2.5:14b tier: medium prompt_template: peercortex_health_report temperature: 0.2 max_tokens: 2048 output_format: json requires_fact_check: false validators: [schema, length] callers: [peercortex, internal] peercortex_rpki_analysis: model: qwen2.5:14b tier: medium prompt_template: peercortex_rpki_analysis temperature: 0.2 max_tokens: 512 output_format: text requires_fact_check: true validators: [fact_checker] callers: [peercortex, internal] # ─── SWITCHBLADE (template-based) ──────────────────────────────────────────── sb_root_cause: model: qwen2.5:14b tier: medium prompt_template: sb_root_cause temperature: 0.2 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, length] callers: [switchblade, internal] sb_alert_narrative: model: qwen2.5:7b tier: fast prompt_template: sb_alert_narrative temperature: 0.2 max_tokens: 512 output_format: text requires_fact_check: false validators: [banlist, length] callers: [switchblade, internal] sb_cve_remediation: model: qwen2.5:14b tier: medium prompt_template: sb_cve_remediation temperature: 0.2 max_tokens: 2048 output_format: text requires_fact_check: false validators: [banlist, length] callers: [switchblade, internal] sb_csrd_narrative: model: qwen2.5:32b tier: large prompt_template: sb_csrd_narrative temperature: 0.4 max_tokens: 4096 output_format: text requires_fact_check: false validators: [banlist, length] callers: [switchblade, internal] sb_transceiver_advisor: model: qwen2.5:14b tier: medium prompt_template: sb_transceiver_advisor temperature: 0.3 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, tip_validator] callers: [switchblade, internal] sb_bandwidth_report: model: qwen2.5:14b tier: medium prompt_template: sb_bandwidth_report temperature: 0.3 max_tokens: 2048 output_format: text requires_fact_check: false validators: [banlist, length] callers: [switchblade, internal] sb_ticket_draft: model: qwen2.5:7b tier: fast prompt_template: sb_ticket_draft temperature: 0.3 max_tokens: 512 output_format: text requires_fact_check: false validators: [banlist, length] callers: [switchblade, internal] sb_firmware_assess: model: qwen2.5:14b tier: medium prompt_template: sb_firmware_assess temperature: 0.2 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, length] callers: [switchblade, internal] sb_topology_explain: model: qwen2.5:14b tier: medium prompt_template: sb_topology_explain temperature: 0.3 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, length] callers: [switchblade, internal] # ─── SWITCHBLADE ───────────────────────────────────────────────────────────── switchblade_incident_summary: model: qwen2.5:14b tier: medium prompt_template: switchblade_incident_summary temperature: 0.2 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, length] callers: [switchblade, internal] switchblade_config_review: model: deepseek-r1:8b tier: medium prompt_template: switchblade_config_review temperature: 0.1 max_tokens: 2048 output_format: text requires_fact_check: false validators: [length] callers: [switchblade, internal] switchblade_peering_recommendation: model: qwen2.5:14b tier: medium prompt_template: switchblade_peering_recommendation temperature: 0.4 max_tokens: 1024 output_format: json requires_fact_check: true validators: [schema, fact_checker] callers: [switchblade, internal] switchblade_blacklist_report: model: qwen2.5:14b tier: medium prompt_template: switchblade_blacklist_report temperature: 0.2 max_tokens: 1024 output_format: text requires_fact_check: false validators: [length] callers: [switchblade, internal] switchblade_rack_documentation: model: qwen2.5:14b tier: medium prompt_template: switchblade_rack_documentation temperature: 0.3 max_tokens: 2048 output_format: text requires_fact_check: false validators: [banlist, length] callers: [switchblade, internal] switchblade_csrd_report: model: qwen2.5:32b tier: large prompt_template: switchblade_csrd_report temperature: 0.4 max_tokens: 4096 output_format: text requires_fact_check: false validators: [banlist, length] callers: [switchblade, internal] switchblade_transceiver_advisor: model: qwen2.5:14b tier: medium prompt_template: switchblade_transceiver_advisor temperature: 0.3 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, tip_validator] callers: [switchblade, internal] switchblade_bgp_policy: model: deepseek-r1:8b tier: medium prompt_template: switchblade_bgp_policy temperature: 0.2 max_tokens: 2048 output_format: text requires_fact_check: false validators: [length] callers: [switchblade, internal] # ─── NOGNET (template-based) ───────────────────────────────────────────────── nog_cfp_evaluate: model: qwen2.5:14b tier: medium prompt_template: nog_cfp_evaluate temperature: 0.3 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, banlist] callers: [nognet, internal] nog_cfp_feedback: model: qwen2.5:14b tier: medium prompt_template: nog_cfp_feedback temperature: 0.4 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, length] callers: [nognet, internal] nog_topic_gap_analysis: model: qwen2.5:32b tier: large prompt_template: nog_topic_gap_analysis temperature: 0.5 max_tokens: 2048 output_format: text requires_fact_check: false validators: [banlist, length] callers: [nognet, internal] nog_meeting_match: model: qwen2.5:14b tier: medium prompt_template: nog_meeting_match temperature: 0.4 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, banlist] callers: [nognet, internal] nog_speaker_enrich: model: qwen2.5:14b tier: medium prompt_template: nog_speaker_enrich temperature: 0.3 max_tokens: 512 output_format: json requires_fact_check: false validators: [schema, banlist] callers: [nognet, internal] nog_sponsor_pitch: model: qwen2.5:32b tier: large prompt_template: nog_sponsor_pitch temperature: 0.5 max_tokens: 3072 output_format: text requires_fact_check: false validators: [banlist, language, length] callers: [nognet, internal] nog_event_debrief: model: qwen2.5:32b tier: large prompt_template: nog_event_debrief temperature: 0.4 max_tokens: 3000 output_format: text requires_fact_check: false validators: [banlist, length] callers: [nognet, internal] nog_agenda_summary: model: qwen2.5:7b tier: fast prompt_template: nog_agenda_summary temperature: 0.5 max_tokens: 512 output_format: text requires_fact_check: false validators: [banlist, language, length] callers: [nognet, internal] nog_session_intro: model: qwen2.5:3b tier: fast prompt_template: nog_session_intro temperature: 0.5 max_tokens: 128 output_format: text requires_fact_check: false validators: [banlist] callers: [nognet, internal] # ─── NOGNET / CTXEVENT ─────────────────────────────────────────────────────── nognet_event_description: model: qwen2.5:14b tier: medium prompt_template: nognet_event_description temperature: 0.5 max_tokens: 2048 output_format: text requires_fact_check: false validators: [banlist, language, length] callers: [nognet, internal] nognet_sponsor_proposal: model: qwen2.5:32b tier: large prompt_template: nognet_sponsor_proposal temperature: 0.5 max_tokens: 3072 output_format: text requires_fact_check: false validators: [banlist, language, length] callers: [nognet, internal] nognet_program_committee: model: qwen2.5:14b tier: medium prompt_template: nognet_program_committee temperature: 0.4 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, length] callers: [nognet, internal] nognet_recap_article: model: qwen2.5:32b tier: large prompt_template: nognet_recap_article temperature: 0.6 max_tokens: 3072 output_format: text requires_fact_check: false validators: [banlist, language, length] callers: [nognet, internal] ctxevent_agenda_builder: model: qwen2.5:14b tier: medium prompt_template: ctxevent_agenda_builder temperature: 0.4 max_tokens: 2048 output_format: json requires_fact_check: false validators: [schema, length] callers: [nognet, internal] ctxevent_attendee_communication: model: qwen2.5:14b tier: medium prompt_template: ctxevent_attendee_communication temperature: 0.4 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, language] callers: [nognet, internal] # ─── SHIELDX (template-based) ──────────────────────────────────────────────── shieldx_threat_classify: model: qwen2.5:14b tier: medium prompt_template: shieldx_threat_classify temperature: 0.1 max_tokens: 512 output_format: json requires_fact_check: false validators: [schema] callers: [shieldx, internal] shieldx_pattern_describe: model: qwen2.5:14b tier: medium prompt_template: shieldx_pattern_describe temperature: 0.2 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, length] callers: [shieldx, internal] shieldx_healing_recommend: model: qwen2.5:14b tier: medium prompt_template: shieldx_healing_recommend temperature: 0.3 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, banlist] callers: [shieldx, internal] shieldx_compliance_report: model: qwen2.5:32b tier: large prompt_template: shieldx_compliance_report temperature: 0.3 max_tokens: 3072 output_format: text requires_fact_check: false validators: [banlist, length] callers: [shieldx, internal] shieldx_false_positive: model: qwen2.5:14b tier: medium prompt_template: shieldx_false_positive temperature: 0.2 max_tokens: 512 output_format: json requires_fact_check: false validators: [schema] callers: [shieldx, internal] # ─── SHIELDX ───────────────────────────────────────────────────────────────── shieldx_threat_classification: model: qwen2.5:14b tier: medium prompt_template: shieldx_threat_classification temperature: 0.1 max_tokens: 512 output_format: json requires_fact_check: false validators: [schema] callers: [shieldx, internal] shieldx_attack_analysis: model: deepseek-r1:8b tier: medium prompt_template: shieldx_attack_analysis temperature: 0.2 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, length] callers: [shieldx, internal] shieldx_defense_recommendation: model: qwen2.5:14b tier: medium prompt_template: shieldx_defense_recommendation temperature: 0.3 max_tokens: 1024 output_format: text requires_fact_check: false validators: [length] callers: [shieldx, internal] shieldx_pattern_extraction: model: qwen2.5:14b tier: medium prompt_template: shieldx_pattern_extraction temperature: 0.1 max_tokens: 512 output_format: json requires_fact_check: false validators: [schema] callers: [shieldx, internal] shieldx_red_team_simulate: model: deepseek-r1:32b tier: large prompt_template: shieldx_red_team_simulate temperature: 0.4 max_tokens: 2048 output_format: json requires_fact_check: false validators: [schema] callers: [shieldx, internal] # ─── CONTENT / LINKEDIN (template-based) ────────────────────────────────── linkedin_post_de: model: qwen2.5:32b tier: large prompt_template: linkedin_post_de temperature: 0.7 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, language, length, question_closer] callers: [n8n, internal] linkedin_post_en: model: qwen2.5:32b tier: large prompt_template: linkedin_post_en temperature: 0.7 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, language, length, question_closer] callers: [n8n, internal] newsletter_dispatch_de: model: qwen2.5:32b tier: large prompt_template: newsletter_dispatch_de temperature: 0.5 max_tokens: 3072 output_format: text requires_fact_check: false validators: [banlist, language, length] callers: [n8n, internal] # ─── CONTENT / LINKEDIN ────────────────────────────────────────────────────── linkedin_post: model: fo-blog-v10 tier: large prompt_template: linkedin_post temperature: 0.7 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, language, length, question_closer] callers: [n8n, internal, linkedin-distributor] linkedin_comment: model: qwen2.5:14b tier: medium prompt_template: linkedin_comment temperature: 0.6 max_tokens: 256 output_format: text requires_fact_check: false validators: [banlist, language, length] callers: [n8n, internal] linkedin_article: model: qwen2.5:32b tier: large prompt_template: linkedin_article temperature: 0.6 max_tokens: 4096 output_format: text requires_fact_check: false validators: [banlist, language, length, question_closer] callers: [n8n, internal] blog_post_de: model: qwen2.5:32b tier: large prompt_template: blog_post_de temperature: 0.6 max_tokens: 4096 output_format: text requires_fact_check: false validators: [banlist, language, length, question_closer] callers: [n8n, internal] blog_post_en: model: qwen2.5:32b tier: large prompt_template: blog_post_en temperature: 0.6 max_tokens: 4096 output_format: text requires_fact_check: false validators: [banlist, language, length, question_closer] callers: [n8n, internal] newsletter_section: model: qwen2.5:14b tier: medium prompt_template: newsletter_section temperature: 0.5 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, language, length] callers: [n8n, internal] social_media_thread: model: qwen2.5:14b tier: medium prompt_template: social_media_thread temperature: 0.7 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema, banlist, language] callers: [n8n, internal] press_release: model: qwen2.5:32b tier: large prompt_template: press_release temperature: 0.4 max_tokens: 2048 output_format: text requires_fact_check: false validators: [banlist, language, length] callers: [n8n, internal] content_translation_de_en: model: qwen2.5:14b tier: medium prompt_template: content_translation_de_en temperature: 0.2 max_tokens: 2048 output_format: text requires_fact_check: false validators: [language, length] callers: [n8n, internal] content_translation_en_de: model: qwen2.5:14b tier: medium prompt_template: content_translation_en_de temperature: 0.2 max_tokens: 2048 output_format: text requires_fact_check: false validators: [language, length] callers: [n8n, internal] # ─── GENERAL PURPOSE ────────────────────────────────────────────────────────── generic_summarize: model: qwen2.5:14b tier: medium prompt_template: generic_summarize temperature: 0.3 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, length] callers: [all] generic_extract: model: qwen2.5:14b tier: medium prompt_template: generic_extract temperature: 0.1 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema] callers: [all] generic_classify: model: qwen2.5:3b tier: fast prompt_template: generic_classify temperature: 0.1 max_tokens: 256 output_format: json requires_fact_check: false validators: [schema] callers: [all] generic_rewrite: model: qwen2.5:14b tier: medium prompt_template: generic_rewrite temperature: 0.5 max_tokens: 2048 output_format: text requires_fact_check: false validators: [banlist, length] callers: [all] generic_qa: model: qwen2.5:14b tier: medium prompt_template: generic_qa temperature: 0.4 max_tokens: 1024 output_format: text requires_fact_check: false validators: [banlist, length] callers: [all] code_review: model: deepseek-r1:8b tier: medium prompt_template: code_review temperature: 0.2 max_tokens: 2048 output_format: text requires_fact_check: false validators: [length] callers: [internal, switchblade, shieldx] code_generate: model: deepseek-r1:32b tier: large prompt_template: code_generate temperature: 0.3 max_tokens: 4096 output_format: text requires_fact_check: false validators: [length] callers: [internal, switchblade, shieldx] data_enrichment: model: qwen2.5:14b tier: medium prompt_template: data_enrichment temperature: 0.2 max_tokens: 1024 output_format: json requires_fact_check: false validators: [schema] callers: [all] # ─── CtxHealth — Infrastructure Self-Healing ─────────────────────────────── ctx_health_diagnose: model: ctxhealer:latest tier: medium prompt_template: ctx_health_diagnose temperature: 0.1 max_tokens: 512 output_format: json requires_fact_check: false validators: [schema, length] callers: [ctx-health, magatama-infra-health, infra-health, internal] fallback_chain: [ctxhealer:latest, qwen2.5:14b, qwen2.5:3b] ctx_health_alert: model: qwen2.5:14b tier: medium prompt_template: ctx_health_diagnose temperature: 0.1 max_tokens: 512 output_format: json requires_fact_check: false validators: [schema, length] callers: [ctx-health, internal] # ─── CtxSecurity — Blue/Red Team Defense ────────────────────────────────── ctx_security_classify: model: qwen2.5:14b tier: medium prompt_template: ctx_security_classify temperature: 0.05 max_tokens: 512 output_format: json requires_fact_check: false validators: [schema, length] callers: [ctx-security, internal] ctx_security_ddos: model: qwen2.5:14b tier: medium prompt_template: ctx_security_classify temperature: 0.05 max_tokens: 256 output_format: json requires_fact_check: false validators: [schema] callers: [ctx-security, internal] ctx_security_report: model: qwen2.5:14b tier: medium prompt_template: ctx_security_classify temperature: 0.2 max_tokens: 2048 output_format: text requires_fact_check: false validators: [banlist, length] callers: [ctx-security, internal] # Validator configuration validators: schema: enabled: true score_impact: -3.0 retry_on_fail: true banlist: enabled: true score_impact_per_hit: -1.0 max_penalty: -3.0 language: enabled: true wrong_language_impact: -2.0 formality_impact: -1.0 tip_validator: enabled: true score_impact_per_error: -1.5 immediate_reject_threshold: 3 fact_checker: enabled: true score_impact: -2.0 timeout_ms: 5000 length: enabled: true min_chars: 50 max_chars: 20000 score_impact: -1.0 question_closer: enabled: true score_impact: -1.5