Mithilfe von Azure OpenAI können die KI-Dienste von Azure genutzt werden. Auf der MS Learn-Plattform kann man die Grundlagen des Azure OpenAI Service kennenlernen. Link zur MS Learn Plattform
In diesem Artikel soll es darum gehen das Sprachmodell als individuellen Chatbot zu nutzen.
Um Azure OpenAI als Ressource zu nutzen, wird ein Azure-Abonnement benötigt, und um die Dienste freizuschalten, muss eine spezielle Anfrage gestellt werden. Die Freischaltung der AI-Funktionen kann laut Microsoft bis zu 7 Werktage dauern. Link zur Microsoft Learning-Seite
Nachdem die Voraussetzungen erfüllt sind, kann im Azure-Portal eine neue Ressource vom Typ Azure OpenAI erzeugt werden. Im Azure OpenAI Studio muss ein Sprachmodell deployed werden, mit dem wir im Folgenden arbeiten. Als Grundlage dienen hier die GPT-Modelle von OpenAI, wobei in der kostenfreien Variante nicht die neuesten Modelle genutzt werden können. Eine detaillierte Anleitung zum Erstellen der Ressource, dem Navigieren im Azure OpenAI Studio und dem Deployen eines Modells ist unter folgendem Link zu finden: Link zur detaillierten Anleitung.
Im Azure OpenAI Studio können wir uns über den Playground → Chat-Tab im Browser ausprobieren.
Hier besteht die Möglichkeit, Nachrichten zu schreiben, die unser Chatbot beantwortet. Die Art der Antwort erinnert an KI-Chatbot-Antworten, wie sie inzwischen von ChatGPT und anderen Produkten bekannt sind.
Das Besondere an diesem ‚Playground‘ ist die Möglichkeit, den Bot zu konfigurieren. Wir können durch Sprache dem Bot eine Einstellung oder Verhaltensweise vorgeben. Ein einfaches Beispiel ist die Vorgabe: „Du beendest jede Antwort mit den Worten ‚Ich hoffe, ich konnte Ihnen behilflich sein.‘“ Jetzt wird der Bot bei der Interaktion mit dem User immer mit diesem Satz enden.
Um diesen Chatbot tatsächlich in einer Anwendung zu nutzen, müssen wir ihn über eine API erreichen. Ausführliche Informationen zur Azure OpenAI Service API sind hier zu finden: Link zur API-Dokumentation
An dieser Stelle habe ich ein einfaches Beispiel. Ich möchte mit Postman einen Request an unsere API senden, sodass ich Nachrichten mit dem Chatbot austauschen kann.
Dafür muss in Postman die API-Version als Parameter und der API-Key als Autorisierung für den Request angegeben werden. Zum Zeitpunkt dieses Blogs ist die aktuelle API-Version ‚2024-02-01‘. Im Azure-Portal sind für die OpenAI-Ressource zwei API-Schlüssel hinterlegt; diese können bei Bedarf neu generiert werden. Die Schlüssel sind im Azure-Portal in der angelegten Ressource unter dem Tab ‚Keys and Endpoint‘ zu finden.
In Postman wird dann im Authorization-Tab der API-Key hinterlegt. Den Post findet man hier.
Hier wird der Domainname der eigenen Azure-Ressource und der Name des Deployments angegeben.
Bei dieser Vorgehensweise ist zu berücksichtigen, dass die API kein Gedächtnis für den Chatverlauf oder die Konfiguration hat. Das bedeutet, dass das gleiche Deployment für verschiedene Chatverläufe und Konfigurationen genutzt werden kann, aber auch, dass beides in jedem Request mitgesandt werden muss. Im Folgenden ist ein beispielhafter Request-Body zu sehen, bei dem die erste Nachricht mit „role“: „system“ der Konfiguration entspricht und die Nachrichten von ‚user‘ und ‚assistant‘ den Chatverlauf zwischen Nutzer und Chatbot festhalten.
1{
2 "messages": [
3 {
4 "role": "system",
5 "content": "You are a helpful assistant. You end every response with the statement: Its fun isnt it"
6 },
7 {
8 "role": "user",
9 "content": "Does Azure OpenAI support customer managed keys?"
10 },
11 {
12 "role": "assistant",
13 "content": "Yes, customer managed keys are supported by Azure OpenAI. Its fun isnt it"
14 },
15 {
16 "role": "user",
17 "content": "Do other Azure AI services support this too?"
18 }
19 ]
20}
Die Antwort des Chatbots ist im Feld choices → message → content zu finden.
1{
2 "choices": [
3 {
4 "content_filter_results": {
5 "hate": {
6 "filtered": false,
7 "severity": "safe"
8 },
9 "self_harm": {
10 "filtered": false,
11 "severity": "safe"
12 },
13 "sexual": {
14 "filtered": false,
15 "severity": "safe"
16 },
17 "violence": {
18 "filtered": false,
19 "severity": "safe"
20 }
21 },
22 "finish_reason": "stop",
23 "index": 0,
24 "logprobs": null,
25 "message": {
26 "content": "Yes, other Azure AI services also support customer managed keys for enhanced security and compliance, including Azure Cognitive Services, Azure Bot Service, and Azure Machine Learning. Its fun isnt it.",
27 "role": "assistant"
28 }
29 }
30 ],
31 "created": 1712937620,
32 "id": "chatcmpl-9DDc4jjvlt8duozz2qmpzyq0zm9tM",
33 "model": "gpt-35-turbo",
34 "object": "chat.completion",
35 "prompt_filter_results": [
36 {
37 "prompt_index": 0,
38 "content_filter_results": {
39 "hate": {
40 "filtered": false,
41 "severity": "safe"
42 },
43 "self_harm": {
44 "filtered": false,
45 "severity": "safe"
46 },
47 "sexual": {
48 "filtered": false,
49 "severity": "safe"
50 },
51 "violence": {
52 "filtered": false,
53 "severity": "safe"
54 }
55 }
56 }
57 ],
58 "system_fingerprint": null,
59 "usage": {
60 "completion_tokens": 36,
61 "prompt_tokens": 75,
62 "total_tokens": 111
63 }
64}
Auf diesem Weg lassen sich die Azure OpenAI-Ressourcen nutzen, um einen individuellen Chatbot zu gestalten und über API-Requests mit ihm Nachrichten auszutauschen.