Durch die Kombination der Fähigkeiten von Azure und OpenAI können Entwickler leistungsstarke KI-Anwendungen erstellen. Nach einer kurzen Einführung in diesem Artikel wollen wir im Folgeteil primär demonstrieren, wie Entwickler und Entwicklerinnen ihre Modelle per REST-API und über die unterstützten SDKs abfragen.
Microsoft hat Azure OpenAI (AOAI) initial nur mit eingeschränktem Zugriff veröffentlicht, um eine verantwortungsvolle Nutzung des Diensts zu gewährleisten. Interessierte müssen daher für den gewünschten Tenant und die gewünschten Subscriptions explizit einen Azure-OpenAI-Zugriff beantragen. Dieser muss von Microsoft erst genehmigt werden, bevor Developer ihre erste AOAI-Ressource erstellen können. Dies dauert erfahrungsgemäß allerdings weniger als 24 Stunden.
OpenAI-Ressource
Wurde der OpenAI-Zugriff genehmigt, ist es möglich, im Azure-Portal nach „Azure OpenAI“ zu suchen. User landen dann im Portal „Azure AI services“ im Menüabschnitt „Azure AI servivcs bei „Azure OpenAI“ und können dann mit einem Klick auf „Azure OpenAI erstellen“ einen solchen erstellen. Es folgen die üblichen Angaben wie das Azure-Abonnement (sofern für OpenAI aktiviert), Ressourcengruppe, Region und Name.
Außerdem gilt es, einen passenden Tarif wie z. B. „Standard S0“ zu wählen. Tarifinformationen zum OpenAI-Service finden sich auf der Preisseite. Bei den Sprachmodellen ist GPT-3.5-Turbo erwartungsgemäß günstiger als GPT-4. Die Abrechnung erfolgt über die Azure-Subscription. Außerdem läuft Azure Open AI im Gegensatz zum OpenAI-Service in einem sicheren Kontext. Informationen zum Umgang von Azure OpenAI mit Daten, sowie zu Datenschutz und Sicherheit, liefert die Microsoft-Learn-Plattform.
Je nach Bedarf wird im Abschnitt „Netzwerk“ ausgewählt, ob ein Zugriff auf die OpenAI-Ressource z. B. aus dem Internet möglich sein soll. Für dieses Beitrag erlauben wir den öffentlichen Zugriff und erstellen die Ressource. Alternativ ließe sich eine AOAI-Ressource auch mit Hilfe der Azure-CLI erstellen. Nach der Erstellung navigieren wir zur Übersichtsseite der OpenAI-Ressource.
Wurde die Ressource erstellt, stehen für die betreffende App bereits ein Endpunkt sowie ein zugehöriger Schlüssel zur Verfügung. Wir entscheiden uns nun exemplarisch für das Bereitstellen eines Modells im Portal. Es gibt verschiedene Modellfamilien für unterschiedliche Aufgaben und jede Familie verfügt über unterschiedliche Funktionen für das jeweilige Modell. Derzeit gibt es folgende drei Standard-Familien:
- Text oder Generative Pre-trained Transformer (GPT): Das sind die klassischen Modelle für das Generieren und/oder Verstehen natürliche Sprache und/oder Code. Diese GPT-Modelle eignen sich am besten für allgemeine Aufgaben, Unterhaltungen und verschiedene Chat-Formate.
- Code: Die Code-Modelle setzen zwar auf den GPT-Modellen auf, werden aber mit Millionen von Codezeilen trainiert. Diese Modelle sind in der Lage, Code zu generieren und zu verstehen. Das umfasst auch die Interpretation von Kommentaren oder natürlicher Sprache.
- Einbettungen: Diese Modelle sind in der Lage, Einbettungen zu verstehen und zu nutzen, bei denen es sich um ein spezielles Format von Daten handelt, das von ML-Modellen und -Algorithmen genutzt werden kann.
Übrigens wird die Modellfamilie und -funktion immer im Namen des Basismodells angegeben, etwa bei „text-davinci-003.“ Weitere Details zu den Modellen, Fähigkeitsgraden und Namenskonventionen lassen sich ebenfalls der Azure OpenAI finden Sie ebenfalls in der AOIA-Dokumentation.
Das vorrangige Ziel für diesen Beitrag ist das programmatische Abfragen bzw. Interagieren mit einem Modell via REST und SDKs. Deshalb begnügen wir uns hier mir der Bereitstellung eines Standard-Modells im Azure OpenAI Studio.
Beim Bereitstellen eines Modells erhalten wir wie erwähnt einen Ressourcen-Endpunkt und einen Schlüssel, um festzulegen, welches Bereitstellungsmodell die Anforderung adressiert. So können sie verschiedene Modelle innerhalb derselben Ressource bereitstellen und abhängig vom Use Case Anforderungen an das entsprechende Modell senden.
Man könnte also beispielsweise auf der Übersichtsseite von Azure OpenAI bei „Explore and deploy“ auf den blauen Button „Go to Azure OpenAI Studio“ klicken. Alternativ könnte man auch im Hauptmenü im Abschnitt „Ressourcenverwaltung“ zu „Bereitstellungen verwalten“ navigieren. Dadurch wird im Azure OpenAI Studio der Abschnitt „Verwaltung“ (unterhalb des „Playground“ bei „Bereitstellungen“) aufgerufen. Hier kann man mit „+Neue Bereitstellung erstellen“ ein neues Deployment veranlassen.
Prompt Engineering
Beim Bereitstellen eines neuen Modells im AzureAI-Studio wählen wir zunächst ein Modell (was eine „Modellversion“ nach sich zieht – wobei „0301 (Standard) in unseren Standard-Tarif passt) und weisen der Bereitstellung einen Namen zu. Das Deployment taucht anschließend in der Liste der bestehenden Deployments auf:
Ein neues Modell bereitstellenEs wirkt sich übrigens erheblich auf die Reaktion des KI-Modells aus, wie genau eine Eingabeaufforderung verfasst wurde. Eine simple Anfrage wie „Was ist ChatGPT 3.5 Turbo“ führt in der Regel zu einer ähnlich allgemeinen Antwort, wie beim Abfragen einer beliebigen Suchmaschine. Enthält die Abfrage (Prompt) hingegen weitere Details, liefert ChatGPT auch eine spezifischere Antwort.
Dies können wir im Chat Playground ausprobieren. Wir wäre es mit einer Text-Klassifizierung? In der Abbildung haben wir dem Chat-Modell eine Schlagzeile mitgegeben, die den im Verlauf der Microsoft Ignite angekündigten Wechsel des OpenAI-Chefs Sam Altman zu Microsoft betrifft, der wie wir wissen inzwischen bereits widerrufen wurde. Wir baten das Modell um eine Einschätzung, ob die Nachricht der Kategorie Wirtschaft, Politik, Technik usw. zuzuordnen ist.