BlogAzure AI-Services für Entwickler

Azure AI-Services für Entwickler

Azure AI-Services programmatisch erstellen und abfragen

Ich habe dir in einer Reihe von Beiträgen gezeigt, welche AI-Services in Azure zur Verfügung stehen, was diese im einzelnen leisten, worin sich diese von den AI-Diensten anderer Anbieter unterscheiden und wie du die einzelnen Dienste im neuen Azure AI Studio oder den diversen dienstspezifischen Studios im Browser erkunden, bzw. die Leistungsfähigkeit der einzelnen Modelle testen kannst. Gedacht sind die Dienste natürlich in erster Linie dazu, eigene AI-Anwendungen und Copiloten zu entwickeln. Wie das konzeptionell funktioniert, zeige ich dir in diesem Beitrag und weiteren folgenden. Die Kenntnisse sind wichtig für die Zertifizierung zum Kurs Azure AI 102, „Microsoft Certified: Azure AI Engineer Associate“.

Alle bisher gezeigten Azure-AI-Dienste wie z. B. Vision, Language, Speech oder OpenAI verfügen über REST-Endpunkte, sowie über Client-SDK-Unterstützung für C# und Python. In diesem Beitrag befasse ich mich mit den zugehörigen Workflows, damit dein Anwendungscode sicher auf die genannten Schnittstellen zugreifen kann. Ich beschränke mich dabei exemplarisch auf C#, verweise aber an den entsprechenden Quellen auf die Microsoft-Dokumentationen zu Python. Ferner gehe ich für diesen Beitrag davon aus, dass du mit den erforderlichen Azure-Ressource-Typen vertraut bist. Zum Nachvollziehen dieses Beitrags benötigst folgende Azure-Resouzrce-Typen:

  • Azure AI services multi-service account
  • Azure Key Vault
  • Service Prinzipal für deine App

Darüber hinaus verwende ich für alle Beispiele in diesem Artikel Microsoft Visual Studio Code unter Windows als „Entwicklungsumgebung“. Du kannst VS Code auch unter Linux verwenden oder VS Studio oder eine andere IDE verwenden, allerdings sind die Integrationsmöglichkeiten Azure und anderen Cloud-Diensten, Git, GitHub, Kubernetes, Docker usw. unerreicht komfortabel.

Repository einrichten

Wir beginnen damit, das Beispiel-Repository https://github.com/MicrosoftLearning/mslearn-ai-services des GitHub-Repos von Microsoft-Learning für Azure-AI-Services herunterzuladen oder zu klonen. Du könntest z. B. das GitHub-Repository im Browser öffnen und dort auf den grünen Code-Button klicken.

Importieren des öffentlich MS-Learn-GitHub-Repositories für AI
Importieren des öffentlich MS-Learn-GitHub-Repositories für AI

Von dort aus kannst du …

  • entweder die URL für dein „git clone“-Kommando kopieren, welches du in deinem lokalen Editor/Arbeitsverzeichnis ausführst
  • die URL deiner lokal installierten git-Desktop-App öffnen
  • das gesamte Repo als ZIP-Archiv herunterladen und entpacken, um es dann wieder in der IDE deiner Wahl zu öffnen
  • oder das gesamte Repo direkt von hier aus in VS Code zu öffnen.

Letzteres gelingt aber noch viel einfacher, wenn du direkt mit VS Code startest, mit F1 die Befehlspalette öffnest und je nach Lokalisierung deiner VS Code-Umgebung z. B. nach „Git: Clone“ oder „Git: Klonen“ suchst. Dann musst du nur die o. g. URL aus deinen Zwischenablage einfügen.

Klonen eines GirHub-Repos aus VS Code

Dabei klappt dann dein Windows-Explorer auf, damit mit du das lokale Ziel-Verzeichnis für das geklonte Repository wählen kannst. Danach klickst du im Hauptmenü von VS Code auf „Ordner öffnen“ und navigierst genau zum Unterordner …\mslearn-ai-services\Labfiles template=”[["core\/columns",{"level":2,"placeholder":"F\u00fcge entsprechenden Inhalt ein"}]]” -use-azure-ai-services, um diesem im VS-Coder-Explorer zu öffnen. Dabei poppt in VS Code rechts unten die Meldung auf, dass ein Git-Repositiory im übergeordneten Ordner gefunden wurde. Du kannst dann zustimmen, dieses Repo in VS Code zu öffnen:

Öffnen eines Git-Repos in VS Code
Öffnen eines Git-Repos in VS Code

Danach musst du das zu öffnende Repository noch einmal bestätigen. Erweitere dann im Explorer vorerst das o. g. Verzeichnis  „…\mslearn-ai-services\Labfiles template=”[["core\/columns",{"level":2,"placeholder":"F\u00fcge entsprechenden Inhalt ein"}]]” -use-azure-ai-services“.

Erstelle nun im Azure-Portal eine Azure-AI-Ressource vom Typ „Azure AI services multi-service account”.

Arbeiten mit der REST-API

Schauen wir uns nun an, wie du die REST-API deiner Azure-AI-Ressource programmatisch nutzt, also eine JSON-Anforderung über HTTP an den Service sendest. Zur Erinnerung: den URL-Endpunkt und die zugehörigen API-Schlüssel deiner Azure-AI-Ressource (2 Stück per Default) findest du im Azure-Portal bei deiner Azure-AI-Ressource (hier „Azure AI services multi-service account“) im Menü „Schlüssel und Endpunkt“.

Schlüssel und Endpunkt deiner Azure-AI-Ressource

In folgendem Beispiel adressieren wir die Sprach-REST-API der Azure-AI-Services (früher „Cognitive-Services“) in einer Konsolenanwendung, für eine einfache Spracherkennung. Du kannst das tun, weil du zuvor eine Azure-Ressource vom Typ „Azure AI services multi-service account“ erstellt hast. Diese „versteht“ z. B. die Bild- (Vision), Sprach- (Language) und Spracherkennungs- (Speech)-API. In diesem Fall handelt es sich um die Language-API.

Navigiere dazu jetzt im VS Code Explorer zum Unterordner „rest-client“ für die gewünschte Programmiersprache (hier C#) und öffne die Anwendungskonfigurationsdatei „appsetings.json“, in der du deine Service-Endpunkt-URL sowie deinen API-Schlüssel einträgst, welche du oben in der Abbildung findest.

Das Anpassen der Anwendungskonfigurationsdatei ist obligatorisch

Vergiss nicht, die Änderung zu speichern.

Danach kannst du dir bei Interesse auch die Code-Datei (bei C#: Program.cs) ansehen, obwohl dies kein Programmier-Kurs ist. Wir möchten den Code lediglich aufrufen. Trotzdem hier ein paar kurze Erläuterungen:

Das Programm importiert zunächst eine Reihe von Namespaces, welche dazu da sind, eine HTTP-Kommunikation zu ermöglichen. Dann ruft die Main-Funktion den Endpunkt und den Schlüssel für deine Azure AI Services-Ressource ab, welche für das Senden von REST-Anforderungen an den Language-Dienst zur Textanalyse erforderlich sind. Das Programm wartet auf Benutzereingaben und nutzt die Funktion „GetLanguage“, zum Aufrufen der REST-API deines Azure AI Services-Endpunktes für die Spracherkennung zur Textanalyse. Im zurückgegeben Ergebnis erkennt der per REST angefragte Azure-AI-Dienst (hier Language) die Sprache des eingegebenen Textes.

Wie bei REST üblich besteht die an die API gesendete Anforderung aus einem JSON-Objekt, das die Eingabedaten enthält, in unserem Fall eine Sammlung von Dokument-Objekten, jedes mit einer „ID“ und einen „Text“. Der Schlüssel für deinen Dienst wird dabei im Anforderungs-Header übergeben, um damit deine Client-Anwendung für den Zugriff auf den Dienst zu authentifizieren. Die Antwort des Diensts ist ein JSON-Objekt, das von der Client-Anwendung analysiert werden kann.

Nun musst du den Ordner aus deinem Explorer nur noch im Terminal öffnen  – klicke dazu mit rechts auf den Ordner im VS Code-Explorer – wählen den Eintrag „Im integrierten Terminal öffnen“ – und rufe das Programm dann mit …

dotnet run

auf. Das Programm erwartet von d ir die Eingabe eines beliebigen Textes. Du erhältst im Ergebnis ein JSON-Dokument, das ..

  • die Anfrage selbst
  • das Ergebnis („documents“) mit „detectedLanguage“
  • sowie etwaige Fehler (errors)

enthält.

Das erfolgreiche Senden einer REST-Anfrage mit der JSON verpackten Antwort

Teste das Programm nun in verschiedenen Sprachen.

Die API erkennt die Sprache in der gesendeten Anforderung

Arbeiten mit dem SDK

Nun wollen wir noch mit den SDKs experimentieren. Für den Language-Dienst sind beispielsweise https://learn.microsoft.com/en-us/azure/ai-services/language-service/concepts/developer-guide?tabs=language-studio#client-libraries-azure-sdk Client-Bibliotheken für .NET, Python, Java und JavaScript verfügbar. Du kannst also nicht nur Code schreiben, derdie REST-APIs der Azure AI-Dienste direkt anspricht, sondern auch das Entwickeln von Anwendungen, die auf Azure KI-Dienste aufsetzen, mit Hilfe eines der genannten SDKs erheblich vereinfachen. Navigiere daher jetzt im VS Code-Explorer zum Unterorder „sdk-client“ und öffne diesen Ordner dann wieder mit Hilfe des Kontextmenüs im Termin oder navigiere direkt aus dem Terminal dort hin .

cd ..

cd sdk-client

Nun musst du das jeweilige SDK installieren. Im Falle von .Net ginge das mit …

dotnet add package Azure.AI.TextAnalytics --version 5.3.0

Ich gehe davon aus, dass auf deinem Windows-Arbeitsplatz das .Net-Framework bereits installiert ist. Im Falle von Python müsstest du erst Python installieren. Das geht z. B. über den Windows-Store:

Das Installieren von Python mit Hilfe des Windows-Stores

Eine bereits installierte Version könntest du mit

python –version

ermitteln; bei mir 3.12, was auch im Screenshot des Windows-Stores zu erkennen ist. Dann könntest du mit Hilfe des Python-Paketmanagers pip das Python-SDK installieren.

pip install azure-ai-textanalytics==5.3.0

Doch zurück zu .Net/C#.

Auch hier findest du im Ordner „sdk-client“, wie im REST-Beispiel oben, eine Datei „appsettings.json“ mit der du den Zugriff auf den Backenddienst in Azure konfigurierst (Schlüssel und Endpunkt), sowie eine Programm-Datei „Program.cs“. Öffne ggf. die Konfigurationsdatei und passe die darin enthaltenen Konfigurationswerte an, also den Endpunkt und den Authentifizierungsschlüssel für deine Azure AI Services-Ressource, es sei denn, die Daten haben sich nach dem REST-Beispiel oben nicht geändert. Falls doch, vergiss nicht, die Änderungen zu speichern.

Falls es dich interessiert (wir wollen wie o. erwähnt den mitgelieferten Beispiel-Code lediglich ausführen) schaue dir jetzt noch den Inhalt der Datei „Program.cs“ an: hier wird zunächst der Namespace für das von dir verwendete SDK importiert. Die Funktion „Main“ ruft dann den Endpunkt und den Schlüssel für deine Azure AI Services-Ressource ab. Diese werden dann mit dem SDK für das Erstellen eines Clients für den Textanalysedienst verwendet. Konkret nutzt die Funktion „GetLanguage-Funktion“ das SDK, um einen Client für den Dienst zu erstellen und nutzt diesen Client dann zum Erkennen der Sprache des eingegebenen Textes.

Teste das Programm nun durch Eingabe von

dotnet run

Im Fall von Python mit

python sdk-client.py

Du wirst dann wie oben beim REST-Beispiel aufgefordert, einen Text einzugeben. Das Ergebnis sollte so aussehen, wie in folgender Abbildung:

Aufruf eines Programms, in den ein Client mit Hilfe des passenden SDKs erstellt wurde
Aufruf eines Programms, in den ein Client mit Hilfe des passenden SDKs erstellt wurde

Teste das Programm, wenn du magst auch mit anderen Sprachen.  Du hast damit den ersten Schritt zur Interaktion mit dem API-Schnittstellen gemacht.

Das größte Problem hierbei ist, dass deine API-Schlüssel in unverschlüsselter Form in der Konfigurationsdatei „appsettings.json“ stecken, welche du im schlimmsten Fall auch noch beabsichtigt oder unbeabsichtigt auf einem öffentlichen GitHub-Repo hostest. Daher zeige ich dir im nächsten Teil dieser kleinen Serie, wie du die API-Schlüssel sicher in einen Azure Schlüsseltresor (Key Vault) ablegst. Du musst deine Client-Anwendung mit einem Dienstprinzipal ausstatten. Mit diesem kannst du dann die Client-App mittels Azure RBAC auf sichere Weise berechtigen, die benötigten Schlüssel aus dem Schlüsseltresor abzurufen.

Kontakt

Dein INCAS Team
Akkordion öffnen
telephone-icon-contact-coaching-box
0800 4772466
email-icon-contact-coaching-box
info@incas-training.de

*“ zeigt erforderliche Felder an

Hidden
Dieses Feld dient zur Validierung und sollte nicht verändert werden.

Schulungen die dich interessieren könnten

Bewertungen

Kundenstimme männlich
Thomas M.
Aldi GmbH & Co. KG
star-participantstar-participantstar-participantstar-participantstar-participant
Lernen in einem sehr entspannten und angenehmen Klima. Prima!
Kundenstimme männlich
Torsten B.
Westdeutscher Rundfunk WDR
star-participantstar-participantstar-participantstar-participantstar-participant
Das Seminar hat nicht nur Spaß gemacht, sondern auch wirklich 'ne Menge gebracht :-)
Kundenstimme männlich
Markus H.
CARAT Dreieich
star-participantstar-participantstar-participantstar-participantstar-participant
Der Trainer machte einen sehr netten und kompetenten Eindruck und ging auf unsere Wünsche und Anregungen sehr praxisorientiert ein .
Kundenstimme männlich
Michael W.
Ernst & Young Retail Services GmbH
star-participantstar-participantstar-participantstar-participantstar-participant
Ich fühlte mich in diesem Seminar hervorragend betreut. Es war sehr praxisorientiert und anschaulich.