Azure OpenAI für einen individuellen Chat Bot nutzen

Azure OpenAI für einen individuellen Chat Bot nutzen

Darius Sadeghi | Softwareentwickler | 03.05.2024

Mithilfe von Azure OpenAI können die KI Dienste von Azure genutzt werden. Auf der MS Learn Plattform kann man die Grundlagen von Azure Open AI Service kennen lernen. (https://learn.microsoft.com/de-de/training/modules/explore-azure-openai/)

Um Azure Open AI als Resource zu nutzen wird ein Azure Abonnement benötigt und um die Dienste frei zu schalten muss eine spezielle Anfrage gestellt werden. Die Freischaltung der AI Funktionen kann dann laut Microsoft bis zu 7 Werktage dauern. (https://microsoftlearning.github.io/mslearn-ai-fundamentals/Instructions/Labs/13-azure-openai)

Nachdem die Voraussetzungen erfüllt sind kann im Azure Portal eine neue Resource 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 Resource, dem Navigieren in Azure OpenAI Studio und dem Deployen eines Modells ist unter folgendem Link zu finden: https://microsoftlearning.github.io/mslearn-ai-fundamentals/Instructions/Labs/13-azure-openai.

In diesem Post soll es darum gehen das Sprachmodell als individuellen Chatbot zu nutzen. 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 Chat-GPT 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.

 

 

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 Chat-GPT 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: https://learn.microsoft.com/en-us/azure/ai-services/openai/reference

An dieser Stelle habe ich ein einfaches Beispiel. Ich möchte mit Postman ein Request an unsere API senden, so dass ich Nachrichten mit dem Chatbot austauschen kann.

Dafür muss in Postman die api-version als Parameter und der api-key als Authorisierung 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 Open AI Resource zwei API Schlüssel hinterlegt, diese können bei Bedarf neu generiert werden. Die Schlüssel sind im Azure Portal in der angelegten Resource unter dem Tab ‚Keys and Endpoint‘ zu finden.

 

 

In Postman wird dann im Authorization Tab der api-key hinterlegt. Die Post Url ist: https://[your_domain].openai.azure.com/openai/deployments/[deployment_name]/chat/completions?api-version=2024-02-01

Hier wird der Domainname der eigenen Azure Resource 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 besitzt. Das bedeutet, dass das gleiche deployment für verschiedene Chatverläufe und Konfigurationen genutzt werden kann, aber auch, dass beides in jedem Request mit gesandt 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‘ entsprechend den Chatverlauf zwischen Nutzer und Chatbot festhalten.

Request Body:


{
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant. You end every response with the statement: Its fun isnt it"
        },
        {
            "role": "user",
            "content": "Does Azure OpenAI support customer managed keys?"
        },
        {
            "role": "assistant",
            "content": "Yes, customer managed keys are supported by Azure OpenAI. Its fun isnt it"
        },
        {
            "role": "user",
            "content": "Do other Azure AI services support this too?"
        }
    ]
}

 

Für dieses Beispiel ist die Response unten angefügt. Die Antwort des Chatbots ist im Feld choices -> message -> content zu finden.

 

Response:

{
    "choices": [
        {
            "content_filter_results": {
                "hate": {
                    "filtered": false,
                    "severity": "safe"
                },
                "self_harm": {
                    "filtered": false,
                    "severity": "safe"
                },
                "sexual": {
                    "filtered": false,
                    "severity": "safe"
                },
                "violence": {
                    "filtered": false,
                    "severity": "safe"
                }
            },
            "finish_reason": "stop",
            "index": 0,
            "logprobs": null,
            "message": {
                "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.",
                "role": "assistant"
            }
        }
    ],
    "created": 1712937620,
    "id": "chatcmpl-9DDc4jjvlt8duozz2qmpzyq0zm9tM",
    "model": "gpt-35-turbo",
    "object": "chat.completion",
    "prompt_filter_results": [
        {
            "prompt_index": 0,
            "content_filter_results": {
                "hate": {
                    "filtered": false,
                    "severity": "safe"
                },
                "self_harm": {
                    "filtered": false,
                    "severity": "safe"
                },
                "sexual": {
                    "filtered": false,
                    "severity": "safe"
                },
                "violence": {
                    "filtered": false,
                    "severity": "safe"
                }
            }
        }
    ],
    "system_fingerprint": null,
    "usage": {
        "completion_tokens": 36,
        "prompt_tokens": 75,
        "total_tokens": 111
    }
}

 

Auf diesem Weg lassen sich die Azure Open AI Resourcen nutzen um einen individuellen Chatbot zu gestalten und über API Requests mit ihm Nachrichten auszutauschen.

 

Darius Sadeghi | Softwareentwickler | 03.05.2024

Sie suchen einen Software Anbieter?
Sprechen Sie uns an