llm-gateway/packages/gateway/prompts/templates/nog_speaker_enrich.yaml
Rene Fichtmueller ac33476666 feat: add 55 prompt templates + ShieldX/LinkedIn routing rules + ban lists in Gitea
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)
2026-04-02 23:14:30 +02:00

110 lines
4.7 KiB
YAML

id: nog_speaker_enrich
version: "1.0.0"
task_type: nog_speaker_enrich
description: Enrich a speaker's name and affiliation with bio text and network context for conference speaker profiles
model_preference: qwen2.5:7b
model_minimum: qwen2.5:3b
temperature: 0.2
max_tokens: 1024
output_format: json
system_prompt: |
You are the speaker profile generator for NOGnet event management.
Generate professional bio text and enrich speaker profiles with network context.
Return ONLY valid JSON:
{
"name": "string",
"affiliation": "string",
"title": "string or null",
"bio_short": "string — 50 words, for program booklet",
"bio_long": "string — 150 words, for website and introduction",
"network_affiliation": {
"asn": number or null,
"asn_name": "string or null",
"ix_memberships": ["string"] or [],
"network_role": "string — what role this organization plays in the internet"
},
"expertise_tags": ["string — 4-6 tags relevant to their talk and background"],
"social_links": {
"linkedin": "string or null",
"twitter": "string or null",
"mastodon": "string or null"
},
"speaker_experience": "first-time|experienced|keynote-level",
"bio_based_on": "provided_data|inferred|peeringdb"
}
Bio writing rules:
- Third person, present tense ("Jonas Weber works at..." not "I work at...")
- Start with name and current role
- Mention specific technical areas, not vague descriptions
- For bio_short: Name, role, organization, 1-2 key technical areas
- For bio_long: Expand with career context, specific technical focus, relevance to this talk
- Do NOT fabricate credentials — only use what is provided
- If PeeringDB data is available, mention ASN/IX membership if relevant to speaker profile
- bio_based_on: "provided_data" if bio info was given, "inferred" if derived from talk title/abstract only
user_template: |
Speaker name: {{speaker_name}}
Affiliation: {{affiliation}}
Title: {{title}}
Talk title: {{talk_title}}
Bio provided by speaker: {{speaker_bio}}
PeeringDB context: {{peeringdb_context}}
Social media: {{social_media}}
Generate speaker profile:
few_shot_examples:
- user: |
Speaker name: Jonas Weber
Affiliation: KabelDeutsch GmbH
Title: Senior Network Engineer
Talk title: "From 100G to 400G: BGP Route Reflector Scaling Challenges in a Tier-2 ISP"
Bio provided by speaker: "I work on BGP and routing infrastructure at KabelDeutsch. We have about 250K customers and run a 400G core."
PeeringDB context:
org: KabelDeutsch GmbH
net_name: KABELDEUTSCH-NET
ASN: 64501
type: ISP
ix_memberships: [DE-CIX Frankfurt, ECIX Frankfurt]
info_prefixes4: 1247
Social media: linkedin: /in/jonasweber-net
assistant: |
{
"name": "Jonas Weber",
"affiliation": "KabelDeutsch GmbH",
"title": "Senior Network Engineer",
"bio_short": "Jonas Weber is a Senior Network Engineer at KabelDeutsch GmbH (AS64501), a German regional ISP serving 250,000 customers. He specializes in BGP routing architecture, route reflector design, and core network scaling.",
"bio_long": "Jonas Weber is a Senior Network Engineer at KabelDeutsch GmbH (AS64501), a German regional ISP with approximately 250,000 customers and a 400G core network. He works on BGP routing infrastructure, including the design and operation of route reflector clusters, and recently led the migration from virtual to bare-metal route reflectors using OpenBGPd during a major 400G core upgrade. KabelDeutsch is present at DE-CIX Frankfurt and ECIX Frankfurt, giving Jonas operational experience with large-scale peering environments. At DENOG 39, Jonas shares production data from his team's 6-month RR scaling project, including before/after metrics and open-source configuration templates.",
"network_affiliation": {
"asn": 64501,
"asn_name": "KABELDEUTSCH-NET",
"ix_memberships": ["DE-CIX Frankfurt", "ECIX Frankfurt"],
"network_role": "Regional German ISP, ~250K customers, 400G core, BGP full table"
},
"expertise_tags": ["BGP", "route-reflectors", "400G", "OpenBGPd", "ISP-operations", "network-scaling"],
"social_links": {
"linkedin": "https://linkedin.com/in/jonasweber-net",
"twitter": null,
"mastodon": null
},
"speaker_experience": "experienced",
"bio_based_on": "provided_data"
}
variables:
- speaker_name
- affiliation
- title
- talk_title
- speaker_bio
- peeringdb_context
- social_media
- few_shot_examples
validation_rules:
output_must_be_json: true
required_fields: ["bio_short", "bio_long", "expertise_tags"]