Azure KI Übersetzer – Anwendungen mit AI-basierter Übersetzung entwickeln
Einführung in den Azure KI Übersetzer
Ein weiteres Beispiel für die Leistungsfähigkeit der Azure-KI-Dienste ist der Azure KI Translator. Er ist sowohl in der Lage, die Sprache eines Textes zu erkennen, als auch diesen in die Sprache deiner Wahl zu übersetzen. In diesem Beitrag zeige ich dir, wie du aus deinem Anwendungscode mit Hilfe des .Net-SDKs einen entsprechenden Request an den Azure KI Übersetzer senden kannst.
Passende Schulungen
AI-102 – Designing and Implementing a Microsoft Azure AI Solution (AI-102T00)
AI-3002 – Entwickeln von Lösungen mit Azure KI Dokument Intelligenz
Der Azure KI Übersetzer ist ein cloudbasierter Service für neuronale maschinelle Übersetzungen und Teil der Azure KI Services. Er ist mit allen Betriebssystemen kompatibel. Die Textübersetzung wird in zahlreichen Microsoft-Produkten und -Diensten genutzt und von Tausenden Unternehmen weltweit für Sprachübersetzungen und andere sprachbezogene Aufgaben eingesetzt. So integrierst du beispielsweise ganz einfach Funktionen für die Textübersetzung in Echtzeit in deine Anwendungswebsites, Tools oder Lösungen, sofern diese mehrsprachige Unterstützung erfordern, z. B. Websitelokalisierung, E-Commerce, Kundensupport, Messaginganwendungen, interne Kommunikation und vieles mehr.
In diesem Artikel zeige ich dir, wie du mit dem Übersetzer intelligente, mehrsprachige Lösungen für deine Anwendungen in allen unterstützten Sprachen entwickeln kannst. Der Dienst unterstützt die folgenden Funktionen:
- Textübersetzung: Diese Funktion ermöglicht dir Textübersetzungen zwischen unterstützten Quell- und Zielsprachen in Echtzeit. Du hast mehrere Optionen die Funktion zu nutzen. Neben der https://learn.microsoft.com/en-us/azure/ai-services/translator/reference/rest-api-guide REST-API für Textübersetzungen steht die dir ebenfalls das https://learn.microsoft.com/en-us/azure/ai-services/translator/text-sdk-overview?tabs=csharp SDK für Azure-Textübersetzungen für .Net, Python, Java und JavaScript zur Verfügung. Außerdem gibt es einen vorgefertigten Docker-Container mit fertig enthaltenen Azure-KI-Übersetzer. So kannst du den Übersetzer in deiner eigenen Infrastruktur hosten. Das passende Container-Image findest du in der https://mcr.microsoft.com/catalog?page=3 Microsoft Artifact Registry. Der Azure KI Übersetzer-Container befindet sich im Repository „azure-cognitive-services/translator“
- Dokumentübersetzung: Mit Hilfe der Dokumentübersetzung kannst du komplette Dokumente zur Übersetzung an den Dienst übergeben. Hier sind zwei Fälle zu unterscheiden.
- Die „asynchroneBatch-Übersetzung“ übersetzt Batchdateien und komplexe Dateien mit dem Ziel, die Struktur und des Formats der Originaldokumente beizubehalten. Für den Batch-Übersetzungsprozess brauchst du zusätzlich ein Azure Blob-Speicherkonto mit Containern für deine Quell- und Ziel-Dokumente.
- Bei der „Synchronen Einzeldatei-Übersetzung“ kannst du entweder eine einzelne Dokument-Datei für sich oder diese unter Zuhilfenahme einer Glossardatei unter Beibehaltung der Struktur und des Formats des Originaldokuments übersetzen. Im Gegensatz zur asynchronen Übersetzung ist hierbei kein Azure Blob Storage notwendig, weil die endgültige Antwort direkt das übersetzte Dokument an den aufrufenden Client übergibt.
- Benutzerdefinierter Übersetzer: mit Hilfe des benutzerdefinierten Übersetzers kannst du zwecks Übersetzung domänen- und branchenspezifische Sprache, Terminologie und Stile auch selbst angepasste Modelle verwenden.
Lass uns jetzt ein einfaches Beispiel für die Textübersetzung starten. Wie üblich brauchst du dazu zunächst die zugehörige Azure-AI-Services-Ressource, diesmal von Typ „Übersetzer“. Diese kannst du im Azure-Portal bei „Azure AI services“ erstellen. Klicke dort auf „Translator erstellen“ und wähle wie üblich Ressourcengruppe, Region, Name und einen Tarif. Der Free-Tarif F0 ist für kleinere Texte (bis zu 2M Zeichen) kostenlos.
Für das folgende Beispiel kannst du wahlweise die Azure-Cloud-Shell verwenden oder deine eigene Umgebung. Ich verwende in diesem Beispiel VS Code. Hier legst du im Verzeichnis deiner Wahl wie schon bei den vorangegangene Beispielen eine Anwendungskonfigurationsdatei mit dem Namen „appsettings.json“ an. Diese hat diesmal „nur“ folgenden Inhalt:
{
“CognitiveServiceKey”: “YOUR_COGNITIVE_SERVICES_KEY”,
“CognitiveServiceRegion”: “YOUR_COGNITIVE_SERVICES_LOCATION”
}
Passende Schulungen
AI-3003 – Entwickeln von Lösungen für die Verarbeitung natürlicher Sprache mit Azure KI Services
Du musst hier nur den API-Key deiner Übersetzer-Ressource und deinen Standort eintragen. Der (http)-Endpunkt hingegen für den Übersetzer lautet für Textübersetzungen; https://api.cognitive.microsofttranslator.com. Nur bei Dokumentübersetzungen gibt es einen spezifischen Endpunkt für deine Übersetzer-Ressource https://<name-uebersetzer>.cognitiveservices.azure.com/
Ergänze also deine Datei appsettings.json entsprechend:
Außerdem musst du natürlich noch in VS-Code das passende .Net-SDK installieren. Dies erreichst du mit:
dotnet add package Azure.AI.Translation.Text --version 1.0.0-beta.1
Nun kannst du deine Programm-Datei erstellen. In C# wäre das „Program.cs mit folgenden Rumpf-Inhalt:
using System;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Text;
using System.Net.Http;
using Microsoft.Extensions.Configuration;
using System.Threading.Tasks;
// import namespaces
namespace translate_text
{
class Program
{
static async Task Main(string[] args)
{
try
{
// Set console encoding to Unicode
Console.InputEncoding = Encoding.Unicode;
Console.OutputEncoding = Encoding.Unicode;
// Get config settings from AppSettings
IConfigurationBuilder builder = new
ConfigurationBuilder().AddJsonFile("appsettings.json");
IConfigurationRoot configuration = builder.Build();
string translatorRegion = configuration["TranslatorRegion"];
string translatorKey = configuration["TranslatorKey"];
// Create client using endpoint and key
// Choose target language
// Translate text
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
Du musst das Beispiel bei Interesse natürlich nicht abtippen. Microsoft stellt diesen Beispielcode im Repository https://github.com/MicrosoftLearning/mslearn-ai-language zur Verfügung. Klone einfach dieses Repo in VS Code, lege dabei deinen lokalen Ziel-Ordner fest, öffne ihn in VS Code und navigiere zum Verzeichnis „…b-translator-sdk\C-Sharp\translate-text“. Dort findest du die Programm-Datei:
Nun wollen wir den Programm-Code weiter ergänzen. Zuerst musst du die Unterstützung für Azure und Azure-AI-text-Analytics einbinden, bzw. als „Namespaces“ importieren. Dazu suchst du einfach nach dem Kommentar „//import namespaces“ und ersetzt ihn durch …
// import namespaces
using Azure;
using Azure.AI.Translation.Text;
Dann musst du in der Main-Function einen Text-Anayltics-Client erstellen und die erforderlichen Variablen zur aus der o. e. Konfigurationsdatei für den API-Schlüssel und deinen Standort an ihn übergeben:
// Create client using endpoint and key
AzureKeyCredential credential = new(translatorKey);
TextTranslationClient client = new(credential, translatorRegion);
Suche im Code-Gerüst nach dem Kommentar „Choose target language“ und füge folgenden Code hinzu. Dieser verwendet den Textübersetzungsdienst, um die Liste der unterstützten Sprachen zur Übersetzung zurückzugeben, und fordert den Benutzer auf, einen Sprachcode für die Zielsprache auszuwählen.
// Choose target language
Response<GetLanguagesResult> languagesResponse = await
client.GetLanguagesAsync(scope:"translation").ConfigureAwait(false);
GetLanguagesResult languages = languagesResponse.Value;
Console.WriteLine($"{languages.Translation.Count} languages available.\n(See
https://learn.microsoft.com/azure/ai-services/translator/language-
support#translation)”); Console.WriteLine("Enter a target language code for translation (for example, 'en'):");
string targetLanguage = "xx";
bool languageSupported = false;
while (!languageSupported)
{
targetLanguage = Console.ReadLine();
if (languages.Translation.ContainsKey(targetLanguage))
{
languageSupported = true;
}
else
{
Console.WriteLine($"{targetLanguage} is not a supported language.");
}
}
Suche danach im Code-Gerüst nach dem Kommentar „Translate Text“ und füge dort folgenden Code hinzu. Dieser fordert den Benutzer wiederholt zur Übersetzung von Text auf und verwendet den Azure AI Translator-Dienst, um ihn in die Zielsprache zu übersetzen. Die Ausgangssprache wird dabei automatisch erkannt und das Ergebnis angezeigt, bis der Benutzer „quit“ eingibt.
// Translate text
string inputText = "";
while (inputText.ToLower() != "quit")
{ Console.WriteLine("Enter text to translate ('quit' to exit)");
inputText = Console.ReadLine();
if (inputText.ToLower() != "quit")
{
Response<IReadOnlyList<TranslatedTextItem>> translationResponse = await
client.TranslateAsync(targetLanguage, inputText).ConfigureAwait(false);
IReadOnlyList<TranslatedTextItem> translations = translationResponse.Value;
TranslatedTextItem translation = translations[0];
string sourceLanguage = translation?.DetectedLanguage?.Language;
Console.WriteLine($"'{inputText}' translated from {sourceLanguage} to
{translation?.Translations[0].To} as '{translation?.Translations?[0]?.Text}'.");
}
}
Nun kannst du den Programmcode speichern und testen.
dotnet run
Da wir hier die oben erwähnte „Synchrone Einzeldate Übersetzung” testen, muss du nach der Aufforderung eine gültige Zielsprache aus der angezeigten Liste eingeben. Danach gibst du die zu übersetzende Phrase ein. Das Programm zeigt dir die Ergebnisse an, also das Erkennen der Ausgangssprache und die Übersetzung. Wenn du aufhören möchtest, gibst du „quit“ ein.
Kontakt
„*“ zeigt erforderliche Felder an