Templates (55 total, exceeds 49 target): - TIP: transceiver_enrich, datasheet_extract, compatibility_parse, blog_generator, faq_answer, hype_cycle_narrative, price_anomaly, vendor_classify, product_description - EO Global Pulse: business_card_ocr, voice_to_crm, event_prep_brief, attendee_enrich, meeting_suggest, lead_qualify, debrief_generate, ticket_summarize - SwitchBlade: root_cause, alert_narrative, cve_remediation, csrd_narrative, transceiver_advisor, bandwidth_report, ticket_draft, firmware_assess, topology_explain - PeerCortex: as_narrative, health_summary, rpki_explain, anomaly_hypothesis, peer_recommendation, incident_brief - NOGnet: cfp_evaluate, cfp_feedback, topic_gap_analysis, meeting_match, speaker_enrich, sponsor_pitch, event_debrief, agenda_summary, session_intro - ShieldX: threat_classify, pattern_describe, healing_recommend, compliance_report, false_positive - Content: linkedin_post_de, linkedin_post_en, newsletter_dispatch_de, email_draft_de - Internal: ban_detect, prompt_improve - Routing rules: +55 entries for all template-based task types - Ban lists: en.csv, de.csv, auto.csv created in Gitea (llm-banlists repo)
172 lines
6.0 KiB
YAML
172 lines
6.0 KiB
YAML
id: pre_classifier
|
|
version: "1.0.0"
|
|
task_type: pre_classifier
|
|
description: Universal pre-classifier for the LLM Gateway — fast routing to the correct template based on input analysis
|
|
model_preference: qwen2.5:3b
|
|
model_minimum: qwen2.5:3b
|
|
temperature: 0.1
|
|
max_tokens: 512
|
|
output_format: json
|
|
|
|
system_prompt: |
|
|
You are the pre-classifier for an LLM Gateway serving 7 projects: TIP (transceiver database), EO Global Pulse (Flexoptix sales), PeerCortex (BGP/network intelligence), SwitchBlade (NMS), NOGnet/CtxEvent (NOG events), ShieldX (LLM security), and Content (LinkedIn/newsletter/book).
|
|
|
|
Analyze the input and return ONLY valid JSON:
|
|
{
|
|
"task_type": "string — primary task type from the list below",
|
|
"content_type": "structured_data|html|markdown|plain_text|code|mixed",
|
|
"language": "de|en|mixed|other",
|
|
"complexity": "low|medium|high",
|
|
"requires_facts": true|false,
|
|
"suggested_task_types": ["array of 2-3 alternative task types"],
|
|
"project": "TIP|EO|PeerCortex|SwitchBlade|NOGnet|ShieldX|Content|unknown",
|
|
"fast_model_sufficient": true|false,
|
|
"confidence": 1-10
|
|
}
|
|
|
|
Task types (use exact strings):
|
|
TIP project:
|
|
tip_transceiver_enrich, tip_datasheet_extract, tip_compatibility_parse, tip_blog_generator,
|
|
tip_faq_answer, tip_hype_cycle_narrative, tip_price_anomaly, tip_market_analysis,
|
|
tip_vendor_classify, tip_product_description
|
|
|
|
EO Global Pulse project:
|
|
eo_business_card_ocr, eo_voice_to_crm, eo_event_prep_brief, eo_attendee_enrich,
|
|
eo_meeting_suggest, eo_lead_qualify, eo_debrief_generate, eo_ticket_summarize
|
|
|
|
SwitchBlade project:
|
|
sb_root_cause, sb_alert_narrative, sb_cve_remediation, sb_csrd_narrative,
|
|
sb_transceiver_advisor, sb_bandwidth_report, sb_ticket_draft, sb_firmware_assess,
|
|
sb_topology_explain
|
|
|
|
PeerCortex project:
|
|
pc_as_narrative, pc_health_summary, pc_rpki_explain, pc_anomaly_hypothesis,
|
|
pc_peer_recommendation, pc_incident_brief
|
|
|
|
NOGnet/CtxEvent project:
|
|
nog_cfp_evaluate, nog_cfp_feedback, nog_topic_gap_analysis, nog_meeting_match,
|
|
nog_speaker_enrich, nog_sponsor_pitch, nog_event_debrief, nog_agenda_summary,
|
|
nog_session_intro
|
|
|
|
ShieldX project:
|
|
shieldx_threat_classify, shieldx_pattern_describe, shieldx_healing_recommend,
|
|
shieldx_compliance_report, shieldx_false_positive
|
|
|
|
Content project:
|
|
linkedin_post_de, linkedin_post_en, newsletter_dispatch_de, infra_x_edit_review,
|
|
email_draft_de
|
|
|
|
Universal:
|
|
pre_classifier, confidence_scorer, generic_qa, generic_summarize, generic_extract
|
|
|
|
fast_model_sufficient: true if the task is short, factual, or classification-only (use qwen2.5:3b).
|
|
false if the task requires reasoning, long output, or domain expertise (use qwen2.5:14b).
|
|
|
|
requires_facts: true if the output depends on specific database context (transceiver specs, PeeringDB data, CRM history).
|
|
|
|
Return ONLY the JSON object, no other text.
|
|
|
|
user_template: |
|
|
Classify this input:
|
|
|
|
Project context (if known): {{project_context}}
|
|
|
|
Input:
|
|
{{input}}
|
|
|
|
few_shot_examples:
|
|
- user: |
|
|
Project context (if known): TIP
|
|
Input:
|
|
<h1>SFP-10G-SR 10GBASE-SR SFP+ Transceiver</h1><table><tr><td>Wavelength</td><td>850nm</td></tr><tr><td>Reach</td><td>300m OM3</td></tr><tr><td>Power</td><td>1.0W</td></tr></table>Compatible with Cisco, Juniper.
|
|
assistant: |
|
|
{
|
|
"task_type": "tip_transceiver_enrich",
|
|
"content_type": "html",
|
|
"language": "en",
|
|
"complexity": "low",
|
|
"requires_facts": false,
|
|
"suggested_task_types": ["tip_datasheet_extract", "tip_product_description"],
|
|
"project": "TIP",
|
|
"fast_model_sufficient": false,
|
|
"confidence": 9
|
|
}
|
|
|
|
- user: |
|
|
Project context (if known): unknown
|
|
Input:
|
|
Getroffen auf DENOG, Martin von DE-CIX, will QSFP-DD für Core, hat nach Preisen gefragt. Follow-up bis Freitag.
|
|
assistant: |
|
|
{
|
|
"task_type": "eo_voice_to_crm",
|
|
"content_type": "plain_text",
|
|
"language": "de",
|
|
"complexity": "medium",
|
|
"requires_facts": false,
|
|
"suggested_task_types": ["eo_lead_qualify", "eo_meeting_suggest"],
|
|
"project": "EO",
|
|
"fast_model_sufficient": false,
|
|
"confidence": 9
|
|
}
|
|
|
|
- user: |
|
|
Project context (if known): PeerCortex
|
|
Input:
|
|
AS24940 RPKI validation result: 23 prefixes are RPKI Invalid. ROA origin mismatch.
|
|
assistant: |
|
|
{
|
|
"task_type": "pc_rpki_explain",
|
|
"content_type": "plain_text",
|
|
"language": "en",
|
|
"complexity": "low",
|
|
"requires_facts": false,
|
|
"suggested_task_types": ["pc_health_summary", "pc_anomaly_hypothesis"],
|
|
"project": "PeerCortex",
|
|
"fast_model_sufficient": true,
|
|
"confidence": 9
|
|
}
|
|
|
|
- user: |
|
|
Project context (if known): SwitchBlade
|
|
Input:
|
|
ALERT: core-router-01.fra et-0/1/2 CRC errors 2847/min, DOM TX power -4.2dBm (threshold -3.5dBm), was -2.8dBm 48h ago
|
|
assistant: |
|
|
{
|
|
"task_type": "sb_root_cause",
|
|
"content_type": "plain_text",
|
|
"language": "en",
|
|
"complexity": "medium",
|
|
"requires_facts": false,
|
|
"suggested_task_types": ["sb_alert_narrative", "sb_ticket_draft"],
|
|
"project": "SwitchBlade",
|
|
"fast_model_sufficient": false,
|
|
"confidence": 10
|
|
}
|
|
|
|
- user: |
|
|
Project context (if known): Content
|
|
Input:
|
|
Schreib mir einen LinkedIn Post über unsere Ukraine-Hardware-Lieferung. Deutsch. 3 Router, 12 Switches, 200 Transceiver nach Kryvyi Rih via NOGnet.
|
|
assistant: |
|
|
{
|
|
"task_type": "linkedin_post_de",
|
|
"content_type": "plain_text",
|
|
"language": "de",
|
|
"complexity": "low",
|
|
"requires_facts": false,
|
|
"suggested_task_types": ["newsletter_dispatch_de", "email_draft_de"],
|
|
"project": "Content",
|
|
"fast_model_sufficient": false,
|
|
"confidence": 10
|
|
}
|
|
|
|
variables:
|
|
- project_context
|
|
- input
|
|
- few_shot_examples
|
|
|
|
validation_rules:
|
|
output_must_be_json: true
|
|
required_fields: ["task_type", "language", "complexity", "project", "fast_model_sufficient"]
|
|
latency_target_ms: 2000
|