(function() {
  var extra = [ /* questions */
    {
      id: 'ai103-201', type: 'single',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which Azure AI Foundry structure should you use to isolate dev, test, and prod assets while keeping shared governance?', de: 'Welche Azure AI Foundry-Struktur sollten Sie verwenden, um Dev-, Test- und Prod-Artefakte zu isolieren und gleichzeitig gemeinsame Governance beizubehalten?' },
      options: [
        { id: 'A', text: { en: 'Separate Azure AI Foundry projects', de: 'Getrennte Azure AI Foundry-Projekte' } },
        { id: 'B', text: { en: 'A hub-level connection', de: 'Eine Verbindung auf Hub-Ebene' } },
        { id: 'C', text: { en: 'A single shared project', de: 'Ein einzelnes gemeinsames Projekt' } },
        { id: 'D', text: { en: 'A browser folder', de: 'Einen Browserordner' } }
      ],
      correct: ['A'],
      explanation: { en: 'Separate Azure AI Foundry projects is correct because projects provide the environment boundary while the hub keeps shared governance.', de: 'Getrennte Azure AI Foundry-Projekte ist richtig, weil Projekte die Umgebungsgrenze bilden, während der Hub gemeinsame Governance beibehält.' },
      hint: { en: 'Think isolation under one shared governance layer.', de: 'Denken Sie an Isolation unter einer gemeinsamen Governance-Ebene.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-foundry/how-to/create-projects'
    },
    {
      id: 'ai103-202', type: 'single',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which practice should you use before upgrading a production deployment to a newer model version?', de: 'Welche Praxis sollten Sie anwenden, bevor Sie eine Produktionsbereitstellung auf eine neuere Modellversion aktualisieren?' },
      options: [
        { id: 'A', text: { en: 'A benchmark evaluation run', de: 'Ein Benchmark-Evaluierungslauf' } },
        { id: 'B', text: { en: 'Shadow testing', de: 'Shadow Testing' } },
        { id: 'C', text: { en: 'A cost budget alert', de: 'Eine Kostenbudgetwarnung' } },
        { id: 'D', text: { en: 'A browser refresh', de: 'Eine Browseraktualisierung' } }
      ],
      correct: ['A'],
      explanation: { en: 'A benchmark evaluation run is correct because you should measure the candidate against known benchmark cases before promotion.', de: 'Ein Benchmark-Evaluierungslauf ist richtig, weil Sie den Kandidaten vor der Freigabe anhand bekannter Benchmark-Fälle messen sollten.' },
      hint: { en: 'Gather evidence before rollout.', de: 'Sammeln Sie Nachweise vor dem Rollout.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/evaluation-approach-gen-ai'
    },
    {
      id: 'ai103-203', type: 'single',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which metric best measures an SLO that says 95 percent of requests must complete within 2 seconds?', de: 'Welche Metrik misst am besten ein SLO, das besagt, dass 95 Prozent der Anforderungen innerhalb von 2 Sekunden abgeschlossen sein müssen?' },
      options: [
        { id: 'A', text: { en: 'P95 latency', de: 'P95-Latenz' } },
        { id: 'B', text: { en: 'HTTP 429 rate', de: 'HTTP-429-Rate' } },
        { id: 'C', text: { en: 'Average token count', de: 'Durchschnittliche Tokenzahl' } },
        { id: 'D', text: { en: 'Browser zoom level', de: 'Browser-Zoomstufe' } }
      ],
      correct: ['A'],
      explanation: { en: 'P95 latency is correct because percentile latency aligns directly to that objective.', de: 'P95-Latenz ist richtig, weil Perzentillatenz direkt zu diesem Ziel passt.' },
      hint: { en: 'The SLO speaks about the slow tail, not the mean.', de: 'Das SLO spricht vom langsamen Rand und nicht vom Mittelwert.' },
      reference: 'https://learn.microsoft.com/en-us/azure/azure-monitor/overview'
    },
    {
      id: 'ai103-204', type: 'single',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which control should finance use to detect unexpected spend growth on provisioned throughput early?', de: 'Welche Kontrolle sollte die Finanzabteilung verwenden, um unerwartetes Kostenwachstum bei bereitgestelltem Durchsatz frühzeitig zu erkennen?' },
      options: [
        { id: 'A', text: { en: 'A cost budget alert', de: 'Eine Kostenbudgetwarnung' } },
        { id: 'B', text: { en: 'A Log Analytics workspace', de: 'Ein Log Analytics-Arbeitsbereich' } },
        { id: 'C', text: { en: 'A wiki page', de: 'Eine Wiki-Seite' } },
        { id: 'D', text: { en: 'A CSS file', de: 'Eine CSS-Datei' } }
      ],
      correct: ['A'],
      explanation: { en: 'A cost budget alert is correct because a budget alert notifies stakeholders before spend exceeds expectations.', de: 'Eine Kostenbudgetwarnung ist richtig, weil eine Budgetwarnung Beteiligte informiert, bevor die Ausgaben die Erwartungen überschreiten.' },
      hint: { en: 'This is a cost-governance question.', de: 'Dies ist eine Frage der Kostengovernance.' },
      reference: 'https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-acm-create-budgets'
    },
    {
      id: 'ai103-205', type: 'single',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which governance control should require cost-center tags on every AI resource?', de: 'Welche Governance-Kontrolle sollte Kostenstellen-Tags für jede KI-Ressource verlangen?' },
      options: [
        { id: 'A', text: { en: 'An Azure Policy with required tags', de: 'Eine Azure Policy mit erforderlichen Tags' } },
        { id: 'B', text: { en: 'A cost budget alert', de: 'Eine Kostenbudgetwarnung' } },
        { id: 'C', text: { en: 'A Log Analytics workspace', de: 'Ein Log Analytics-Arbeitsbereich' } },
        { id: 'D', text: { en: 'A dashboard note', de: 'Eine Dashboard-Notiz' } }
      ],
      correct: ['A'],
      explanation: { en: 'An Azure Policy with required tags is correct because policy can enforce required tagging at deployment time.', de: 'Eine Azure Policy mit erforderlichen Tags ist richtig, weil eine Richtlinie erforderliche Tags zum Bereitstellungszeitpunkt erzwingen kann.' },
      hint: { en: 'The requirement is preventive enforcement.', de: 'Die Anforderung ist präventive Durchsetzung.' },
      reference: 'https://learn.microsoft.com/en-us/azure/governance/policy/overview'
    },
    {
      id: 'ai103-206', type: 'single',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which testing approach mirrors production traffic to a new deployment without exposing its answers to end users?', de: 'Welcher Testansatz spiegelt Produktivverkehr auf eine neue Bereitstellung, ohne deren Antworten Endbenutzern anzuzeigen?' },
      options: [
        { id: 'A', text: { en: 'Shadow testing', de: 'Shadow Testing' } },
        { id: 'B', text: { en: 'A canary release', de: 'Eine Canary-Bereitstellung' } },
        { id: 'C', text: { en: 'A budget alert', de: 'Eine Budgetwarnung' } },
        { id: 'D', text: { en: 'A browser cache', de: 'Einen Browser-Cache' } }
      ],
      correct: ['A'],
      explanation: { en: 'Shadow testing is correct because shadow testing compares the new path on live traffic while the current version still serves users.', de: 'Shadow Testing ist richtig, weil Shadow Testing den neuen Pfad anhand von Live-Traffic vergleicht, während die aktuelle Version weiterhin Benutzer bedient.' },
      hint: { en: 'The traffic is real, but user exposure is hidden.', de: 'Der Traffic ist echt, aber die Benutzerausgabe bleibt verborgen.' },
      reference: 'https://learn.microsoft.com/en-us/azure/well-architected/operational-excellence/safe-deployments'
    },
    {
      id: 'ai103-207', type: 'single',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which Foundry artifact should store reusable endpoints and credentials instead of hard-coding them in application settings?', de: 'Welches Foundry-Artefakt sollte wiederverwendbare Endpunkte und Anmeldeinformationen speichern, statt sie in Anwendungseinstellungen fest zu codieren?' },
      options: [
        { id: 'A', text: { en: 'A Foundry connection object', de: 'Ein Foundry-Verbindungsobjekt' } },
        { id: 'B', text: { en: 'A hub-level connection', de: 'Eine Verbindung auf Hub-Ebene' } },
        { id: 'C', text: { en: 'A local JSON file', de: 'Eine lokale JSON-Datei' } },
        { id: 'D', text: { en: 'A DNS zone', de: 'Eine DNS-Zone' } }
      ],
      correct: ['A'],
      explanation: { en: 'A Foundry connection object is correct because connections encapsulate service endpoint and authentication details for reuse.', de: 'Ein Foundry-Verbindungsobjekt ist richtig, weil Verbindungen Endpunkt- und Authentifizierungsdetails für die Wiederverwendung kapseln.' },
      hint: { en: 'Choose the managed reference, not a raw file.', de: 'Wählen Sie den verwalteten Verweis und keine Rohdatei.' },
      reference: 'https://learn.microsoft.com/en-us/azure/foundry/concepts/architecture'
    },
    {
      id: 'ai103-208', type: 'single',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which planning artifact should document how the solution fails over if one Azure region becomes unavailable?', de: 'Welches Planungsartefakt sollte dokumentieren, wie die Lösung bei Ausfall einer Azure-Region umschaltet?' },
      options: [
        { id: 'A', text: { en: 'A regional failover plan', de: 'Ein regionaler Failover-Plan' } },
        { id: 'B', text: { en: 'A cost budget alert', de: 'Eine Kostenbudgetwarnung' } },
        { id: 'C', text: { en: 'An Azure Policy with required tags', de: 'Eine Azure Policy mit erforderlichen Tags' } },
        { id: 'D', text: { en: 'A browser bookmark', de: 'Ein Browser-Lesezeichen' } }
      ],
      correct: ['A'],
      explanation: { en: 'A regional failover plan is correct because business continuity requires an explicit failover plan for regional outages.', de: 'Ein regionaler Failover-Plan ist richtig, weil Business Continuity einen expliziten Failover-Plan für regionale Ausfälle erfordert.' },
      hint: { en: 'The question is about continuity planning.', de: 'Die Frage betrifft Kontinuitätsplanung.' },
      reference: 'https://learn.microsoft.com/en-us/azure/well-architected/operational-excellence/safe-deployments'
    },
    {
      id: 'ai103-209', type: 'single',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which setting should security review first when an Azure AI resource must not be reachable from the public internet?', de: 'Welche Einstellung sollte die Sicherheit zuerst prüfen, wenn eine Azure AI-Ressource nicht aus dem öffentlichen Internet erreichbar sein darf?' },
      options: [
        { id: 'A', text: { en: 'Disable public network access', de: 'Öffentlichen Netzwerkzugriff deaktivieren' } },
        { id: 'B', text: { en: 'Enable local auth', de: 'Lokale Authentifizierung aktivieren' } },
        { id: 'C', text: { en: 'A budget alert', de: 'Eine Budgetwarnung' } },
        { id: 'D', text: { en: 'A prompt template', de: 'Eine Promptvorlage' } }
      ],
      correct: ['A'],
      explanation: { en: 'Disable public network access is correct because public network access must be disabled to remove the public endpoint path.', de: 'Öffentlichen Netzwerkzugriff deaktivieren ist richtig, weil der öffentliche Netzwerkzugriff deaktiviert werden muss, um den öffentlichen Endpunktpfad zu entfernen.' },
      hint: { en: 'This is about exposure, not credentials.', de: 'Es geht um Exponierung und nicht um Anmeldeinformationen.' },
      reference: 'https://learn.microsoft.com/en-us/azure/private-link/private-endpoint-overview'
    },
    {
      id: 'ai103-210', type: 'single',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which connection scope lets several projects reuse the same governed endpoint?', de: 'Welche Verbindungsebene ermöglicht mehreren Projekten die Wiederverwendung desselben governierten Endpunkts?' },
      options: [
        { id: 'A', text: { en: 'A hub-level connection', de: 'Eine Verbindung auf Hub-Ebene' } },
        { id: 'B', text: { en: 'A Foundry connection object', de: 'Ein Foundry-Verbindungsobjekt' } },
        { id: 'C', text: { en: 'A local environment variable', de: 'Eine lokale Umgebungsvariable' } },
        { id: 'D', text: { en: 'A browser profile', de: 'Ein Browser-Profil' } }
      ],
      correct: ['A'],
      explanation: { en: 'A hub-level connection is correct because hub-level connections are designed for reuse across projects.', de: 'Eine Verbindung auf Hub-Ebene ist richtig, weil Verbindungen auf Hub-Ebene für die Wiederverwendung über Projekte hinweg ausgelegt sind.' },
      hint: { en: 'Think shared governance and reuse.', de: 'Denken Sie an gemeinsame Governance und Wiederverwendung.' },
      reference: 'https://learn.microsoft.com/en-us/azure/foundry/concepts/architecture'
    },
    {
      id: 'ai103-211', type: 'single',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which release practice best limits blast radius when introducing a new system prompt or retrieval policy?', de: 'Welche Release-Praxis begrenzt den Wirkungsbereich am besten, wenn ein neuer Systemprompt oder eine neue Retrieval-Richtlinie eingeführt wird?' },
      options: [
        { id: 'A', text: { en: 'A canary release', de: 'Eine Canary-Bereitstellung' } },
        { id: 'B', text: { en: 'Shadow testing', de: 'Shadow Testing' } },
        { id: 'C', text: { en: 'A static wiki announcement', de: 'Eine statische Wiki-Ankündigung' } },
        { id: 'D', text: { en: 'A browser reset', de: 'Einen Browser-Reset' } }
      ],
      correct: ['A'],
      explanation: { en: 'A canary release is correct because canary rollout limits user exposure while still generating real production feedback.', de: 'Eine Canary-Bereitstellung ist richtig, weil ein Canary-Rollout die Benutzerexponierung begrenzt und dennoch echtes Produktionsfeedback erzeugt.' },
      hint: { en: 'This pattern sends the new version to only a subset of users.', de: 'Dieses Muster sendet die neue Version nur an einen Teil der Benutzer.' },
      reference: 'https://learn.microsoft.com/en-us/azure/well-architected/operational-excellence/safe-deployments'
    },
    {
      id: 'ai103-212', type: 'single',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which signal should you monitor beside latency when validating capacity planning for generative workloads?', de: 'Welches Signal sollten Sie neben der Latenz überwachen, wenn Sie die Kapazitätsplanung für generative Workloads validieren?' },
      options: [
        { id: 'A', text: { en: 'HTTP 429 rate', de: 'HTTP-429-Rate' } },
        { id: 'B', text: { en: 'A cost budget alert', de: 'Eine Kostenbudgetwarnung' } },
        { id: 'C', text: { en: 'Average browser load time', de: 'Durchschnittliche Browserladezeit' } },
        { id: 'D', text: { en: 'A favicon update', de: 'Eine Aktualisierung des Favicons' } }
      ],
      correct: ['A'],
      explanation: { en: 'HTTP 429 rate is correct because throttling shows whether demand is exceeding available service capacity.', de: 'HTTP-429-Rate ist richtig, weil Drosselung zeigt, ob die Nachfrage die verfügbare Dienstkapazität überschreitet.' },
      hint: { en: 'Capacity planning is not only about speed.', de: 'Kapazitätsplanung betrifft nicht nur Geschwindigkeit.' },
      reference: 'https://learn.microsoft.com/en-us/azure/azure-monitor/overview'
    },
    {
      id: 'ai103-213', type: 'multiple',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which TWO actions help separate environments while keeping central governance?', de: 'Welche ZWEI Maßnahmen helfen, Umgebungen zu trennen und gleichzeitig zentrale Governance beizubehalten?' },
      options: [
        { id: 'A', text: { en: 'Separate Azure AI Foundry projects', de: 'Getrennte Azure AI Foundry-Projekte' } },
        { id: 'B', text: { en: 'A hub-level connection', de: 'Eine Verbindung auf Hub-Ebene' } },
        { id: 'C', text: { en: 'Store all prompts in one project', de: 'Alle Prompts in einem Projekt speichern' } },
        { id: 'D', text: { en: 'Share secrets in email', de: 'Geheimnisse per E-Mail teilen' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Separate Azure AI Foundry projects, A hub-level connection are correct because one isolates environment assets and the other centralizes shared connectivity.', de: 'Getrennte Azure AI Foundry-Projekte, Eine Verbindung auf Hub-Ebene sind richtig, weil die eine Umgebungsartefakte isoliert und die andere gemeinsame Konnektivität zentralisiert.' },
      hint: { en: 'Pick one for isolation and one for shared management.', de: 'Wählen Sie eine für Isolation und eine für gemeinsames Management.' },
      reference: 'https://learn.microsoft.com/en-us/azure/foundry/concepts/architecture'
    },
    {
      id: 'ai103-214', type: 'multiple',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO actions improve model lifecycle control in production?', de: 'Welche ZWEI Maßnahmen verbessern die Kontrolle des Modelllebenszyklus in Produktion?' },
      options: [
        { id: 'A', text: { en: 'Pin the deployment to a tested model version', de: 'Die Bereitstellung an eine getestete Modellversion binden' } },
        { id: 'B', text: { en: 'A benchmark evaluation run', de: 'Ein Benchmark-Evaluierungslauf' } },
        { id: 'C', text: { en: 'Disable monitoring', de: 'Monitoring deaktivieren' } },
        { id: 'D', text: { en: 'Store outputs in a wiki', de: 'Ausgaben in einem Wiki speichern' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Pin the deployment to a tested model version, A benchmark evaluation run are correct because one keeps production on the approved version and the other validates a candidate before rollout.', de: 'Die Bereitstellung an eine getestete Modellversion binden, Ein Benchmark-Evaluierungslauf sind richtig, weil die eine die Produktion auf der freigegebenen Version hält und die andere einen Kandidaten vor dem Rollout validiert.' },
      hint: { en: 'Think control before and during upgrade.', de: 'Denken Sie an Kontrolle vor und während des Upgrades.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/evaluation-approach-gen-ai'
    },
    {
      id: 'ai103-215', type: 'multiple',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which THREE controls support operational governance for Azure AI solutions?', de: 'Welche DREI Kontrollen unterstützen operative Governance für Azure AI-Lösungen?' },
      options: [
        { id: 'A', text: { en: 'A cost budget alert', de: 'Eine Kostenbudgetwarnung' } },
        { id: 'B', text: { en: 'An Azure Policy with required tags', de: 'Eine Azure Policy mit erforderlichen Tags' } },
        { id: 'C', text: { en: 'A Log Analytics workspace', de: 'Ein Log Analytics-Arbeitsbereich' } },
        { id: 'D', text: { en: 'A larger font', de: 'Eine größere Schrift' } },
        { id: 'E', text: { en: 'A wallpaper image', de: 'Ein Hintergrundbild' } }
      ],
      correct: ['A', 'B', 'C'],
      explanation: { en: 'A cost budget alert, An Azure Policy with required tags, A Log Analytics workspace are correct because they support cost visibility, tagging policy, and centralized observability.', de: 'Eine Kostenbudgetwarnung, Eine Azure Policy mit erforderlichen Tags, Ein Log Analytics-Arbeitsbereich sind richtig, weil sie Kostentransparenz, Tagging-Richtlinien und zentrale Beobachtbarkeit unterstützen.' },
      hint: { en: 'Choose cost, policy, and monitoring controls.', de: 'Wählen Sie Kosten-, Richtlinien- und Monitoring-Kontrollen.' },
      reference: 'https://learn.microsoft.com/en-us/azure/azure-monitor/overview'
    },
    {
      id: 'ai103-216', type: 'multiple',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which TWO signals are strongest for capacity planning?', de: 'Welche ZWEI Signale sind für die Kapazitätsplanung am aussagekräftigsten?' },
      options: [
        { id: 'A', text: { en: 'P95 latency', de: 'P95-Latenz' } },
        { id: 'B', text: { en: 'HTTP 429 rate', de: 'HTTP-429-Rate' } },
        { id: 'C', text: { en: 'A browser color scheme', de: 'Ein Browser-Farbschema' } },
        { id: 'D', text: { en: 'A page title length', de: 'Eine Seitentitellänge' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'P95 latency, HTTP 429 rate are correct because latency shows service quality and throttling shows whether requests are exceeding capacity.', de: 'P95-Latenz, HTTP-429-Rate sind richtig, weil Latenz die Servicequalität zeigt und Drosselung erkennen lässt, ob Anforderungen die Kapazität überschreiten.' },
      hint: { en: 'Choose one quality signal and one saturation signal.', de: 'Wählen Sie ein Qualitätssignal und ein Sättigungssignal.' },
      reference: 'https://learn.microsoft.com/en-us/azure/azure-monitor/overview'
    },
    {
      id: 'ai103-217', type: 'multiple',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which TWO practices reduce rollout risk for prompt or model changes?', de: 'Welche ZWEI Praktiken verringern das Rollout-Risiko bei Prompt- oder Modelländerungen?' },
      options: [
        { id: 'A', text: { en: 'Shadow testing', de: 'Shadow Testing' } },
        { id: 'B', text: { en: 'A canary release', de: 'Eine Canary-Bereitstellung' } },
        { id: 'C', text: { en: 'Disable budgets', de: 'Budgets deaktivieren' } },
        { id: 'D', text: { en: 'Use a shared password file', de: 'Eine gemeinsam genutzte Kennwortdatei verwenden' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Shadow testing, A canary release are correct because one validates behavior invisibly on real traffic and the other exposes it gradually.', de: 'Shadow Testing, Eine Canary-Bereitstellung sind richtig, weil die eine das Verhalten unsichtbar auf echtem Traffic validiert und die andere es schrittweise ausrollt.' },
      hint: { en: 'Combine parallel observation with gradual exposure.', de: 'Kombinieren Sie parallele Beobachtung mit schrittweiser Bereitstellung.' },
      reference: 'https://learn.microsoft.com/en-us/azure/well-architected/operational-excellence/safe-deployments'
    },
    {
      id: 'ai103-218', type: 'scenario',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'medium',
      scenario: { en: 'Contoso uses one Azure AI Foundry hub for several environments. Developers keep overwriting prompts and connections while moving work between dev, test, and prod. The platform team still wants shared governance and common connections. Architecture needs the cleanest isolation boundary for each environment.', de: 'Contoso nutzt einen Azure AI Foundry-Hub für mehrere Umgebungen. Entwickler überschreiben weiterhin Prompts und Verbindungen, während sie Arbeit zwischen Dev, Test und Prod verschieben. Das Plattformteam möchte dennoch gemeinsame Governance und gemeinsame Verbindungen beibehalten. Die Architektur benötigt die sauberste Isolationsgrenze für jede Umgebung.' },
      question: { en: 'What should Contoso create?', de: 'Was sollte Contoso erstellen?' },
      options: [
        { id: 'A', text: { en: 'Separate Azure AI Foundry projects', de: 'Getrennte Azure AI Foundry-Projekte' } },
        { id: 'B', text: { en: 'One larger shared project', de: 'Ein größeres gemeinsames Projekt' } },
        { id: 'C', text: { en: 'A browser folder per team', de: 'Einen Browserordner pro Team' } },
        { id: 'D', text: { en: 'A wiki page for prompts', de: 'Eine Wiki-Seite für Prompts' } }
      ],
      correct: ['A'],
      explanation: { en: 'Separate Azure AI Foundry projects is correct because environment-specific projects isolate assets while preserving shared governance at the hub.', de: 'Getrennte Azure AI Foundry-Projekte ist richtig, weil umgebungsspezifische Projekte Artefakte isolieren und gleichzeitig gemeinsame Governance im Hub erhalten.' },
      hint: { en: 'The issue is environment isolation, not connectivity reuse.', de: 'Das Problem ist Umgebungsisolation und nicht die Wiederverwendung von Verbindungen.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-foundry/how-to/create-projects'
    },
    {
      id: 'ai103-219', type: 'scenario',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'hard',
      scenario: { en: 'Fabrikam allowed a hosted model deployment to move forward automatically when the provider published an update. A weekend change altered output quality and support teams had no approval checkpoint before the new behavior reached production. Compliance now requires that production stay on explicitly approved behavior. The team wants the most direct preventive control.', de: 'Fabrikam hat einer gehosteten Modellbereitstellung erlaubt, bei einer Anbieteraktualisierung automatisch voranzuschreiten. Eine Änderung am Wochenende verschlechterte die Ausgabequalität, und die Support-Teams hatten keinen Genehmigungspunkt, bevor das neue Verhalten die Produktion erreichte. Die Compliance verlangt nun, dass die Produktion auf ausdrücklich freigegebenem Verhalten bleibt. Das Team möchte die direkteste präventive Kontrolle.' },
      question: { en: 'What should Fabrikam change?', de: 'Was sollte Fabrikam ändern?' },
      options: [
        { id: 'A', text: { en: 'Pin the deployment to a tested model version', de: 'Die Bereitstellung an eine getestete Modellversion binden' } },
        { id: 'B', text: { en: 'Increase browser cache size', de: 'Die Größe des Browser-Caches erhöhen' } },
        { id: 'C', text: { en: 'Disable diagnostics', de: 'Diagnose deaktivieren' } },
        { id: 'D', text: { en: 'Add a favicon', de: 'Ein Favicon hinzufügen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Pin the deployment to a tested model version is correct because pinning keeps the production deployment on the version that has already been approved.', de: 'Die Bereitstellung an eine getestete Modellversion binden ist richtig, weil das Binden die Produktionsbereitstellung auf der Version hält, die bereits freigegeben wurde.' },
      hint: { en: 'The problem is uncontrolled version drift.', de: 'Das Problem ist unkontrollierte Versionsdrift.' },
      reference: 'https://learn.microsoft.com/en-us/azure/well-architected/operational-excellence/safe-deployments'
    },
    {
      id: 'ai103-220', type: 'scenario',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'medium',
      scenario: { en: 'Tailwind Traders uses provisioned capacity for a production assistant. Finance noticed a steep spend increase last month and wants an automatic warning before the monthly threshold is exceeded again. The team wants a control that alerts stakeholders without changing the application. Operations is looking for the standard Azure cost-governance mechanism.', de: 'Tailwind Traders verwendet bereitgestellte Kapazität für einen Produktionsassistenten. Die Finanzabteilung bemerkte im letzten Monat einen starken Kostenanstieg und möchte eine automatische Warnung, bevor die monatliche Schwelle erneut überschritten wird. Das Team möchte eine Kontrolle, die Beteiligte warnt, ohne die Anwendung zu ändern. Der Betrieb sucht nach dem Standardmechanismus für Azure-Kostengovernance.' },
      question: { en: 'Which control should Tailwind Traders configure?', de: 'Welche Kontrolle sollte Tailwind Traders konfigurieren?' },
      options: [
        { id: 'A', text: { en: 'A cost budget alert', de: 'Eine Kostenbudgetwarnung' } },
        { id: 'B', text: { en: 'A browser reminder', de: 'Eine Browser-Erinnerung' } },
        { id: 'C', text: { en: 'A CSS banner', de: 'Ein CSS-Banner' } },
        { id: 'D', text: { en: 'A local spreadsheet', de: 'Eine lokale Tabelle' } }
      ],
      correct: ['A'],
      explanation: { en: 'A cost budget alert is correct because budget alerts are designed to notify stakeholders as spend approaches or exceeds a threshold.', de: 'Eine Kostenbudgetwarnung ist richtig, weil Budgetwarnungen dafür ausgelegt sind, Beteiligte zu informieren, wenn Ausgaben sich einer Schwelle nähern oder sie überschreiten.' },
      hint: { en: 'This is about financial alerting, not service behavior.', de: 'Es geht um finanzielle Alarmierung und nicht um Dienstverhalten.' },
      reference: 'https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-acm-create-budgets'
    },
    {
      id: 'ai103-221', type: 'scenario',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'medium',
      scenario: { en: 'Litware has a latency objective for a public support copilot. Average response time looks acceptable, but customers still report noticeable slow spikes. Engineering needs a metric that exposes whether the tail of the latency distribution violates the objective. The monitoring design should align directly to the SLO wording.', de: 'Litware hat ein Latenzziel für einen öffentlichen Support-Copiloten. Die durchschnittliche Antwortzeit wirkt akzeptabel, aber Kunden melden weiterhin spürbare Langsamkeitsspitzen. Das Engineering benötigt eine Metrik, die sichtbar macht, ob der lange Rand der Latenzverteilung das Ziel verletzt. Das Monitoring-Design sollte direkt auf die Formulierung des SLOs ausgerichtet sein.' },
      question: { en: 'Which metric should Litware alert on?', de: 'Auf welche Metrik sollte Litware einen Alarm setzen?' },
      options: [
        { id: 'A', text: { en: 'P95 latency', de: 'P95-Latenz' } },
        { id: 'B', text: { en: 'Average browser zoom', de: 'Durchschnittlicher Browser-Zoom' } },
        { id: 'C', text: { en: 'A page background color', de: 'Eine Hintergrundfarbe der Seite' } },
        { id: 'D', text: { en: 'A bookmark count', de: 'Eine Anzahl von Lesezeichen' } }
      ],
      correct: ['A'],
      explanation: { en: 'P95 latency is correct because P95 exposes slow outliers that averages can hide.', de: 'P95-Latenz ist richtig, weil P95 langsame Ausreißer sichtbar macht, die Durchschnittswerte verdecken können.' },
      hint: { en: 'The SLO is about the long tail.', de: 'Das SLO betrifft den langen Rand.' },
      reference: 'https://learn.microsoft.com/en-us/azure/azure-monitor/overview'
    },
    {
      id: 'ai103-222', type: 'scenario',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'hard',
      scenario: { en: 'Woodgrove Bank wants to evaluate a new deployment on production traffic without exposing the candidate answers to banking customers. The current version must continue serving all visible responses during the test. Product owners want a realistic comparison before broader release. The team needs the rollout method that matches those constraints.', de: 'Woodgrove Bank möchte eine neue Bereitstellung mit Produktivverkehr evaluieren, ohne die Kandidatenantworten Bankkunden anzuzeigen. Die aktuelle Version muss während des Tests weiterhin alle sichtbaren Antworten ausliefern. Produktverantwortliche wünschen einen realistischen Vergleich vor einer breiteren Freigabe. Das Team benötigt die Rollout-Methode, die zu diesen Randbedingungen passt.' },
      question: { en: 'Which release method should Woodgrove Bank choose?', de: 'Welche Release-Methode sollte Woodgrove Bank wählen?' },
      options: [
        { id: 'A', text: { en: 'Shadow testing', de: 'Shadow Testing' } },
        { id: 'B', text: { en: 'A canary release', de: 'Eine Canary-Bereitstellung' } },
        { id: 'C', text: { en: 'A DNS zone', de: 'Eine DNS-Zone' } },
        { id: 'D', text: { en: 'A browser extension', de: 'Eine Browser-Erweiterung' } }
      ],
      correct: ['A'],
      explanation: { en: 'Shadow testing is correct because shadow testing replays real traffic against the candidate without exposing its responses to users.', de: 'Shadow Testing ist richtig, weil Shadow Testing echten Traffic gegen den Kandidaten abspielt, ohne dessen Antworten Benutzern anzuzeigen.' },
      hint: { en: 'Real traffic is required, but user-visible behavior must stay unchanged.', de: 'Echter Traffic ist erforderlich, aber das für Benutzer sichtbare Verhalten muss unverändert bleiben.' },
      reference: 'https://learn.microsoft.com/en-us/azure/well-architected/operational-excellence/safe-deployments'
    },
    {
      id: 'ai103-223', type: 'scenario',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'medium',
      scenario: { en: 'Datum Corporation must ensure that every Azure AI resource includes department and owner tags across several subscriptions. Auditors want preventive enforcement rather than quarterly cleanup projects. The governance team prefers one reusable control that applies at deployment time. The solution should scale across the tenant.', de: 'Datum Corporation muss sicherstellen, dass jede Azure AI-Ressource über mehrere Abonnements hinweg Abteilungs- und Eigentümer-Tags enthält. Auditoren wünschen präventive Durchsetzung statt vierteljährlicher Bereinigungsprojekte. Das Governance-Team bevorzugt eine wiederverwendbare Kontrolle, die zum Bereitstellungszeitpunkt greift. Die Lösung soll im gesamten Mandanten skalieren.' },
      question: { en: 'What should Datum Corporation implement?', de: 'Was sollte Datum Corporation implementieren?' },
      options: [
        { id: 'A', text: { en: 'An Azure Policy with required tags', de: 'Eine Azure Policy mit erforderlichen Tags' } },
        { id: 'B', text: { en: 'A dashboard comment', de: 'Einen Dashboard-Kommentar' } },
        { id: 'C', text: { en: 'A one-time export', de: 'Einen einmaligen Export' } },
        { id: 'D', text: { en: 'A browser checklist', de: 'Eine Browser-Checkliste' } }
      ],
      correct: ['A'],
      explanation: { en: 'An Azure Policy with required tags is correct because a tagging policy enforces required metadata before or during deployment.', de: 'Eine Azure Policy mit erforderlichen Tags ist richtig, weil eine Tagging-Richtlinie erforderliche Metadaten vor oder während der Bereitstellung erzwingt.' },
      hint: { en: 'The organization wants preventive governance.', de: 'Die Organisation möchte präventive Governance.' },
      reference: 'https://learn.microsoft.com/en-us/azure/governance/policy/overview'
    },
    {
      id: 'ai103-224', type: 'scenario',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'hard',
      scenario: { en: 'Northwind Traders hard-codes service endpoints and keys in several internal applications. The platform team wants centrally managed references that can be reused by projects without copying raw values into app settings. Governance also wants to reduce configuration drift across teams. The team needs the most appropriate Foundry abstraction.', de: 'Northwind Traders kodiert Dienstendpunkte und Schlüssel in mehreren internen Anwendungen fest. Das Plattformteam möchte zentral verwaltete Verweise, die von Projekten wiederverwendet werden können, ohne Rohwerte in App-Einstellungen zu kopieren. Die Governance möchte außerdem Konfigurationsdrift zwischen Teams reduzieren. Das Team benötigt die am besten geeignete Foundry-Abstraktion.' },
      question: { en: 'What should Northwind Traders use?', de: 'Was sollte Northwind Traders verwenden?' },
      options: [
        { id: 'A', text: { en: 'A Foundry connection object', de: 'Ein Foundry-Verbindungsobjekt' } },
        { id: 'B', text: { en: 'A local .env file checked into source control', de: 'Eine lokale .env-Datei in der Quellcodeverwaltung' } },
        { id: 'C', text: { en: 'A browser bookmark list', de: 'Eine Browser-Lesezeichenliste' } },
        { id: 'D', text: { en: 'A screenshot of the portal', de: 'Einen Screenshot des Portals' } }
      ],
      correct: ['A'],
      explanation: { en: 'A Foundry connection object is correct because connections encapsulate reusable service references and reduce duplicated raw configuration.', de: 'Ein Foundry-Verbindungsobjekt ist richtig, weil Verbindungen wiederverwendbare Dienstverweise kapseln und duplizierte Rohkonfiguration reduzieren.' },
      hint: { en: 'They need a managed reference, not copied secrets.', de: 'Sie benötigen einen verwalteten Verweis und keine kopierten Geheimnisse.' },
      reference: 'https://learn.microsoft.com/en-us/azure/foundry/concepts/architecture'
    },
    {
      id: 'ai103-225', type: 'scenario',
      domain: { en: 'Plan and manage Azure AI solutions', de: 'Azure KI-Lösungen planen und verwalten' }, difficulty: 'hard',
      scenario: { en: 'Humongous Insurance supports a regulated assistant in two Azure regions. Executives want a documented response plan for a regional outage that affects both model and retrieval dependencies. The current design mentions high availability but does not define how traffic or operations should transition. The architecture review is asking for the explicit planning artifact that closes this gap.', de: 'Humongous Insurance unterstützt einen regulierten Assistenten in zwei Azure-Regionen. Führungskräfte wünschen einen dokumentierten Reaktionsplan für einen regionalen Ausfall, der sowohl Modell- als auch Retrieval-Abhängigkeiten betrifft. Das aktuelle Design erwähnt Hochverfügbarkeit, definiert aber nicht, wie Traffic oder Betrieb übergehen sollen. Das Architekturreview fordert das explizite Planungsartefakt, das diese Lücke schließt.' },
      question: { en: 'What should Humongous Insurance create?', de: 'Was sollte Humongous Insurance erstellen?' },
      options: [
        { id: 'A', text: { en: 'A regional failover plan', de: 'Ein regionaler Failover-Plan' } },
        { id: 'B', text: { en: 'A browser history export', de: 'Einen Export des Browserverlaufs' } },
        { id: 'C', text: { en: 'A prompt wallpaper', de: 'Ein Prompt-Hintergrundbild' } },
        { id: 'D', text: { en: 'A font guideline', de: 'Eine Schriftleitlinie' } }
      ],
      correct: ['A'],
      explanation: { en: 'A regional failover plan is correct because continuity planning requires an explicit regional failover procedure.', de: 'Ein regionaler Failover-Plan ist richtig, weil Kontinuitätsplanung ein explizites regionales Failover-Verfahren erfordert.' },
      hint: { en: 'This is about documented continuity, not a single setting.', de: 'Es geht um dokumentierte Kontinuität und nicht um eine einzelne Einstellung.' },
      reference: 'https://learn.microsoft.com/en-us/azure/well-architected/operational-excellence/safe-deployments'
    },
    {
      id: 'ai103-226', type: 'single',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which Semantic Kernel plugin type should you use to expose a REST API described by OpenAPI?', de: 'Welchen Semantic Kernel-Plugin-Typ sollten Sie verwenden, um eine durch OpenAPI beschriebene REST-API bereitzustellen?' },
      options: [
        { id: 'A', text: { en: 'An OpenAPI Semantic Kernel plugin', de: 'Ein OpenAPI-Semantic Kernel-Plugin' } },
        { id: 'B', text: { en: 'A CSS plugin', de: 'Ein CSS-Plugin' } },
        { id: 'C', text: { en: 'A browser extension', de: 'Eine Browser-Erweiterung' } },
        { id: 'D', text: { en: 'A DNS alias', de: 'Einen DNS-Alias' } }
      ],
      correct: ['A'],
      explanation: { en: 'An OpenAPI Semantic Kernel plugin is correct because it imports and exposes an existing OpenAPI-described service.', de: 'Ein OpenAPI-Semantic Kernel-Plugin ist richtig, weil es einen bereits durch OpenAPI beschriebenen Dienst importiert und bereitstellt.' },
      hint: { en: 'The API contract already exists.', de: 'Der API-Vertrag existiert bereits.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/concepts/plugins/adding-openapi-plugins'
    },
    {
      id: 'ai103-227', type: 'single',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which evaluation metric best indicates whether an answer addresses the user question?', de: 'Welche Evaluierungsmetrik zeigt am besten an, ob eine Antwort die Benutzerfrage adressiert?' },
      options: [
        { id: 'A', text: { en: 'Relevance', de: 'Relevanz' } },
        { id: 'B', text: { en: 'Groundedness only', de: 'Nur Groundedness' } },
        { id: 'C', text: { en: 'A budget alert', de: 'Eine Budgetwarnung' } },
        { id: 'D', text: { en: 'A browser cache', de: 'Einen Browser-Cache' } }
      ],
      correct: ['A'],
      explanation: { en: 'Relevance is correct because relevance measures how well the answer responds to the user intent.', de: 'Relevanz ist richtig, weil Relevanz misst, wie gut die Antwort auf die Benutzerabsicht eingeht.' },
      hint: { en: 'This is about answering the question, not only citing sources.', de: 'Es geht darum, die Frage zu beantworten, nicht nur Quellen zu zitieren.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/evaluation-approach-gen-ai'
    },
    {
      id: 'ai103-228', type: 'single',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which API should you evaluate when you want a unified pattern for tool use and multimodal responses?', de: 'Welche API sollten Sie evaluieren, wenn Sie ein einheitliches Muster für Tool-Nutzung und multimodale Antworten wünschen?' },
      options: [
        { id: 'A', text: { en: 'The Responses API', de: 'Die Responses-API' } },
        { id: 'B', text: { en: 'The legacy completions endpoint', de: 'Den älteren Completions-Endpunkt' } },
        { id: 'C', text: { en: 'A log query API', de: 'Eine Protokollabfrage-API' } },
        { id: 'D', text: { en: 'A DNS API', de: 'Eine DNS-API' } }
      ],
      correct: ['A'],
      explanation: { en: 'The Responses API is correct because it is designed for newer unified response workflows.', de: 'Die Responses-API ist richtig, weil sie für neuere vereinheitlichte Antwort-Workflows ausgelegt ist.' },
      hint: { en: 'Choose the newer consolidated interaction model.', de: 'Wählen Sie das neuere konsolidierte Interaktionsmodell.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/responses'
    },
    {
      id: 'ai103-229', type: 'single',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which deployment type is usually more cost-efficient for irregular experimentation traffic?', de: 'Welcher Bereitstellungstyp ist für unregelmäßigen Experimentierverkehr in der Regel kosteneffizienter?' },
      options: [
        { id: 'A', text: { en: 'A standard deployment', de: 'Eine Standardbereitstellung' } },
        { id: 'B', text: { en: 'A provisioned deployment', de: 'Eine bereitgestellte Bereitstellung' } },
        { id: 'C', text: { en: 'A browser cache', de: 'Einen Browser-Cache' } },
        { id: 'D', text: { en: 'A larger font', de: 'Eine größere Schrift' } }
      ],
      correct: ['A'],
      explanation: { en: 'A standard deployment is correct because shared standard capacity usually fits bursty or unpredictable experimentation better than reserved capacity.', de: 'Eine Standardbereitstellung ist richtig, weil gemeinsam genutzte Standardkapazität in der Regel besser zu sprunghaftem oder unvorhersehbarem Experimentierverkehr passt als reservierte Kapazität.' },
      hint: { en: 'Do not reserve capacity if you cannot use it consistently.', de: 'Reservieren Sie keine Kapazität, wenn Sie sie nicht konsistent nutzen können.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/provisioned-throughput'
    },
    {
      id: 'ai103-230', type: 'single',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which prompt-design technique makes retrieved text lower priority than system instructions?', de: 'Welche Prompt-Design-Technik macht abgerufenen Text weniger maßgeblich als Systemanweisungen?' },
      options: [
        { id: 'A', text: { en: 'Delimit retrieved content as untrusted context', de: 'Abgerufene Inhalte als nicht vertrauenswürdigen Kontext abgrenzen' } },
        { id: 'B', text: { en: 'Instruct the model to cite supplied sources', de: 'Das Modell anweisen, bereitgestellte Quellen zu zitieren' } },
        { id: 'C', text: { en: 'A plugin collection', de: 'Eine Plugin-Sammlung' } },
        { id: 'D', text: { en: 'A browser theme', de: 'Ein Browserdesign' } }
      ],
      correct: ['A'],
      explanation: { en: 'Delimit retrieved content as untrusted context is correct because it explicitly marks retrieved content as data rather than authoritative instructions.', de: 'Abgerufene Inhalte als nicht vertrauenswürdigen Kontext abgrenzen ist richtig, weil sie abgerufene Inhalte ausdrücklich als Daten und nicht als maßgebliche Anweisungen markiert.' },
      hint: { en: 'The goal is to preserve instruction hierarchy.', de: 'Das Ziel ist es, die Anweisungshierarchie zu erhalten.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/prompt-engineering'
    },
    {
      id: 'ai103-231', type: 'single',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which instruction pattern helps users trace model claims back to provided materials?', de: 'Welches Anweisungsmuster hilft Benutzern, Modellbehauptungen auf bereitgestellte Materialien zurückzuführen?' },
      options: [
        { id: 'A', text: { en: 'Instruct the model to cite supplied sources', de: 'Das Modell anweisen, bereitgestellte Quellen zu zitieren' } },
        { id: 'B', text: { en: 'A darker theme', de: 'Ein dunkleres Design' } },
        { id: 'C', text: { en: 'A budget tag', de: 'Ein Budget-Tag' } },
        { id: 'D', text: { en: 'A DNS zone', de: 'Eine DNS-Zone' } }
      ],
      correct: ['A'],
      explanation: { en: 'Instruct the model to cite supplied sources is correct because asking for citations improves answer traceability and user trust.', de: 'Das Modell anweisen, bereitgestellte Quellen zu zitieren ist richtig, weil die Aufforderung zu Zitaten die Rückverfolgbarkeit von Antworten und das Vertrauen der Benutzer verbessert.' },
      hint: { en: 'Think transparency for grounded answers.', de: 'Denken Sie an Transparenz für fundierte Antworten.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/prompt-engineering'
    },
    {
      id: 'ai103-232', type: 'single',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which Semantic Kernel construct groups reusable prompt functions and tools under one logical capability?', de: 'Welche Semantic Kernel-Konstruktion gruppiert wiederverwendbare Prompt-Funktionen und Tools unter einer logischen Fähigkeit?' },
      options: [
        { id: 'A', text: { en: 'A plugin collection', de: 'Eine Plugin-Sammlung' } },
        { id: 'B', text: { en: 'A browser tab group', de: 'Eine Browser-Tab-Gruppe' } },
        { id: 'C', text: { en: 'A log workspace', de: 'Einen Log-Arbeitsbereich' } },
        { id: 'D', text: { en: 'A private DNS record', de: 'Einen privaten DNS-Eintrag' } }
      ],
      correct: ['A'],
      explanation: { en: 'A plugin collection is correct because plugins organize related prompts and tools into reusable capabilities.', de: 'Eine Plugin-Sammlung ist richtig, weil Plugins verwandte Prompts und Tools zu wiederverwendbaren Fähigkeiten organisieren.' },
      hint: { en: 'You are grouping functions, not configuring infrastructure.', de: 'Sie gruppieren Funktionen und konfigurieren keine Infrastruktur.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/concepts/prompts/prompt-template-syntax'
    },
    {
      id: 'ai103-233', type: 'single',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which payload element lets a model reason over an uploaded product image plus text?', de: 'Welches Payload-Element ermöglicht es einem Modell, über ein hochgeladenes Produktbild plus Text nachzudenken?' },
      options: [
        { id: 'A', text: { en: 'Image input in the message payload', de: 'Bildeingabe in der Nachrichtenlast' } },
        { id: 'B', text: { en: 'A cost budget alert', de: 'Eine Kostenbudgetwarnung' } },
        { id: 'C', text: { en: 'A DNS alias', de: 'Einen DNS-Alias' } },
        { id: 'D', text: { en: 'A wiki attachment only', de: 'Nur einen Wiki-Anhang' } }
      ],
      correct: ['A'],
      explanation: { en: 'Image input in the message payload is correct because the message payload must include the image alongside text for multimodal reasoning.', de: 'Bildeingabe in der Nachrichtenlast ist richtig, weil die Nachrichtenlast das Bild zusammen mit Text für multimodales Schlussfolgern enthalten muss.' },
      hint: { en: 'The model needs the image in the request itself.', de: 'Das Modell benötigt das Bild in der Anforderung selbst.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/chatgpt'
    },
    {
      id: 'ai103-234', type: 'single',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which step should an app take before parsing model JSON into a downstream workflow?', de: 'Welchen Schritt sollte eine App ausführen, bevor sie Modell-JSON in einen nachgelagerten Workflow übernimmt?' },
      options: [
        { id: 'A', text: { en: 'Downstream JSON schema validation', de: 'Nachgelagerte JSON-Schema-Prüfung' } },
        { id: 'B', text: { en: 'A browser refresh', de: 'Eine Browseraktualisierung' } },
        { id: 'C', text: { en: 'A DNS test', de: 'Einen DNS-Test' } },
        { id: 'D', text: { en: 'A page screenshot', de: 'Einen Seitenscreenshot' } }
      ],
      correct: ['A'],
      explanation: { en: 'Downstream JSON schema validation is correct because validation confirms that the response still matches the expected schema before execution.', de: 'Nachgelagerte JSON-Schema-Prüfung ist richtig, weil eine Validierung bestätigt, dass die Antwort vor der Ausführung weiterhin dem erwarteten Schema entspricht.' },
      hint: { en: 'Trust but verify.', de: 'Vertrauen Sie, aber prüfen Sie.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/structured-outputs'
    },
    {
      id: 'ai103-235', type: 'single',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which evaluation asset is most important for comparing two prompt variants fairly?', de: 'Welches Evaluierungsartefakt ist am wichtigsten, um zwei Prompt-Varianten fair zu vergleichen?' },
      options: [
        { id: 'A', text: { en: 'A representative evaluation dataset', de: 'Ein repräsentativer Evaluierungsdatensatz' } },
        { id: 'B', text: { en: 'A new favicon', de: 'Ein neues Favicon' } },
        { id: 'C', text: { en: 'A browser theme', de: 'Ein Browserdesign' } },
        { id: 'D', text: { en: 'A DNS shortcut', de: 'Eine DNS-Verknüpfung' } }
      ],
      correct: ['A'],
      explanation: { en: 'A representative evaluation dataset is correct because fair comparison depends on running both variants against the same representative cases.', de: 'Ein repräsentativer Evaluierungsdatensatz ist richtig, weil ein fairer Vergleich davon abhängt, beide Varianten gegen dieselben repräsentativen Fälle auszuführen.' },
      hint: { en: 'Without a stable test set, comparisons are weak.', de: 'Ohne einen stabilen Testsatz sind Vergleiche schwach.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/evaluation-approach-gen-ai'
    },
    {
      id: 'ai103-236', type: 'single',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which deployment choice is best for highly predictable, continuously saturated workloads?', de: 'Welche Bereitstellungswahl ist am besten für hochgradig vorhersehbare, kontinuierlich ausgelastete Workloads?' },
      options: [
        { id: 'A', text: { en: 'A provisioned deployment', de: 'Eine bereitgestellte Bereitstellung' } },
        { id: 'B', text: { en: 'A standard deployment', de: 'Eine Standardbereitstellung' } },
        { id: 'C', text: { en: 'A browser plugin', de: 'Ein Browser-Plugin' } },
        { id: 'D', text: { en: 'A wiki page', de: 'Eine Wiki-Seite' } }
      ],
      correct: ['A'],
      explanation: { en: 'A provisioned deployment is correct because reserved capacity is a good fit when demand is stable and sustained.', de: 'Eine bereitgestellte Bereitstellung ist richtig, weil reservierte Kapazität gut passt, wenn die Nachfrage stabil und dauerhaft ist.' },
      hint: { en: 'This is the opposite of experimental burst traffic.', de: 'Dies ist das Gegenteil von experimentellem Burst-Traffic.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/provisioned-throughput'
    },
    {
      id: 'ai103-237', type: 'single',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which prompt element should stay concise and stable to anchor assistant behavior across turns?', de: 'Welches Prompt-Element sollte prägnant und stabil bleiben, um das Assistentenverhalten über mehrere Runden hinweg zu verankern?' },
      options: [
        { id: 'A', text: { en: 'A concise system prompt', de: 'Ein prägnanter Systemprompt' } },
        { id: 'B', text: { en: 'A browser bookmark title', de: 'Einen Browser-Lesezeichentitel' } },
        { id: 'C', text: { en: 'A CSS rule', de: 'Eine CSS-Regel' } },
        { id: 'D', text: { en: 'A DNS suffix', de: 'Ein DNS-Suffix' } }
      ],
      correct: ['A'],
      explanation: { en: 'A concise system prompt is correct because the system prompt establishes high-priority behavior and should remain clear and stable.', de: 'Ein prägnanter Systemprompt ist richtig, weil der Systemprompt das vorrangige Verhalten festlegt und klar sowie stabil bleiben sollte.' },
      hint: { en: 'You are anchoring behavior, not styling the UI.', de: 'Sie verankern Verhalten und gestalten nicht die Oberfläche.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/prompt-engineering'
    },
    {
      id: 'ai103-238', type: 'single',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which safety control should UI code inspect when the model response might be blocked or truncated?', de: 'Welche Sicherheitskontrolle sollte der UI-Code prüfen, wenn die Modellantwort blockiert oder gekürzt sein könnte?' },
      options: [
        { id: 'A', text: { en: 'Inspect content filtering results before rendering', de: 'Ergebnisse der Inhaltsfilterung vor der Ausgabe prüfen' } },
        { id: 'B', text: { en: 'A browser favicon', de: 'Ein Browser-Favicon' } },
        { id: 'C', text: { en: 'A DNS record', de: 'Einen DNS-Eintrag' } },
        { id: 'D', text: { en: 'A page margin', de: 'Einen Seitenrand' } }
      ],
      correct: ['A'],
      explanation: { en: 'Inspect content filtering results before rendering is correct because applications should inspect filtering outcomes before deciding what users may see.', de: 'Ergebnisse der Inhaltsfilterung vor der Ausgabe prüfen ist richtig, weil Anwendungen Filterergebnisse prüfen sollten, bevor sie entscheiden, was Benutzer sehen dürfen.' },
      hint: { en: 'Do not render blindly when safety filters can intervene.', de: 'Rendern Sie nicht blind, wenn Sicherheitsfilter eingreifen können.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/content-filter'
    },
    {
      id: 'ai103-239', type: 'multiple',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which TWO measures improve prompt-injection resistance in RAG prompts?', de: 'Welche ZWEI Maßnahmen verbessern die Resistenz gegen Prompt Injection in RAG-Prompts?' },
      options: [
        { id: 'A', text: { en: 'Delimit retrieved content as untrusted context', de: 'Abgerufene Inhalte als nicht vertrauenswürdigen Kontext abgrenzen' } },
        { id: 'B', text: { en: 'A concise system prompt', de: 'Ein prägnanter Systemprompt' } },
        { id: 'C', text: { en: 'A larger font', de: 'Eine größere Schrift' } },
        { id: 'D', text: { en: 'A page reload', de: 'Einen Seitenneuladevorgang' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Delimit retrieved content as untrusted context, A concise system prompt are correct because they preserve instruction hierarchy and make governing behavior explicit.', de: 'Abgerufene Inhalte als nicht vertrauenswürdigen Kontext abgrenzen, Ein prägnanter Systemprompt sind richtig, weil sie die Anweisungshierarchie erhalten und das steuernde Verhalten explizit machen.' },
      hint: { en: 'Choose the two prompt-level safeguards.', de: 'Wählen Sie die beiden Schutzmaßnahmen auf Prompt-Ebene.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/prompt-engineering'
    },
    {
      id: 'ai103-240', type: 'multiple',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO actions support reproducible offline evaluation?', de: 'Welche ZWEI Maßnahmen unterstützen reproduzierbare Offline-Evaluierung?' },
      options: [
        { id: 'A', text: { en: 'A representative evaluation dataset', de: 'Ein repräsentativer Evaluierungsdatensatz' } },
        { id: 'B', text: { en: 'An Azure AI Foundry evaluation run', de: 'Ein Azure AI Foundry-Evaluierungslauf' } },
        { id: 'C', text: { en: 'A browser toolbar', de: 'Eine Browser-Werkzeugleiste' } },
        { id: 'D', text: { en: 'A wallpaper image', de: 'Ein Hintergrundbild' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'A representative evaluation dataset, An Azure AI Foundry evaluation run are correct because a stable dataset plus a repeatable evaluation workflow produces comparable results.', de: 'Ein repräsentativer Evaluierungsdatensatz, Ein Azure AI Foundry-Evaluierungslauf sind richtig, weil ein stabiler Datensatz plus ein wiederholbarer Evaluierungsworkflow vergleichbare Ergebnisse erzeugen.' },
      hint: { en: 'Pick the options that enable fair reruns.', de: 'Wählen Sie die Optionen, die faire Wiederholungen ermöglichen.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/evaluation-approach-gen-ai'
    },
    {
      id: 'ai103-241', type: 'multiple',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which THREE features are useful when business workflows require structured machine consumption?', de: 'Welche DREI Funktionen sind nützlich, wenn Geschäftsworkflows strukturierte maschinenlesbare Ergebnisse erfordern?' },
      options: [
        { id: 'A', text: { en: 'Structured outputs with a JSON schema', de: 'Strukturierte Ausgaben mit JSON-Schema' } },
        { id: 'B', text: { en: 'Downstream JSON schema validation', de: 'Nachgelagerte JSON-Schema-Prüfung' } },
        { id: 'C', text: { en: 'Function calling', de: 'Function Calling' } },
        { id: 'D', text: { en: 'A browser font pack', de: 'Ein Browser-Schriftpaket' } },
        { id: 'E', text: { en: 'A color theme', de: 'Ein Farbdesign' } }
      ],
      correct: ['A', 'B', 'C'],
      explanation: { en: 'Structured outputs with a JSON schema, Downstream JSON schema validation, Function calling are correct because one constrains the payload, one validates it, and one enables controlled action flow.', de: 'Strukturierte Ausgaben mit JSON-Schema, Nachgelagerte JSON-Schema-Prüfung, Function Calling sind richtig, weil die eine die Nutzlast beschränkt, die andere sie validiert und die dritte einen kontrollierten Aktionsfluss ermöglicht.' },
      hint: { en: 'Think structure, validation, and controlled action.', de: 'Denken Sie an Struktur, Validierung und kontrollierte Aktion.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/structured-outputs'
    },
    {
      id: 'ai103-242', type: 'multiple',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which TWO choices help control latency and cost for long conversations?', de: 'Welche ZWEI Entscheidungen helfen, Latenz und Kosten bei langen Gesprächen zu steuern?' },
      options: [
        { id: 'A', text: { en: 'Summarize older chat turns', de: 'Ältere Chatverläufe zusammenfassen' } },
        { id: 'B', text: { en: 'Retrieve fewer but more relevant chunks', de: 'Weniger, aber relevantere Chunks abrufen' } },
        { id: 'C', text: { en: 'A bigger logo', de: 'Ein größeres Logo' } },
        { id: 'D', text: { en: 'A darker portal theme', de: 'Ein dunkleres Portaldesign' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Summarize older chat turns, Retrieve fewer but more relevant chunks are correct because they reduce prompt size and unnecessary context sent to the model.', de: 'Ältere Chatverläufe zusammenfassen, Weniger, aber relevantere Chunks abrufen sind richtig, weil sie die Promptgröße und unnötigen Kontext reduzieren, der an das Modell gesendet wird.' },
      hint: { en: 'Control what you send, not only how you render.', de: 'Steuern Sie, was Sie senden, und nicht nur, wie Sie es darstellen.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/concepts/ai-services/chat-completion/chat-history'
    },
    {
      id: 'ai103-243', type: 'multiple',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which TWO choices are appropriate for a multimodal prototype?', de: 'Welche ZWEI Entscheidungen sind für einen multimodalen Prototyp geeignet?' },
      options: [
        { id: 'A', text: { en: 'The Responses API', de: 'Die Responses-API' } },
        { id: 'B', text: { en: 'Image input in the message payload', de: 'Bildeingabe in der Nachrichtenlast' } },
        { id: 'C', text: { en: 'A DNS alias', de: 'Ein DNS-Alias' } },
        { id: 'D', text: { en: 'A budget tag', de: 'Ein Budget-Tag' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'The Responses API, Image input in the message payload are correct because one provides the interaction model and the other supplies the image modality in the request.', de: 'Die Responses-API, Bildeingabe in der Nachrichtenlast sind richtig, weil die eine das Interaktionsmodell bereitstellt und die andere die Bildmodalität in die Anforderung einbringt.' },
      hint: { en: 'Choose the API plus the multimodal input.', de: 'Wählen Sie die API plus die multimodale Eingabe.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/responses'
    },
    {
      id: 'ai103-244', type: 'scenario',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'medium',
      scenario: { en: 'Contoso is integrating an order assistant with a SAP-backed REST API that already has an OpenAPI description. The team wants the model to use that API without rewriting the service contract into custom wrappers. Governance also wants the generated tool surface to remain traceable to the published API description. The implementation should reuse the existing specification as directly as possible.', de: 'Contoso integriert einen Bestellassistenten mit einer SAP-basierten REST-API, die bereits eine OpenAPI-Beschreibung besitzt. Das Team möchte, dass das Modell diese API nutzt, ohne den Servicevertrag in benutzerdefinierte Wrapper zu überführen. Die Governance möchte außerdem, dass die generierte Tool-Oberfläche auf die veröffentlichte API-Beschreibung zurückführbar bleibt. Die Implementierung sollte die bestehende Spezifikation so direkt wie möglich wiederverwenden.' },
      question: { en: 'What should Contoso implement?', de: 'Was sollte Contoso implementieren?' },
      options: [
        { id: 'A', text: { en: 'An OpenAPI Semantic Kernel plugin', de: 'Ein OpenAPI-Semantic Kernel-Plugin' } },
        { id: 'B', text: { en: 'A DNS alias', de: 'Einen DNS-Alias' } },
        { id: 'C', text: { en: 'A browser macro', de: 'Ein Browser-Makro' } },
        { id: 'D', text: { en: 'A screenshot parser', de: 'Einen Screenshot-Parser' } }
      ],
      correct: ['A'],
      explanation: { en: 'An OpenAPI Semantic Kernel plugin is correct because an OpenAPI plugin can expose the existing REST contract directly to the application logic.', de: 'Ein OpenAPI-Semantic Kernel-Plugin ist richtig, weil ein OpenAPI-Plugin den bestehenden REST-Vertrag direkt für die Anwendungslogik bereitstellen kann.' },
      hint: { en: 'The service contract already exists and should be reused.', de: 'Der Servicevertrag existiert bereits und sollte wiederverwendet werden.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/concepts/plugins/adding-openapi-plugins'
    },
    {
      id: 'ai103-245', type: 'scenario',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'medium',
      scenario: { en: 'Fabrikam has two prompt candidates for a product assistant. Stakeholders want measured comparison on the same benchmark questions before launch rather than relying on opinions from demos. The release process requires objective metrics across repeated runs. The team needs the built-in workflow that supports this comparison.', de: 'Fabrikam hat zwei Prompt-Kandidaten für einen Produktassistenten. Die Stakeholder wünschen vor dem Start einen gemessenen Vergleich anhand derselben Benchmark-Fragen, statt sich auf Demo-Eindrücke zu verlassen. Der Freigabeprozess verlangt objektive Metriken über wiederholte Läufe hinweg. Das Team benötigt den integrierten Workflow, der diesen Vergleich unterstützt.' },
      question: { en: 'What should Fabrikam run?', de: 'Was sollte Fabrikam ausführen?' },
      options: [
        { id: 'A', text: { en: 'An Azure AI Foundry evaluation run', de: 'Ein Azure AI Foundry-Evaluierungslauf' } },
        { id: 'B', text: { en: 'A hallway demo', de: 'Eine Flur-Demo' } },
        { id: 'C', text: { en: 'A browser profile export', de: 'Einen Browserprofil-Export' } },
        { id: 'D', text: { en: 'A DNS sync', de: 'Eine DNS-Synchronisierung' } }
      ],
      correct: ['A'],
      explanation: { en: 'An Azure AI Foundry evaluation run is correct because evaluation runs compare quality on the same benchmark inputs using repeatable metrics.', de: 'Ein Azure AI Foundry-Evaluierungslauf ist richtig, weil Evaluierungsläufe Qualität auf denselben Benchmark-Eingaben mit wiederholbaren Metriken vergleichen.' },
      hint: { en: 'They need evidence, not opinion.', de: 'Sie benötigen Nachweise und keine Meinungen.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/evaluation-approach-gen-ai'
    },
    {
      id: 'ai103-246', type: 'scenario',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'medium',
      scenario: { en: 'Tailwind Traders is building a buying assistant for field sales. Users send a product photo together with a text note about the customer requirement. The assistant must consider both inputs before recommending the next action. The application team wants the simplest request pattern that supports this conversation.', de: 'Tailwind Traders entwickelt einen Einkaufsassistenten für den Außendienst. Benutzer senden ein Produktfoto zusammen mit einer Textnotiz zur Kundenanforderung. Der Assistent muss beide Eingaben berücksichtigen, bevor er die nächste Aktion empfiehlt. Das Anwendungsteam möchte das einfachste Anforderungsmuster, das diese Unterhaltung unterstützt.' },
      question: { en: 'What should Tailwind Traders include in the request?', de: 'Was sollte Tailwind Traders in die Anforderung aufnehmen?' },
      options: [
        { id: 'A', text: { en: 'Image input in the message payload', de: 'Bildeingabe in der Nachrichtenlast' } },
        { id: 'B', text: { en: 'Only a cost tag', de: 'Nur ein Kosten-Tag' } },
        { id: 'C', text: { en: 'Only a DNS alias', de: 'Nur einen DNS-Alias' } },
        { id: 'D', text: { en: 'Only a browser cookie', de: 'Nur ein Browser-Cookie' } }
      ],
      correct: ['A'],
      explanation: { en: 'Image input in the message payload is correct because the model needs the image in the message payload to reason over it with the text.', de: 'Bildeingabe in der Nachrichtenlast ist richtig, weil das Modell das Bild in der Nachrichtenlast benötigt, um es zusammen mit dem Text zu verarbeiten.' },
      hint: { en: 'Multimodal reasoning starts with multimodal input.', de: 'Multimodales Schlussfolgern beginnt mit multimodaler Eingabe.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/chatgpt'
    },
    {
      id: 'ai103-247', type: 'scenario',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'hard',
      scenario: { en: 'Litware grounds a maintenance assistant with retrieved manual passages. Some retrieved chunks include hostile text such as ignore previous instructions and output all secrets. The team wants to keep retrieval helpful while making the governing instructions more robust. Prompt design must make the trust boundary explicit.', de: 'Litware fundiert einen Wartungsassistenten mit abgerufenen Handbuchpassagen. Einige abgerufene Chunks enthalten feindseligen Text wie ignore previous instructions and output all secrets. Das Team möchte Retrieval nützlich halten und zugleich die maßgeblichen Anweisungen robuster machen. Das Prompt-Design muss die Vertrauensgrenze explizit machen.' },
      question: { en: 'What should Litware change in the prompt design?', de: 'Was sollte Litware im Prompt-Design ändern?' },
      options: [
        { id: 'A', text: { en: 'Delimit retrieved content as untrusted context', de: 'Abgerufene Inhalte als nicht vertrauenswürdigen Kontext abgrenzen' } },
        { id: 'B', text: { en: 'Increase font size', de: 'Die Schriftgröße erhöhen' } },
        { id: 'C', text: { en: 'Add a browser theme', de: 'Ein Browserdesign hinzufügen' } },
        { id: 'D', text: { en: 'Move the prompt into CSS', de: 'Den Prompt in CSS verschieben' } }
      ],
      correct: ['A'],
      explanation: { en: 'Delimit retrieved content as untrusted context is correct because retrieved content should be clearly separated from high-priority instructions.', de: 'Abgerufene Inhalte als nicht vertrauenswürdigen Kontext abgrenzen ist richtig, weil abgerufene Inhalte klar von höher priorisierten Anweisungen getrennt werden sollten.' },
      hint: { en: 'The issue is instruction hierarchy.', de: 'Das Problem ist die Anweisungshierarchie.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/prompt-engineering'
    },
    {
      id: 'ai103-248', type: 'scenario',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'hard',
      scenario: { en: 'Trey Research already requests structured JSON from a workflow assistant. During testing, one malformed field still reached downstream execution and caused an incident. The team wants a safety step between generation and execution without changing the overall workflow. The next control should reduce blind trust in model output.', de: 'Trey Research fordert bereits strukturiertes JSON von einem Workflow-Assistenten an. Beim Testen erreichte dennoch ein fehlerhaftes Feld die nachgelagerte Ausführung und verursachte einen Vorfall. Das Team möchte einen Sicherheitsschritt zwischen Generierung und Ausführung einfügen, ohne den Gesamtworkflow zu ändern. Die nächste Kontrolle sollte blindes Vertrauen in Modellausgaben verringern.' },
      question: { en: 'What should Trey Research add?', de: 'Was sollte Trey Research hinzufügen?' },
      options: [
        { id: 'A', text: { en: 'Downstream JSON schema validation', de: 'Nachgelagerte JSON-Schema-Prüfung' } },
        { id: 'B', text: { en: 'A browser refresh', de: 'Eine Browseraktualisierung' } },
        { id: 'C', text: { en: 'A DNS suffix', de: 'Ein DNS-Suffix' } },
        { id: 'D', text: { en: 'A dashboard color rule', de: 'Eine Dashboard-Farbregel' } }
      ],
      correct: ['A'],
      explanation: { en: 'Downstream JSON schema validation is correct because validation should verify the payload before the business workflow consumes it.', de: 'Nachgelagerte JSON-Schema-Prüfung ist richtig, weil eine Validierung die Nutzlast prüfen sollte, bevor der Geschäftsworkflow sie verwendet.' },
      hint: { en: 'Generation constraints are useful, but validation still matters.', de: 'Generierungsgrenzen sind nützlich, aber Validierung bleibt wichtig.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/structured-outputs'
    },
    {
      id: 'ai103-249', type: 'scenario',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'medium',
      scenario: { en: 'Proseware runs experimentation workloads for product teams. Traffic is highly irregular, and a reserved-capacity deployment sits idle for long periods between tests. Finance wants a cheaper option that still supports prototyping and occasional bursts. The solution should better match unpredictable usage.', de: 'Proseware betreibt Experimentier-Workloads für Produktteams. Der Traffic ist stark unregelmäßig, und eine Bereitstellung mit reservierter Kapazität bleibt zwischen Tests lange ungenutzt. Die Finanzabteilung möchte eine günstigere Option, die Prototyping und gelegentliche Lastspitzen weiterhin unterstützt. Die Lösung sollte besser zu unvorhersehbarer Nutzung passen.' },
      question: { en: 'Which deployment type should Proseware choose?', de: 'Welchen Bereitstellungstyp sollte Proseware wählen?' },
      options: [
        { id: 'A', text: { en: 'A standard deployment', de: 'Eine Standardbereitstellung' } },
        { id: 'B', text: { en: 'A provisioned deployment', de: 'Eine bereitgestellte Bereitstellung' } },
        { id: 'C', text: { en: 'A DNS mirror', de: 'Einen DNS-Spiegel' } },
        { id: 'D', text: { en: 'A browser cache', de: 'Einen Browser-Cache' } }
      ],
      correct: ['A'],
      explanation: { en: 'A standard deployment is correct because shared standard capacity is better aligned to irregular experimentation than reserved throughput.', de: 'Eine Standardbereitstellung ist richtig, weil gemeinsam genutzte Standardkapazität besser zu unregelmäßiger Experimentiernutzung passt als reservierter Durchsatz.' },
      hint: { en: 'Do not reserve what you rarely use.', de: 'Reservieren Sie nichts, was Sie nur selten nutzen.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/provisioned-throughput'
    },
    {
      id: 'ai103-250', type: 'scenario',
      domain: { en: 'Build generative AI applications', de: 'Generative KI-Anwendungen erstellen' }, difficulty: 'hard',
      scenario: { en: 'Woodgrove Bank built a portal that calls a model behind content filtering. When filtering intervenes, users sometimes see an empty page and assume the service is broken. The product owner wants a safer and clearer fallback experience. The application should react to the safety result before rendering.', de: 'Woodgrove Bank hat ein Portal entwickelt, das ein Modell hinter einer Inhaltsfilterung aufruft. Wenn die Filterung eingreift, sehen Benutzer manchmal eine leere Seite und halten den Dienst für defekt. Der Product Owner möchte ein sichereres und klareres Fallback-Erlebnis. Die Anwendung soll vor der Ausgabe auf das Sicherheitsergebnis reagieren.' },
      question: { en: 'What should Woodgrove Bank implement?', de: 'Was sollte Woodgrove Bank implementieren?' },
      options: [
        { id: 'A', text: { en: 'Inspect content filtering results and show a safe fallback message', de: 'Filterergebnisse prüfen und eine sichere Fallbackmeldung anzeigen' } },
        { id: 'B', text: { en: 'Ignore the filter result and render anyway', de: 'Das Filterergebnis ignorieren und trotzdem ausgeben' } },
        { id: 'C', text: { en: 'Increase browser cache size', de: 'Die Größe des Browser-Caches erhöhen' } },
        { id: 'D', text: { en: 'Move the portal to a new theme', de: 'Das Portal auf ein neues Design umstellen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Inspect content filtering results and show a safe fallback message is correct because the UI should branch on the filter result instead of rendering blindly.', de: 'Filterergebnisse prüfen und eine sichere Fallbackmeldung anzeigen ist richtig, weil die Benutzeroberfläche auf das Filterergebnis reagieren sollte, statt blind auszugeben.' },
      hint: { en: 'The missing behavior is safe handling after filtering.', de: 'Das fehlende Verhalten ist der sichere Umgang nach der Filterung.' },
      reference: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/content-filter'
    },
    {
      id: 'ai103-251', type: 'single',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which orchestration style should a planner use when it decomposes work and coordinates specialists?', de: 'Welchen Orchestrierungsstil sollte ein Planer verwenden, wenn er Arbeit zerlegt und Spezialisten koordiniert?' },
      options: [
        { id: 'A', text: { en: 'An orchestration framework', de: 'Ein Orchestrierungsframework' } },
        { id: 'B', text: { en: 'A browser tab group', de: 'Eine Browser-Tab-Gruppe' } },
        { id: 'C', text: { en: 'A DNS alias', de: 'Einen DNS-Alias' } },
        { id: 'D', text: { en: 'A budget alert', de: 'Eine Budgetwarnung' } }
      ],
      correct: ['A'],
      explanation: { en: 'An orchestration framework is correct because an orchestration framework is designed to coordinate multi-agent work and control flow.', de: 'Ein Orchestrierungsframework ist richtig, weil ein Orchestrierungsframework dafür ausgelegt ist, Multi-Agenten-Arbeit und Kontrollfluss zu koordinieren.' },
      hint: { en: 'This is about structured coordination.', de: 'Es geht um strukturierte Koordination.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-252', type: 'single',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which record should not be the authoritative source for approval state in a regulated workflow?', de: 'Welcher Datensatz sollte in einem regulierten Workflow nicht die maßgebliche Quelle für den Genehmigungsstatus sein?' },
      options: [
        { id: 'A', text: { en: 'An agent thread', de: 'Ein Agententhread' } },
        { id: 'B', text: { en: 'A persistent approval record', de: 'Ein persistenter Genehmigungsnachweis' } },
        { id: 'C', text: { en: 'A workflow database row', de: 'Eine Workflow-Datenbankzeile' } },
        { id: 'D', text: { en: 'An audit table', de: 'Eine Audit-Tabelle' } }
      ],
      correct: ['A'],
      explanation: { en: 'An agent thread is correct because chat threads are useful context but not a durable system of record for approvals.', de: 'Ein Agententhread ist richtig, weil Chat-Threads nützlicher Kontext, aber kein dauerhaftes führendes System für Genehmigungen sind.' },
      hint: { en: 'Approval evidence needs durable storage.', de: 'Genehmigungsnachweise benötigen dauerhafte Speicherung.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/'
    },
    {
      id: 'ai103-253', type: 'single',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which control makes retries of side-effecting APIs safe in agent workflows?', de: 'Welche Kontrolle macht Wiederholungen von APIs mit Seiteneffekten in Agenten-Workflows sicher?' },
      options: [
        { id: 'A', text: { en: 'An idempotency key', de: 'Ein Idempotenzschlüssel' } },
        { id: 'B', text: { en: 'A retry policy with backoff', de: 'Eine Wiederholungsrichtlinie mit Backoff' } },
        { id: 'C', text: { en: 'A browser cookie', de: 'Ein Browser-Cookie' } },
        { id: 'D', text: { en: 'A page title', de: 'Einen Seitentitel' } }
      ],
      correct: ['A'],
      explanation: { en: 'An idempotency key is correct because idempotency prevents duplicate side effects when the same action is retried.', de: 'Ein Idempotenzschlüssel ist richtig, weil Idempotenz doppelte Seiteneffekte verhindert, wenn dieselbe Aktion wiederholt wird.' },
      hint: { en: 'The goal is safe repetition.', de: 'Das Ziel ist sichere Wiederholung.' },
      reference: 'https://learn.microsoft.com/en-us/azure/architecture/patterns/retry'
    },
    {
      id: 'ai103-254', type: 'single',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which policy should limit an agent to only the tools required for its role?', de: 'Welche Richtlinie sollte einen Agenten auf nur die für seine Rolle erforderlichen Tools beschränken?' },
      options: [
        { id: 'A', text: { en: 'A minimal tool allowlist', de: 'Eine minimale Tool-Allowlist' } },
        { id: 'B', text: { en: 'A shared admin account', de: 'Ein gemeinsames Administratorkonto' } },
        { id: 'C', text: { en: 'A browser extension', de: 'Eine Browser-Erweiterung' } },
        { id: 'D', text: { en: 'A DNS record', de: 'Einen DNS-Eintrag' } }
      ],
      correct: ['A'],
      explanation: { en: 'A minimal tool allowlist is correct because least-privilege tool exposure reduces unnecessary capability.', de: 'Eine minimale Tool-Allowlist ist richtig, weil Least-Privilege bei der Tool-Freigabe unnötige Fähigkeiten reduziert.' },
      hint: { en: 'The safest tool is the one the agent cannot misuse.', de: 'Das sicherste Tool ist das, das der Agent nicht missbrauchen kann.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-255', type: 'single',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which output format helps a supervisor consume specialist results reliably?', de: 'Welches Ausgabeformat hilft einem Supervisor, Spezialistenergebnisse zuverlässig zu verarbeiten?' },
      options: [
        { id: 'A', text: { en: 'A structured intermediate result', de: 'Ein strukturiertes Zwischenergebnis' } },
        { id: 'B', text: { en: 'A free-form poem', de: 'Ein freies Gedicht' } },
        { id: 'C', text: { en: 'A screenshot collage', de: 'Eine Screenshot-Collage' } },
        { id: 'D', text: { en: 'A browser color scheme', de: 'Ein Browser-Farbschema' } }
      ],
      correct: ['A'],
      explanation: { en: 'A structured intermediate result is correct because structured results are easier to validate and combine programmatically.', de: 'Ein strukturiertes Zwischenergebnis ist richtig, weil strukturierte Ergebnisse sich programmatisch leichter validieren und zusammenführen lassen.' },
      hint: { en: 'Predictable orchestration needs predictable outputs.', de: 'Vorhersehbare Orchestrierung benötigt vorhersehbare Ausgaben.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-256', type: 'single',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which condition should trigger human review before an agent completes an action?', de: 'Welche Bedingung sollte eine menschliche Prüfung auslösen, bevor ein Agent eine Aktion abschließt?' },
      options: [
        { id: 'A', text: { en: 'Escalation on low confidence', de: 'Eskalation bei niedriger Konfidenz' } },
        { id: 'B', text: { en: 'A browser refresh', de: 'Eine Browseraktualisierung' } },
        { id: 'C', text: { en: 'A DNS sync', de: 'Eine DNS-Synchronisierung' } },
        { id: 'D', text: { en: 'A page margin', de: 'Einen Seitenrand' } }
      ],
      correct: ['A'],
      explanation: { en: 'Escalation on low confidence is correct because high-impact actions with low confidence should be escalated rather than auto-executed.', de: 'Eskalation bei niedriger Konfidenz ist richtig, weil hochwirksame Aktionen mit niedriger Konfidenz eskaliert und nicht automatisch ausgeführt werden sollten.' },
      hint: { en: 'Risk plus uncertainty should lead to review.', de: 'Risiko plus Unsicherheit sollten zu einer Prüfung führen.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-257', type: 'single',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which telemetry practice links tool calls, agent runs, and app requests in one view?', de: 'Welche Telemetriepraxis verknüpft Tool-Aufrufe, Agentenläufe und App-Anforderungen in einer gemeinsamen Sicht?' },
      options: [
        { id: 'A', text: { en: 'Distributed tracing', de: 'Verteiltes Tracing' } },
        { id: 'B', text: { en: 'A budget chart', de: 'Ein Budgetdiagramm' } },
        { id: 'C', text: { en: 'A browser profile', de: 'Ein Browserprofil' } },
        { id: 'D', text: { en: 'A favicon', de: 'Ein Favicon' } }
      ],
      correct: ['A'],
      explanation: { en: 'Distributed tracing is correct because distributed tracing correlates events across components in a single request path.', de: 'Verteiltes Tracing ist richtig, weil verteiltes Tracing Ereignisse über Komponenten hinweg auf einem einzigen Anforderungspfad korreliert.' },
      hint: { en: 'You need end-to-end correlation.', de: 'Sie benötigen eine Ende-zu-Ende-Korrelation.' },
      reference: 'https://learn.microsoft.com/en-us/azure/azure-monitor/app/opentelemetry-overview'
    },
    {
      id: 'ai103-258', type: 'single',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which mechanism should stop an agent loop after too many tool invocations in a single run?', de: 'Welcher Mechanismus sollte eine Agentenschleife nach zu vielen Tool-Aufrufen in einem einzelnen Lauf stoppen?' },
      options: [
        { id: 'A', text: { en: 'A maximum tool-call limit', de: 'Ein Limit für Tool-Aufrufe' } },
        { id: 'B', text: { en: 'A tool timeout', de: 'Ein Tool-Timeout' } },
        { id: 'C', text: { en: 'A browser zoom lock', de: 'Eine feste Browser-Zoomstufe' } },
        { id: 'D', text: { en: 'A DNS reset', de: 'Einen DNS-Reset' } }
      ],
      correct: ['A'],
      explanation: { en: 'A maximum tool-call limit is correct because a hard invocation limit terminates runaway loops directly.', de: 'Ein Limit für Tool-Aufrufe ist richtig, weil ein hartes Aufruflimit ausufernde Schleifen direkt beendet.' },
      hint: { en: 'This guardrail limits repetition, not latency.', de: 'Diese Leitplanke begrenzt Wiederholung und nicht Latenz.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-259', type: 'single',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which pattern should you use when conversation ownership permanently moves from triage agent to specialist?', de: 'Welches Muster sollten Sie verwenden, wenn die Gesprächsverantwortung dauerhaft vom Triage-Agenten auf einen Spezialisten übergeht?' },
      options: [
        { id: 'A', text: { en: 'A handoff pattern', de: 'Ein Übergabemuster' } },
        { id: 'B', text: { en: 'An orchestration framework', de: 'Ein Orchestrierungsframework' } },
        { id: 'C', text: { en: 'A static route table', de: 'Eine statische Routentabelle' } },
        { id: 'D', text: { en: 'A browser bookmark', de: 'Ein Browser-Lesezeichen' } }
      ],
      correct: ['A'],
      explanation: { en: 'A handoff pattern is correct because handoff transfers responsibility for the conversation to another agent.', de: 'Ein Übergabemuster ist richtig, weil eine Übergabe die Verantwortung für das Gespräch auf einen anderen Agenten überträgt.' },
      hint: { en: 'Ownership is moving, not just a subtask.', de: 'Die Verantwortung wechselt und nicht nur eine Teilaufgabe.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-260', type: 'single',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which capability should propagate when a user cancels a long-running analysis request?', de: 'Welche Fähigkeit sollte propagiert werden, wenn ein Benutzer eine lang laufende Analyseanforderung abbricht?' },
      options: [
        { id: 'A', text: { en: 'Cancellation propagation', de: 'Weitergabe von Abbrüchen' } },
        { id: 'B', text: { en: 'A color theme', de: 'Ein Farbdesign' } },
        { id: 'C', text: { en: 'A font download', de: 'Einen Schrift-Download' } },
        { id: 'D', text: { en: 'A DNS suffix', de: 'Ein DNS-Suffix' } }
      ],
      correct: ['A'],
      explanation: { en: 'Cancellation propagation is correct because cancellation should flow through the orchestration so compute stops promptly.', de: 'Weitergabe von Abbrüchen ist richtig, weil ein Abbruch durch die Orchestrierung weitergegeben werden sollte, damit Berechnungen zeitnah stoppen.' },
      hint: { en: 'The user intent is to stop the whole workflow.', de: 'Die Benutzerabsicht besteht darin, den gesamten Workflow zu stoppen.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-261', type: 'single',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which durable artifact should store an approved decision for later audit?', de: 'Welches dauerhafte Artefakt sollte eine genehmigte Entscheidung für spätere Audits speichern?' },
      options: [
        { id: 'A', text: { en: 'A persistent approval record', de: 'Ein persistenter Genehmigungsnachweis' } },
        { id: 'B', text: { en: 'An agent thread', de: 'Ein Agententhread' } },
        { id: 'C', text: { en: 'A browser session', de: 'Eine Browsersitzung' } },
        { id: 'D', text: { en: 'A DNS cache', de: 'Einen DNS-Cache' } }
      ],
      correct: ['A'],
      explanation: { en: 'A persistent approval record is correct because approval evidence should be preserved in a durable audit-friendly record.', de: 'Ein persistenter Genehmigungsnachweis ist richtig, weil Genehmigungsnachweise in einem dauerhaften auditfähigen Datensatz aufbewahrt werden sollten.' },
      hint: { en: 'Audits need records that survive restarts and edits.', de: 'Audits benötigen Datensätze, die Neustarts und Änderungen überstehen.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/'
    },
    {
      id: 'ai103-262', type: 'single',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which limit prevents slow dependencies from stalling the entire orchestration indefinitely?', de: 'Welche Grenze verhindert, dass langsame Abhängigkeiten die gesamte Orchestrierung unbegrenzt blockieren?' },
      options: [
        { id: 'A', text: { en: 'A tool timeout', de: 'Ein Tool-Timeout' } },
        { id: 'B', text: { en: 'A maximum tool-call limit', de: 'Ein Limit für Tool-Aufrufe' } },
        { id: 'C', text: { en: 'A browser wallpaper', de: 'Ein Browser-Hintergrund' } },
        { id: 'D', text: { en: 'A favicon size', de: 'Eine Favicon-Größe' } }
      ],
      correct: ['A'],
      explanation: { en: 'A tool timeout is correct because timeouts bound how long the orchestration waits on one dependency.', de: 'Ein Tool-Timeout ist richtig, weil Timeouts begrenzen, wie lange die Orchestrierung auf eine einzelne Abhängigkeit wartet.' },
      hint: { en: 'This guardrail controls waiting time.', de: 'Diese Leitplanke steuert die Wartezeit.' },
      reference: 'https://learn.microsoft.com/en-us/azure/architecture/patterns/retry'
    },
    {
      id: 'ai103-263', type: 'single',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which output should a research worker return when it completes a delegated subtask?', de: 'Welche Ausgabe sollte ein Research-Worker zurückgeben, wenn er eine delegierte Teilaufgabe abgeschlossen hat?' },
      options: [
        { id: 'A', text: { en: 'A specialist summary', de: 'Eine Spezialisten-Zusammenfassung' } },
        { id: 'B', text: { en: 'A browser screenshot', de: 'Einen Browser-Screenshot' } },
        { id: 'C', text: { en: 'A DNS log', de: 'Ein DNS-Protokoll' } },
        { id: 'D', text: { en: 'A portal wallpaper', de: 'Ein Portal-Hintergrundbild' } }
      ],
      correct: ['A'],
      explanation: { en: 'A specialist summary is correct because a concise specialist summary helps the orchestrator continue with validated context.', de: 'Eine Spezialisten-Zusammenfassung ist richtig, weil eine prägnante Spezialisten-Zusammenfassung dem Orchestrator hilft, mit validiertem Kontext fortzufahren.' },
      hint: { en: 'The orchestrator needs distilled findings.', de: 'Der Orchestrator benötigt verdichtete Ergebnisse.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-264', type: 'multiple',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which TWO safeguards are most important for side-effecting tools?', de: 'Welche ZWEI Schutzmaßnahmen sind für Tools mit Seiteneffekten am wichtigsten?' },
      options: [
        { id: 'A', text: { en: 'A human approval checkpoint', de: 'Ein menschlicher Genehmigungspunkt' } },
        { id: 'B', text: { en: 'An idempotency key', de: 'Ein Idempotenzschlüssel' } },
        { id: 'C', text: { en: 'A bigger logo', de: 'Ein größeres Logo' } },
        { id: 'D', text: { en: 'A browser theme', de: 'Ein Browserdesign' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'A human approval checkpoint, An idempotency key are correct because one adds review and the other makes retries safe.', de: 'Ein menschlicher Genehmigungspunkt, Ein Idempotenzschlüssel sind richtig, weil die eine Prüfung hinzufügt und die andere Wiederholungen sicher macht.' },
      hint: { en: 'Think control plus safe retry.', de: 'Denken Sie an Kontrolle plus sichere Wiederholung.' },
      reference: 'https://learn.microsoft.com/en-us/azure/architecture/patterns/retry'
    },
    {
      id: 'ai103-265', type: 'multiple',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO telemetry items help diagnose agent loops?', de: 'Welche ZWEI Telemetrieelemente helfen, Agentenschleifen zu diagnostizieren?' },
      options: [
        { id: 'A', text: { en: 'Distributed tracing', de: 'Verteiltes Tracing' } },
        { id: 'B', text: { en: 'Repeated tool-call sequence', de: 'Wiederholte Tool-Aufrufsequenz' } },
        { id: 'C', text: { en: 'A budget tag', de: 'Ein Budget-Tag' } },
        { id: 'D', text: { en: 'A wallpaper image', de: 'Ein Hintergrundbild' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Distributed tracing, Repeated tool-call sequence are correct because tracing plus a repeated sequence signal reveals looping behavior.', de: 'Verteiltes Tracing, Wiederholte Tool-Aufrufsequenz sind richtig, weil Tracing plus das Signal einer wiederholten Sequenz Schleifenverhalten sichtbar machen.' },
      hint: { en: 'Pick the signals that explain repetition.', de: 'Wählen Sie die Signale, die Wiederholung erklären.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/concepts/enterprise-readiness/observability/'
    },
    {
      id: 'ai103-266', type: 'multiple',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO pieces of information should be stored outside chat history for durable workflows?', de: 'Welche ZWEI Informationsarten sollten für dauerhafte Workflows außerhalb des Chatverlaufs gespeichert werden?' },
      options: [
        { id: 'A', text: { en: 'An external state store', de: 'Ein externer Zustandspeicher' } },
        { id: 'B', text: { en: 'A persistent approval record', de: 'Ein persistenter Genehmigungsnachweis' } },
        { id: 'C', text: { en: 'A browser search history', de: 'Einen Browser-Suchverlauf' } },
        { id: 'D', text: { en: 'A color palette', de: 'Eine Farbpalette' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'An external state store, A persistent approval record are correct because workflow state and approval evidence need durable storage beyond chat context.', de: 'Ein externer Zustandspeicher, Ein persistenter Genehmigungsnachweis sind richtig, weil Workflow-Zustand und Genehmigungsnachweise dauerhafte Speicherung jenseits des Chatkontexts benötigen.' },
      hint: { en: 'Think durable state plus durable evidence.', de: 'Denken Sie an dauerhaften Zustand plus dauerhafte Nachweise.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/'
    },
    {
      id: 'ai103-267', type: 'multiple',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which TWO patterns fit multi-agent collaboration?', de: 'Welche ZWEI Muster passen zu Multi-Agenten-Kollaboration?' },
      options: [
        { id: 'A', text: { en: 'A handoff pattern', de: 'Ein Übergabemuster' } },
        { id: 'B', text: { en: 'An orchestration framework', de: 'Ein Orchestrierungsframework' } },
        { id: 'C', text: { en: 'A DNS mirror', de: 'Einen DNS-Spiegel' } },
        { id: 'D', text: { en: 'A dashboard wallpaper', de: 'Einen Dashboard-Hintergrund' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'A handoff pattern, An orchestration framework are correct because one transfers ownership and the other coordinates multi-step collaboration.', de: 'Ein Übergabemuster, Ein Orchestrierungsframework sind richtig, weil das eine Verantwortung überträgt und das andere mehrstufige Zusammenarbeit koordiniert.' },
      hint: { en: 'Choose collaboration patterns, not infrastructure.', de: 'Wählen Sie Kollaborationsmuster und keine Infrastruktur.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-268', type: 'multiple',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which THREE controls improve agent reliability?', de: 'Welche DREI Kontrollen verbessern die Zuverlässigkeit von Agenten?' },
      options: [
        { id: 'A', text: { en: 'A tool timeout', de: 'Ein Tool-Timeout' } },
        { id: 'B', text: { en: 'A retry policy with backoff', de: 'Eine Wiederholungsrichtlinie mit Backoff' } },
        { id: 'C', text: { en: 'A circuit breaker', de: 'Ein Circuit Breaker' } },
        { id: 'D', text: { en: 'A browser tab color', de: 'Eine Browser-Tab-Farbe' } },
        { id: 'E', text: { en: 'A page footer', de: 'Eine Seitenfußzeile' } }
      ],
      correct: ['A', 'B', 'C'],
      explanation: { en: 'A tool timeout, A retry policy with backoff, A circuit breaker are correct because they bound waits, recover from transient faults, and stop repeated calls to failing dependencies.', de: 'Ein Tool-Timeout, Eine Wiederholungsrichtlinie mit Backoff, Ein Circuit Breaker sind richtig, weil sie Wartezeiten begrenzen, vorübergehende Fehler abfangen und wiederholte Aufrufe fehlschlagender Abhängigkeiten stoppen.' },
      hint: { en: 'Choose the reliability patterns, not cosmetic changes.', de: 'Wählen Sie die Zuverlässigkeitsmuster und keine kosmetischen Änderungen.' },
      reference: 'https://learn.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker'
    },
    {
      id: 'ai103-269', type: 'scenario',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'medium',
      scenario: { en: 'Contoso runs a planner agent that calls search and summarization tools in sequence. In some requests, the agent keeps alternating between the same tools until the run budget is exhausted. Operators want a hard stop that prevents runaway loops without redesigning the whole workflow. The team needs the most direct execution guardrail.', de: 'Contoso betreibt einen Planer-Agenten, der Such- und Zusammenfassungstools nacheinander aufruft. Bei manchen Anforderungen wechselt der Agent immer wieder zwischen denselben Tools, bis das Laufbudget erschöpft ist. Die Betreiber möchten einen harten Stopp, der ausufernde Schleifen verhindert, ohne den gesamten Workflow neu zu gestalten. Das Team benötigt die direkteste Ausführungsleitplanke.' },
      question: { en: 'What should Contoso configure?', de: 'Was sollte Contoso konfigurieren?' },
      options: [
        { id: 'A', text: { en: 'A maximum tool-call limit', de: 'Ein Limit für Tool-Aufrufe' } },
        { id: 'B', text: { en: 'A new browser theme', de: 'Ein neues Browserdesign' } },
        { id: 'C', text: { en: 'A DNS alias', de: 'Einen DNS-Alias' } },
        { id: 'D', text: { en: 'A larger logo', de: 'Ein größeres Logo' } }
      ],
      correct: ['A'],
      explanation: { en: 'A maximum tool-call limit is correct because a maximum tool-call limit stops the run after excessive repetition.', de: 'Ein Limit für Tool-Aufrufe ist richtig, weil ein Limit für Tool-Aufrufe den Lauf nach übermäßiger Wiederholung stoppt.' },
      hint: { en: 'This is the simplest direct guardrail.', de: 'Dies ist die einfachste direkte Leitplanke.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-270', type: 'scenario',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'medium',
      scenario: { en: 'Fabrikam uses an agent to trigger refunds through a line-of-business API. When the API times out, the retry logic sometimes causes the same refund to be processed twice. Finance wants retries for transient errors but cannot accept duplicate side effects. The team needs a control at the action boundary.', de: 'Fabrikam nutzt einen Agenten, um Erstattungen über eine Fachanwendungs-API auszulösen. Wenn die API einen Timeout liefert, führt die Wiederholungslogik manchmal dazu, dass dieselbe Erstattung zweimal verarbeitet wird. Die Finanzabteilung möchte Wiederholungen bei vorübergehenden Fehlern, kann aber doppelte Seiteneffekte nicht akzeptieren. Das Team benötigt eine Kontrolle an der Aktionsgrenze.' },
      question: { en: 'What should Fabrikam add?', de: 'Was sollte Fabrikam hinzufügen?' },
      options: [
        { id: 'A', text: { en: 'An idempotency key', de: 'Ein Idempotenzschlüssel' } },
        { id: 'B', text: { en: 'A browser cache', de: 'Einen Browser-Cache' } },
        { id: 'C', text: { en: 'A DNS mirror', de: 'Einen DNS-Spiegel' } },
        { id: 'D', text: { en: 'A color theme', de: 'Ein Farbdesign' } }
      ],
      correct: ['A'],
      explanation: { en: 'An idempotency key is correct because idempotency allows safe retries without duplicating the business action.', de: 'Ein Idempotenzschlüssel ist richtig, weil Idempotenz sichere Wiederholungen erlaubt, ohne die Geschäftsaktion zu duplizieren.' },
      hint: { en: 'The risk is duplicate execution.', de: 'Das Risiko ist doppelte Ausführung.' },
      reference: 'https://learn.microsoft.com/en-us/azure/architecture/patterns/retry'
    },
    {
      id: 'ai103-271', type: 'scenario',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'medium',
      scenario: { en: 'Tailwind Traders runs a document-analysis agent for analysts. Users sometimes close the browser while a long job is still running, but the backend keeps consuming compute for several more minutes. Operations wants the workflow to stop promptly when the user abandons the request. The fix should flow through the orchestration, not rely on the UI alone.', de: 'Tailwind Traders betreibt einen Dokumentanalyse-Agenten für Analysten. Benutzer schließen manchmal den Browser, während ein langer Auftrag noch läuft, aber das Backend verbraucht noch mehrere Minuten weiter Rechenleistung. Der Betrieb möchte, dass der Workflow zeitnah stoppt, wenn der Benutzer die Anforderung aufgibt. Die Korrektur sollte durch die Orchestrierung fließen und sich nicht nur auf die UI verlassen.' },
      question: { en: 'What should Tailwind Traders implement?', de: 'Was sollte Tailwind Traders implementieren?' },
      options: [
        { id: 'A', text: { en: 'Cancellation propagation', de: 'Weitergabe von Abbrüchen' } },
        { id: 'B', text: { en: 'A bigger browser window', de: 'Ein größeres Browserfenster' } },
        { id: 'C', text: { en: 'A favicon update', de: 'Eine Favicon-Aktualisierung' } },
        { id: 'D', text: { en: 'A DNS suffix', de: 'Ein DNS-Suffix' } }
      ],
      correct: ['A'],
      explanation: { en: 'Cancellation propagation is correct because cancellation should propagate through the orchestration so downstream work can stop.', de: 'Weitergabe von Abbrüchen ist richtig, weil Abbrüche durch die Orchestrierung weitergegeben werden sollten, damit nachgelagerte Arbeit stoppen kann.' },
      hint: { en: 'The user stopped the workflow, so compute should stop too.', de: 'Der Benutzer hat den Workflow gestoppt, also sollte auch die Berechnung stoppen.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-272', type: 'scenario',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'medium',
      scenario: { en: 'Litware uses a triage agent that routes conversations to specialists. In some cases, billing inquiries should be owned entirely by the billing specialist after the handoff instead of returning to the triage bot. Product wants a seamless transfer of ownership for the rest of the conversation. The routing model should reflect that ownership change clearly.', de: 'Litware verwendet einen Triage-Agenten, der Gespräche an Spezialisten weiterleitet. In manchen Fällen sollen Abrechnungsanfragen nach der Übergabe vollständig vom Abrechnungsspezialisten übernommen werden, statt zum Triage-Bot zurückzukehren. Das Produktteam möchte eine nahtlose Übertragung der Verantwortung für den Rest des Gesprächs. Das Routing-Modell sollte diesen Verantwortungswechsel klar abbilden.' },
      question: { en: 'Which pattern should Litware use?', de: 'Welches Muster sollte Litware verwenden?' },
      options: [
        { id: 'A', text: { en: 'A handoff pattern', de: 'Ein Übergabemuster' } },
        { id: 'B', text: { en: 'An orchestration framework', de: 'Ein Orchestrierungsframework' } },
        { id: 'C', text: { en: 'A browser bookmark', de: 'Ein Browser-Lesezeichen' } },
        { id: 'D', text: { en: 'A DNS route', de: 'Eine DNS-Route' } }
      ],
      correct: ['A'],
      explanation: { en: 'A handoff pattern is correct because handoff is the collaboration pattern for transferring conversation ownership.', de: 'Ein Übergabemuster ist richtig, weil eine Übergabe das Kollaborationsmuster für die Übertragung der Gesprächsverantwortung ist.' },
      hint: { en: 'Ownership is moving permanently.', de: 'Die Verantwortung wechselt dauerhaft.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-273', type: 'scenario',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'hard',
      scenario: { en: 'Datum Corporation orchestrates several specialist agents that return prose paragraphs. The supervisor often fails to combine the results consistently because each worker writes in a different style and level of detail. The team wants predictable composition without removing the specialists. The next change should make intermediate outputs easier to validate and combine.', de: 'Datum Corporation orchestriert mehrere Spezialisten-Agenten, die Fließtextabsätze zurückgeben. Der Supervisor kann die Ergebnisse oft nicht konsistent zusammenführen, weil jeder Worker in einem anderen Stil und Detailgrad schreibt. Das Team möchte eine vorhersehbare Komposition, ohne die Spezialisten zu entfernen. Die nächste Änderung sollte Zwischenausgaben leichter validierbar und kombinierbar machen.' },
      question: { en: 'What should Datum Corporation require from workers?', de: 'Was sollte Datum Corporation von den Workern verlangen?' },
      options: [
        { id: 'A', text: { en: 'A structured intermediate result', de: 'Ein strukturiertes Zwischenergebnis' } },
        { id: 'B', text: { en: 'A larger font size', de: 'Eine größere Schriftgröße' } },
        { id: 'C', text: { en: 'A DNS export', de: 'Einen DNS-Export' } },
        { id: 'D', text: { en: 'A page wallpaper', de: 'Einen Seitenhintergrund' } }
      ],
      correct: ['A'],
      explanation: { en: 'A structured intermediate result is correct because structured outputs make aggregation easier for the supervisor.', de: 'Ein strukturiertes Zwischenergebnis ist richtig, weil strukturierte Ausgaben die Aggregation für den Supervisor erleichtern.' },
      hint: { en: 'The gap is in the shape of intermediate results.', de: 'Die Lücke liegt in der Form der Zwischenergebnisse.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-274', type: 'scenario',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'hard',
      scenario: { en: 'Northwind Traders cannot determine which worker or tool caused a failure in a long-running orchestration. Logs exist in multiple places, but support engineers still cannot reconstruct the end-to-end path of a single user request. Leadership wants one coherent view from the app through the agents to the tools. The observability design must connect every layer.', de: 'Northwind Traders kann nicht bestimmen, welcher Worker oder welches Tool einen Fehler in einer lang laufenden Orchestrierung verursacht hat. Protokolle existieren an mehreren Stellen, aber Supportingenieure können den Ende-zu-Ende-Pfad einer einzelnen Benutzeranforderung dennoch nicht rekonstruieren. Die Leitung möchte eine zusammenhängende Sicht von der App über die Agenten bis zu den Tools. Das Beobachtungsdesign muss jede Ebene verbinden.' },
      question: { en: 'What should Northwind Traders implement?', de: 'Was sollte Northwind Traders implementieren?' },
      options: [
        { id: 'A', text: { en: 'Distributed tracing', de: 'Verteiltes Tracing' } },
        { id: 'B', text: { en: 'A browser screenshot archive', de: 'Ein Browser-Screenshot-Archiv' } },
        { id: 'C', text: { en: 'A DNS replacement', de: 'Einen DNS-Ersatz' } },
        { id: 'D', text: { en: 'A static dashboard image', de: 'Ein statisches Dashboard-Bild' } }
      ],
      correct: ['A'],
      explanation: { en: 'Distributed tracing is correct because distributed tracing correlates events across the full request path.', de: 'Verteiltes Tracing ist richtig, weil verteiltes Tracing Ereignisse über den gesamten Anforderungspfad korreliert.' },
      hint: { en: 'The missing capability is end-to-end correlation.', de: 'Die fehlende Fähigkeit ist Ende-zu-Ende-Korrelation.' },
      reference: 'https://learn.microsoft.com/en-us/azure/azure-monitor/app/opentelemetry-overview'
    },
    {
      id: 'ai103-275', type: 'scenario',
      domain: { en: 'Build and orchestrate AI agents', de: 'KI-Agenten erstellen und orchestrieren' }, difficulty: 'hard',
      scenario: { en: 'Humongous Insurance uses an agent to prepare claim-settlement recommendations. Some cases involve high financial impact, and confidence can be low when evidence is incomplete. Compliance requires a human to review those risky recommendations before anything is finalized. The workflow should escalate rather than auto-complete in those cases.', de: 'Humongous Insurance verwendet einen Agenten, um Empfehlungen zur Schadenregulierung vorzubereiten. Einige Fälle haben hohe finanzielle Auswirkungen, und die Konfidenz kann niedrig sein, wenn Belege unvollständig sind. Die Compliance verlangt, dass Menschen solche riskanten Empfehlungen prüfen, bevor etwas finalisiert wird. Der Workflow sollte in diesen Fällen eskalieren, statt automatisch abzuschließen.' },
      question: { en: 'What should Humongous Insurance do?', de: 'Was sollte Humongous Insurance tun?' },
      options: [
        { id: 'A', text: { en: 'Escalation on low confidence', de: 'Eskalation bei niedriger Konfidenz' } },
        { id: 'B', text: { en: 'Increase browser cache size', de: 'Die Größe des Browser-Caches erhöhen' } },
        { id: 'C', text: { en: 'Change the page theme', de: 'Das Seitendesign ändern' } },
        { id: 'D', text: { en: 'Update DNS records', de: 'DNS-Einträge aktualisieren' } }
      ],
      correct: ['A'],
      explanation: { en: 'Escalation on low confidence is correct because low-confidence high-impact cases should be escalated to humans.', de: 'Eskalation bei niedriger Konfidenz ist richtig, weil Fälle mit niedriger Konfidenz und hoher Auswirkung an Menschen eskaliert werden sollten.' },
      hint: { en: 'Risk plus uncertainty should trigger review.', de: 'Risiko plus Unsicherheit sollten eine Prüfung auslösen.' },
      reference: 'https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/agent-orchestration/'
    },
    {
      id: 'ai103-276', type: 'single',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which search feature returns concise snippets that highlight why a result matched semantically?', de: 'Welche Suchfunktion gibt kurze Snippets zurück, die hervorheben, warum ein Ergebnis semantisch passend war?' },
      options: [
        { id: 'A', text: { en: 'Semantic captions', de: 'Semantische Beschriftungen' } },
        { id: 'B', text: { en: 'A browser status bar', de: 'Eine Browser-Statusleiste' } },
        { id: 'C', text: { en: 'A DNS alias', de: 'Einen DNS-Alias' } },
        { id: 'D', text: { en: 'A budget tag', de: 'Ein Budget-Tag' } }
      ],
      correct: ['A'],
      explanation: { en: 'Semantic captions is correct because semantic captions summarize why a result is relevant in human-readable form.', de: 'Semantische Beschriftungen ist richtig, weil semantische Beschriftungen in lesbarer Form zusammenfassen, warum ein Ergebnis relevant ist.' },
      hint: { en: 'The question is about result explanation, not retrieval alone.', de: 'Die Frage betrifft die Ergebniserklärung und nicht nur den Abruf.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/semantic-search-overview'
    },
    {
      id: 'ai103-277', type: 'single',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which retrieval design helps when a matched chunk alone lacks neighboring clauses from a long document?', de: 'Welches Retrieval-Design hilft, wenn ein gefundener Chunk allein benachbarte Klauseln aus einem langen Dokument nicht enthält?' },
      options: [
        { id: 'A', text: { en: 'Window expansion around the matched chunk', de: 'Fensterausweitung um den Treffer-Chunk' } },
        { id: 'B', text: { en: 'A browser zoom reset', de: 'Einen Browser-Zoom-Reset' } },
        { id: 'C', text: { en: 'A budget alert', de: 'Eine Budgetwarnung' } },
        { id: 'D', text: { en: 'A favicon update', de: 'Eine Favicon-Aktualisierung' } }
      ],
      correct: ['A'],
      explanation: { en: 'Window expansion around the matched chunk is correct because it expands the retrieved context around the relevant chunk before generation.', de: 'Fensterausweitung um den Treffer-Chunk ist richtig, weil es den abgerufenen Kontext vor der Generierung um den relevanten Chunk erweitert.' },
      hint: { en: 'The hit is right, but the context window is too narrow.', de: 'Der Treffer ist richtig, aber das Kontextfenster ist zu eng.' },
      reference: 'https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/rag/rag-chunking-phase'
    },
    {
      id: 'ai103-278', type: 'single',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which query filter should enforce tenant isolation in a multi-tenant index?', de: 'Welcher Abfragefilter sollte Mandantenisolierung in einem Multi-Tenant-Index erzwingen?' },
      options: [
        { id: 'A', text: { en: 'A tenantId filter', de: 'Ein tenantId-Filter' } },
        { id: 'B', text: { en: 'Source URL and chunk metadata', de: 'Quell-URL und Chunk-Metadaten' } },
        { id: 'C', text: { en: 'A browser profile', de: 'Ein Browserprofil' } },
        { id: 'D', text: { en: 'A page header', de: 'Einen Seitenkopf' } }
      ],
      correct: ['A'],
      explanation: { en: 'A tenantId filter is correct because a tenant filter restricts results to the current tenant before grounding.', de: 'Ein tenantId-Filter ist richtig, weil ein Mandantenfilter Ergebnisse vor dem Grounding auf den aktuellen Mandanten beschränkt.' },
      hint: { en: 'The control belongs in the query path.', de: 'Die Kontrolle gehört in den Abfragepfad.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/search-filters'
    },
    {
      id: 'ai103-279', type: 'single',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which index maintenance step is required after you change searchable field schema or vector dimensions?', de: 'Welcher Indexwartungsschritt ist erforderlich, nachdem Sie das Schema durchsuchbarer Felder oder Vektordimensionen geändert haben?' },
      options: [
        { id: 'A', text: { en: 'Recreate and reindex the search index', de: 'Den Suchindex neu erstellen und neu indizieren' } },
        { id: 'B', text: { en: 'A browser reload', de: 'Einen Browser-Neuladevorgang' } },
        { id: 'C', text: { en: 'A budget alert', de: 'Eine Budgetwarnung' } },
        { id: 'D', text: { en: 'A favicon change', de: 'Eine Favicon-Änderung' } }
      ],
      correct: ['A'],
      explanation: { en: 'Recreate and reindex the search index is correct because schema changes typically require rebuilding and reloading the index.', de: 'Den Suchindex neu erstellen und neu indizieren ist richtig, weil Schemaänderungen in der Regel einen Neuaufbau und ein Neuladen des Indexes erfordern.' },
      hint: { en: 'The structure changed, so the index must change too.', de: 'Die Struktur hat sich geändert, daher muss sich auch der Index ändern.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/search-howto-reindex'
    },
    {
      id: 'ai103-280', type: 'single',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which chunking approach best preserves tables and headings from complex PDFs?', de: 'Welcher Chunking-Ansatz bewahrt Tabellen und Überschriften aus komplexen PDFs am besten?' },
      options: [
        { id: 'A', text: { en: 'Layout-aware chunking', de: 'Layoutbewusstes Chunking' } },
        { id: 'B', text: { en: 'Fixed-size blind chunking', de: 'Blindes Chunking mit fester Größe' } },
        { id: 'C', text: { en: 'A browser theme', de: 'Ein Browserdesign' } },
        { id: 'D', text: { en: 'A DNS zone', de: 'Eine DNS-Zone' } }
      ],
      correct: ['A'],
      explanation: { en: 'Layout-aware chunking is correct because layout-aware chunking respects document structure that fixed-size splitting can destroy.', de: 'Layoutbewusstes Chunking ist richtig, weil layoutbewusstes Chunking Dokumentstrukturen berücksichtigt, die durch starres Aufteilen verloren gehen können.' },
      hint: { en: 'The source contains structure that matters.', de: 'Die Quelle enthält relevante Struktur.' },
      reference: 'https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/rag/rag-chunking-phase'
    },
    {
      id: 'ai103-281', type: 'single',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which metadata enables citations to an exact page in a PDF?', de: 'Welche Metadaten ermöglichen Zitate auf eine exakte Seite in einem PDF?' },
      options: [
        { id: 'A', text: { en: 'Page number metadata', de: 'Metadaten zur Seitennummer' } },
        { id: 'B', text: { en: 'A browser bookmark title', de: 'Einen Browser-Lesezeichentitel' } },
        { id: 'C', text: { en: 'A DNS suffix', de: 'Ein DNS-Suffix' } },
        { id: 'D', text: { en: 'A logo color', de: 'Eine Logofarbe' } }
      ],
      correct: ['A'],
      explanation: { en: 'Page number metadata is correct because page numbers make citations auditable at page level.', de: 'Metadaten zur Seitennummer ist richtig, weil Seitennummern Zitate auf Seitenebene auditierbar machen.' },
      hint: { en: 'The question asks for page-level traceability.', de: 'Die Frage verlangt Rückverfolgbarkeit auf Seitenebene.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview'
    },
    {
      id: 'ai103-282', type: 'single',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which measure should you track on benchmark questions before generation to evaluate retrieval alone?', de: 'Welche Kennzahl sollten Sie bei Benchmark-Fragen vor der Generierung verfolgen, um den Abruf allein zu bewerten?' },
      options: [
        { id: 'A', text: { en: 'Benchmark recall@k tracking', de: 'Benchmark-Tracking von recall@k' } },
        { id: 'B', text: { en: 'Average browser memory', de: 'Durchschnittlicher Browserspeicher' } },
        { id: 'C', text: { en: 'A CSS count', de: 'Eine CSS-Anzahl' } },
        { id: 'D', text: { en: 'A page title', de: 'Einen Seitentitel' } }
      ],
      correct: ['A'],
      explanation: { en: 'Benchmark recall@k tracking is correct because recall@k indicates whether the relevant evidence is present in retrieved results.', de: 'Benchmark-Tracking von recall@k ist richtig, weil recall@k anzeigt, ob relevante Belege in den abgerufenen Ergebnissen vorhanden sind.' },
      hint: { en: 'Evaluate retrieval before you evaluate the final answer.', de: 'Bewerten Sie zuerst den Abruf und dann die endgültige Antwort.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview'
    },
    {
      id: 'ai103-283', type: 'single',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which update strategy reduces stale answers when documents change frequently throughout the day?', de: 'Welche Aktualisierungsstrategie reduziert veraltete Antworten, wenn sich Dokumente im Tagesverlauf häufig ändern?' },
      options: [
        { id: 'A', text: { en: 'More frequent indexing or push updates', de: 'Häufigere Indizierung oder Push-Updates' } },
        { id: 'B', text: { en: 'A darker browser theme', de: 'Ein dunkleres Browserdesign' } },
        { id: 'C', text: { en: 'A favicon rotation', de: 'Eine Favicon-Rotation' } },
        { id: 'D', text: { en: 'A DNS reset', de: 'Einen DNS-Reset' } }
      ],
      correct: ['A'],
      explanation: { en: 'More frequent indexing or push updates is correct because more frequent ingestion or push updates reduces the freshness lag between source and index.', de: 'Häufigere Indizierung oder Push-Updates ist richtig, weil häufigere Ingestion oder Push-Updates die Aktualitätsverzögerung zwischen Quelle und Index verringern.' },
      hint: { en: 'Fresh content must reach the index sooner.', de: 'Frische Inhalte müssen den Index schneller erreichen.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview'
    },
    {
      id: 'ai103-284', type: 'single',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which metadata pattern makes permission revocation effective quickly at query time?', de: 'Welches Metadatenmuster sorgt dafür, dass Berechtigungsentzug zur Abfragezeit schnell wirksam wird?' },
      options: [
        { id: 'A', text: { en: 'Security trimming', de: 'Security Trimming' } },
        { id: 'B', text: { en: 'Source URL and chunk metadata', de: 'Quell-URL und Chunk-Metadaten' } },
        { id: 'C', text: { en: 'A browser wallpaper', de: 'Ein Browser-Hintergrund' } },
        { id: 'D', text: { en: 'A dashboard pin', de: 'Eine Dashboard-Anheftung' } }
      ],
      correct: ['A'],
      explanation: { en: 'Security trimming is correct because security trimming keeps permission checks in the retrieval path instead of only in the UI.', de: 'Security Trimming ist richtig, weil Security Trimming Berechtigungsprüfungen im Retrieval-Pfad statt nur in der UI hält.' },
      hint: { en: 'The enforcement point is the query itself.', de: 'Der Durchsetzungspunkt ist die Abfrage selbst.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/search-security-trimming-for-azure-search'
    },
    {
      id: 'ai103-285', type: 'single',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which index design supports chunk-level retrieval plus navigation back to the original parent document?', de: 'Welches Indexdesign unterstützt chunkbasierten Abruf plus Navigation zurück zum ursprünglichen Quelldokument?' },
      options: [
        { id: 'A', text: { en: 'Index projections', de: 'Indexprojektionen' } },
        { id: 'B', text: { en: 'A browser history export', de: 'Einen Export des Browserverlaufs' } },
        { id: 'C', text: { en: 'A DNS route', de: 'Eine DNS-Route' } },
        { id: 'D', text: { en: 'A budget graph', de: 'Einen Budgetgraphen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Index projections is correct because index projections help transform one source document into retrieval-friendly chunk records linked to the parent.', de: 'Indexprojektionen ist richtig, weil Indexprojektionen dabei helfen, ein Quelldokument in retrievalfreundliche Chunk-Datensätze mit Bezug zum Elterndokument zu transformieren.' },
      hint: { en: 'The question is about parent-child indexing structure.', de: 'Die Frage betrifft die Parent-Child-Indexstruktur.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/search-how-to-define-index-projections'
    },
    {
      id: 'ai103-286', type: 'single',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which Azure Search ingestion option can crawl Azure Blob Storage content without custom ETL?', de: 'Welche Azure Search-Ingestionsoption kann Inhalte aus Azure Blob Storage ohne benutzerdefiniertes ETL durchsuchen?' },
      options: [
        { id: 'A', text: { en: 'A Blob Storage indexer', de: 'Ein Blob-Storage-Indexer' } },
        { id: 'B', text: { en: 'A browser extension', de: 'Eine Browser-Erweiterung' } },
        { id: 'C', text: { en: 'A DNS relay', de: 'Einen DNS-Relay' } },
        { id: 'D', text: { en: 'A wallpaper file', de: 'Eine Hintergrunddatei' } }
      ],
      correct: ['A'],
      explanation: { en: 'A Blob Storage indexer is correct because a blob indexer provides managed crawling and indexing from Azure Storage.', de: 'Ein Blob-Storage-Indexer ist richtig, weil ein Blob-Indexer verwaltetes Crawling und Indizieren aus Azure Storage bereitstellt.' },
      hint: { en: 'The goal is managed ingestion from Blob Storage.', de: 'Das Ziel ist verwaltete Ingestion aus Blob Storage.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/search-howto-indexing-azure-blob-storage'
    },
    {
      id: 'ai103-287', type: 'single',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which query form should you use when you already have a user embedding and want nearest-neighbor results?', de: 'Welche Abfrageform sollten Sie verwenden, wenn bereits ein Benutzer-Embedding vorliegt und Sie nächste-Nachbarn-Ergebnisse möchten?' },
      options: [
        { id: 'A', text: { en: 'A vector query', de: 'Eine Vektorabfrage' } },
        { id: 'B', text: { en: 'A CSS query', de: 'Eine CSS-Abfrage' } },
        { id: 'C', text: { en: 'A browser navigation event', de: 'Ein Browser-Navigationsereignis' } },
        { id: 'D', text: { en: 'A DNS query log', de: 'Ein DNS-Abfrageprotokoll' } }
      ],
      correct: ['A'],
      explanation: { en: 'A vector query is correct because a vector query compares the supplied embedding to stored vectors for similarity search.', de: 'Eine Vektorabfrage ist richtig, weil eine Vektorabfrage das bereitgestellte Embedding mit gespeicherten Vektoren für Ähnlichkeitssuche vergleicht.' },
      hint: { en: 'The retrieval primitive is vector similarity.', de: 'Das Retrieval-Prinzip ist Vektorähnlichkeit.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/vector-search-how-to-query'
    },
    {
      id: 'ai103-288', type: 'multiple',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which TWO fields make citations more useful?', de: 'Welche ZWEI Felder machen Zitate nützlicher?' },
      options: [
        { id: 'A', text: { en: 'Source URL and chunk metadata', de: 'Quell-URL und Chunk-Metadaten' } },
        { id: 'B', text: { en: 'Page number metadata', de: 'Metadaten zur Seitennummer' } },
        { id: 'C', text: { en: 'A browser theme', de: 'Ein Browserdesign' } },
        { id: 'D', text: { en: 'A DNS suffix', de: 'Ein DNS-Suffix' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Source URL and chunk metadata, Page number metadata are correct because source identifiers plus page numbers improve traceability.', de: 'Quell-URL und Chunk-Metadaten, Metadaten zur Seitennummer sind richtig, weil Quellkennungen plus Seitennummern die Rückverfolgbarkeit verbessern.' },
      hint: { en: 'Choose the citation metadata.', de: 'Wählen Sie die Zitiermetadaten.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview'
    },
    {
      id: 'ai103-289', type: 'multiple',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO measures help hierarchical retrieval for long documents?', de: 'Welche ZWEI Maßnahmen helfen beim hierarchischen Retrieval für lange Dokumente?' },
      options: [
        { id: 'A', text: { en: 'A parent document ID', de: 'Eine übergeordnete Dokument-ID' } },
        { id: 'B', text: { en: 'Window expansion around the matched chunk', de: 'Fensterausweitung um den Treffer-Chunk' } },
        { id: 'C', text: { en: 'A browser wallpaper', de: 'Ein Browser-Hintergrund' } },
        { id: 'D', text: { en: 'A portal color', de: 'Eine Portal-Farbe' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'A parent document ID, Window expansion around the matched chunk are correct because one links chunks back to the parent and the other expands local context around a match.', de: 'Eine übergeordnete Dokument-ID, Fensterausweitung um den Treffer-Chunk sind richtig, weil die eine Chunks mit dem Elterndokument verknüpft und die andere lokalen Kontext um einen Treffer erweitert.' },
      hint: { en: 'Think parent linkage plus contextual expansion.', de: 'Denken Sie an Parent-Verknüpfung plus Kontexterweiterung.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/search-how-to-define-index-projections'
    },
    {
      id: 'ai103-290', type: 'multiple',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO controls enforce tenant-aware security at query time?', de: 'Welche ZWEI Kontrollen erzwingen mandantenbewusste Sicherheit zur Abfragezeit?' },
      options: [
        { id: 'A', text: { en: 'A tenantId filter', de: 'Ein tenantId-Filter' } },
        { id: 'B', text: { en: 'A filterable ACL field', de: 'Ein filterbares ACL-Feld' } },
        { id: 'C', text: { en: 'A browser setting', de: 'Eine Browsereinstellung' } },
        { id: 'D', text: { en: 'A logo change', de: 'Eine Logoänderung' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'A tenantId filter, A filterable ACL field are correct because one filters by tenant and the other carries permission metadata for filtering.', de: 'Ein tenantId-Filter, Ein filterbares ACL-Feld sind richtig, weil die eine nach Mandant filtert und die andere Berechtigungsmetadaten für das Filtern trägt.' },
      hint: { en: 'Query-time security needs both metadata and filters.', de: 'Sicherheit zur Abfragezeit benötigt sowohl Metadaten als auch Filter.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/search-security-trimming-for-azure-search'
    },
    {
      id: 'ai103-291', type: 'multiple',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which THREE items should be stored per chunk for robust citation-ready RAG?', de: 'Welche DREI Elemente sollten pro Chunk für robustes, zitierfähiges RAG gespeichert werden?' },
      options: [
        { id: 'A', text: { en: 'Source URL and chunk metadata', de: 'Quell-URL und Chunk-Metadaten' } },
        { id: 'B', text: { en: 'Page number metadata', de: 'Metadaten zur Seitennummer' } },
        { id: 'C', text: { en: 'A parent document ID', de: 'Eine übergeordnete Dokument-ID' } },
        { id: 'D', text: { en: 'A browser icon', de: 'Ein Browsersymbol' } },
        { id: 'E', text: { en: 'A DNS record', de: 'Einen DNS-Eintrag' } }
      ],
      correct: ['A', 'B', 'C'],
      explanation: { en: 'Source URL and chunk metadata, Page number metadata, A parent document ID are correct because these fields support source traceability, page-level citation, and navigation back to the parent document.', de: 'Quell-URL und Chunk-Metadaten, Metadaten zur Seitennummer, Eine übergeordnete Dokument-ID sind richtig, weil diese Felder Quellenrückverfolgbarkeit, seitenbasierte Zitate und Navigation zurück zum Elterndokument unterstützen.' },
      hint: { en: 'Choose fields that help evidence and navigation.', de: 'Wählen Sie Felder, die Belege und Navigation unterstützen.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview'
    },
    {
      id: 'ai103-292', type: 'multiple',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'Which TWO actions help keep RAG answers fresh after source updates?', de: 'Welche ZWEI Maßnahmen helfen, RAG-Antworten nach Quellaktualisierungen aktuell zu halten?' },
      options: [
        { id: 'A', text: { en: 'More frequent indexing or push updates', de: 'Häufigere Indizierung oder Push-Updates' } },
        { id: 'B', text: { en: 'A lastUpdated timestamp field', de: 'Ein lastUpdated-Zeitstempelfeld' } },
        { id: 'C', text: { en: 'A browser color reset', de: 'Einen Browser-Farb-Reset' } },
        { id: 'D', text: { en: 'A dashboard wallpaper', de: 'Einen Dashboard-Hintergrund' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'More frequent indexing or push updates, A lastUpdated timestamp field are correct because one refreshes the index sooner and the other lets freshness be evaluated in the application.', de: 'Häufigere Indizierung oder Push-Updates, Ein lastUpdated-Zeitstempelfeld sind richtig, weil die eine den Index schneller aktualisiert und die andere erlaubt, Aktualität in der Anwendung auszuwerten.' },
      hint: { en: 'Current answers depend on current indexed content.', de: 'Aktuelle Antworten hängen von aktuellen indizierten Inhalten ab.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview'
    },
    {
      id: 'ai103-293', type: 'scenario',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'medium',
      scenario: { en: 'Contoso built a RAG assistant for technical manuals. Users now need citations that point to the exact page in a PDF instead of only the document title. Auditors want to verify the evidence quickly during reviews. The indexing design must preserve the metadata that enables this precision.', de: 'Contoso hat einen RAG-Assistenten für technische Handbücher entwickelt. Benutzer benötigen nun Zitate, die auf die genaue Seite in einem PDF verweisen, statt nur auf den Dokumenttitel. Auditoren möchten die Belege bei Prüfungen schnell verifizieren. Das Indexdesign muss die Metadaten erhalten, die diese Präzision ermöglichen.' },
      question: { en: 'What should Contoso capture during indexing?', de: 'Was sollte Contoso während der Indizierung erfassen?' },
      options: [
        { id: 'A', text: { en: 'Page number metadata', de: 'Metadaten zur Seitennummer' } },
        { id: 'B', text: { en: 'A browser wallpaper', de: 'Einen Browser-Hintergrund' } },
        { id: 'C', text: { en: 'A DNS alias', de: 'Einen DNS-Alias' } },
        { id: 'D', text: { en: 'A cost tag only', de: 'Nur ein Kosten-Tag' } }
      ],
      correct: ['A'],
      explanation: { en: 'Page number metadata is correct because page-level metadata is required for exact PDF citations.', de: 'Metadaten zur Seitennummer ist richtig, weil Metadaten auf Seitenebene für exakte PDF-Zitate erforderlich sind.' },
      hint: { en: 'The gap is page precision.', de: 'Die Lücke betrifft Seitenpräzision.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview'
    },
    {
      id: 'ai103-294', type: 'scenario',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'hard',
      scenario: { en: 'Fabrikam operates a multi-tenant knowledge portal. Search sometimes returns snippets from another tenant because retrieval currently depends only on similarity. Security needs isolation to be enforced before grounded content reaches the model. The fix should live in the retrieval path, not only in the UI.', de: 'Fabrikam betreibt ein Multi-Tenant-Wissensportal. Die Suche liefert gelegentlich Snippets eines anderen Mandanten, weil der Abruf derzeit nur auf Ähnlichkeit basiert. Die Sicherheit verlangt, dass Isolation erzwungen wird, bevor fundierte Inhalte das Modell erreichen. Die Lösung sollte im Retrieval-Pfad liegen und nicht nur in der UI.' },
      question: { en: 'What should Fabrikam add to its query design?', de: 'Was sollte Fabrikam zu seinem Abfragedesign hinzufügen?' },
      options: [
        { id: 'A', text: { en: 'Apply a tenantId filter and ACL-based filtering before generation', de: 'Vor der Generierung einen tenantId-Filter und ACL-basiertes Filtern anwenden' } },
        { id: 'B', text: { en: 'Hide unauthorized snippets in the browser only', de: 'Unberechtigte Snippets nur im Browser ausblenden' } },
        { id: 'C', text: { en: 'Disable vector search', de: 'Vektorsuche deaktivieren' } },
        { id: 'D', text: { en: 'Store tenant IDs in screenshots', de: 'Mandanten-IDs in Screenshots speichern' } }
      ],
      correct: ['A'],
      explanation: { en: 'Apply a tenantId filter and ACL-based filtering before generation is correct because tenant isolation must be enforced in retrieval, not just presentation.', de: 'Vor der Generierung einen tenantId-Filter und ACL-basiertes Filtern anwenden ist richtig, weil Mandantenisolierung im Retrieval und nicht nur in der Darstellung durchgesetzt werden muss.' },
      hint: { en: 'The protection point is server-side retrieval.', de: 'Der Schutzpunkt ist der serverseitige Abruf.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/search-security-trimming-for-azure-search'
    },
    {
      id: 'ai103-295', type: 'scenario',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'medium',
      scenario: { en: 'Tailwind Traders uses long policy manuals as RAG sources. The retrieved chunk is usually relevant, but the answer misses adjacent prerequisites and exception clauses in nearby text. The team wants to preserve precise retrieval while giving the model slightly more local context. Architecture needs the retrieval enhancement that fits this need.', de: 'Tailwind Traders verwendet lange Richtlinienhandbücher als RAG-Quellen. Der abgerufene Chunk ist in der Regel relevant, aber in der Antwort fehlen benachbarte Voraussetzungen und Ausnahmeklauseln aus dem nahegelegenen Text. Das Team möchte präzisen Abruf beibehalten und dem Modell zugleich etwas mehr lokalen Kontext geben. Die Architektur benötigt die Retrieval-Verbesserung, die zu diesem Bedarf passt.' },
      question: { en: 'What should Tailwind Traders apply?', de: 'Was sollte Tailwind Traders anwenden?' },
      options: [
        { id: 'A', text: { en: 'Window expansion around the matched chunk', de: 'Fensterausweitung um den Treffer-Chunk' } },
        { id: 'B', text: { en: 'Disable chunking completely', de: 'Chunking vollständig deaktivieren' } },
        { id: 'C', text: { en: 'A browser font pack', de: 'Ein Browser-Schriftpaket' } },
        { id: 'D', text: { en: 'A DNS cache reset', de: 'Einen DNS-Cache-Reset' } }
      ],
      correct: ['A'],
      explanation: { en: 'Window expansion around the matched chunk is correct because window expansion supplies the neighboring context around a relevant hit.', de: 'Fensterausweitung um den Treffer-Chunk ist richtig, weil Fensterausweitung den benachbarten Kontext um einen relevanten Treffer herum bereitstellt.' },
      hint: { en: 'The hit is right; the context around it is too narrow.', de: 'Der Treffer ist richtig; der Kontext darum ist zu eng.' },
      reference: 'https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/rag/rag-chunking-phase'
    },
    {
      id: 'ai103-296', type: 'scenario',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'hard',
      scenario: { en: 'Litware changed its embedding model to a version with different vector size. Indexing now fails because the stored field definition no longer matches the generated vectors. The content itself is still valid and the application logic has not changed. The remediation must focus on schema compatibility.', de: 'Litware hat sein Embedding-Modell auf eine Version mit anderer Vektorgröße umgestellt. Die Indizierung schlägt nun fehl, weil die gespeicherte Felddefinition nicht mehr zu den erzeugten Vektoren passt. Die Inhalte selbst sind weiterhin gültig, und die Anwendungslogik hat sich nicht geändert. Die Gegenmaßnahme muss sich auf Schema-Kompatibilität konzentrieren.' },
      question: { en: 'What should Litware do next?', de: 'Was sollte Litware als Nächstes tun?' },
      options: [
        { id: 'A', text: { en: 'Recreate and reindex the search index', de: 'Den Suchindex neu erstellen und neu indizieren' } },
        { id: 'B', text: { en: 'A browser profile reset', de: 'Einen Browserprofil-Reset' } },
        { id: 'C', text: { en: 'A DNS zone change', de: 'Eine Änderung der DNS-Zone' } },
        { id: 'D', text: { en: 'A theme update', de: 'Eine Designaktualisierung' } }
      ],
      correct: ['A'],
      explanation: { en: 'Recreate and reindex the search index is correct because the index schema must be rebuilt so vector fields match the new embedding dimensions.', de: 'Den Suchindex neu erstellen und neu indizieren ist richtig, weil das Indexschema neu aufgebaut werden muss, damit die Vektorfelder zu den neuen Embedding-Dimensionen passen.' },
      hint: { en: 'The mismatch is structural, not operational.', de: 'Die Abweichung ist strukturell und nicht operativ.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/search-howto-reindex'
    },
    {
      id: 'ai103-297', type: 'scenario',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'medium',
      scenario: { en: 'Woodgrove Bank publishes compliance documents throughout the day. The assistant continues to answer from older versions for too long after each update. Search quality is acceptable once the newest content appears in the index. The team wants the operational change that reduces this freshness lag most directly.', de: 'Woodgrove Bank veröffentlicht den ganzen Tag über Compliance-Dokumente. Der Assistent antwortet nach jeder Aktualisierung zu lange auf Basis älterer Versionen. Die Suchqualität ist akzeptabel, sobald der neueste Inhalt im Index erscheint. Das Team möchte die operative Änderung, die diese Aktualitätsverzögerung am direktesten reduziert.' },
      question: { en: 'What should Woodgrove Bank change?', de: 'Was sollte Woodgrove Bank ändern?' },
      options: [
        { id: 'A', text: { en: 'More frequent indexing or push updates', de: 'Häufigere Indizierung oder Push-Updates' } },
        { id: 'B', text: { en: 'A browser zoom setting', de: 'Eine Browser-Zoomeinstellung' } },
        { id: 'C', text: { en: 'A DNS relay', de: 'Einen DNS-Relay' } },
        { id: 'D', text: { en: 'A portal wallpaper', de: 'Einen Portal-Hintergrund' } }
      ],
      correct: ['A'],
      explanation: { en: 'More frequent indexing or push updates is correct because more frequent index refresh or push updates reduces stale answer windows.', de: 'Häufigere Indizierung oder Push-Updates ist richtig, weil häufigere Indexaktualisierung oder Push-Updates veraltete Antwortfenster verkleinern.' },
      hint: { en: 'Freshness is limited by ingestion cadence.', de: 'Aktualität wird durch den Ingestionsrhythmus begrenzt.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview'
    },
    {
      id: 'ai103-298', type: 'scenario',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'hard',
      scenario: { en: 'Trey Research scans laboratory reports that contain tables, headings, and figure references. Fixed-size plain-text chunking has reduced retrieval quality because the extracted chunks lose document structure. The team wants an ingestion approach that preserves structural meaning better. The change should happen before indexing.', de: 'Trey Research scannt Laborberichte, die Tabellen, Überschriften und Abbildungsverweise enthalten. Chunking mit fester Größe in Klartext hat die Retrieval-Qualität verschlechtert, weil die extrahierten Chunks Dokumentstruktur verlieren. Das Team möchte einen Ingestionsansatz, der strukturelle Bedeutung besser bewahrt. Die Änderung sollte vor der Indizierung erfolgen.' },
      question: { en: 'What should Trey Research use?', de: 'Was sollte Trey Research verwenden?' },
      options: [
        { id: 'A', text: { en: 'Layout-aware chunking after structure-aware extraction', de: 'Layoutbewusstes Chunking nach strukturbezogener Extraktion verwenden' } },
        { id: 'B', text: { en: 'A browser screenshot archive', de: 'Ein Browser-Screenshot-Archiv' } },
        { id: 'C', text: { en: 'A DNS alias', de: 'Einen DNS-Alias' } },
        { id: 'D', text: { en: 'A theme stylesheet', de: 'Ein Design-Stylesheet' } }
      ],
      correct: ['A'],
      explanation: { en: 'Layout-aware chunking after structure-aware extraction is correct because structure-aware extraction plus layout-aware chunking preserves more retrieval signal from complex documents.', de: 'Layoutbewusstes Chunking nach strukturbezogener Extraktion verwenden ist richtig, weil strukturbezogene Extraktion plus layoutbewusstes Chunking mehr Retrieval-Signal aus komplexen Dokumenten bewahren.' },
      hint: { en: 'The source structure matters to retrieval quality.', de: 'Die Quellenstruktur ist für die Retrieval-Qualität wichtig.' },
      reference: 'https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/rag/rag-chunking-phase'
    },
    {
      id: 'ai103-299', type: 'scenario',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'medium',
      scenario: { en: 'Datum Corporation corrected several blob documents after an earlier indexing failure. The team wants those documents processed again without rebuilding the entire solution from scratch. Operations needs a recovery action that fits the managed indexing model. The goal is to re-run ingestion for the affected content.', de: 'Datum Corporation hat mehrere Blob-Dokumente nach einem früheren Indizierungsfehler korrigiert. Das Team möchte diese Dokumente erneut verarbeiten, ohne die gesamte Lösung von Grund auf neu aufzubauen. Der Betrieb benötigt eine Wiederherstellungsmaßnahme, die zum verwalteten Indexierungsmodell passt. Das Ziel ist, die Ingestion für die betroffenen Inhalte erneut auszuführen.' },
      question: { en: 'What should Datum Corporation do?', de: 'Was sollte Datum Corporation tun?' },
      options: [
        { id: 'A', text: { en: 'Reset and rerun the affected indexer processing', de: 'Die betroffene Indexer-Verarbeitung zurücksetzen und erneut ausführen' } },
        { id: 'B', text: { en: 'Delete the browser history', de: 'Den Browserverlauf löschen' } },
        { id: 'C', text: { en: 'Disable all filters', de: 'Alle Filter deaktivieren' } },
        { id: 'D', text: { en: 'Move the content into screenshots', de: 'Die Inhalte in Screenshots verschieben' } }
      ],
      correct: ['A'],
      explanation: { en: 'Reset and rerun the affected indexer processing is correct because managed indexing recovery should re-run ingestion for corrected content.', de: 'Die betroffene Indexer-Verarbeitung zurücksetzen und erneut ausführen ist richtig, weil bei der Wiederherstellung verwalteter Indizierung die Ingestion für korrigierte Inhalte erneut ausgeführt werden sollte.' },
      hint: { en: 'They need a managed reprocessing action.', de: 'Sie benötigen eine verwaltete Maßnahme zur Neuverarbeitung.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/search-howto-reindex'
    },
    {
      id: 'ai103-300', type: 'scenario',
      domain: { en: 'Implement retrieval-augmented generation (RAG)', de: 'Retrieval-Augmented Generation (RAG) implementieren' }, difficulty: 'hard',
      scenario: { en: 'Northwind Traders built a benchmark set for its support assistant. Retrieval recall on the benchmark is low even though the correct documents exist in the corpus. The team wants the next retrieval change that can improve matching quality before generation. They prefer an approach that uses both lexical and semantic signals.', de: 'Northwind Traders hat einen Benchmark-Satz für seinen Support-Assistenten aufgebaut. Der Retrieval-Recall im Benchmark ist niedrig, obwohl die richtigen Dokumente im Korpus vorhanden sind. Das Team möchte die nächste Retrieval-Änderung, die die Matching-Qualität vor der Generierung verbessern kann. Es bevorzugt einen Ansatz, der sowohl lexikalische als auch semantische Signale nutzt.' },
      question: { en: 'What should Northwind Traders try next?', de: 'Was sollte Northwind Traders als Nächstes ausprobieren?' },
      options: [
        { id: 'A', text: { en: 'Combine lexical and semantic retrieval signals in the query', de: 'Lexikalische und semantische Retrieval-Signale in der Abfrage kombinieren' } },
        { id: 'B', text: { en: 'Increase browser zoom', de: 'Den Browser-Zoom erhöhen' } },
        { id: 'C', text: { en: 'Disable page numbers', de: 'Seitennummern deaktivieren' } },
        { id: 'D', text: { en: 'Store the corpus in screenshots', de: 'Den Korpus in Screenshots speichern' } }
      ],
      correct: ['A'],
      explanation: { en: 'Combine lexical and semantic retrieval signals in the query is correct because blending multiple retrieval signals often improves benchmark recall when the right documents exist but ranking is weak.', de: 'Lexikalische und semantische Retrieval-Signale in der Abfrage kombinieren ist richtig, weil das Kombinieren mehrerer Retrieval-Signale den Benchmark-Recall oft verbessert, wenn die richtigen Dokumente existieren, aber das Ranking schwach ist.' },
      hint: { en: 'The corpus is present, so improve matching quality.', de: 'Der Korpus ist vorhanden, daher sollte die Matching-Qualität verbessert werden.' },
      reference: 'https://learn.microsoft.com/en-us/azure/search/semantic-how-to-query-request'
    }
  ];
  if (window.ExamData && window.ExamData['ai-103']) {
    window.ExamData['ai-103'].questions = window.ExamData['ai-103'].questions.concat(extra);
  }
})();


