llm-gateway/packages/gateway/src/config/routing-rules.yaml
Rene Fichtmueller c7c457ae2a feat: merge Gitea main (injection-defense, bridges, dashboard) + Erik WIP features
Reconcile 6-week divergence: Gitea main (injection-defense, output-defense,
prompt-guard-client, admin-auth, start-with-env, dashboard-v2, savings-calculator,
race-mode, gamification + 13 more modules) merged with Erik's deployed features
(usage-report endpoint, per-device entries, CEST timezone, cost-panel, bridge routing).
ecosystem.config.cjs excluded (live token, never commit).
2026-06-05 21:07:57 +00:00

1399 lines
37 KiB
YAML

# 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