(function() {
  var extra = [ /* questions */
    {
      id: 'ai102-101', type: 'single',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'You plan to authenticate to an Azure AI services resource by using Microsoft Entra ID instead of an API key. What must the resource use?', de: 'Sie planen, sich bei einer Azure AI Services-Ressource mit Microsoft Entra ID statt mit einem API-Schlüssel zu authentifizieren. Was muss die Ressource verwenden?' },
      options: [
        { id: 'A', text: { en: 'A custom subdomain', de: 'Eine benutzerdefinierte Subdomäne' } },
        { id: 'B', text: { en: 'A free pricing tier', de: 'Einen kostenlosen Tarif' } },
        { id: 'C', text: { en: 'A Blob container', de: 'Einen Blob-Container' } },
        { id: 'D', text: { en: 'An Azure Policy exemption', de: 'Eine Azure Policy-Ausnahme' } }
      ],
      correct: ['A'],
      explanation: { en: 'Microsoft Entra authentication for Azure AI services requires a custom subdomain endpoint. The other options do not enable token-based authentication.', de: 'Die Microsoft Entra-Authentifizierung für Azure AI Services erfordert einen Endpunkt mit benutzerdefinierter Subdomäne. Die anderen Optionen ermöglichen keine tokenbasierte Authentifizierung.' },
      hint: { en: 'Think about the endpoint requirement for token-based access.', de: 'Denken Sie an die Endpunktanforderung für tokenbasierten Zugriff.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/authentication'
    },
    {
      id: 'ai102-102', type: 'multiple',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO actions are appropriate when you design a production Azure AI solution that must keep traffic off the public internet?', de: 'Welche ZWEI Maßnahmen sind geeignet, wenn Sie eine produktive Azure KI-Lösung entwerfen, bei der der Datenverkehr nicht über das öffentliche Internet laufen darf?' },
      options: [
        { id: 'A', text: { en: 'Use private endpoints', de: 'Private Endpunkte verwenden' } },
        { id: 'B', text: { en: 'Disable public network access', de: 'Öffentlichen Netzwerkzugriff deaktivieren' } },
        { id: 'C', text: { en: 'Store prompts in local files', de: 'Prompts in lokalen Dateien speichern' } },
        { id: 'D', text: { en: 'Enable anonymous access for testing', de: 'Anonymen Zugriff für Tests aktivieren' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Private endpoints provide private IP connectivity, and disabling public network access closes the public endpoint. The other options do not enforce private connectivity.', de: 'Private Endpunkte stellen Konnektivität über private IP-Adressen bereit, und das Deaktivieren des öffentlichen Netzwerkzugriffs schließt den öffentlichen Endpunkt. Die anderen Optionen erzwingen keine private Konnektivität.' },
      hint: { en: 'Choose the controls that directly affect network path exposure.', de: 'Wählen Sie die Maßnahmen, die die Netzwerkpfad-Exponierung direkt beeinflussen.' },
      reference: 'https://learn.microsoft.com/azure/private-link/private-endpoint-overview'
    },
    {
      id: 'ai102-103', type: 'scenario',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'hard',
      scenario: { en: 'You work for Trey Research. The gap is network isolation, not compute size.', de: 'Sie arbeiten für Trey Research. Die Lücke betrifft die Netzwerkisolierung, nicht die Compute-Größe.' },
      question: { en: 'What should you change?', de: 'Was sollten Sie ändern?' },
      options: [
        { id: 'A', text: { en: 'Set publicNetworkAccess to Disabled and add a private endpoint', de: 'publicNetworkAccess auf Disabled setzen und einen privaten Endpunkt hinzufügen' } },
        { id: 'B', text: { en: 'Increase the SKU to a larger tier', de: 'Die SKU auf einen größeren Tarif erhöhen' } },
        { id: 'C', text: { en: 'Add a storage account firewall rule only', de: 'Nur eine Firewallregel für ein Storage-Konto hinzufügen' } },
        { id: 'D', text: { en: 'Enable diagnostic settings only', de: 'Nur Diagnoseeinstellungen aktivieren' } }
      ],
      correct: ['A'],
      explanation: { en: 'A private endpoint plus disabled public network access is the standard private connectivity pattern for Azure AI resources. SKU changes and diagnostics do not remove public exposure.', de: 'Ein privater Endpunkt zusammen mit deaktiviertem öffentlichem Netzwerkzugriff ist das Standardmuster für private Konnektivität bei Azure AI-Ressourcen. SKU-Änderungen und Diagnoseeinstellungen beseitigen die öffentliche Exponierung nicht.' },
      hint: { en: 'The gap is network isolation, not compute size.', de: 'Die Lücke betrifft die Netzwerkisolierung, nicht die Compute-Größe.' },
      reference: 'https://learn.microsoft.com/azure/private-link/private-endpoint-overview'
    },
    {
      id: 'ai102-104', type: 'scenario',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'medium',
      scenario: { en: 'At Trey Research, a Container App calls Azure AI Search by using this code:\nconst credential = new DefaultAzureCredential();\nconst client = new SearchClient(endpoint, indexName, credential);\nThe app should avoid stored secrets and use the platform identity.', de: 'Bei Trey Research: eine Container App ruft Azure AI Search mit diesem Code auf:\nconst credential = new DefaultAzureCredential();\nconst client = new SearchClient(endpoint, indexName, credential);\nDie App soll gespeicherte Geheimnisse vermeiden und die Plattformidentität verwenden.' },
      question: { en: 'What must you configure first?', de: 'Was müssen Sie zuerst konfigurieren?' },
      options: [
        { id: 'A', text: { en: 'Enable a managed identity for the app and assign the required Azure RBAC role', de: 'Eine verwaltete Identität für die App aktivieren und die erforderliche Azure RBAC-Rolle zuweisen' } },
        { id: 'B', text: { en: 'Generate a second admin key', de: 'Einen zweiten Administratorschlüssel generieren' } },
        { id: 'C', text: { en: 'Store a shared key in source control', de: 'Einen gemeinsamen Schlüssel in der Quellcodeverwaltung speichern' } },
        { id: 'D', text: { en: 'Use a search synonym map', de: 'Eine Such-Synonymzuordnung verwenden' } }
      ],
      correct: ['A'],
      explanation: { en: 'DefaultAzureCredential can use the managed identity of the hosting service. That identity still needs an appropriate Azure RBAC assignment on the target resource.', de: 'DefaultAzureCredential kann die verwaltete Identität des Hosting-Diensts verwenden. Diese Identität benötigt weiterhin eine passende Azure RBAC-Zuweisung auf der Zielressource.' },
      hint: { en: 'Think identity plus authorization.', de: 'Denken Sie an Identität plus Autorisierung.' },
      reference: 'https://learn.microsoft.com/azure/role-based-access-control/overview'
    },
    {
      id: 'ai102-105', type: 'single',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which authentication approach is preferred for Azure-hosted applications when the target Azure AI service supports it?', de: 'Welcher Authentifizierungsansatz wird für in Azure gehostete Anwendungen bevorzugt, wenn der Ziel-Azure-AI-Dienst ihn unterstützt?' },
      options: [
        { id: 'A', text: { en: 'Managed identity', de: 'Verwaltete Identität' } },
        { id: 'B', text: { en: 'Hard-coded API key', de: 'Fest codierter API-Schlüssel' } },
        { id: 'C', text: { en: 'Anonymous access', de: 'Anonymer Zugriff' } },
        { id: 'D', text: { en: 'Shared password file', de: 'Gemeinsame Kennwortdatei' } }
      ],
      correct: ['A'],
      explanation: { en: 'Managed identities reduce secret handling and are the recommended authentication choice when supported. The other options increase operational and security risk.', de: 'Verwaltete Identitäten reduzieren den Umgang mit Geheimnissen und sind die empfohlene Authentifizierungswahl, wenn sie unterstützt werden. Die anderen Optionen erhöhen das Betriebs- und Sicherheitsrisiko.' },
      hint: { en: 'Choose the secretless option.', de: 'Wählen Sie die Option ohne Geheimnisse.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/authentication'
    },
    {
      id: 'ai102-106', type: 'scenario',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'hard',
      scenario: { en: 'At Proseware, Inc., a chat app sends requests to Azure OpenAI and sometimes receives HTTP 429 responses during peak traffic:\nconst result = await client.getChatCompletions(deployment, messages);\nThe product owner wants fewer transient user failures without changing business logic.', de: 'Bei Proseware, Inc.: eine Chat-App sendet Anforderungen an Azure OpenAI und erhält bei Spitzenlast gelegentlich HTTP-429-Antworten:\nconst result = await client.getChatCompletions(deployment, messages);\nDer Product Owner möchte weniger vorübergehende Benutzerfehler, ohne die Geschäftslogik zu ändern.' },
      question: { en: 'What should you implement first in the client?', de: 'Was sollten Sie zuerst im Client implementieren?' },
      options: [
        { id: 'A', text: { en: 'Retry with exponential backoff for throttling responses', de: 'Wiederholungen mit exponentiellem Backoff für Drosselungsantworten' } },
        { id: 'B', text: { en: 'Disable TLS certificate validation', de: 'TLS-Zertifikatprüfung deaktivieren' } },
        { id: 'C', text: { en: 'Cache the API key in local storage', de: 'Den API-Schlüssel im lokalen Speicher cachen' } },
        { id: 'D', text: { en: 'Convert the app to use FTP', de: 'Die App auf FTP umstellen' } }
      ],
      correct: ['A'],
      explanation: { en: 'HTTP 429 indicates throttling. Client retry logic with exponential backoff is a standard resiliency measure for transient quota or rate-limit conditions.', de: 'HTTP 429 weist auf Drosselung hin. Wiederholungslogik mit exponentiellem Backoff ist eine Standardmaßnahme zur Resilienz bei vorübergehenden Quoten- oder Ratenlimitbedingungen.' },
      hint: { en: 'Treat 429 as a transient condition.', de: 'Behandeln Sie 429 als vorübergehenden Zustand.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/openai/overview'
    },
    {
      id: 'ai102-107', type: 'multiple',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO signals are most useful when you monitor runtime health of an Azure AI solution?', de: 'Welche ZWEI Signale sind am nützlichsten, wenn Sie die Laufzeitgesundheit einer Azure KI-Lösung überwachen?' },
      options: [
        { id: 'A', text: { en: 'Request latency', de: 'Anforderungslatenz' } },
        { id: 'B', text: { en: 'Failure or throttling rate', de: 'Fehler- oder Drosselungsrate' } },
        { id: 'C', text: { en: 'The font used in the portal', de: 'Die im Portal verwendete Schriftart' } },
        { id: 'D', text: { en: 'The resource group description text', de: 'Der Beschreibungstext der Ressourcengruppe' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Latency and failure or throttling trends show whether the service is meeting performance and reliability targets. The other options are not operational health indicators.', de: 'Latenz sowie Fehler- oder Drosselungstrends zeigen, ob der Dienst Leistungs- und Zuverlässigkeitsziele erreicht. Die anderen Optionen sind keine Indikatoren für den Betriebszustand.' },
      hint: { en: 'Pick the metrics that affect user experience and reliability.', de: 'Wählen Sie die Metriken, die Benutzererlebnis und Zuverlässigkeit beeinflussen.' },
      reference: 'https://learn.microsoft.com/azure/azure-monitor/overview'
    },
    {
      id: 'ai102-108', type: 'scenario',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'hard',
      scenario: { en: 'At Trey Research, an App Service currently stores an Azure AI service key in app settings:\n`"AzureAiKey": "abcd..."`\nand sends requests like `POST /language/:analyze-text`. Security requires central secret storage and minimal code changes. The app will still use key-based auth for now.', de: 'Bei Trey Research: ein App Service speichert derzeit einen Azure AI Services-Schlüssel in den App-Einstellungen:\n`"AzureAiKey": "abcd..."`\nund sendet Anforderungen wie `POST /language/:analyze-text`. Die Sicherheit verlangt zentrale Geheimnisspeicherung und minimale Codeänderungen. Die App wird vorerst weiterhin schlüsselbasierte Authentifizierung verwenden.' },
      question: { en: 'What should you use?', de: 'Was sollten Sie verwenden?' },
      options: [
        { id: 'A', text: { en: 'Azure Key Vault with a Key Vault reference or secret retrieval', de: 'Azure Key Vault mit Key-Vault-Verweis oder Geheimnisabruf' } },
        { id: 'B', text: { en: 'A README file in the repo', de: 'Eine README-Datei im Repository' } },
        { id: 'C', text: { en: 'A public blob container', de: 'Einen öffentlichen Blob-Container' } },
        { id: 'D', text: { en: 'A browser cookie', de: 'Ein Browser-Cookie' } }
      ],
      correct: ['A'],
      explanation: { en: 'Azure Key Vault is the recommended service for centralized secret storage and rotation. It lets the app consume the key without keeping the secret in source code or plain configuration.', de: 'Azure Key Vault ist der empfohlene Dienst für zentrale Speicherung und Rotation von Geheimnissen. Damit kann die App den Schlüssel verwenden, ohne das Geheimnis im Quellcode oder in Klartextkonfiguration zu halten.' },
      hint: { en: 'Choose the Azure service designed for secret storage.', de: 'Wählen Sie den Azure-Dienst, der für die Speicherung von Geheimnissen entwickelt wurde.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/authentication'
    },
    {
      id: 'ai102-109', type: 'single',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'You expose a global HTTPS endpoint for an Azure AI application that runs in more than one region and needs fast failover. Which Azure service is the best fit?', de: 'Sie stellen einen globalen HTTPS-Endpunkt für eine Azure-KI-Anwendung bereit, die in mehr als einer Region ausgeführt wird und schnelles Failover benötigt. Welcher Azure-Dienst ist am besten geeignet?' },
      options: [
        { id: 'A', text: { en: 'Azure Front Door', de: 'Azure Front Door' } },
        { id: 'B', text: { en: 'Azure Files', de: 'Azure Files' } },
        { id: 'C', text: { en: 'Azure Queue Storage', de: 'Azure Queue Storage' } },
        { id: 'D', text: { en: 'Azure Key Vault', de: 'Azure Key Vault' } }
      ],
      correct: ['A'],
      explanation: { en: 'Azure Front Door is designed for global HTTP or HTTPS routing, load balancing, and failover. The other services do not provide global web traffic distribution.', de: 'Azure Front Door ist für globales HTTP- oder HTTPS-Routing, Lastverteilung und Failover ausgelegt. Die anderen Dienste bieten keine globale Verteilung von Webdatenverkehr.' },
      hint: { en: 'Think global layer-7 routing.', de: 'Denken Sie an globales Routing auf Layer 7.' },
      reference: 'https://learn.microsoft.com/azure/frontdoor/front-door-overview'
    },
    {
      id: 'ai102-110', type: 'single',
      domain: { en: 'Implement Content Moderation Solutions', de: 'Inhaltsmoderierungslösungen implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'In Azure AI Content Safety, what does a higher harm severity indicate?', de: 'Was bedeutet in Azure AI Content Safety eine höhere Schadensschwere?' },
      options: [
        { id: 'A', text: { en: 'The content is more severe according to the classifier', de: 'Der Inhalt ist nach Einschätzung des Klassifikators schwerwiegender' } },
        { id: 'B', text: { en: 'The request was processed faster', de: 'Die Anforderung wurde schneller verarbeitet' } },
        { id: 'C', text: { en: 'The text was translated automatically', de: 'Der Text wurde automatisch übersetzt' } },
        { id: 'D', text: { en: 'The image is higher resolution', de: 'Das Bild hat eine höhere Auflösung' } }
      ],
      correct: ['A'],
      explanation: { en: 'Severity represents how serious the detected harmful content is. It is used to compare the result against moderation thresholds.', de: 'Die Schwere beschreibt, wie gravierend der erkannte schädliche Inhalt ist. Sie wird verwendet, um das Ergebnis mit Moderationsschwellenwerten zu vergleichen.' },
      hint: { en: 'Think policy threshold, not performance.', de: 'Denken Sie an Richtlinienschwellenwerte, nicht an Leistung.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/content-safety/overview'
    },
    {
      id: 'ai102-111', type: 'multiple',
      domain: { en: 'Implement Content Moderation Solutions', de: 'Inhaltsmoderierungslösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO categories are built in to Azure AI Content Safety?', de: 'Welche ZWEI Kategorien sind in Azure AI Content Safety integriert?' },
      options: [
        { id: 'A', text: { en: 'Hate', de: 'Hass' } },
        { id: 'B', text: { en: 'Self-harm', de: 'Selbstverletzung' } },
        { id: 'C', text: { en: 'Tax evasion', de: 'Steuerhinterziehung' } },
        { id: 'D', text: { en: 'Inventory loss', de: 'Bestandsverlust' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Hate and self-harm are core built-in harm categories. Tax evasion and inventory loss are not default moderation categories.', de: 'Hass und Selbstverletzung sind zentrale integrierte Schadenskategorien. Steuerhinterziehung und Bestandsverlust sind keine Standard-Moderationskategorien.' },
      hint: { en: 'Remember the four common safety categories.', de: 'Merken Sie sich die vier gängigen Sicherheitskategorien.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/content-safety/overview'
    },
    {
      id: 'ai102-112', type: 'scenario',
      domain: { en: 'Implement Content Moderation Solutions', de: 'Inhaltsmoderierungslösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Proseware, Inc., a web app calls `POST /contentsafety/text:analyze` and receives this result:\n`{\n  "categoriesAnalysis": [\n    { "category": "Violence", "severity": 4 }\n  ]\n}`\nThe business rule is to block any violence severity of 2 or greater.', de: 'Bei Proseware, Inc.: eine Web-App ruft `POST /contentsafety/text:analyze` auf und erhält dieses Ergebnis:\n`{\n  "categoriesAnalysis": [\n    { "category": "Violence", "severity": 4 }\n  ]\n}`\nDie Geschäftsregel lautet, jede Gewalt-Schwere ab 2 zu blockieren.' },
      question: { en: 'How should the app handle this content?', de: 'Wie sollte die App diesen Inhalt behandeln?' },
      options: [
        { id: 'A', text: { en: 'Block it because the returned severity exceeds the threshold', de: 'Blockieren, da die zurückgegebene Schwere den Schwellenwert überschreitet' } },
        { id: 'B', text: { en: 'Publish it because only level 6 must be blocked', de: 'Veröffentlichen, da nur Stufe 6 blockiert werden muss' } },
        { id: 'C', text: { en: 'Ignore the API result and rely on user reports', de: 'Das API-Ergebnis ignorieren und sich auf Benutzerberichte verlassen' } },
        { id: 'D', text: { en: 'Translate it first and then publish', de: 'Zuerst übersetzen und dann veröffentlichen' } }
      ],
      correct: ['A'],
      explanation: { en: 'The result must be compared to the policy threshold. A returned severity of 4 is above the configured block threshold of 2.', de: 'Das Ergebnis muss mit dem Richtlinienschwellenwert verglichen werden. Eine zurückgegebene Schwere von 4 liegt über dem konfigurierten Blockierschwellenwert 2.' },
      hint: { en: 'Apply the rule exactly as defined.', de: 'Wenden Sie die Regel genau wie definiert an.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/content-safety/overview'
    },
    {
      id: 'ai102-113', type: 'single',
      domain: { en: 'Implement Content Moderation Solutions', de: 'Inhaltsmoderierungslösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which Azure AI Content Safety feature helps detect prompt injection or jailbreak attempts in LLM-based applications?', de: 'Welche Funktion von Azure AI Content Safety hilft, Prompt-Injection- oder Jailbreak-Versuche in LLM-basierten Anwendungen zu erkennen?' },
      options: [
        { id: 'A', text: { en: 'Prompt Shields', de: 'Prompt Shields' } },
        { id: 'B', text: { en: 'Custom Vision export', de: 'Custom Vision-Export' } },
        { id: 'C', text: { en: 'Speech synthesis', de: 'Sprachsynthese' } },
        { id: 'D', text: { en: 'Document classification', de: 'Dokumentenklassifizierung' } }
      ],
      correct: ['A'],
      explanation: { en: 'Prompt Shields are designed to detect prompt attacks such as jailbreak and indirect prompt injection patterns. The other options do not address LLM prompt safety.', de: 'Prompt Shields sind dafür ausgelegt, Prompt-Angriffe wie Jailbreaks und indirekte Prompt-Injection-Muster zu erkennen. Die anderen Optionen behandeln keine LLM-Prompt-Sicherheit.' },
      hint: { en: 'Pick the feature focused on prompt attack detection.', de: 'Wählen Sie die Funktion, die auf die Erkennung von Prompt-Angriffen ausgerichtet ist.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection'
    },
    {
      id: 'ai102-114', type: 'multiple',
      domain: { en: 'Implement Content Moderation Solutions', de: 'Inhaltsmoderierungslösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO response details are most useful to log for moderation audit trails?', de: 'Welche ZWEI Antwortdetails sind für Moderations-Audit-Trails am nützlichsten?' },
      options: [
        { id: 'A', text: { en: 'Detected category', de: 'Erkannte Kategorie' } },
        { id: 'B', text: { en: 'Returned severity', de: 'Zurückgegebene Schwere' } },
        { id: 'C', text: { en: 'Browser zoom level', de: 'Browser-Zoomstufe' } },
        { id: 'D', text: { en: 'Color theme of the app', de: 'Farbschema der App' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Category and severity explain why a policy decision was made and support later review. UI display settings are not relevant moderation evidence.', de: 'Kategorie und Schwere erklären, warum eine Richtlinienentscheidung getroffen wurde, und unterstützen spätere Überprüfungen. UI-Anzeigeeinstellungen sind keine relevanten Moderationsnachweise.' },
      hint: { en: 'Choose the values that justify a block or allow decision.', de: 'Wählen Sie die Werte, die eine Blockierungs- oder Zulassungsentscheidung begründen.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/content-safety/overview'
    },
    {
      id: 'ai102-115', type: 'scenario',
      domain: { en: 'Implement Content Moderation Solutions', de: 'Inhaltsmoderierungslösungen implementieren' }, difficulty: 'medium',
      scenario: { en: 'Users at Proseware, Inc. upload memes. Your current pipeline only calls the image moderation API:\nawait imageClient.analyzeImage(imageBytes);\nModerators report that harmful text embedded inside images is being missed.', de: 'Benutzer bei Proseware, Inc. laden Memes hoch. Ihre aktuelle Pipeline ruft nur die Bildmoderations-API auf:\nawait imageClient.analyzeImage(imageBytes);\nModeratoren berichten, dass schädlicher Text innerhalb von Bildern übersehen wird.' },
      question: { en: 'What should you add?', de: 'Was sollten Sie hinzufügen?' },
      options: [
        { id: 'A', text: { en: 'Extract text from the image and send that text to Content Safety as well', de: 'Text aus dem Bild extrahieren und diesen Text ebenfalls an Content Safety senden' } },
        { id: 'B', text: { en: 'Compress the image more aggressively', de: 'Das Bild aggressiver komprimieren' } },
        { id: 'C', text: { en: 'Rename the file extension', de: 'Die Dateierweiterung umbenennen' } },
        { id: 'D', text: { en: 'Only increase storage redundancy', de: 'Nur die Speicherausfallsicherheit erhöhen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Harmful text inside images requires a text extraction step plus text moderation. Image analysis alone may not enforce your policy on embedded text.', de: 'Schädlicher Text innerhalb von Bildern erfordert einen Textextraktionsschritt plus Textmoderation. Eine reine Bildanalyse setzt Ihre Richtlinie für eingebetteten Text möglicherweise nicht durch.' },
      hint: { en: 'Moderate both visual content and extracted text.', de: 'Moderieren Sie sowohl den visuellen Inhalt als auch den extrahierten Text.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/content-safety/overview'
    },
    {
      id: 'ai102-116', type: 'single',
      domain: { en: 'Implement Content Moderation Solutions', de: 'Inhaltsmoderierungslösungen implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'What is the likely result of lowering your block threshold for a harm category?', de: 'Was ist das wahrscheinliche Ergebnis, wenn Sie Ihren Blockierschwellenwert für eine Schadenskategorie senken?' },
      options: [
        { id: 'A', text: { en: 'More content will be blocked', de: 'Mehr Inhalte werden blockiert' } },
        { id: 'B', text: { en: 'Fewer API calls will be billed', de: 'Weniger API-Aufrufe werden abgerechnet' } },
        { id: 'C', text: { en: 'Images become higher resolution', de: 'Bilder werden hochauflösender' } },
        { id: 'D', text: { en: 'The service switches to a custom model', de: 'Der Dienst wechselt zu einem benutzerdefinierten Modell' } }
      ],
      correct: ['A'],
      explanation: { en: 'A lower threshold is stricter because content is blocked at lower detected severity levels. This generally increases the block rate.', de: 'Ein niedrigerer Schwellenwert ist strenger, weil Inhalte bereits bei niedrigeren erkannten Schweregraden blockiert werden. Dadurch steigt in der Regel die Blockierungsrate.' },
      hint: { en: 'Lower threshold means stricter policy.', de: 'Ein niedrigerer Schwellenwert bedeutet eine strengere Richtlinie.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/content-safety/overview'
    },
    {
      id: 'ai102-117', type: 'multiple',
      domain: { en: 'Implement Content Moderation Solutions', de: 'Inhaltsmoderierungslösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO actions are required to enforce organization-specific banned terms with Azure AI Content Safety blocklists?', de: 'Welche ZWEI Maßnahmen sind erforderlich, um organisationsspezifische verbotene Begriffe mit Azure AI Content Safety-Blocklisten durchzusetzen?' },
      options: [
        { id: 'A', text: { en: 'Create or upload the blocklist entries', de: 'Die Blocklisteneinträge erstellen oder hochladen' } },
        { id: 'B', text: { en: 'Reference the blocklist in the moderation request', de: 'Die Blockliste in der Moderationsanforderung referenzieren' } },
        { id: 'C', text: { en: 'Train a Custom Vision model', de: 'Ein Custom Vision-Modell trainieren' } },
        { id: 'D', text: { en: 'Enable semantic ranking', de: 'Semantic Ranking aktivieren' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Blocklists must exist in the resource, and the request must include the blocklist to apply it. The other actions are unrelated to term-based moderation.', de: 'Blocklisten müssen in der Ressource vorhanden sein, und die Anforderung muss die Blockliste enthalten, um sie anzuwenden. Die anderen Maßnahmen haben nichts mit begriffsbasierter Moderation zu tun.' },
      hint: { en: 'You need both configuration and usage.', de: 'Sie benötigen sowohl Konfiguration als auch Verwendung.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/content-safety/how-to/use-blocklist'
    },
    {
      id: 'ai102-118', type: 'scenario',
      domain: { en: 'Implement Content Moderation Solutions', de: 'Inhaltsmoderierungslösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'You work for Trey Research. Reference alone is not creation.', de: 'Sie arbeiten für Trey Research. Referenzierung allein ist keine Erstellung.' },
      question: { en: 'What is the most likely fix?', de: 'Was ist die wahrscheinlichste Behebung?' },
      options: [
        { id: 'A', text: { en: 'Create the blocklist resource entries before using the name in requests', de: 'Die Blocklisteneinträge in der Ressource erstellen, bevor der Name in Anforderungen verwendet wird' } },
        { id: 'B', text: { en: 'Move the request to Azure AI Search', de: 'Die Anforderung nach Azure AI Search verschieben' } },
        { id: 'C', text: { en: 'Replace the text with a PNG file', de: 'Den Text durch eine PNG-Datei ersetzen' } },
        { id: 'D', text: { en: 'Disable HTTPS', de: 'HTTPS deaktivieren' } }
      ],
      correct: ['A'],
      explanation: { en: 'A referenced blocklist must already exist in the Azure AI Content Safety resource. Requests cannot use a blocklist name that has not been created.', de: 'Eine referenzierte Blockliste muss bereits in der Azure AI Content Safety-Ressource vorhanden sein. Anforderungen können keinen Blocklistennamen verwenden, der noch nicht erstellt wurde.' },
      hint: { en: 'Reference alone is not creation.', de: 'Referenzierung allein ist keine Erstellung.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/content-safety/how-to/use-blocklist'
    },
    {
      id: 'ai102-119', type: 'single',
      domain: { en: 'Implement Content Moderation Solutions', de: 'Inhaltsmoderierungslösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'At which stage should you moderate LLM-generated text before it is shown to the user?', de: 'In welcher Phase sollten Sie von einem LLM generierten Text moderieren, bevor er dem Benutzer angezeigt wird?' },
      options: [
        { id: 'A', text: { en: 'After generation and before the response is returned', de: 'Nach der Generierung und bevor die Antwort zurückgegeben wird' } },
        { id: 'B', text: { en: 'Only after the user closes the browser', de: 'Erst nachdem der Benutzer den Browser geschlossen hat' } },
        { id: 'C', text: { en: 'Only during nightly batch jobs', de: 'Nur in nächtlichen Batch-Jobs' } },
        { id: 'D', text: { en: 'Never, because model output is always safe', de: 'Nie, weil Modellausgabe immer sicher ist' } }
      ],
      correct: ['A'],
      explanation: { en: 'Output moderation should happen before the text is exposed to the user. That is the point where the application can still block or replace unsafe responses.', de: 'Die Ausgabemoderation sollte stattfinden, bevor der Text dem Benutzer angezeigt wird. An diesem Punkt kann die Anwendung unsichere Antworten noch blockieren oder ersetzen.' },
      hint: { en: 'Moderate before display, not after exposure.', de: 'Moderieren Sie vor der Anzeige, nicht nach der Exponierung.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/content-safety/overview'
    },
    {
      id: 'ai102-120', type: 'scenario',
      domain: { en: 'Implement Content Moderation Solutions', de: 'Inhaltsmoderierungslösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Trey Research, a chat app streams assistant output:\nfor await (const chunk of response) {\n  ui.write(chunk.delta);\n}\nCompliance requires that unsafe generated text must never reach the browser.', de: 'Bei Trey Research: eine Chat-App streamt Assistentenausgaben:\nfor await (const chunk of response) {\n  ui.write(chunk.delta);\n}\nDie Compliance verlangt, dass unsicherer generierter Text niemals den Browser erreicht.' },
      question: { en: 'What design change best meets the requirement?', de: 'Welche Designänderung erfüllt die Anforderung am besten?' },
      options: [
        { id: 'A', text: { en: 'Buffer and moderate generated text before forwarding it to the client', de: 'Generierten Text puffern und moderieren, bevor er an den Client weitergegeben wird' } },
        { id: 'B', text: { en: 'Send chunks directly and review logs later', de: 'Chunks direkt senden und Protokolle später prüfen' } },
        { id: 'C', text: { en: 'Disable server-side logging only', de: 'Nur serverseitiges Logging deaktivieren' } },
        { id: 'D', text: { en: 'Increase the browser font size', de: 'Die Schriftgröße im Browser erhöhen' } }
      ],
      correct: ['A'],
      explanation: { en: 'If unsafe text must never reach the client, the server must hold the output long enough to apply moderation before release. Sending first and checking later violates the requirement.', de: 'Wenn unsicherer Text niemals den Client erreichen darf, muss der Server die Ausgabe lange genug zurückhalten, um vor der Freigabe eine Moderation anzuwenden. Erst senden und später prüfen verletzt die Anforderung.' },
      hint: { en: 'The key phrase is never reach the browser.', de: 'Der Schlüsselausdruck ist niemals den Browser erreichen.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/content-safety/overview'
    },
    {
      id: 'ai102-121', type: 'multiple',
      domain: { en: 'Implement Content Moderation Solutions', de: 'Inhaltsmoderierungslösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO statements about Prompt Shields are correct?', de: 'Welche ZWEI Aussagen über Prompt Shields sind korrekt?' },
      options: [
        { id: 'A', text: { en: 'They can help detect direct prompt attacks', de: 'Sie können bei der Erkennung direkter Prompt-Angriffe helfen' } },
        { id: 'B', text: { en: 'They can help detect indirect prompt attacks from retrieved content', de: 'Sie können bei der Erkennung indirekter Prompt-Angriffe aus abgerufenen Inhalten helfen' } },
        { id: 'C', text: { en: 'They replace Azure AI Search indexes', de: 'Sie ersetzen Azure AI Search-Indizes' } },
        { id: 'D', text: { en: 'They convert speech to text', de: 'Sie wandeln Sprache in Text um' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Prompt Shields address prompt attack patterns, including direct user attempts and indirect attacks hidden in retrieved data. They do not provide search or speech functionality.', de: 'Prompt Shields adressieren Muster von Prompt-Angriffen, einschließlich direkter Benutzerangriffe und indirekter Angriffe, die in abgerufenen Daten verborgen sind. Sie bieten keine Such- oder Sprachfunktionen.' },
      hint: { en: 'Think direct and indirect prompt injection.', de: 'Denken Sie an direkte und indirekte Prompt-Injection.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection'
    },
    {
      id: 'ai102-122', type: 'single',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which prebuilt Azure AI capability should you use to extract printed or handwritten text from images?', de: 'Welche vorgefertigte Azure AI-Funktion sollten Sie verwenden, um gedruckten oder handschriftlichen Text aus Bildern zu extrahieren?' },
      options: [
        { id: 'A', text: { en: 'Read', de: 'Read' } },
        { id: 'B', text: { en: 'Verify', de: 'Verify' } },
        { id: 'C', text: { en: 'Translator', de: 'Translator' } },
        { id: 'D', text: { en: 'Question answering', de: 'Question Answering' } }
      ],
      correct: ['A'],
      explanation: { en: 'The Read capability is designed for OCR scenarios and extracts printed or handwritten text from images and scanned content.', de: 'Die Read-Funktion ist für OCR-Szenarien ausgelegt und extrahiert gedruckten oder handschriftlichen Text aus Bildern und gescannten Inhalten.' },
      hint: { en: 'Pick the OCR feature.', de: 'Wählen Sie die OCR-Funktion.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/computer-vision/overview-image-analysis'
    },
    {
      id: 'ai102-123', type: 'scenario',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'medium',
      scenario: { en: 'At Proseware, Inc., a warehouse app processes shipping-label photos by calling Image Analysis. The team now must capture tracking numbers from both printed and handwritten labels:\nconst result = await client.analyze(imageData, [VisualFeatures.Tags]);', de: 'Bei Proseware, Inc.: eine Lager-App verarbeitet Fotos von Versandetiketten mit Image Analysis. Das Team muss nun Sendungsnummern aus gedruckten und handschriftlichen Etiketten erfassen:\nconst result = await client.analyze(imageData, [VisualFeatures.Tags]);' },
      question: { en: 'What should you change?', de: 'Was sollten Sie ändern?' },
      options: [
        { id: 'A', text: { en: 'Use the Read capability for OCR', de: 'Die Read-Funktion für OCR verwenden' } },
        { id: 'B', text: { en: 'Switch to Content Safety only', de: 'Nur auf Content Safety umstellen' } },
        { id: 'C', text: { en: 'Enable semantic ranker', de: 'Semantic Ranker aktivieren' } },
        { id: 'D', text: { en: 'Train a speech model', de: 'Ein Sprachmodell trainieren' } }
      ],
      correct: ['A'],
      explanation: { en: 'Tags classify image content but do not extract the label text itself. OCR requires the Read capability.', de: 'Tags klassifizieren Bildinhalte, extrahieren aber nicht den Etikettentext selbst. Für OCR ist die Read-Funktion erforderlich.' },
      hint: { en: 'You need text extraction, not scene tags.', de: 'Sie benötigen Textextraktion, nicht Szenen-Tags.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/computer-vision/overview-image-analysis'
    },
    {
      id: 'ai102-124', type: 'multiple',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO scenarios are a good fit for Azure AI Custom Vision?', de: 'Welche ZWEI Szenarien eignen sich gut für Azure AI Custom Vision?' },
      options: [
        { id: 'A', text: { en: 'Classify images into company-specific defect categories', de: 'Bilder in unternehmensspezifische Fehlerkategorien klassifizieren' } },
        { id: 'B', text: { en: 'Detect the location of custom logos in photos', de: 'Die Position benutzerdefinierter Logos in Fotos erkennen' } },
        { id: 'C', text: { en: 'Translate chat messages to French', de: 'Chatnachrichten ins Französische übersetzen' } },
        { id: 'D', text: { en: 'Rank search results semantically', de: 'Suchergebnisse semantisch einstufen' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Custom Vision is used for image classification and object detection with your own labeled classes. Translation and semantic ranking belong to other services.', de: 'Custom Vision wird für Bildklassifizierung und Objekterkennung mit eigenen beschrifteten Klassen verwendet. Übersetzung und semantische Rangfolge gehören zu anderen Diensten.' },
      hint: { en: 'Choose the custom-labeled image tasks.', de: 'Wählen Sie die Aufgaben mit benutzerdefiniert beschrifteten Bildern.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/custom-vision-service/overview'
    },
    {
      id: 'ai102-125', type: 'single',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which Face API operation should you use to match a detected face against people enrolled in a person group?', de: 'Welche Face API-Operation sollten Sie verwenden, um ein erkanntes Gesicht mit Personen in einer Personengruppe abzugleichen?' },
      options: [
        { id: 'A', text: { en: 'Identify', de: 'Identify' } },
        { id: 'B', text: { en: 'Tag', de: 'Tag' } },
        { id: 'C', text: { en: 'Translate', de: 'Translate' } },
        { id: 'D', text: { en: 'Summarize', de: 'Zusammenfassen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Identify compares a detected face against enrolled persons in a person group. Verify is used when you already know the comparison target.', de: 'Identify vergleicht ein erkanntes Gesicht mit registrierten Personen in einer Personengruppe. Verify wird verwendet, wenn das Vergleichsziel bereits bekannt ist.' },
      hint: { en: 'Think one-to-many face matching.', de: 'Denken Sie an Gesichtsabgleich eins zu viele.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/computer-vision/overview'
    },
    {
      id: 'ai102-126', type: 'scenario',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Trey Research, a factory has labeled thousands of images where tiny cracks are marked with bounding boxes. The prediction endpoint will be called with `POST /customvision/v3.0/Prediction/{projectId}/detect/iterations/prod/image`. The app must return the location of each crack in new photos.', de: 'Bei Trey Research: eine Fabrik hat Tausende Bilder beschriftet, in denen kleine Risse mit Bounding-Boxen markiert sind. Der Vorhersageendpunkt wird mit `POST /customvision/v3.0/Prediction/{projectId}/detect/iterations/prod/image` aufgerufen. Die App muss die Position jedes Risses in neuen Fotos zurückgeben.' },
      question: { en: 'Which service should you use?', de: 'Welchen Dienst sollten Sie verwenden?' },
      options: [
        { id: 'A', text: { en: 'Custom Vision object detection', de: 'Custom Vision-Objekterkennung' } },
        { id: 'B', text: { en: 'Image Analysis captions only', de: 'Nur Image Analysis-Bildunterschriften' } },
        { id: 'C', text: { en: 'Azure AI Translator', de: 'Azure AI Translator' } },
        { id: 'D', text: { en: 'Azure AI Content Safety', de: 'Azure AI Content Safety' } }
      ],
      correct: ['A'],
      explanation: { en: 'Bounding boxes plus business-specific classes indicate a custom object detection requirement. Custom Vision supports this training pattern.', de: 'Bounding-Boxen plus geschäftsspezifische Klassen weisen auf eine Anforderung zur benutzerdefinierten Objekterkennung hin. Custom Vision unterstützt dieses Trainingsmuster.' },
      hint: { en: 'Location in the image matters.', de: 'Die Position im Bild ist entscheidend.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/custom-vision-service/overview'
    },
    {
      id: 'ai102-127', type: 'single',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which service can generate captions and common visual tags without any custom model training?', de: 'Welcher Dienst kann Bildunterschriften und allgemeine visuelle Tags ohne benutzerdefiniertes Modelltraining erzeugen?' },
      options: [
        { id: 'A', text: { en: 'Image Analysis', de: 'Image Analysis' } },
        { id: 'B', text: { en: 'Custom Vision', de: 'Custom Vision' } },
        { id: 'C', text: { en: 'Azure AI Search', de: 'Azure AI Search' } },
        { id: 'D', text: { en: 'CLU', de: 'CLU' } }
      ],
      correct: ['A'],
      explanation: { en: 'Image Analysis includes prebuilt visual capabilities such as captions and tags. Custom Vision is needed only when the categories are specific to your organization.', de: 'Image Analysis umfasst vorgefertigte visuelle Funktionen wie Bildunterschriften und Tags. Custom Vision wird nur benötigt, wenn die Kategorien organisationsspezifisch sind.' },
      hint: { en: 'Choose the prebuilt vision API.', de: 'Wählen Sie die vorgefertigte Vision-API.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/computer-vision/overview-image-analysis'
    },
    {
      id: 'ai102-128', type: 'scenario',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'medium',
      scenario: { en: 'At Proseware, Inc., a REST request calls `GET /computervision/imageanalysis:analyze?features=caption&language=en&gender-neutral-caption=true`. The product team asks what the extra flag changes.', de: 'Bei Proseware, Inc.: eine REST-Anforderung ruft `GET /computervision/imageanalysis:analyze?features=caption&language=en&gender-neutral-caption=true` auf. Das Produktteam fragt, was das zusätzliche Flag verändert.' },
      question: { en: 'What is the effect?', de: 'Welche Wirkung hat es?' },
      options: [
        { id: 'A', text: { en: 'It requests a gender-neutral caption when the feature supports it', de: 'Es fordert eine geschlechtsneutrale Bildunterschrift an, sofern die Funktion dies unterstützt' } },
        { id: 'B', text: { en: 'It enables custom training', de: 'Es aktiviert benutzerdefiniertes Training' } },
        { id: 'C', text: { en: 'It converts the image to grayscale before analysis', de: 'Es konvertiert das Bild vor der Analyse in Graustufen' } },
        { id: 'D', text: { en: 'It verifies a face against a person group', de: 'Es verifiziert ein Gesicht gegen eine Personengruppe' } }
      ],
      correct: ['A'],
      explanation: { en: 'The parameter requests a gender-neutral caption variant. It does not change the model into a custom training or face identification workflow.', de: 'Der Parameter fordert eine geschlechtsneutrale Variante der Bildunterschrift an. Er verwandelt das Modell nicht in einen Workflow für benutzerdefiniertes Training oder Gesichtserkennung.' },
      hint: { en: 'Read the flag literally.', de: 'Lesen Sie das Flag wörtlich.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/computer-vision/overview-image-analysis'
    },
    {
      id: 'ai102-129', type: 'multiple',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO input styles are commonly supported when you send images to Azure AI vision APIs?', de: 'Welche ZWEI Eingabearten werden üblicherweise unterstützt, wenn Sie Bilder an Azure AI Vision-APIs senden?' },
      options: [
        { id: 'A', text: { en: 'An image URL', de: 'Eine Bild-URL' } },
        { id: 'B', text: { en: 'Binary image content or a stream', de: 'Binäre Bilddaten oder ein Stream' } },
        { id: 'C', text: { en: 'A SQL stored procedure', de: 'Eine SQL Stored Procedure' } },
        { id: 'D', text: { en: 'An Azure Policy definition', de: 'Eine Azure Policy-Definition' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Vision APIs commonly accept either a URL pointing to an image or raw image bytes. SQL procedures and policy definitions are not image inputs.', de: 'Vision-APIs akzeptieren üblicherweise entweder eine URL zu einem Bild oder rohe Bildbytes. SQL-Prozeduren und Richtliniendefinitionen sind keine Bildeingaben.' },
      hint: { en: 'Choose the actual ways to supply image content.', de: 'Wählen Sie die tatsächlichen Möglichkeiten, Bildinhalte bereitzustellen.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/computer-vision/overview-image-analysis'
    },
    {
      id: 'ai102-130', type: 'single',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'hard',
      scenario: null,
      question: { en: 'You need a model trained on your labeled images and then exported for offline inference on edge devices. Which service is the best fit?', de: 'Sie benötigen ein Modell, das auf Ihren beschrifteten Bildern trainiert und anschließend für Offline-Inferenz auf Edge-Geräten exportiert wird. Welcher Dienst ist am besten geeignet?' },
      options: [
        { id: 'A', text: { en: 'Custom Vision', de: 'Custom Vision' } },
        { id: 'B', text: { en: 'Image Analysis only', de: 'Nur Image Analysis' } },
        { id: 'C', text: { en: 'Azure AI Search', de: 'Azure AI Search' } },
        { id: 'D', text: { en: 'Azure AI Language', de: 'Azure AI Language' } }
      ],
      correct: ['A'],
      explanation: { en: 'Custom Vision supports custom image training and model export for supported scenarios. Prebuilt Image Analysis is not designed for your own labeled classes or offline export workflows.', de: 'Custom Vision unterstützt benutzerdefiniertes Bildtraining und den Modellexport für unterstützte Szenarien. Das vorgefertigte Image Analysis ist nicht für eigene beschriftete Klassen oder Offline-Exportworkflows gedacht.' },
      hint: { en: 'Think custom training plus export.', de: 'Denken Sie an benutzerdefiniertes Training plus Export.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/custom-vision-service/overview'
    },
    {
      id: 'ai102-131', type: 'scenario',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'medium',
      scenario: { en: 'At Trey Research, an access-control app captures a live selfie and compares it to the employee photo already on file:\nconst result = await faceClient.verifyFaceToFace(liveFaceId, storedFaceId);', de: 'Bei Trey Research: eine Zugangskontroll-App erfasst ein Live-Selfie und vergleicht es mit dem bereits gespeicherten Mitarbeiterfoto:\nconst result = await faceClient.verifyFaceToFace(liveFaceId, storedFaceId);' },
      question: { en: 'Which Face API concept is this example using?', de: 'Welches Face API-Konzept wird in diesem Beispiel verwendet?' },
      options: [
        { id: 'A', text: { en: 'Verification of whether two faces belong to the same person', de: 'Verifizierung, ob zwei Gesichter zur selben Person gehören' } },
        { id: 'B', text: { en: 'Object detection for packages', de: 'Objekterkennung für Pakete' } },
        { id: 'C', text: { en: 'Optical character recognition', de: 'Optische Zeichenerkennung' } },
        { id: 'D', text: { en: 'Language translation', de: 'Sprachübersetzung' } }
      ],
      correct: ['A'],
      explanation: { en: 'The Verify pattern answers whether two face instances match the same identity. It is not an OCR or generic object detection workflow.', de: 'Das Verify-Muster beantwortet, ob zwei Gesichtsinstanzen derselben Identität entsprechen. Es handelt sich nicht um einen OCR- oder generischen Objekterkennungsworkflow.' },
      hint: { en: 'The code compares one face to one face.', de: 'Der Code vergleicht ein Gesicht mit einem Gesicht.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/computer-vision/overview'
    },
    {
      id: 'ai102-132', type: 'single',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which Image Analysis feature should you select when the only required output is recognized text from a sign image?', de: 'Welche Image Analysis-Funktion sollten Sie auswählen, wenn die einzige benötigte Ausgabe erkannter Text aus einem Schildbild ist?' },
      options: [
        { id: 'A', text: { en: 'Read', de: 'Read' } },
        { id: 'B', text: { en: 'Tags', de: 'Tags' } },
        { id: 'C', text: { en: 'People', de: 'People' } },
        { id: 'D', text: { en: 'SmartCrops', de: 'SmartCrops' } }
      ],
      correct: ['A'],
      explanation: { en: 'When you only need text extraction, the Read feature is the direct and appropriate choice.', de: 'Wenn Sie nur Textextraktion benötigen, ist die Read-Funktion die direkte und geeignete Wahl.' },
      hint: { en: 'Choose the text-specific visual feature.', de: 'Wählen Sie die textspezifische visuelle Funktion.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/computer-vision/overview-image-analysis'
    },
    {
      id: 'ai102-133', type: 'multiple',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO metrics are commonly used to evaluate a Custom Vision model?', de: 'Welche ZWEI Metriken werden üblicherweise zur Bewertung eines Custom Vision-Modells verwendet?' },
      options: [
        { id: 'A', text: { en: 'Precision', de: 'Precision' } },
        { id: 'B', text: { en: 'Recall', de: 'Recall' } },
        { id: 'C', text: { en: 'Resource group count', de: 'Anzahl der Ressourcengruppen' } },
        { id: 'D', text: { en: 'Blob lease duration', de: 'Blob-Leasedauer' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Precision and recall are standard quality metrics for image classification and object detection models. The other values do not measure model quality.', de: 'Precision und Recall sind Standardqualitätsmetriken für Bildklassifikations- und Objekterkennungsmodelle. Die anderen Werte messen keine Modellqualität.' },
      hint: { en: 'Choose the machine learning evaluation metrics.', de: 'Wählen Sie die Metriken zur Bewertung von Machine-Learning-Modellen.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/custom-vision-service/overview'
    },
    {
      id: 'ai102-134', type: 'scenario',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Proseware, Inc., a retail app calls Image Analysis like this:\nconst result = await client.analyze(imageUrl, [VisualFeatures.Objects]);\nThe business now needs categories such as "seasonal bundle" and "premium shelf" that do not exist in prebuilt labels.', de: 'Bei Proseware, Inc.: eine Retail-App ruft Image Analysis wie folgt auf:\nconst result = await client.analyze(imageUrl, [VisualFeatures.Objects]);\nDas Unternehmen benötigt nun Kategorien wie "seasonal bundle" und "premium shelf", die in vorgefertigten Labels nicht existieren.' },
      question: { en: 'What should you adopt?', de: 'Was sollten Sie einsetzen?' },
      options: [
        { id: 'A', text: { en: 'Train a Custom Vision classification model', de: 'Ein Custom Vision-Klassifikationsmodell trainieren' } },
        { id: 'B', text: { en: 'Use Content Safety image moderation', de: 'Content Safety-Bildmoderation verwenden' } },
        { id: 'C', text: { en: 'Use Azure AI Translator', de: 'Azure AI Translator verwenden' } },
        { id: 'D', text: { en: 'Add semantic captions to Azure AI Search', de: 'Semantic Captions zu Azure AI Search hinzufügen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Business-specific image classes require a custom-trained model. Prebuilt Image Analysis labels cannot be extended to arbitrary company categories.', de: 'Geschäftsspezifische Bildklassen erfordern ein benutzerdefiniert trainiertes Modell. Vorgefertigte Image Analysis-Labels können nicht auf beliebige Unternehmenskategorien erweitert werden.' },
      hint: { en: 'The missing labels are unique to the business.', de: 'Die fehlenden Labels sind einzigartig für das Unternehmen.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/custom-vision-service/overview'
    },
    {
      id: 'ai102-135', type: 'single',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which Azure AI service is specialized for face detection and face verification scenarios?', de: 'Welcher Azure AI-Dienst ist auf Gesichtserkennungs- und Gesichtsverifizierungsszenarien spezialisiert?' },
      options: [
        { id: 'A', text: { en: 'Face', de: 'Face' } },
        { id: 'B', text: { en: 'Translator', de: 'Translator' } },
        { id: 'C', text: { en: 'Question answering', de: 'Question Answering' } },
        { id: 'D', text: { en: 'Azure AI Search', de: 'Azure AI Search' } }
      ],
      correct: ['A'],
      explanation: { en: 'Face is the Azure AI service for face-related detection, comparison, and identification capabilities.', de: 'Face ist der Azure AI-Dienst für gesichtsbezogene Erkennungs-, Vergleichs- und Identifizierungsfunktionen.' },
      hint: { en: 'Choose the identity-oriented vision service.', de: 'Wählen Sie den identitätsorientierten Vision-Dienst.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/computer-vision/overview'
    },
    {
      id: 'ai102-136', type: 'multiple',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO outputs can Image Analysis provide without custom training?', de: 'Welche ZWEI Ausgaben kann Image Analysis ohne benutzerdefiniertes Training bereitstellen?' },
      options: [
        { id: 'A', text: { en: 'Tags', de: 'Tags' } },
        { id: 'B', text: { en: 'Object detection', de: 'Objekterkennung' } },
        { id: 'C', text: { en: 'Your company-specific product taxonomy', de: 'Ihre unternehmensspezifische Produkt-Taxonomie' } },
        { id: 'D', text: { en: 'A custom-trained defect label set', de: 'Ein benutzerdefiniert trainierter Fehler-Labelsatz' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Tags and object detection are prebuilt Image Analysis capabilities. Company-specific taxonomies require a custom-trained model.', de: 'Tags und Objekterkennung sind vorgefertigte Funktionen von Image Analysis. Unternehmensspezifische Taxonomien erfordern ein benutzerdefiniert trainiertes Modell.' },
      hint: { en: 'Choose the prebuilt visual outputs.', de: 'Wählen Sie die vorgefertigten visuellen Ausgaben.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/computer-vision/overview-image-analysis'
    },
    {
      id: 'ai102-137', type: 'scenario',
      domain: { en: 'Implement Computer Vision Solutions', de: 'Computer Vision-Lösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Trey Research, a roadside-inspection app needs one service call that can return both detected objects and recognized text from the same image. The team wants to send `POST /computervision/imageanalysis:analyze?features=objects,read`. The current prototype already uses Azure AI Vision APIs.', de: 'Bei Trey Research: eine Straßeninspektions-App benötigt einen einzelnen Dienstaufruf, der sowohl erkannte Objekte als auch erkannten Text aus demselben Bild zurückgeben kann. Das Team möchte `POST /computervision/imageanalysis:analyze?features=objects,read` senden. Der aktuelle Prototyp verwendet bereits Azure AI Vision-APIs.' },
      question: { en: 'Which service is the best fit?', de: 'Welcher Dienst ist am besten geeignet?' },
      options: [
        { id: 'A', text: { en: 'Image Analysis with the required visual features', de: 'Image Analysis mit den erforderlichen visuellen Funktionen' } },
        { id: 'B', text: { en: 'Azure AI Search semantic ranker', de: 'Azure AI Search Semantic Ranker' } },
        { id: 'C', text: { en: 'Azure AI Translator', de: 'Azure AI Translator' } },
        { id: 'D', text: { en: 'CLU', de: 'CLU' } }
      ],
      correct: ['A'],
      explanation: { en: 'Image Analysis supports multiple visual features, including object detection and text extraction, in a vision workflow. The other services do not analyze image pixels.', de: 'Image Analysis unterstützt mehrere visuelle Funktionen, einschließlich Objekterkennung und Textextraktion, in einem Vision-Workflow. Die anderen Dienste analysieren keine Bildpixel.' },
      hint: { en: 'Stay with the prebuilt vision API that supports multiple features.', de: 'Bleiben Sie bei der vorgefertigten Vision-API, die mehrere Funktionen unterstützt.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/computer-vision/overview-image-analysis'
    },
    {
      id: 'ai102-138', type: 'single',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which Azure AI Language feature should you use to classify text as positive, neutral, negative, or mixed?', de: 'Welche Funktion von Azure AI Language sollten Sie verwenden, um Text als positiv, neutral, negativ oder gemischt zu klassifizieren?' },
      options: [
        { id: 'A', text: { en: 'Sentiment analysis', de: 'Sentimentanalyse' } },
        { id: 'B', text: { en: 'Object detection', de: 'Objekterkennung' } },
        { id: 'C', text: { en: 'Face verification', de: 'Gesichtsverifizierung' } },
        { id: 'D', text: { en: 'Vector search', de: 'Vektorsuche' } }
      ],
      correct: ['A'],
      explanation: { en: 'Sentiment analysis is the Language service feature for measuring overall opinion polarity in text.', de: 'Die Sentimentanalyse ist die Funktion des Language Service zur Messung der allgemeinen Meinungsrichtung in Text.' },
      hint: { en: 'Pick the opinion-analysis feature.', de: 'Wählen Sie die Funktion zur Meinungsanalyse.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/sentiment-opinion-mining/overview'
    },
    {
      id: 'ai102-139', type: 'multiple',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'A product review solution must extract important terms and identify names of organizations, products, and locations. Which TWO Azure AI Language features should you use?', de: 'Eine Produktbewertungslösung muss wichtige Begriffe extrahieren und Namen von Organisationen, Produkten und Orten identifizieren. Welche ZWEI Azure AI Language-Funktionen sollten Sie verwenden?' },
      options: [
        { id: 'A', text: { en: 'Key phrase extraction', de: 'Schlüsselbegriffextraktion' } },
        { id: 'B', text: { en: 'Named entity recognition', de: 'Named Entity Recognition' } },
        { id: 'C', text: { en: 'Image captions', de: 'Bildunterschriften' } },
        { id: 'D', text: { en: 'Face identification', de: 'Gesichtsidentifikation' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Key phrase extraction finds important terms, and named entity recognition identifies entities such as organizations and locations. The other options are not NLP text analysis features.', de: 'Die Schlüsselbegriffextraktion findet wichtige Begriffe, und Named Entity Recognition identifiziert Entitäten wie Organisationen und Orte. Die anderen Optionen sind keine NLP-Textanalysefunktionen.' },
      hint: { en: 'Choose one feature for key terms and one for entities.', de: 'Wählen Sie eine Funktion für Schlüsselbegriffe und eine für Entitäten.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/overview'
    },
    {
      id: 'ai102-140', type: 'scenario',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Proseware, Inc., a support system receives transcripts that contain account numbers and phone numbers:\nconst result = await client.recognizePiiEntities([text]);\nCompliance requires storing only redacted transcripts.', de: 'Bei Proseware, Inc.: ein Supportsystem erhält Transkripte, die Kontonummern und Telefonnummern enthalten:\nconst result = await client.recognizePiiEntities([text]);\nDie Compliance verlangt, nur geschwärzte Transkripte zu speichern.' },
      question: { en: 'Which Azure AI Language capability is the correct foundation for this workflow?', de: 'Welche Funktion von Azure AI Language ist die richtige Grundlage für diesen Workflow?' },
      options: [
        { id: 'A', text: { en: 'PII detection and redaction workflow', de: 'PII-Erkennung und Schwärzungsworkflow' } },
        { id: 'B', text: { en: 'Image segmentation', de: 'Bildsegmentierung' } },
        { id: 'C', text: { en: 'Custom Vision classification', de: 'Custom Vision-Klassifikation' } },
        { id: 'D', text: { en: 'Semantic ranking', de: 'Semantische Rangfolge' } }
      ],
      correct: ['A'],
      explanation: { en: 'PII detection is intended to find sensitive personal data in text so the application can remove or mask it before storage or display.', de: 'Die PII-Erkennung dient dazu, sensible personenbezogene Daten in Text zu finden, damit die Anwendung sie vor dem Speichern oder Anzeigen entfernen oder maskieren kann.' },
      hint: { en: 'The requirement is privacy-oriented redaction.', de: 'Die Anforderung betrifft datenschutzorientierte Schwärzung.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/personally-identifiable-information/overview'
    },
    {
      id: 'ai102-141', type: 'single',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which Azure service should you use for real-time speech-to-text transcription?', de: 'Welchen Azure-Dienst sollten Sie für Echtzeit-Spracherkennung verwenden?' },
      options: [
        { id: 'A', text: { en: 'Speech service', de: 'Speech Service' } },
        { id: 'B', text: { en: 'Custom Vision', de: 'Custom Vision' } },
        { id: 'C', text: { en: 'Azure AI Search', de: 'Azure AI Search' } },
        { id: 'D', text: { en: 'Document Intelligence', de: 'Document Intelligence' } }
      ],
      correct: ['A'],
      explanation: { en: 'Speech service provides speech-to-text, text-to-speech, translation, and other voice-related capabilities.', de: 'Der Speech Service bietet Speech-to-Text, Text-to-Speech, Übersetzung und andere sprachbezogene Funktionen.' },
      hint: { en: 'Choose the voice-focused service.', de: 'Wählen Sie den sprachfokussierten Dienst.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/speech-service/overview'
    },
    {
      id: 'ai102-142', type: 'single',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'You are building a bot that must detect user intent and extract entities such as date, city, and product name from conversational utterances. Which Azure AI Language feature should you use?', de: 'Sie erstellen einen Bot, der Benutzerintentionen erkennen und Entitäten wie Datum, Stadt und Produktname aus Gesprächsäußerungen extrahieren muss. Welche Funktion von Azure AI Language sollten Sie verwenden?' },
      options: [
        { id: 'A', text: { en: 'Conversational Language Understanding (CLU)', de: 'Conversational Language Understanding (CLU)' } },
        { id: 'B', text: { en: 'Image Analysis', de: 'Image Analysis' } },
        { id: 'C', text: { en: 'Custom Vision', de: 'Custom Vision' } },
        { id: 'D', text: { en: 'OCR Read', de: 'OCR Read' } }
      ],
      correct: ['A'],
      explanation: { en: 'CLU is built for conversational intent detection and entity extraction. The other services do not interpret conversational text intent.', de: 'CLU ist für die Erkennung von Gesprächsintentionen und die Extraktion von Entitäten ausgelegt. Die anderen Dienste interpretieren keine Gesprächsabsichten in Text.' },
      hint: { en: 'Think intent plus entities in a chat utterance.', de: 'Denken Sie an Intention plus Entitäten in einer Chat-Äußerung.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/conversational-language-understanding/overview'
    },
    {
      id: 'ai102-143', type: 'scenario',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: { en: 'You work for Proseware, Inc. Training alone is not enough for runtime use.', de: 'Sie arbeiten für Proseware, Inc. Training allein reicht für die Laufzeitverwendung nicht aus.' },
      question: { en: 'What should you do next?', de: 'Was sollten Sie als Nächstes tun?' },
      options: [
        { id: 'A', text: { en: 'Deploy the trained model and call the runtime prediction API', de: 'Das trainierte Modell bereitstellen und die Laufzeit-Vorhersage-API aufrufen' } },
        { id: 'B', text: { en: 'Export the model to PNG', de: 'Das Modell als PNG exportieren' } },
        { id: 'C', text: { en: 'Create a semantic configuration in Azure AI Search', de: 'Eine semantische Konfiguration in Azure AI Search erstellen' } },
        { id: 'D', text: { en: 'Move the utterances into a Blob container only', de: 'Die Äußerungen nur in einen Blob-Container verschieben' } }
      ],
      correct: ['A'],
      explanation: { en: 'After training, a CLU model must be deployed before the application can use it for predictions at runtime.', de: 'Nach dem Training muss ein CLU-Modell bereitgestellt werden, bevor die Anwendung es zur Laufzeit für Vorhersagen verwenden kann.' },
      hint: { en: 'Training alone is not enough for runtime use.', de: 'Training allein reicht für die Laufzeitverwendung nicht aus.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/conversational-language-understanding/overview'
    },
    {
      id: 'ai102-144', type: 'multiple',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO capabilities are provided by Azure AI Translator?', de: 'Welche ZWEI Funktionen werden von Azure AI Translator bereitgestellt?' },
      options: [
        { id: 'A', text: { en: 'Text translation', de: 'Textübersetzung' } },
        { id: 'B', text: { en: 'Transliteration', de: 'Transliteration' } },
        { id: 'C', text: { en: 'Object detection', de: 'Objekterkennung' } },
        { id: 'D', text: { en: 'Face verification', de: 'Gesichtsverifizierung' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Azure AI Translator provides language translation features including text translation and transliteration. The other options belong to vision services.', de: 'Azure AI Translator bietet Sprachübersetzungsfunktionen einschließlich Textübersetzung und Transliteration. Die anderen Optionen gehören zu Vision-Diensten.' },
      hint: { en: 'Choose the language conversion tasks.', de: 'Wählen Sie die Aufgaben zur Sprachumwandlung.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/translator/overview'
    },
    {
      id: 'ai102-145', type: 'single',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which Azure AI Language feature returns the most important existing sentences from a long document?', de: 'Welche Funktion von Azure AI Language gibt die wichtigsten vorhandenen Sätze aus einem langen Dokument zurück?' },
      options: [
        { id: 'A', text: { en: 'Extractive summarization', de: 'Extraktive Zusammenfassung' } },
        { id: 'B', text: { en: 'Object detection', de: 'Objekterkennung' } },
        { id: 'C', text: { en: 'Speech synthesis', de: 'Sprachsynthese' } },
        { id: 'D', text: { en: 'Semantic captions', de: 'Semantische Beschriftungen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Extractive summarization selects key sentences from the original document instead of generating entirely new wording.', de: 'Die extraktive Zusammenfassung wählt Schlüsselsätze aus dem Originaldokument aus, anstatt völlig neue Formulierungen zu erzeugen.' },
      hint: { en: 'The answer uses existing sentences.', de: 'Die Antwort verwendet vorhandene Sätze.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/summarization/overview'
    },
    {
      id: 'ai102-146', type: 'scenario',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Trey Research, a call-center app uses the Speech SDK:\nspeechConfig.speechRecognitionLanguage = "de-DE";\nThe team now wants spoken German to appear as English text in real time.', de: 'Bei Trey Research: eine Callcenter-App verwendet das Speech SDK:\nspeechConfig.speechRecognitionLanguage = "de-DE";\nDas Team möchte nun, dass gesprochenes Deutsch in Echtzeit als englischer Text erscheint.' },
      question: { en: 'Which feature should you use?', de: 'Welche Funktion sollten Sie verwenden?' },
      options: [
        { id: 'A', text: { en: 'Speech translation', de: 'Sprachübersetzung' } },
        { id: 'B', text: { en: 'Image captions', de: 'Bildunterschriften' } },
        { id: 'C', text: { en: 'Azure AI Search filters', de: 'Azure AI Search-Filter' } },
        { id: 'D', text: { en: 'Custom Vision object detection', de: 'Custom Vision-Objekterkennung' } }
      ],
      correct: ['A'],
      explanation: { en: 'Speech translation is the speech feature for translating spoken input into text in another language.', de: 'Die Sprachübersetzung ist die Speech-Funktion zum Übersetzen gesprochener Eingaben in Text einer anderen Sprache.' },
      hint: { en: 'The input is speech and the output is translated text.', de: 'Die Eingabe ist Sprache und die Ausgabe übersetzter Text.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/speech-service/overview'
    },
    {
      id: 'ai102-147', type: 'single',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which Azure AI Language feature links text entities such as "Paris" or "Microsoft" to known reference entries?', de: 'Welche Funktion von Azure AI Language verknüpft Textentitäten wie "Paris" oder "Microsoft" mit bekannten Referenzeinträgen?' },
      options: [
        { id: 'A', text: { en: 'Entity linking', de: 'Entity Linking' } },
        { id: 'B', text: { en: 'Key phrase extraction', de: 'Schlüsselbegriffextraktion' } },
        { id: 'C', text: { en: 'Speech synthesis', de: 'Sprachsynthese' } },
        { id: 'D', text: { en: 'Optical character recognition', de: 'Optische Zeichenerkennung' } }
      ],
      correct: ['A'],
      explanation: { en: 'Entity linking associates detected entities with known data sources and identifiers to disambiguate meaning.', de: 'Entity Linking verknüpft erkannte Entitäten mit bekannten Datenquellen und Kennungen, um die Bedeutung zu disambiguieren.' },
      hint: { en: 'It is about linking to a known concept.', de: 'Es geht um die Verknüpfung mit einem bekannten Konzept.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/overview'
    },
    {
      id: 'ai102-148', type: 'multiple',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO statements about custom question answering are correct?', de: 'Welche ZWEI Aussagen über benutzerdefiniertes Question Answering sind korrekt?' },
      options: [
        { id: 'A', text: { en: 'It can build a knowledge base from FAQ-style content', de: 'Es kann eine Wissensdatenbank aus FAQ-ähnlichen Inhalten aufbauen' } },
        { id: 'B', text: { en: 'It returns the best matching answer for a user question', de: 'Es gibt die am besten passende Antwort auf eine Benutzerfrage zurück' } },
        { id: 'C', text: { en: 'It detects faces in photos', de: 'Es erkennt Gesichter in Fotos' } },
        { id: 'D', text: { en: 'It trains image classifiers', de: 'Es trainiert Bildklassifikatoren' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Custom question answering is intended for FAQ and knowledge-base style question answering. It is not a vision service.', de: 'Benutzerdefiniertes Question Answering ist für FAQ- und Wissensdatenbank-Fragebeantwortung vorgesehen. Es ist kein Vision-Dienst.' },
      hint: { en: 'Think FAQ project plus best answer retrieval.', de: 'Denken Sie an ein FAQ-Projekt plus Abruf der besten Antwort.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/question-answering/overview'
    },
    {
      id: 'ai102-149', type: 'scenario',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: { en: 'At Proseware, Inc., a helpdesk bot calls `POST /language/:query-knowledgebases` for custom question answering and receives:\n{ "answer": "...", "confidenceScore": 0.08 }\nThe business requires a human handoff when confidence is low.', de: 'Bei Proseware, Inc.: ein Helpdesk-Bot ruft `POST /language/:query-knowledgebases` für benutzerdefiniertes Question Answering auf und erhält:\n{ "answer": "...", "confidenceScore": 0.08 }\nDas Unternehmen verlangt eine Übergabe an einen Menschen bei niedriger Konfidenz.' },
      question: { en: 'What should the bot do?', de: 'Was sollte der Bot tun?' },
      options: [
        { id: 'A', text: { en: 'Apply a confidence threshold and trigger fallback when the score is below it', de: 'Einen Konfidenzschwellenwert anwenden und bei Unterschreitung einen Fallback auslösen' } },
        { id: 'B', text: { en: 'Always return the answer regardless of score', de: 'Die Antwort immer zurückgeben, unabhängig vom Score' } },
        { id: 'C', text: { en: 'Switch to face verification', de: 'Zur Gesichtsverifizierung wechseln' } },
        { id: 'D', text: { en: 'Increase image resolution', de: 'Die Bildauflösung erhöhen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Confidence thresholds are a standard way to route low-certainty answers to fallback logic or human agents.', de: 'Konfidenzschwellenwerte sind eine Standardmethode, um Antworten mit geringer Sicherheit an Fallback-Logik oder menschliche Mitarbeiter weiterzuleiten.' },
      hint: { en: 'Low confidence should not produce a final automated answer.', de: 'Niedrige Konfidenz sollte keine endgültige automatisierte Antwort erzeugen.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/question-answering/overview'
    },
    {
      id: 'ai102-150', type: 'single',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which Translator feature helps determine the source language of text before translating it?', de: 'Welche Translator-Funktion hilft, die Ausgangssprache eines Textes vor der Übersetzung zu bestimmen?' },
      options: [
        { id: 'A', text: { en: 'Language detection', de: 'Spracherkennung' } },
        { id: 'B', text: { en: 'Object detection', de: 'Objekterkennung' } },
        { id: 'C', text: { en: 'Topic modeling', de: 'Themenmodellierung' } },
        { id: 'D', text: { en: 'Index projection', de: 'Indexprojektion' } }
      ],
      correct: ['A'],
      explanation: { en: 'Translator can detect the input language, which is useful when client applications do not know it in advance.', de: 'Translator kann die Eingabesprache erkennen, was nützlich ist, wenn Clientanwendungen sie nicht im Voraus kennen.' },
      hint: { en: 'Pick the feature that identifies the language first.', de: 'Wählen Sie die Funktion, die zuerst die Sprache identifiziert.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/translator/overview'
    },
    {
      id: 'ai102-151', type: 'multiple',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'A multilingual voice assistant must accept spoken input and return text in another language. Which TWO Azure services are most directly involved?', de: 'Ein mehrsprachiger Sprachassistent muss gesprochene Eingaben akzeptieren und Text in einer anderen Sprache zurückgeben. Welche ZWEI Azure-Dienste sind am direktesten beteiligt?' },
      options: [
        { id: 'A', text: { en: 'Speech service', de: 'Speech Service' } },
        { id: 'B', text: { en: 'Translator', de: 'Translator' } },
        { id: 'C', text: { en: 'Face', de: 'Face' } },
        { id: 'D', text: { en: 'Azure AI Search', de: 'Azure AI Search' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Speech handles spoken input, and Translator provides multilingual text conversion when needed. Face and Search do not translate user speech.', de: 'Speech verarbeitet gesprochene Eingaben, und Translator liefert bei Bedarf mehrsprachige Textumwandlung. Face und Search übersetzen keine Benutzersprache.' },
      hint: { en: 'One service handles voice, the other handles language conversion.', de: 'Ein Dienst verarbeitet Stimme, der andere die Sprachumwandlung.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/speech-service/overview'
    },
    {
      id: 'ai102-152', type: 'scenario',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Trey Research, an e-commerce team runs this code:\nconst result = await client.analyzeSentiment([review], { includeOpinionMining: true });\nThey want to know whether customers like the battery but dislike the screen.', de: 'Bei Trey Research: ein E-Commerce-Team führt diesen Code aus:\nconst result = await client.analyzeSentiment([review], { includeOpinionMining: true });\nEs möchte wissen, ob Kunden den Akku mögen, aber den Bildschirm nicht.' },
      question: { en: 'What additional insight does opinion mining provide?', de: 'Welche zusätzliche Erkenntnis liefert Opinion Mining?' },
      options: [
        { id: 'A', text: { en: 'Aspect-level sentiment for specific targets in the text', de: 'Aspektbezogenes Sentiment für bestimmte Ziele im Text' } },
        { id: 'B', text: { en: 'Object bounding boxes in the review image', de: 'Objekt-Bounding-Boxen im Bewertungsbild' } },
        { id: 'C', text: { en: 'Speech diarization', de: 'Sprecherdiarisierung' } },
        { id: 'D', text: { en: 'Semantic vector generation', de: 'Semantische Vektorerzeugung' } }
      ],
      correct: ['A'],
      explanation: { en: 'Opinion mining breaks sentiment into targets and assessments, such as battery positive and screen negative, instead of only one overall score.', de: 'Opinion Mining zerlegt das Sentiment in Ziele und Bewertungen, etwa Akku positiv und Bildschirm negativ, statt nur einen Gesamtscore zu liefern.' },
      hint: { en: 'The requirement is sentiment by product aspect.', de: 'Die Anforderung betrifft das Sentiment nach Produktaspekt.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/sentiment-opinion-mining/overview'
    },
    {
      id: 'ai102-153', type: 'single',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'A document must be assigned to exactly one category such as Billing, Shipping, or Returns. Which custom text classification project type is appropriate?', de: 'Ein Dokument muss genau einer Kategorie wie Abrechnung, Versand oder Rücksendung zugeordnet werden. Welcher Typ eines benutzerdefinierten Textklassifikationsprojekts ist geeignet?' },
      options: [
        { id: 'A', text: { en: 'Single-label classification', de: 'Single-Label-Klassifikation' } },
        { id: 'B', text: { en: 'Multi-label classification', de: 'Multi-Label-Klassifikation' } },
        { id: 'C', text: { en: 'Face identification', de: 'Gesichtsidentifikation' } },
        { id: 'D', text: { en: 'OCR Read', de: 'OCR Read' } }
      ],
      correct: ['A'],
      explanation: { en: 'Single-label classification is used when each document belongs to exactly one class. Multi-label classification is for documents that may match several labels at the same time.', de: 'Die Single-Label-Klassifikation wird verwendet, wenn jedes Dokument genau zu einer Klasse gehört. Die Multi-Label-Klassifikation ist für Dokumente gedacht, die gleichzeitig zu mehreren Labels passen können.' },
      hint: { en: 'Exactly one category matters.', de: 'Genau eine Kategorie ist entscheidend.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/overview'
    },
    {
      id: 'ai102-154', type: 'multiple',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO items are fundamental when you author a CLU project?', de: 'Welche ZWEI Elemente sind grundlegend, wenn Sie ein CLU-Projekt erstellen?' },
      options: [
        { id: 'A', text: { en: 'Intents', de: 'Intents' } },
        { id: 'B', text: { en: 'Utterances', de: 'Äußerungen' } },
        { id: 'C', text: { en: 'Virtual machine scale sets', de: 'Virtual Machine Scale Sets' } },
        { id: 'D', text: { en: 'Blob snapshots', de: 'Blob-Snapshots' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'CLU projects are built around intents and sample utterances, with optional entities. Infrastructure objects such as VM scale sets are unrelated.', de: 'CLU-Projekte basieren auf Intents und Beispieläußerungen, optional ergänzt durch Entitäten. Infrastrukturkomponenten wie VM Scale Sets sind nicht relevant.' },
      hint: { en: 'Think user says something and the system maps an intent.', de: 'Denken Sie daran, dass der Benutzer etwas sagt und das System eine Intention zuordnet.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/conversational-language-understanding/overview'
    },
    {
      id: 'ai102-155', type: 'scenario',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: { en: 'At Proseware, Inc., a developer uses the Python SDK:\npoller = client.begin_abstract_summary([document])\nThey ask why the method returns a poller instead of the final summary immediately.', de: 'Bei Proseware, Inc.: ein Entwickler verwendet das Python SDK:\npoller = client.begin_abstract_summary([document])\nEr fragt, warum die Methode einen Poller statt der endgültigen Zusammenfassung sofort zurückgibt.' },
      question: { en: 'What is the best explanation?', de: 'Was ist die beste Erklärung?' },
      options: [
        { id: 'A', text: { en: 'Summarization is implemented as a long-running operation', de: 'Die Zusammenfassung ist als lang laufender Vorgang implementiert' } },
        { id: 'B', text: { en: 'The SDK forgot to deserialize JSON', de: 'Das SDK hat vergessen, JSON zu deserialisieren' } },
        { id: 'C', text: { en: 'The service only works with images', de: 'Der Dienst funktioniert nur mit Bildern' } },
        { id: 'D', text: { en: 'The endpoint requires semantic ranking first', de: 'Der Endpunkt erfordert zuerst Semantic Ranking' } }
      ],
      correct: ['A'],
      explanation: { en: 'Language service summarization can run asynchronously, so SDK methods use the begin_ long-running pattern and return a poller.', de: 'Die Zusammenfassung im Language Service kann asynchron ausgeführt werden, daher verwenden SDK-Methoden das begin_-Muster für lang laufende Vorgänge und geben einen Poller zurück.' },
      hint: { en: 'The begin_ prefix is a clue.', de: 'Das Präfix begin_ ist ein Hinweis.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/summarization/overview'
    },
    {
      id: 'ai102-156', type: 'single',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which Azure AI Language feature identifies entities such as people, organizations, and locations in text?', de: 'Welche Funktion von Azure AI Language identifiziert Entitäten wie Personen, Organisationen und Orte in Text?' },
      options: [
        { id: 'A', text: { en: 'Named entity recognition', de: 'Named Entity Recognition' } },
        { id: 'B', text: { en: 'Text-to-speech', de: 'Text-to-Speech' } },
        { id: 'C', text: { en: 'Object detection', de: 'Objekterkennung' } },
        { id: 'D', text: { en: 'Vector search', de: 'Vektorsuche' } }
      ],
      correct: ['A'],
      explanation: { en: 'Named entity recognition extracts structured entities such as people, places, and organizations from unstructured text.', de: 'Named Entity Recognition extrahiert strukturierte Entitäten wie Personen, Orte und Organisationen aus unstrukturiertem Text.' },
      hint: { en: 'Think names and categories in text.', de: 'Denken Sie an Namen und Kategorien im Text.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/overview'
    },
    {
      id: 'ai102-157', type: 'single',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which Azure AI Translator capability should you use to translate entire files such as DOCX or PDF while preserving document structure?', de: 'Welche Funktion von Azure AI Translator sollten Sie verwenden, um ganze Dateien wie DOCX oder PDF zu übersetzen und dabei die Dokumentstruktur beizubehalten?' },
      options: [
        { id: 'A', text: { en: 'Document Translation', de: 'Document Translation' } },
        { id: 'B', text: { en: 'Face Verify', de: 'Face Verify' } },
        { id: 'C', text: { en: 'Image captions', de: 'Bildunterschriften' } },
        { id: 'D', text: { en: 'Semantic answers', de: 'Semantische Antworten' } }
      ],
      correct: ['A'],
      explanation: { en: 'Document Translation is designed for translating full documents while preserving their overall structure and formatting as supported.', de: 'Document Translation ist dafür ausgelegt, ganze Dokumente zu übersetzen und dabei deren Gesamtstruktur und unterstützte Formatierung beizubehalten.' },
      hint: { en: 'Choose the translator feature for files, not short text only.', de: 'Wählen Sie die Translator-Funktion für Dateien, nicht nur für kurzen Text.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/translator/document-translation/overview'
    },
    {
      id: 'ai102-158', type: 'scenario',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Trey Research, a support bot must first decide whether a user utterance should go to a FAQ knowledge base or to a CLU intent model. The team wants one language project to route the utterance automatically when `POST /language/analyze-conversations` is called.', de: 'Bei Trey Research: ein Support-Bot muss zuerst entscheiden, ob eine Benutzeräußerung an eine FAQ-Wissensdatenbank oder an ein CLU-Intent-Modell gehen soll. Das Team möchte ein Sprachprojekt, das die Äußerung automatisch weiterleitet, wenn `POST /language/analyze-conversations` aufgerufen wird.' },
      question: { en: 'Which Azure AI Language capability best fits this design?', de: 'Welche Funktion von Azure AI Language passt am besten zu diesem Design?' },
      options: [
        { id: 'A', text: { en: 'An orchestration workflow project', de: 'Ein Orchestration-Workflow-Projekt' } },
        { id: 'B', text: { en: 'Image Analysis captions', de: 'Image Analysis-Bildunterschriften' } },
        { id: 'C', text: { en: 'Face verification', de: 'Gesichtsverifizierung' } },
        { id: 'D', text: { en: 'Azure Front Door', de: 'Azure Front Door' } }
      ],
      correct: ['A'],
      explanation: { en: 'Orchestration workflow projects route an utterance to the correct downstream language model, such as CLU or custom question answering.', de: 'Orchestration-Workflow-Projekte leiten eine Äußerung an das richtige nachgelagerte Sprachmodell weiter, etwa CLU oder benutzerdefiniertes Question Answering.' },
      hint: { en: 'The key need is routing between language projects.', de: 'Die Kernanforderung ist das Routing zwischen Sprachprojekten.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/overview'
    },
    {
      id: 'ai102-159', type: 'single',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which feature should you use to detect and optionally redact sensitive personal data from text?', de: 'Welche Funktion sollten Sie verwenden, um sensible personenbezogene Daten aus Text zu erkennen und optional zu schwärzen?' },
      options: [
        { id: 'A', text: { en: 'PII detection', de: 'PII-Erkennung' } },
        { id: 'B', text: { en: 'Image segmentation', de: 'Bildsegmentierung' } },
        { id: 'C', text: { en: 'Speech synthesis', de: 'Sprachsynthese' } },
        { id: 'D', text: { en: 'Semantic ranking', de: 'Semantische Rangfolge' } }
      ],
      correct: ['A'],
      explanation: { en: 'PII detection is designed for recognizing sensitive data such as phone numbers, addresses, and identification numbers in text.', de: 'Die PII-Erkennung ist für das Erkennen sensibler Daten wie Telefonnummern, Adressen und Identifikationsnummern in Text vorgesehen.' },
      hint: { en: 'This is the privacy-focused text feature.', de: 'Dies ist die datenschutzfokussierte Textfunktion.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/personally-identifiable-information/overview'
    },
    {
      id: 'ai102-160', type: 'multiple',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO capabilities are provided by Azure AI Speech service?', de: 'Welche ZWEI Funktionen werden vom Azure AI Speech Service bereitgestellt?' },
      options: [
        { id: 'A', text: { en: 'Speech to text', de: 'Speech-to-Text' } },
        { id: 'B', text: { en: 'Text to speech', de: 'Text-to-Speech' } },
        { id: 'C', text: { en: 'Hybrid vector search', de: 'Hybride Vektorsuche' } },
        { id: 'D', text: { en: 'Object detection', de: 'Objekterkennung' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Azure AI Speech handles both transcription and audio synthesis. Hybrid search and object detection belong to other services.', de: 'Azure AI Speech verarbeitet sowohl Transkription als auch Audio-Synthese. Hybride Suche und Objekterkennung gehören zu anderen Diensten.' },
      hint: { en: 'Choose the voice input and voice output features.', de: 'Wählen Sie die Funktionen für Spracheingabe und Sprachausgabe.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/speech-service/overview'
    },
    {
      id: 'ai102-161', type: 'single',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which Azure service should you use to convert text into natural-sounding audio output?', de: 'Welchen Azure-Dienst sollten Sie verwenden, um Text in natürlich klingende Audioausgabe umzuwandeln?' },
      options: [
        { id: 'A', text: { en: 'Speech synthesis', de: 'Sprachsynthese' } },
        { id: 'B', text: { en: 'OCR Read', de: 'OCR Read' } },
        { id: 'C', text: { en: 'Custom Vision', de: 'Custom Vision' } },
        { id: 'D', text: { en: 'Azure AI Search', de: 'Azure AI Search' } }
      ],
      correct: ['A'],
      explanation: { en: 'Speech synthesis is the Speech service capability that generates audio from text.', de: 'Die Sprachsynthese ist die Funktion des Speech Service, die Audio aus Text erzeugt.' },
      hint: { en: 'It is the reverse of speech-to-text.', de: 'Es ist das Gegenteil von Speech-to-Text.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/speech-service/overview'
    },
    {
      id: 'ai102-162', type: 'multiple',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO requirements are a direct fit for Azure AI Translator?', de: 'Welche ZWEI Anforderungen passen direkt zu Azure AI Translator?' },
      options: [
        { id: 'A', text: { en: 'Translate text between languages', de: 'Text zwischen Sprachen übersetzen' } },
        { id: 'B', text: { en: 'Convert names or words between writing systems by transliteration', de: 'Namen oder Wörter durch Transliteration zwischen Schriftsystemen umwandeln' } },
        { id: 'C', text: { en: 'Detect cracks in metal parts', de: 'Risse in Metallteilen erkennen' } },
        { id: 'D', text: { en: 'Identify a speaker from a selfie', de: 'Einen Sprecher anhand eines Selfies identifizieren' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Translator supports language translation and transliteration. Crack detection and selfie-based identification are not translation tasks.', de: 'Translator unterstützt Sprachübersetzung und Transliteration. Risserkennung und Selfie-basierte Identifikation sind keine Übersetzungsaufgaben.' },
      hint: { en: 'Choose the language transformation tasks.', de: 'Wählen Sie die Aufgaben zur Sprachtransformation.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/translator/overview'
    },
    {
      id: 'ai102-163', type: 'scenario',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Proseware, Inc., an email-routing model must assign zero, one, or several tags such as Billing, Refund, and Urgent to the same message. A training dataset with labeled examples is available, and inference will call `POST /language/analyze-text?api-version=2023-04-01` with `kind: CustomMultiLabelClassification`.', de: 'Bei Proseware, Inc.: ein E-Mail-Routing-Modell muss einem einzelnen Nachrichtentext null, eine oder mehrere Markierungen wie Billing, Refund und Urgent zuweisen. Ein Trainingsdatensatz mit beschrifteten Beispielen ist verfügbar, und die Inferenz ruft `POST /language/analyze-text?api-version=2023-04-01` mit `kind: CustomMultiLabelClassification` auf.' },
      question: { en: 'Which project type should you choose?', de: 'Welchen Projekttyp sollten Sie wählen?' },
      options: [
        { id: 'A', text: { en: 'Multi-label custom text classification', de: 'Multi-Label-benutzerdefinierte Textklassifikation' } },
        { id: 'B', text: { en: 'Single-label custom text classification', de: 'Single-Label-benutzerdefinierte Textklassifikation' } },
        { id: 'C', text: { en: 'Image object detection', de: 'Bild-Objekterkennung' } },
        { id: 'D', text: { en: 'Face identification', de: 'Gesichtsidentifikation' } }
      ],
      correct: ['A'],
      explanation: { en: 'Multi-label classification is the correct pattern when a document can belong to several categories at the same time.', de: 'Die Multi-Label-Klassifikation ist das richtige Muster, wenn ein Dokument gleichzeitig zu mehreren Kategorien gehören kann.' },
      hint: { en: 'One document may need several tags.', de: 'Ein Dokument kann mehrere Tags benötigen.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/overview'
    },
    {
      id: 'ai102-164', type: 'single',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'You must extract domain-specific entities such as policy number, clause type, and account tier that are not handled well by prebuilt categories. Which feature should you use?', de: 'Sie müssen domänenspezifische Entitäten wie Policennummer, Klauseltyp und Kontostufe extrahieren, die von vorgefertigten Kategorien nicht gut abgedeckt werden. Welche Funktion sollten Sie verwenden?' },
      options: [
        { id: 'A', text: { en: 'Custom named entity recognition', de: 'Benutzerdefinierte Named Entity Recognition' } },
        { id: 'B', text: { en: 'Speech synthesis', de: 'Sprachsynthese' } },
        { id: 'C', text: { en: 'Image captions', de: 'Bildunterschriften' } },
        { id: 'D', text: { en: 'Semantic captions', de: 'Semantische Beschriftungen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Custom NER is used when the entity types are specific to your business domain and require labeled training data.', de: 'Custom NER wird verwendet, wenn die Entitätstypen spezifisch für Ihre Geschäftsdomäne sind und beschriftete Trainingsdaten erfordern.' },
      hint: { en: 'The missing entity types are custom to the business.', de: 'Die fehlenden Entitätstypen sind geschäftsspezifisch.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/overview'
    },
    {
      id: 'ai102-165', type: 'multiple',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO actions are part of implementing a custom question answering solution?', de: 'Welche ZWEI Maßnahmen gehören zur Implementierung einer benutzerdefinierten Question-Answering-Lösung?' },
      options: [
        { id: 'A', text: { en: 'Create the project from supported knowledge sources', de: 'Das Projekt aus unterstützten Wissensquellen erstellen' } },
        { id: 'B', text: { en: 'Deploy the project before calling it from the app', de: 'Das Projekt bereitstellen, bevor es aus der App aufgerufen wird' } },
        { id: 'C', text: { en: 'Train a face model', de: 'Ein Gesichtsmodell trainieren' } },
        { id: 'D', text: { en: 'Create a private endpoint for a printer', de: 'Einen privaten Endpunkt für einen Drucker erstellen' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Custom question answering solutions are built from knowledge sources and then deployed for runtime use. The other actions are unrelated.', de: 'Benutzerdefinierte Question-Answering-Lösungen werden aus Wissensquellen aufgebaut und dann für die Laufzeit bereitgestellt. Die anderen Maßnahmen sind nicht relevant.' },
      hint: { en: 'Think build the knowledge project, then publish it.', de: 'Denken Sie daran, das Wissensprojekt zu erstellen und dann zu veröffentlichen.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/question-answering/overview'
    },
    {
      id: 'ai102-166', type: 'scenario',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: { en: 'At Trey Research, an app sends this request to Azure AI Language by calling `POST /language/:analyze-text`:\n`{\n  "kind": "EntityLinking",\n  "analysisInput": { "documents": [{ "id": "1", "text": "Microsoft opened a new office in Paris." }] }\n}`\nThe developer asks what the result adds beyond plain entity extraction.', de: 'Bei Trey Research: eine App sendet diese Anforderung an Azure AI Language, indem sie `POST /language/:analyze-text` aufruft:\n`{\n  "kind": "EntityLinking",\n  "analysisInput": { "documents": [{ "id": "1", "text": "Microsoft opened a new office in Paris." }] }\n}`\nDer Entwickler fragt, was das Ergebnis zusätzlich zur reinen Entitätsextraktion liefert.' },
      question: { en: 'What should you expect?', de: 'Was sollten Sie erwarten?' },
      options: [
        { id: 'A', text: { en: 'Links from detected entities to known reference concepts or IDs', de: 'Verknüpfungen von erkannten Entitäten zu bekannten Referenzkonzepten oder IDs' } },
        { id: 'B', text: { en: 'Object bounding boxes', de: 'Objekt-Bounding-Boxen' } },
        { id: 'C', text: { en: 'Speech output audio files', de: 'Sprachausgabe-Audiodateien' } },
        { id: 'D', text: { en: 'A vector index schema', de: 'Ein Vektorindexschema' } }
      ],
      correct: ['A'],
      explanation: { en: 'Entity linking adds disambiguation by mapping detected names to known concepts and identifiers.', de: 'Entity Linking fügt Disambiguierung hinzu, indem erkannte Namen bekannten Konzepten und Kennungen zugeordnet werden.' },
      hint: { en: 'It is about linking, not just spotting names.', de: 'Es geht um Verknüpfung, nicht nur um das Erkennen von Namen.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/overview'
    },
    {
      id: 'ai102-167', type: 'single',
      domain: { en: 'Implement NLP Solutions', de: 'NLP-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which summarization mode generates new wording instead of only returning sentences from the source?', de: 'Welcher Zusammenfassungsmodus erzeugt neue Formulierungen, anstatt nur Sätze aus der Quelle zurückzugeben?' },
      options: [
        { id: 'A', text: { en: 'Abstractive summarization', de: 'Abstraktive Zusammenfassung' } },
        { id: 'B', text: { en: 'Extractive summarization', de: 'Extraktive Zusammenfassung' } },
        { id: 'C', text: { en: 'Named entity recognition', de: 'Named Entity Recognition' } },
        { id: 'D', text: { en: 'PII detection', de: 'PII-Erkennung' } }
      ],
      correct: ['A'],
      explanation: { en: 'Abstractive summarization can produce shorter wording not copied verbatim from the original text, while extractive summarization returns existing sentences.', de: 'Die abstraktive Zusammenfassung kann kürzere Formulierungen erzeugen, die nicht wörtlich aus dem Originaltext übernommen werden, während die extraktive Zusammenfassung vorhandene Sätze zurückgibt.' },
      hint: { en: 'One mode rewrites, the other selects.', de: 'Ein Modus schreibt um, der andere wählt aus.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/language-service/summarization/overview'
    },
    {
      id: 'ai102-168', type: 'single',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which Azure feature should you configure to send Azure AI resource logs and metrics to a Log Analytics workspace?', de: 'Welche Azure-Funktion sollten Sie konfigurieren, um Protokolle und Metriken einer Azure AI-Ressource an einen Log Analytics-Arbeitsbereich zu senden?' },
      options: [
        { id: 'A', text: { en: 'Diagnostic settings', de: 'Diagnoseeinstellungen' } },
        { id: 'B', text: { en: 'A query key', de: 'Einen Abfrageschlüssel' } },
        { id: 'C', text: { en: 'A face list', de: 'Eine Face-Liste' } },
        { id: 'D', text: { en: 'A synonym map', de: 'Eine Synonymzuordnung' } }
      ],
      correct: ['A'],
      explanation: { en: 'Diagnostic settings route supported logs and metrics from Azure resources to destinations such as Log Analytics. The other options do not provide operational telemetry export.', de: 'Diagnoseeinstellungen leiten unterstützte Protokolle und Metriken aus Azure-Ressourcen an Ziele wie Log Analytics weiter. Die anderen Optionen stellen keinen Export operativer Telemetrie bereit.' },
      hint: { en: 'Think about the Azure feature that forwards platform logs.', de: 'Denken Sie an die Azure-Funktion, die Plattformprotokolle weiterleitet.' },
      reference: 'https://learn.microsoft.com/azure/azure-monitor/overview'
    },
    {
      id: 'ai102-169', type: 'multiple',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO actions are part of a staged access key rotation process for Azure AI services?', de: 'Welche ZWEI Aktionen sind Teil eines gestuften Prozesses zur Rotation von Zugriffsschlüsseln für Azure AI Services?' },
      options: [
        { id: 'A', text: { en: 'Move applications to the secondary key', de: 'Anwendungen auf den sekundären Schlüssel umstellen' } },
        { id: 'B', text: { en: 'Regenerate the primary key after clients switch away from it', de: 'Den primären Schlüssel neu generieren, nachdem Clients ihn nicht mehr verwenden' } },
        { id: 'C', text: { en: 'Email the new key to all developers', de: 'Den neuen Schlüssel an alle Entwickler per E-Mail senden' } },
        { id: 'D', text: { en: 'Commit both keys to source control for backup', de: 'Beide Schlüssel zur Sicherung in die Quellcodeverwaltung einchecken' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Dual keys allow staged rotation. Clients can switch to one key while you regenerate the other, which avoids downtime. Email and source control increase exposure risk.', de: 'Zwei Schlüssel ermöglichen eine gestufte Rotation. Clients können auf einen Schlüssel umschalten, während Sie den anderen neu generieren, wodurch Ausfallzeiten vermieden werden. E-Mail und Quellcodeverwaltung erhöhen das Offenlegungsrisiko.' },
      hint: { en: 'Choose the actions that let one key stay active while the other changes.', de: 'Wählen Sie die Aktionen, bei denen ein Schlüssel aktiv bleibt, während der andere geändert wird.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/authentication'
    },
    {
      id: 'ai102-170', type: 'scenario',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'hard',
      scenario: { en: 'At Proseware, Inc., a Bicep deployment disables public access for an Azure OpenAI resource:\nresource aoai "Microsoft.CognitiveServices/accounts@2023-05-01" = {\n  name: "aoai-prod"\n  kind: "OpenAI"\n  properties: {\n    publicNetworkAccess: "Disabled"\n  }\n}\nVMs in the VNet still cannot resolve the service name to a private IP.', de: 'Bei Proseware, Inc.: eine Bicep-Bereitstellung deaktiviert den öffentlichen Zugriff für eine Azure OpenAI-Ressource:\nresource aoai "Microsoft.CognitiveServices/accounts@2023-05-01" = {\n  name: "aoai-prod"\n  kind: "OpenAI"\n  properties: {\n    publicNetworkAccess: "Disabled"\n  }\n}\nVMs im VNet können den Dienstnamen weiterhin nicht in eine private IP auflösen.' },
      question: { en: 'What should you add?', de: 'Was sollten Sie hinzufügen?' },
      options: [
        { id: 'A', text: { en: 'A private DNS zone linked to the virtual network', de: 'Eine private DNS-Zone, die mit dem virtuellen Netzwerk verknüpft ist' } },
        { id: 'B', text: { en: 'A speech translation configuration', de: 'Eine Speech-Translation-Konfiguration' } },
        { id: 'C', text: { en: 'A custom vision project', de: 'Ein Custom Vision-Projekt' } },
        { id: 'D', text: { en: 'A knowledge store projection', de: 'Eine Knowledge-Store-Projektion' } }
      ],
      correct: ['A'],
      explanation: { en: 'Private connectivity also needs name resolution to the private endpoint address. A private DNS zone linked to the VNet is the usual Azure pattern.', de: 'Private Konnektivität benötigt auch Namensauflösung auf die Adresse des privaten Endpunkts. Eine mit dem VNet verknüpfte private DNS-Zone ist das übliche Azure-Muster.' },
      hint: { en: 'The network path is private, but DNS still must resolve correctly.', de: 'Der Netzwerkpfad ist privat, aber DNS muss weiterhin korrekt auflösen.' },
      reference: 'https://learn.microsoft.com/azure/private-link/private-endpoint-overview'
    },
    {
      id: 'ai102-171', type: 'single',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'You need separate billing and quota boundaries for Speech and Language workloads. What should you create?', de: 'Sie benötigen getrennte Abrechnungs- und Quotengrenzen für Speech- und Language-Workloads. Was sollten Sie erstellen?' },
      options: [
        { id: 'A', text: { en: 'Separate single-service resources', de: 'Getrennte Single-Service-Ressourcen' } },
        { id: 'B', text: { en: 'One storage account', de: 'Ein Storage-Konto' } },
        { id: 'C', text: { en: 'One synonym map', de: 'Eine Synonymzuordnung' } },
        { id: 'D', text: { en: 'One Face person group', de: 'Eine Face-Personengruppe' } }
      ],
      correct: ['A'],
      explanation: { en: 'Separate single-service resources give independent billing, quotas, and lifecycle management for each workload. A shared multi-service resource does not separate those boundaries.', de: 'Getrennte Single-Service-Ressourcen bieten unabhängige Abrechnung, Quoten und Lebenszyklusverwaltung für jeden Workload. Eine gemeinsame Multi-Service-Ressource trennt diese Grenzen nicht.' },
      hint: { en: 'The requirement is independent quotas and billing, not shared access.', de: 'Die Anforderung betrifft unabhängige Quoten und Abrechnung, nicht gemeinsamen Zugriff.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/multi-service-resource'
    },
    {
      id: 'ai102-172', type: 'single',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which HTTP header is commonly used for key-based authentication to Azure AI services REST endpoints?', de: 'Welcher HTTP-Header wird üblicherweise für die schlüsselbasierte Authentifizierung an Azure AI Services-REST-Endpunkten verwendet?' },
      options: [
        { id: 'A', text: { en: 'Ocp-Apim-Subscription-Key', de: 'Ocp-Apim-Subscription-Key' } },
        { id: 'B', text: { en: 'If-Match', de: 'If-Match' } },
        { id: 'C', text: { en: 'Content-Range', de: 'Content-Range' } },
        { id: 'D', text: { en: 'x-ms-vector-key', de: 'x-ms-vector-key' } }
      ],
      correct: ['A'],
      explanation: { en: 'Azure AI services commonly accept the subscription key in the Ocp-Apim-Subscription-Key header for key-based REST calls.', de: 'Azure AI Services akzeptieren den Zugriffsschlüssel bei schlüsselbasierten REST-Aufrufen üblicherweise im Header Ocp-Apim-Subscription-Key.' },
      hint: { en: 'Look for the standard AI services subscription key header.', de: 'Suchen Sie nach dem Standardheader für den Azure AI Services-Schlüssel.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/authentication'
    },
    {
      id: 'ai102-173', type: 'scenario',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'medium',
      scenario: { en: 'At Trey Research, an ARM template sets this property on an Azure AI services resource by sending `PUT /subscriptions/.../providers/Microsoft.CognitiveServices/accounts/...` with:\n`"disableLocalAuth": true`\nThe security team wants to block shared key usage from applications.', de: 'Bei Trey Research: eine ARM-Vorlage setzt diese Eigenschaft für eine Azure AI Services-Ressource, indem sie `PUT /subscriptions/.../providers/Microsoft.CognitiveServices/accounts/...` mit Folgendem sendet:\n`"disableLocalAuth": true`\nDas Sicherheitsteam möchte die Verwendung gemeinsamer Schlüssel durch Anwendungen blockieren.' },
      question: { en: 'Which authentication method should clients use after this change?', de: 'Welche Authentifizierungsmethode sollten Clients nach dieser Änderung verwenden?' },
      options: [
        { id: 'A', text: { en: 'Microsoft Entra ID tokens with Azure RBAC', de: 'Microsoft Entra ID-Token mit Azure RBAC' } },
        { id: 'B', text: { en: 'Anonymous public access', de: 'Anonymer öffentlicher Zugriff' } },
        { id: 'C', text: { en: 'A Custom Vision training key', de: 'Ein Custom Vision-Trainingsschlüssel' } },
        { id: 'D', text: { en: 'A storage account access key', de: 'Ein Storage-Konto-Zugriffsschlüssel' } }
      ],
      correct: ['A'],
      explanation: { en: 'When local key authentication is disabled, clients must authenticate with Microsoft Entra ID rather than shared keys.', de: 'Wenn die lokale Schlüsselauthentifizierung deaktiviert ist, müssen Clients sich mit Microsoft Entra ID statt mit gemeinsamen Schlüsseln authentifizieren.' },
      hint: { en: 'Shared keys are disabled, so think token-based identity.', de: 'Gemeinsame Schlüssel sind deaktiviert, denken Sie also an tokenbasierte Identität.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/authentication'
    },
    {
      id: 'ai102-174', type: 'multiple',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Which TWO values are required for a basic key-based REST call to an Azure AI service?', de: 'Welche ZWEI Werte werden für einen grundlegenden schlüsselbasierten REST-Aufruf an einen Azure AI-Dienst benötigt?' },
      options: [
        { id: 'A', text: { en: 'The resource endpoint URI', de: 'Die Endpunkt-URI der Ressource' } },
        { id: 'B', text: { en: 'A valid access key', de: 'Ein gültiger Zugriffsschlüssel' } },
        { id: 'C', text: { en: 'A Face person group ID', de: 'Eine Face-Personengruppen-ID' } },
        { id: 'D', text: { en: 'A semantic configuration name', de: 'Ein Name für eine semantische Konfiguration' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Key-based REST calls need the service endpoint and a valid key. The other values belong to unrelated workloads.', de: 'Schlüsselbasierte REST-Aufrufe benötigen den Dienstendpunkt und einen gültigen Schlüssel. Die anderen Werte gehören zu nicht verwandten Workloads.' },
      hint: { en: 'Think address plus credential.', de: 'Denken Sie an Adresse plus Anmeldeinformation.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/authentication'
    },
    {
      id: 'ai102-175', type: 'single',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which Azure service should you use as the central store for secrets, keys, and certificates used by an AI application?', de: 'Welchen Azure-Dienst sollten Sie als zentralen Speicher für Geheimnisse, Schlüssel und Zertifikate einer KI-Anwendung verwenden?' },
      options: [
        { id: 'A', text: { en: 'Azure Key Vault', de: 'Azure Key Vault' } },
        { id: 'B', text: { en: 'Azure AI Search', de: 'Azure AI Search' } },
        { id: 'C', text: { en: 'Azure AI Translator', de: 'Azure AI Translator' } },
        { id: 'D', text: { en: 'Azure Content Safety', de: 'Azure Content Safety' } }
      ],
      correct: ['A'],
      explanation: { en: 'Azure Key Vault is the Azure service for centralized secret, key, and certificate management. The other services solve AI workloads rather than secret storage.', de: 'Azure Key Vault ist der Azure-Dienst für die zentrale Verwaltung von Geheimnissen, Schlüsseln und Zertifikaten. Die anderen Dienste lösen KI-Workloads und nicht die Speicherung von Geheimnissen.' },
      hint: { en: 'Choose the Azure secret-management service.', de: 'Wählen Sie den Azure-Dienst zur Geheimnisverwaltung.' },
      reference: 'https://learn.microsoft.com/azure/key-vault/general/overview'
    },
    {
      id: 'ai102-176', type: 'scenario',
      domain: { en: 'Plan and Manage an Azure AI Solution', de: 'Azure KI-Lösung planen und verwalten' }, difficulty: 'hard',
      scenario: { en: 'At Proseware, Inc., after a private endpoint is enabled and public network access is disabled, an app still calls this URL:\n`POST https://westeurope.api.cognitive.microsoft.com/vision/v3.2/analyze`\nRequests now fail from inside the private network.', de: 'Bei Proseware, Inc.: nachdem ein privater Endpunkt aktiviert und der öffentliche Netzwerkzugriff deaktiviert wurde, ruft eine App weiterhin diese URL auf:\n`POST https://westeurope.api.cognitive.microsoft.com/vision/v3.2/analyze`\nAnforderungen schlagen jetzt innerhalb des privaten Netzwerks fehl.' },
      question: { en: 'What should the application use instead?', de: 'Was sollte die Anwendung stattdessen verwenden?' },
      options: [
        { id: 'A', text: { en: 'The resource-specific custom subdomain endpoint that resolves through the private endpoint', de: 'Den ressourcenspezifischen Endpunkt mit benutzerdefinierter Subdomäne, der über den privaten Endpunkt aufgelöst wird' } },
        { id: 'B', text: { en: 'An anonymous local file path', de: 'Einen anonymen lokalen Dateipfad' } },
        { id: 'C', text: { en: 'A search index name only', de: 'Nur einen Suchindexnamen' } },
        { id: 'D', text: { en: 'A Speech SDK voice name', de: 'Einen Voice-Namen des Speech SDK' } }
      ],
      correct: ['A'],
      explanation: { en: 'Private endpoint scenarios rely on the resource-specific endpoint and private DNS resolution. Continuing to call the public regional endpoint breaks private-only access.', de: 'Szenarien mit privaten Endpunkten basieren auf dem ressourcenspezifischen Endpunkt und privater DNS-Auflösung. Wenn weiterhin der öffentliche regionale Endpunkt aufgerufen wird, funktioniert rein privater Zugriff nicht.' },
      hint: { en: 'The URL must match the privately resolved resource endpoint.', de: 'Die URL muss zum privat aufgelösten Ressourcenendpunkt passen.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/authentication'
    },
    {
      id: 'ai102-177', type: 'single',
      domain: { en: 'Implement Knowledge Mining and Document Intelligence', de: 'Knowledge Mining und Dokumentenintelligenz implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'What does hybrid search combine in Azure AI Search?', de: 'Was kombiniert die hybride Suche in Azure AI Search?' },
      options: [
        { id: 'A', text: { en: 'Vector search and keyword search', de: 'Vektorsuche und Stichwortsuche' } },
        { id: 'B', text: { en: 'Speech synthesis and OCR', de: 'Sprachsynthese und OCR' } },
        { id: 'C', text: { en: 'Face verification and translation', de: 'Gesichtsverifizierung und Übersetzung' } },
        { id: 'D', text: { en: 'RBAC and Key Vault', de: 'RBAC und Key Vault' } }
      ],
      correct: ['A'],
      explanation: { en: 'Hybrid search combines lexical keyword matching with vector similarity to improve retrieval quality.', de: 'Die hybride Suche kombiniert lexikale Stichwortübereinstimmung mit Vektorähnlichkeit, um die Retrieval-Qualität zu verbessern.' },
      hint: { en: 'One method is lexical, the other is embedding-based.', de: 'Eine Methode ist lexikalisch, die andere embeddingbasiert.' },
      reference: 'https://learn.microsoft.com/azure/search/vector-search-overview'
    },
    {
      id: 'ai102-178', type: 'multiple',
      domain: { en: 'Implement Knowledge Mining and Document Intelligence', de: 'Knowledge Mining und Dokumentenintelligenz implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO design choices usually improve retrieval quality for a RAG solution that uses Azure AI Search?', de: 'Welche ZWEI Designentscheidungen verbessern üblicherweise die Retrieval-Qualität für eine RAG-Lösung mit Azure AI Search?' },
      options: [
        { id: 'A', text: { en: 'Chunk large documents into smaller passages', de: 'Große Dokumente in kleinere Passagen aufteilen' } },
        { id: 'B', text: { en: 'Use semantic ranking when available', de: 'Semantic Ranking verwenden, wenn verfügbar' } },
        { id: 'C', text: { en: 'Disable all metadata fields', de: 'Alle Metadatenfelder deaktivieren' } },
        { id: 'D', text: { en: 'Store embeddings in a README file', de: 'Embeddings in einer README-Datei speichern' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Chunking improves passage-level retrieval, and semantic ranking can improve the final ordering of relevant results. The other options reduce usefulness rather than improve it.', de: 'Chunking verbessert das Retrieval auf Passageebene, und Semantic Ranking kann die endgültige Reihenfolge relevanter Ergebnisse verbessern. Die anderen Optionen verringern den Nutzen statt ihn zu erhöhen.' },
      hint: { en: 'Think better passages and better ranking.', de: 'Denken Sie an bessere Passagen und besseres Ranking.' },
      reference: 'https://learn.microsoft.com/azure/search/semantic-search-overview'
    },
    {
      id: 'ai102-179', type: 'scenario',
      domain: { en: 'Implement Knowledge Mining and Document Intelligence', de: 'Knowledge Mining und Dokumentenintelligenz implementieren' }, difficulty: 'medium',
      scenario: { en: 'At Trey Research, a finance app sends a receipt image URL to Document Intelligence by calling `beginAnalyzeDocument(\'prebuilt-receipt\', receiptUrl)` or `POST /documentintelligence/documentModels/prebuilt-receipt:analyze`. It wants merchant name, total, and transaction date returned as structured fields.', de: 'Bei Trey Research: eine Finanz-App sendet eine URL zu einem Belegbild an Document Intelligence, indem sie `beginAnalyzeDocument(\'prebuilt-receipt\', receiptUrl)` oder `POST /documentintelligence/documentModels/prebuilt-receipt:analyze` aufruft. Sie möchte Händlername, Gesamtbetrag und Transaktionsdatum als strukturierte Felder zurückerhalten.' },
      question: { en: 'Which model should the app use?', de: 'Welches Modell sollte die App verwenden?' },
      options: [
        { id: 'A', text: { en: 'Prebuilt receipt', de: 'Vorgefertigtes Belegmodell' } },
        { id: 'B', text: { en: 'Prebuilt invoice', de: 'Vorgefertigtes Rechnungsmodell' } },
        { id: 'C', text: { en: 'Face identify', de: 'Face Identify' } },
        { id: 'D', text: { en: 'Semantic ranker', de: 'Semantic Ranker' } }
      ],
      correct: ['A'],
      explanation: { en: 'The prebuilt receipt model is optimized for receipt fields such as merchant, total, and date.', de: 'Das vorgefertigte Belegmodell ist für Belegfelder wie Händler, Gesamtbetrag und Datum optimiert.' },
      hint: { en: 'Pick the model named for receipts.', de: 'Wählen Sie das Modell, das für Belege benannt ist.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/document-intelligence/model-overview?view=doc-intel-4.0.0'
    },
    {
      id: 'ai102-180', type: 'single',
      domain: { en: 'Implement Knowledge Mining and Document Intelligence', de: 'Knowledge Mining und Dokumentenintelligenz implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'What is the purpose of an indexer schedule in Azure AI Search?', de: 'Wozu dient ein Indexer-Zeitplan in Azure AI Search?' },
      options: [
        { id: 'A', text: { en: 'To run ingestion on a recurring basis', de: 'Die Aufnahme regelmäßig auszuführen' } },
        { id: 'B', text: { en: 'To generate speech audio', de: 'Sprachaudio zu erzeugen' } },
        { id: 'C', text: { en: 'To train a face model', de: 'Ein Gesichtsmodell zu trainieren' } },
        { id: 'D', text: { en: 'To create a private endpoint automatically in another subscription', de: 'Automatisch einen privaten Endpunkt in einem anderen Abonnement zu erstellen' } }
      ],
      correct: ['A'],
      explanation: { en: 'An indexer schedule lets Azure AI Search refresh or ingest content on a defined cadence.', de: 'Ein Indexer-Zeitplan ermöglicht es Azure AI Search, Inhalte in einem festgelegten Rhythmus zu aktualisieren oder aufzunehmen.' },
      hint: { en: 'It is about when the indexer runs.', de: 'Es geht darum, wann der Indexer ausgeführt wird.' },
      reference: 'https://learn.microsoft.com/azure/search/search-indexer-overview'
    },
    {
      id: 'ai102-181', type: 'multiple',
      domain: { en: 'Implement Knowledge Mining and Document Intelligence', de: 'Knowledge Mining und Dokumentenintelligenz implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO statements about integrated vectorization in Azure AI Search are correct?', de: 'Welche ZWEI Aussagen über integrierte Vektorisierung in Azure AI Search sind korrekt?' },
      options: [
        { id: 'A', text: { en: 'It can generate embeddings during indexing', de: 'Sie kann während der Indizierung Embeddings erzeugen' } },
        { id: 'B', text: { en: 'It can use a vectorizer to convert text queries into vectors at query time', de: 'Sie kann einen Vectorizer verwenden, um Textabfragen zur Abfragezeit in Vektoren umzuwandeln' } },
        { id: 'C', text: { en: 'It replaces the need for an index schema', de: 'Sie ersetzt die Notwendigkeit eines Indexschemas' } },
        { id: 'D', text: { en: 'It requires Face API enrollment', de: 'Sie erfordert eine Face API-Registrierung' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Integrated vectorization supports embedding generation during indexing and query-time text vectorization with vectorizers. It does not remove core search schema requirements.', de: 'Die integrierte Vektorisierung unterstützt die Erzeugung von Embeddings während der Indizierung und die Textvektorisierung zur Abfragezeit mit Vectorizern. Sie beseitigt nicht die grundlegenden Anforderungen an ein Suchschema.' },
      hint: { en: 'Think index-time vectors and query-time vectors.', de: 'Denken Sie an Vektoren zur Indexierungszeit und zur Abfragezeit.' },
      reference: 'https://learn.microsoft.com/azure/search/vector-search-integrated-vectorization'
    },
    {
      id: 'ai102-182', type: 'scenario',
      domain: { en: 'Implement Knowledge Mining and Document Intelligence', de: 'Knowledge Mining und Dokumentenintelligenz implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Proseware, Inc., a legal team receives a mixed set of PDFs that can be contracts, invoices, or receipts. The first processing step will call `beginClassifyDocument(classifierId, file)` or `POST /documentintelligence/documentClassifiers/{classifierId}:analyze` to classify each document type before sending it to a downstream extraction pipeline.', de: 'Bei Proseware, Inc.: ein Rechtsteam erhält einen gemischten Satz von PDFs, die Verträge, Rechnungen oder Belege sein können. Der erste Verarbeitungsschritt ruft `beginClassifyDocument(classifierId, file)` oder `POST /documentintelligence/documentClassifiers/{classifierId}:analyze` auf, um jeden Dokumenttyp zu klassifizieren, bevor er an eine nachgelagerte Extraktionspipeline gesendet wird.' },
      question: { en: 'Which Document Intelligence capability should you use?', de: 'Welche Funktion von Document Intelligence sollten Sie verwenden?' },
      options: [
        { id: 'A', text: { en: 'A document classification model', de: 'Ein Dokumentklassifikationsmodell' } },
        { id: 'B', text: { en: 'Speech translation', de: 'Sprachübersetzung' } },
        { id: 'C', text: { en: 'Face verification', de: 'Gesichtsverifizierung' } },
        { id: 'D', text: { en: 'Prompt Shields', de: 'Prompt Shields' } }
      ],
      correct: ['A'],
      explanation: { en: 'Document classification models are built for sorting files into document types before specialized extraction logic runs.', de: 'Dokumentenklassifikationsmodelle sind dafür ausgelegt, Dateien in Dokumenttypen einzuordnen, bevor spezialisierte Extraktionslogik ausgeführt wird.' },
      hint: { en: 'The first task is classify, not extract fields yet.', de: 'Die erste Aufgabe ist die Klassifizierung, noch nicht die Feldextraktion.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/document-intelligence/overview?view=doc-intel-4.0.0'
    },
    {
      id: 'ai102-183', type: 'single',
      domain: { en: 'Implement Knowledge Mining and Document Intelligence', de: 'Knowledge Mining und Dokumentenintelligenz implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'For a grounded chat experience, what should you pass from Azure AI Search into the prompt sent to the language model?', de: 'Was sollten Sie für ein geerdetes Chat-Erlebnis aus Azure AI Search in den Prompt aufnehmen, der an das Sprachmodell gesendet wird?' },
      options: [
        { id: 'A', text: { en: 'Relevant retrieved passages or documents', de: 'Relevante abgerufene Passagen oder Dokumente' } },
        { id: 'B', text: { en: 'Only the search service name', de: 'Nur den Namen des Suchdiensts' } },
        { id: 'C', text: { en: 'Only the storage account SKU', de: 'Nur die SKU des Storage-Kontos' } },
        { id: 'D', text: { en: 'Only the indexer schedule', de: 'Nur den Indexer-Zeitplan' } }
      ],
      correct: ['A'],
      explanation: { en: 'Grounding works by passing retrieved content into the model context so the answer can be based on relevant source material.', de: 'Grounding funktioniert, indem abgerufene Inhalte in den Modellkontext aufgenommen werden, sodass die Antwort auf relevantem Quellmaterial basiert.' },
      hint: { en: 'The model needs the actual source content.', de: 'Das Modell benötigt den tatsächlichen Quellinhalt.' },
      reference: 'https://learn.microsoft.com/azure/search/vector-search-overview'
    },
    {
      id: 'ai102-184', type: 'multiple',
      domain: { en: 'Implement Knowledge Mining and Document Intelligence', de: 'Knowledge Mining und Dokumentenintelligenz implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO semantic query features can Azure AI Search return to enrich the search experience?', de: 'Welche ZWEI semantischen Abfragefunktionen kann Azure AI Search zurückgeben, um das Sucherlebnis zu verbessern?' },
      options: [
        { id: 'A', text: { en: 'Semantic captions', de: 'Semantische Beschriftungen' } },
        { id: 'B', text: { en: 'Semantic answers', de: 'Semantische Antworten' } },
        { id: 'C', text: { en: 'Speech voices', de: 'Sprachstimmen' } },
        { id: 'D', text: { en: 'Face rectangles', de: 'Gesichtsrechtecke' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Semantic captions and semantic answers are Azure AI Search features that provide richer, more user-friendly semantic output.', de: 'Semantische Beschriftungen und semantische Antworten sind Funktionen von Azure AI Search, die reichhaltigere und benutzerfreundlichere semantische Ausgaben liefern.' },
      hint: { en: 'Choose the semantic response enrichments.', de: 'Wählen Sie die semantischen Antwortanreicherungen.' },
      reference: 'https://learn.microsoft.com/azure/search/semantic-search-overview'
    },
    {
      id: 'ai102-185', type: 'scenario',
      domain: { en: 'Implement Knowledge Mining and Document Intelligence', de: 'Knowledge Mining und Dokumentenintelligenz implementieren' }, difficulty: 'hard',
      scenario: { en: 'You work for Trey Research. The app sends text, so the service must vectorize it.', de: 'Sie arbeiten für Trey Research. Die App sendet Text, daher muss der Dienst ihn vektorisieren.' },
      question: { en: 'What must you configure?', de: 'Was müssen Sie konfigurieren?' },
      options: [
        { id: 'A', text: { en: 'A vectorizer for query-time vectorization', de: 'Einen Vectorizer für die Vektorisierung zur Abfragezeit' } },
        { id: 'B', text: { en: 'A Face person group', de: 'Eine Face-Personengruppe' } },
        { id: 'C', text: { en: 'A speech translation endpoint', de: 'Einen Sprachübersetzungsendpunkt' } },
        { id: 'D', text: { en: 'A storage lifecycle policy', de: 'Eine Storage-Lifecycle-Richtlinie' } }
      ],
      correct: ['A'],
      explanation: { en: 'Query-time vectorization requires a configured vectorizer so Azure AI Search can turn raw text queries into vectors automatically.', de: 'Die Vektorisierung zur Abfragezeit erfordert einen konfigurierten Vectorizer, damit Azure AI Search rohe Textabfragen automatisch in Vektoren umwandeln kann.' },
      hint: { en: 'The app sends text, so the service must vectorize it.', de: 'Die App sendet Text, daher muss der Dienst ihn vektorisieren.' },
      reference: 'https://learn.microsoft.com/azure/search/vector-search-integrated-vectorization'
    },
    {
      id: 'ai102-186', type: 'single',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'Before your application can call a GPT model in Azure OpenAI, what must exist in the Azure OpenAI resource?', de: 'Bevor Ihre Anwendung ein GPT-Modell in Azure OpenAI aufrufen kann, was muss in der Azure OpenAI-Ressource vorhanden sein?' },
      options: [
        { id: 'A', text: { en: 'A model deployment', de: 'Eine Modellbereitstellung' } },
        { id: 'B', text: { en: 'A Face person group', de: 'Eine Face-Personengruppe' } },
        { id: 'C', text: { en: 'A custom vision tag set', de: 'Ein benutzerdefinierter Vision-Tag-Satz' } },
        { id: 'D', text: { en: 'A semantic caption file', de: 'Eine Datei mit semantischen Beschriftungen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Azure OpenAI applications call deployments, not raw model names alone. A model must be deployed in the resource first.', de: 'Azure OpenAI-Anwendungen rufen Bereitstellungen auf, nicht nur rohe Modellnamen. Ein Modell muss zuerst in der Ressource bereitgestellt werden.' },
      hint: { en: 'Think model plus deployment name.', de: 'Denken Sie an Modell plus Bereitstellungsname.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/openai/overview'
    },
    {
      id: 'ai102-187', type: 'multiple',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO components are core to a retrieval-augmented generation solution on Azure?', de: 'Welche ZWEI Komponenten sind zentral für eine Retrieval-Augmented-Generation-Lösung auf Azure?' },
      options: [
        { id: 'A', text: { en: 'Embeddings for semantic similarity', de: 'Embeddings für semantische Ähnlichkeit' } },
        { id: 'B', text: { en: 'A retrieval layer such as Azure AI Search', de: 'Eine Retrieval-Schicht wie Azure AI Search' } },
        { id: 'C', text: { en: 'Face verification', de: 'Gesichtsverifizierung' } },
        { id: 'D', text: { en: 'A VM wallpaper setting', de: 'Eine VM-Hintergrundeinstellung' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'RAG combines retrieval with a language model. Embeddings and a search or retrieval layer are fundamental parts of that architecture.', de: 'RAG kombiniert Retrieval mit einem Sprachmodell. Embeddings und eine Such- oder Retrieval-Schicht sind grundlegende Bestandteile dieser Architektur.' },
      hint: { en: 'One piece finds relevant content, the other represents meaning.', de: 'Ein Bestandteil findet relevante Inhalte, der andere repräsentiert Bedeutung.' },
      reference: 'https://learn.microsoft.com/azure/architecture/ai-ml/guide/rag/rag-solution-design-and-evaluation-guide'
    },
    {
      id: 'ai102-188', type: 'scenario',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Trey Research, an app calls Azure OpenAI with `POST /openai/deployments/{deployment}/chat/completions` and this request:\n`{\n  "messages": [...],\n  "temperature": 1.2\n}`\nThe product owner wants more deterministic answers for the same prompt.', de: 'Bei Trey Research: eine App ruft Azure OpenAI mit `POST /openai/deployments/{deployment}/chat/completions` und dieser Anforderung auf:\n`{\n  "messages": [...],\n  "temperature": 1.2\n}`\nDer Product Owner möchte deterministischere Antworten für denselben Prompt.' },
      question: { en: 'What should you change?', de: 'Was sollten Sie ändern?' },
      options: [
        { id: 'A', text: { en: 'Lower the temperature', de: 'Die Temperatur senken' } },
        { id: 'B', text: { en: 'Increase image resolution', de: 'Die Bildauflösung erhöhen' } },
        { id: 'C', text: { en: 'Add a Face API person group', de: 'Eine Face API-Personengruppe hinzufügen' } },
        { id: 'D', text: { en: 'Disable HTTPS', de: 'HTTPS deaktivieren' } }
      ],
      correct: ['A'],
      explanation: { en: 'Lower temperature generally reduces randomness and makes responses more deterministic for repeated prompts.', de: 'Eine niedrigere Temperatur reduziert im Allgemeinen die Zufälligkeit und macht Antworten bei wiederholten Prompts deterministischer.' },
      hint: { en: 'The knob controls randomness.', de: 'Dieser Parameter steuert die Zufälligkeit.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/openai/concepts/prompt-engineering'
    },
    {
      id: 'ai102-189', type: 'single',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which type of Azure OpenAI deployment should you use when you need vectors for semantic search?', de: 'Welchen Typ einer Azure OpenAI-Bereitstellung sollten Sie verwenden, wenn Sie Vektoren für die semantische Suche benötigen?' },
      options: [
        { id: 'A', text: { en: 'An embeddings model deployment', de: 'Eine Embeddings-Modellbereitstellung' } },
        { id: 'B', text: { en: 'A speech translation deployment', de: 'Eine Sprachübersetzungsbereitstellung' } },
        { id: 'C', text: { en: 'A Face verification deployment', de: 'Eine Face-Verify-Bereitstellung' } },
        { id: 'D', text: { en: 'A semantic ranker deployment', de: 'Eine Semantic-Ranker-Bereitstellung' } }
      ],
      correct: ['A'],
      explanation: { en: 'Embeddings models generate vector representations of text that can be stored and searched for semantic similarity.', de: 'Embeddings-Modelle erzeugen Vektordarstellungen von Text, die gespeichert und für semantische Ähnlichkeit durchsucht werden können.' },
      hint: { en: 'You need vectors, not chat completions.', de: 'Sie benötigen Vektoren, keine Chat-Completion.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/openai/concepts/understand-embeddings'
    },
    {
      id: 'ai102-190', type: 'scenario',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'medium',
      scenario: { en: 'At Proseware, Inc., a Semantic Kernel app registers a plugin method:\n[KernelFunction]\npublic string GetOrderStatus(string orderId) => ...\nand configures `ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions`. During chat, the model chooses to call this function automatically.', de: 'Bei Proseware, Inc.: eine Semantic-Kernel-App registriert eine Plugin-Methode:\n[KernelFunction]\npublic string GetOrderStatus(string orderId) => ...\nund konfiguriert `ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions`. Während des Chats entscheidet das Modell, diese Funktion automatisch aufzurufen.' },
      question: { en: 'What capability is being used?', de: 'Welche Funktionalität wird verwendet?' },
      options: [
        { id: 'A', text: { en: 'Plugin or function calling orchestration', de: 'Plugin- oder Function-Calling-Orchestrierung' } },
        { id: 'B', text: { en: 'OCR layout extraction', de: 'OCR-Layout-Extraktion' } },
        { id: 'C', text: { en: 'Face identification', de: 'Gesichtsidentifikation' } },
        { id: 'D', text: { en: 'Semantic ranking', de: 'Semantische Rangfolge' } }
      ],
      correct: ['A'],
      explanation: { en: 'Semantic Kernel can expose plugin functions to the model so it can call tools or business logic during orchestration.', de: 'Semantic Kernel kann Plugin-Funktionen dem Modell verfügbar machen, damit es während der Orchestrierung Tools oder Geschäftslogik aufrufen kann.' },
      hint: { en: 'The model is invoking an external function.', de: 'Das Modell ruft eine externe Funktion auf.' },
      reference: 'https://learn.microsoft.com/semantic-kernel/overview/'
    },
    {
      id: 'ai102-191', type: 'multiple',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO practices help reduce hallucinations in a generative AI application?', de: 'Welche ZWEI Vorgehensweisen helfen, Halluzinationen in einer generativen KI-Anwendung zu reduzieren?' },
      options: [
        { id: 'A', text: { en: 'Ground the model with retrieved source content', de: 'Das Modell mit abgerufenen Quellinhalten erden' } },
        { id: 'B', text: { en: 'Instruct the model to say when the answer is not in the provided sources', de: 'Das Modell anweisen, anzugeben, wenn die Antwort nicht in den bereitgestellten Quellen enthalten ist' } },
        { id: 'C', text: { en: 'Remove all retrieval and rely only on model memory', de: 'Jegliches Retrieval entfernen und sich nur auf das Modellgedächtnis verlassen' } },
        { id: 'D', text: { en: 'Disable citations and source tracking', de: 'Zitate und Quellenverfolgung deaktivieren' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Grounding with trusted sources and giving explicit instructions for uncertainty handling both reduce unsupported responses.', de: 'Grounding mit vertrauenswürdigen Quellen und explizite Anweisungen zum Umgang mit Unsicherheit verringern beide unbelegte Antworten.' },
      hint: { en: 'Use sources and constrain the model behavior.', de: 'Nutzen Sie Quellen und begrenzen Sie das Modellverhalten.' },
      reference: 'https://learn.microsoft.com/azure/architecture/ai-ml/guide/rag/rag-solution-design-and-evaluation-guide'
    },
    {
      id: 'ai102-192', type: 'single',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'What is the main purpose of a system message in a chat completion request?', de: 'Was ist der Hauptzweck einer Systemnachricht in einer Chat-Completion-Anforderung?' },
      options: [
        { id: 'A', text: { en: 'To set high-level behavior and instructions for the assistant', de: 'Das Verhalten und die Anweisungen auf hoher Ebene für den Assistenten festzulegen' } },
        { id: 'B', text: { en: 'To upload an image for OCR', de: 'Ein Bild für OCR hochzuladen' } },
        { id: 'C', text: { en: 'To create an Azure resource group', de: 'Eine Azure-Ressourcengruppe zu erstellen' } },
        { id: 'D', text: { en: 'To rotate API keys', de: 'API-Schlüssel zu rotieren' } }
      ],
      correct: ['A'],
      explanation: { en: 'The system message provides overarching instructions, role definition, and constraints that steer the assistant behavior.', de: 'Die Systemnachricht liefert übergreifende Anweisungen, Rollendefinition und Einschränkungen, die das Verhalten des Assistenten steuern.' },
      hint: { en: 'It sets the assistant role and rules.', de: 'Sie legt Rolle und Regeln des Assistenten fest.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/openai/concepts/prompt-engineering'
    },
    {
      id: 'ai102-193', type: 'scenario',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'A team at Proseware, Inc. wants a chat app that uses Azure OpenAI with Azure AI Search and returns answers with citations to the indexed documents. They want to minimize custom orchestration code and are considering a request like `POST /openai/deployments/{deployment}/chat/completions` with `data_sources: [{ type: \"azure_search\" }]`.', de: 'Ein Team bei Proseware, Inc. möchte eine Chat-App, die Azure OpenAI mit Azure AI Search verwendet und Antworten mit Zitaten zu den indizierten Dokumenten zurückgibt. Es möchte benutzerdefinierten Orchestrierungscode minimieren und erwägt eine Anforderung wie `POST /openai/deployments/{deployment}/chat/completions` mit `data_sources: [{ type: \"azure_search\" }]`.' },
      question: { en: 'Which approach is the best fit?', de: 'Welcher Ansatz ist am besten geeignet?' },
      options: [
        { id: 'A', text: { en: 'Use Azure OpenAI On Your Data with Azure AI Search', de: 'Azure OpenAI On Your Data mit Azure AI Search verwenden' } },
        { id: 'B', text: { en: 'Replace the search layer with Face API', de: 'Die Suchschicht durch die Face API ersetzen' } },
        { id: 'C', text: { en: 'Store documents only in local browser storage', de: 'Dokumente nur im lokalen Browser-Speicher speichern' } },
        { id: 'D', text: { en: 'Disable grounding and use only a system message', de: 'Grounding deaktivieren und nur eine Systemnachricht verwenden' } }
      ],
      correct: ['A'],
      explanation: { en: 'Azure OpenAI On Your Data integrates retrieval and grounded response generation, including citation-style experiences, with less custom orchestration.', de: 'Azure OpenAI On Your Data integriert Retrieval und geerdete Antwortgenerierung, einschließlich zitationsähnlicher Erfahrungen, mit weniger benutzerdefinierter Orchestrierung.' },
      hint: { en: 'The requirement explicitly pairs Azure OpenAI and Azure AI Search.', de: 'Die Anforderung kombiniert ausdrücklich Azure OpenAI und Azure AI Search.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/openai/concepts/use-your-data'
    },
    {
      id: 'ai102-194', type: 'single',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'If an Azure OpenAI response is blocked by content filtering, how should an application typically react?', de: 'Wenn eine Azure OpenAI-Antwort durch Inhaltsfilterung blockiert wird, wie sollte eine Anwendung typischerweise reagieren?' },
      options: [
        { id: 'A', text: { en: 'Handle the blocked response and show a safe fallback message', de: 'Die blockierte Antwort behandeln und eine sichere Fallback-Nachricht anzeigen' } },
        { id: 'B', text: { en: 'Ignore the filter result and display the blocked content', de: 'Das Filterergebnis ignorieren und den blockierten Inhalt anzeigen' } },
        { id: 'C', text: { en: 'Disable HTTPS and retry', de: 'HTTPS deaktivieren und erneut versuchen' } },
        { id: 'D', text: { en: 'Switch to OCR', de: 'Zu OCR wechseln' } }
      ],
      correct: ['A'],
      explanation: { en: 'Applications should detect filtered responses and substitute a safe user experience, such as an error message or alternate flow.', de: 'Anwendungen sollten gefilterte Antworten erkennen und eine sichere Benutzererfahrung bereitstellen, etwa eine Fehlermeldung oder einen alternativen Ablauf.' },
      hint: { en: 'Do not surface blocked output.', de: 'Zeigen Sie blockierte Ausgaben nicht an.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/openai/concepts/content-filter'
    },
    {
      id: 'ai102-195', type: 'multiple',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which TWO statements about tokens are correct in Azure OpenAI applications?', de: 'Welche ZWEI Aussagen über Token sind in Azure OpenAI-Anwendungen korrekt?' },
      options: [
        { id: 'A', text: { en: 'Both prompt text and generated output consume tokens', de: 'Sowohl Prompt-Text als auch generierte Ausgabe verbrauchen Token' } },
        { id: 'B', text: { en: 'A max-tokens setting limits how much output can be generated', de: 'Eine Max-Tokens-Einstellung begrenzt, wie viel Ausgabe generiert werden kann' } },
        { id: 'C', text: { en: 'Tokens are only counted for images, never for text', de: 'Token werden nur für Bilder gezählt, niemals für Text' } },
        { id: 'D', text: { en: 'Token limits are unrelated to conversation history size', de: 'Tokenlimits haben nichts mit der Größe des Gesprächsverlaufs zu tun' } }
      ],
      correct: ['A', 'B'],
      explanation: { en: 'Prompt and completion text both count toward token usage, and max tokens constrains the generated portion of the response.', de: 'Sowohl Prompt- als auch Completion-Text zählen zum Tokenverbrauch, und Max Tokens begrenzt den generierten Teil der Antwort.' },
      hint: { en: 'Think input plus output, and a limit on generation.', de: 'Denken Sie an Eingabe plus Ausgabe und an eine Begrenzung der Generierung.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/openai/overview'
    },
    {
      id: 'ai102-196', type: 'scenario',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'medium',
      scenario: { en: 'At Trey Research, a developer runs this code:\nconst vectors = await client.embeddings.create({ model: "text-embedding-3-large", input: chunks });\nThe vectors are stored in Azure AI Search beside each text chunk.', de: 'Bei Trey Research: ein Entwickler führt diesen Code aus:\nconst vectors = await client.embeddings.create({ model: "text-embedding-3-large", input: chunks });\nDie Vektoren werden neben jedem Textchunk in Azure AI Search gespeichert.' },
      question: { en: 'What problem does this design primarily solve?', de: 'Welches Problem löst dieses Design hauptsächlich?' },
      options: [
        { id: 'A', text: { en: 'Semantic similarity retrieval for relevant context', de: 'Semantisches Ähnlichkeits-Retrieval für relevanten Kontext' } },
        { id: 'B', text: { en: 'Face matching in passport photos', de: 'Gesichtsabgleich in Passfotos' } },
        { id: 'C', text: { en: 'Speech synthesis for phone calls', de: 'Sprachsynthese für Telefonanrufe' } },
        { id: 'D', text: { en: 'OCR extraction from scanned receipts', de: 'OCR-Extraktion aus gescannten Belegen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Embeddings stored with chunks enable vector similarity search so the app can retrieve context that is semantically related to the user query.', de: 'Mit Chunks gespeicherte Embeddings ermöglichen Vektorähnlichkeitssuche, sodass die App Kontext abrufen kann, der semantisch mit der Benutzeranfrage verwandt ist.' },
      hint: { en: 'The vectors are for retrieval, not generation alone.', de: 'Die Vektoren sind für Retrieval gedacht, nicht nur für Generierung.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/openai/concepts/understand-embeddings'
    },
    {
      id: 'ai102-197', type: 'single',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'easy',
      scenario: null,
      question: { en: 'What is a primary role of Semantic Kernel in Azure-based generative AI solutions?', de: 'Was ist eine primäre Rolle von Semantic Kernel in Azure-basierten generativen KI-Lösungen?' },
      options: [
        { id: 'A', text: { en: 'Orchestrating prompts, plugins, and LLM interactions', de: 'Prompts, Plugins und LLM-Interaktionen zu orchestrieren' } },
        { id: 'B', text: { en: 'Providing OCR for scanned documents', de: 'OCR für gescannte Dokumente bereitzustellen' } },
        { id: 'C', text: { en: 'Acting as a search index', de: 'Als Suchindex zu fungieren' } },
        { id: 'D', text: { en: 'Replacing Azure networking services', de: 'Azure-Netzwerkdienste zu ersetzen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Semantic Kernel is an orchestration SDK for integrating LLM prompts, plugins, and application logic.', de: 'Semantic Kernel ist ein Orchestrierungs-SDK zur Integration von LLM-Prompts, Plugins und Anwendungslogik.' },
      hint: { en: 'It coordinates the app and the model.', de: 'Es koordiniert App und Modell.' },
      reference: 'https://learn.microsoft.com/semantic-kernel/overview/'
    },
    {
      id: 'ai102-198', type: 'scenario',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Proseware, Inc., a long-running chat app keeps appending every previous message to the next request, for example `await client.chat.completions.create({ messages: [...history, userMessage] })`. After many turns, requests begin to fail because the conversation is too large for the model context window.', de: 'Bei Proseware, Inc.: eine langlebige Chat-App hängt jede vorherige Nachricht an die nächste Anforderung an, zum Beispiel `await client.chat.completions.create({ messages: [...history, userMessage] })`. Nach vielen Gesprächsrunden beginnen Anforderungen zu scheitern, weil die Unterhaltung für das Kontextfenster des Modells zu groß wird.' },
      question: { en: 'What should the app do?', de: 'Was sollte die App tun?' },
      options: [
        { id: 'A', text: { en: 'Trim or summarize older conversation history before sending the next request', de: 'Ältere Gesprächshistorie kürzen oder zusammenfassen, bevor die nächste Anforderung gesendet wird' } },
        { id: 'B', text: { en: 'Disable authentication', de: 'Authentifizierung deaktivieren' } },
        { id: 'C', text: { en: 'Switch to OCR Read', de: 'Zu OCR Read wechseln' } },
        { id: 'D', text: { en: 'Increase browser cache only', de: 'Nur den Browser-Cache erhöhen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Managing token usage often requires trimming or summarizing earlier turns so the next prompt stays within context limits.', de: 'Die Verwaltung des Tokenverbrauchs erfordert häufig das Kürzen oder Zusammenfassen früherer Gesprächsrunden, damit der nächste Prompt innerhalb der Kontextgrenzen bleibt.' },
      hint: { en: 'The problem is prompt size, not network latency.', de: 'Das Problem ist die Prompt-Größe, nicht die Netzwerklatenz.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/openai/overview'
    },
    {
      id: 'ai102-199', type: 'single',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'medium',
      scenario: null,
      question: { en: 'Which request setting enables the UI to receive partial model output as it is generated?', de: 'Welche Anforderungseinstellung ermöglicht es der UI, teilweise Modellausgaben zu erhalten, während sie generiert werden?' },
      options: [
        { id: 'A', text: { en: 'Set stream to true', de: 'stream auf true setzen' } },
        { id: 'B', text: { en: 'Set temperature to 0 only', de: 'Nur temperature auf 0 setzen' } },
        { id: 'C', text: { en: 'Set imageSize to large', de: 'imageSize auf large setzen' } },
        { id: 'D', text: { en: 'Set OCR mode to enabled', de: 'OCR-Modus auf enabled setzen' } }
      ],
      correct: ['A'],
      explanation: { en: 'Streaming returns output incrementally so the interface can show tokens or text as they arrive.', de: 'Streaming liefert Ausgaben inkrementell zurück, sodass die Oberfläche Token oder Text anzeigen kann, sobald sie eintreffen.' },
      hint: { en: 'The option is named for the delivery pattern.', de: 'Die Option ist nach dem Auslieferungsmuster benannt.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/openai/overview'
    },
    {
      id: 'ai102-200', type: 'scenario',
      domain: { en: 'Implement Generative AI Solutions', de: 'Generative KI-Lösungen implementieren' }, difficulty: 'hard',
      scenario: { en: 'At Trey Research, a RAG app retrieves relevant passages from Azure AI Search but sends only this user message to Azure OpenAI:\n`await client.chat.completions.create({ messages: [{ role: "user", content: "Answer the question: How do I reset my password?" }] })`\nThe retrieved passages are never included in the request.', de: 'Bei Trey Research: eine RAG-App ruft relevante Passagen aus Azure AI Search ab, sendet aber nur diese Benutzernachricht an Azure OpenAI:\n`await client.chat.completions.create({ messages: [{ role: "user", content: "Answer the question: How do I reset my password?" }] })`\nDie abgerufenen Passagen werden nie in die Anforderung aufgenommen.' },
      question: { en: 'What should you change?', de: 'Was sollten Sie ändern?' },
      options: [
        { id: 'A', text: { en: 'Include the retrieved passages in the prompt or use On Your Data grounding', de: 'Die abgerufenen Passagen in den Prompt aufnehmen oder On Your Data-Grounding verwenden' } },
        { id: 'B', text: { en: 'Lower the image resolution', de: 'Die Bildauflösung verringern' } },
        { id: 'C', text: { en: 'Replace the search index with a face list', de: 'Den Suchindex durch eine Face-Liste ersetzen' } },
        { id: 'D', text: { en: 'Disable the system message', de: 'Die Systemnachricht deaktivieren' } }
      ],
      correct: ['A'],
      explanation: { en: 'Retrieval helps only when the retrieved content is actually passed into the model context. Otherwise the model answers without grounding.', de: 'Retrieval hilft nur, wenn die abgerufenen Inhalte tatsächlich in den Modellkontext aufgenommen werden. Andernfalls antwortet das Modell ohne Grounding.' },
      hint: { en: 'Search results must become model context.', de: 'Suchergebnisse müssen zum Modellkontext werden.' },
      reference: 'https://learn.microsoft.com/azure/ai-services/openai/concepts/use-your-data'
    }
  ];
  if (window.ExamData && window.ExamData['ai-102']) {
    window.ExamData['ai-102'].questions = window.ExamData['ai-102'].questions.concat(extra);
  }
})();