Share via


Schnellstart: Erste Schritte mit Azure OpenAI Assistants (Vorschau)

Mit Azure OpenAI Assistants (Preview) können Sie KI-Assistenten erstellen, die dank benutzerdefinierte Anweisungen auf Ihre Anforderungen zugeschnitten sind und durch erweiterte Tools wie Codedolmetscher und benutzerdefinierte Funktionen ergänzt werden.

Voraussetzungen

  • Azure-Abonnement – kostenloses Abonnement erstellen.

  • Zugriff auf Azure OpenAI im gewünschten Azure-Abonnement gewährt.

    Derzeit wird der Zugriff auf diesen Dienst nur auf Antrag gewährt. Sie können den Zugriff auf Azure OpenAI beantragen, indem Sie das Formular unter https://aka.ms/oai/access ausfüllen. Öffnen Sie ein Problem in diesem Repository, um uns bei einem Problem zu kontaktieren.

  • Eine Azure OpenAI-Ressource mit einem bereitgestellten gpt-4 (1106-preview)-Modell.

  • Azure OpenAI Assistants sind derzeit in Schweden, Mitte; USA, Osten 2 und Australien, Osten verfügbar. Weitere Informationen zur Modellverfügbarkeit in diesen Regionen finden Sie im Modellhandbuch.

  • Wir empfehlen, den Transparenzhinweis zu verantwortungsvoller KI und andere Ressourcen für verantwortungsvolle KI zu lesen, um sich mit den Funktionen und Einschränkungen von Azure OpenAI Service vertraut zu machen.

Wechseln zu Azure OpenAI Studio

Navigieren Sie unter „https://oai.azure.com/“ zu Azure OpenAI Studio, und melden Sie sich mit den Anmeldeinformationen an, mit denen Sie Zugriff auf Ihre OpenAI-Ressource haben. Wählen Sie während oder nach dem Anmeldeworkflow das passende Verzeichnis, Azure-Abonnement und die Azure OpenAI-Ressource aus.

Starten Sie auf der Azure OpenAI Studio-Startseite den Assistants-Playground über die linke Navigation Playground>Assistants (Vorschau)

Screenshot der Azure OpenAI Studio-Zielseite.

Playground

Mit dem Assistants-Playground können Sie KI-Assistenten erkunden, prototypisieren und testen, ohne Code ausführen zu müssen. Auf dieser Seite können Sie neue Ideen ganz einfach schrittweise erkunden und mit ihnen experimentieren.

Screenshot: Bildschirm mit der Konfiguration des Assistenten ohne ausgefüllte Werte

Assistenteneinrichtung

Verwenden Sie den Bereich Assistenten-Setup, um einen neuen KI-Assistenten zu erstellen oder einen vorhandenen Assistenten auszuwählen.

Name Beschreibung
Assistentenname Ihr Bereitstellungsname, der einem bestimmten Modell zugeordnet ist.
Anweisungen Anweisungen ähneln Systemmeldungen, die dem Modell Anleitungen dazu geben, wie es sich verhalten soll und auf welche Kontexte es beim Generieren von Antworten verweisen soll. Sie können die Persönlichkeit des Assistenten beschreiben, ihm sagen, was er beantworten soll und was nicht, und ihm sagen, wie Antworten formatiert werden sollen. Sie können auch Beispiele für die Schritte bereitstellen, die es beim Beantworten von Antworten ausführen soll.
Bereitstellung Hier legen Sie fest, welche Modellimplementierung mit Ihrem Assistenten verwendet werden soll.
Funktionen Erstellen benutzerdefinierter Funktionsdefinitionen für die Modelle zum Formulieren von API-Aufrufen und Strukturdatenausgaben basierend auf Ihren Spezifikationen
Codeinterpreter Codeinterpreter bietet Zugriff auf eine Sandbox-Python-Umgebung, mit der das Modell Code testen und ausführen kann.
Dateien Sie können bis zu 20 Dateien mit einer maximalen Dateigröße von 512 MB hochladen, um sie mit Tools zu verwenden.

Extras

Ein einzelner Assistent kann auf bis zu 128 Tools code interpretersowie auf alle benutzerdefinierten Tools, die Sie über Funktionen erstellen, zugreifen.

Chat-Sitzung

Die Chatsitzung, die innerhalb der API des Assistenten auch als Thread bezeichnet wird, ist der Ort, an dem die Unterhaltung zwischen Benutzer*innen und dem Assistenten stattfindet. Im Gegensatz zu herkömmlichen Chatabschlussaufrufen ist die Anzahl der Nachrichten in einem Thread nicht begrenzt. Der Assistent komprimiert automatisch Anforderungen, um den Eingabetokengrenzwert des Modells anzupassen.

Das bedeutet auch, dass Sie nicht steuern, wie viele Token während jeder Unterhaltung an das Modell übergeben werden. Das Verwalten von Token wird vollständig von der Assistants-API abstrahiert und verarbeitet.

Wählen Sie die Schaltfläche Chat löschen aus, um den aktuellen Konversationsverlauf zu löschen.

Unterhalb des Texteingabefelds gibt es zwei Schaltflächen:

  • Nachricht ohne Ausführung hinzufügen.
  • Hinzufügen und Ausführen.

Protokolle

Protokolle bieten eine detaillierte Momentaufnahme der API-Aktivität des Assistenten.

Anzeigen von Bereichen

Standardmäßig gibt es drei Bereiche: Assistenteneinrichtung, Chatsitzung und Protokolle. Mit Bereiche anzeigen können Sie die Bereiche hinzufügen, entfernen und neu anordnen. Wenn Sie jemals einen Bereich schließen und ihn wiederherstellen müssen, verwenden Sie Bereiche anzeigen, um den geschlossenen Bereich wiederherzustellen.

Erstellen Ihres ersten Assistenten

  1. Wählen Sie im Dropdownmenü „Assistent einrichten“ die Option Neu aus.

  2. Geben Sie Ihrem Assistenten einen Namen.

  3. Geben Sie die folgenden Anweisungen ein: „Du bist ein KI-Assistent, der Code schreiben kann, um mathematische Fragen zu beantworten“.

  4. Wählen Sie eine Bereitstellung von gpt-4 (1106-preview) aus. In der Dropdownliste werden Ihre benutzerdefinierten Bereitstellungsnamen angezeigt. Wenn die Modell-/Bereitstellungsnamen unterschiedlich sind, sollten Sie eine Bereitstellung auswählen, bei der das zugrunde liegende Modell dem 1106-Vorschaumodell entspricht.

  5. Wählen Sie den Umschalter zum Aktivieren des Codeinterpreters aus.

  6. Wählen Sie Speichern.

    Screenshot: Assistent mit eingegebenen Konfigurationsdetails.

  7. Geben Sie eine Frage ein, die der Assistent benatworten soll: „Ich muss die Rechnung 3x + 11 = 14 lösen. Kannst du mir helfen?“

  8. Wählen Sie die Schaltfläche Hinzufügen und Ausführen aus.

    The solution to the equation (3x + 11 = 14) is (x = 1).
    

    Wir sehen zwar, dass die Antwort richtig ist, aber um zu bestätigen, dass das Modell den Codeinterpreter verwendet hat, um zu dieser Antwort zu gelangen, und dass der von ihm geschriebene Code gültig ist und nicht einfach eine Antwort aus den Trainingsdaten des Modells wiederholt, müssen wir eine weitere Frage stellen.

  9. Geben Sie Folgendes ein: „Zeige mir den Code an, den du ausgeführt hast, um diese Lösung zu erhalten.“

    Certainly! Here's the Python code I ran to find the solution for the equation (3x + 11 = 14):
    
    from sympy import symbols, Eq, solve  
    
    # Define the variable  
    x = symbols('x')  
    
    # Define the equation  
    equation = Eq(3*x + 11, 14)  
    
    # Solve the equation  
    solution = solve(equation, x)  
    solution  
    

Screenshot: Unterhaltungssitzung im Playground des Assistenten.

Sie können auch die Protokolle im rechten Bereich konsultieren, um sicherzustellen, dass der Codeinterpreter verwendet wurde, und um den Code zu überprüfen, der zur Generierung der Antwort ausgeführt wurde. Es ist wichtig zu beachten, dass der Codeinterpreter das Modell zwar in die Lage versetzt, auf komplexere mathematische Fragen zu reagieren, indem er die Fragen in Code konvertiert und in einer Sandbox-Python-Umgebung ausgeführt. Dennoch müssen Sie die Antwort überprüfen, um sicherzustellen, dass das Modell Ihre Frage korrekt in eine gültige Codedarstellung übersetzt hat.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource selbst oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind.

Siehe auch

Wichtig

Einige der in diesem Artikel beschriebenen Features sind möglicherweise nur in der Vorschau verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Voraussetzungen

Navigieren zu Azure KI Studio (Vorschau)

  1. Melden Sie sich beim Azure KI Studio an.

  2. Wechseln Sie zu Ihrem Projekt oder erstellen Sie ein neues Projekt in Azure KI Studio.

  3. Wählen Sie in der Projektübersicht Assistentenaus. Dies befindet sich unter Projekt-Playground.

    Mit dem Assistants-Playground können Sie KI-Assistenten erkunden, prototypisieren und testen, ohne Code ausführen zu müssen. Auf dieser Seite können Sie neue Ideen ganz einfach schrittweise erkunden und mit ihnen experimentieren.

    Der Playground bietet mehrere Optionen zum Konfigurieren des Assistenten. In den folgenden Schritten werden Sie den Bereich Assistenten-Setup, um einen neuen KI-Assistenten zu erstellen.

    Name Beschreibung
    Assistentenname Ihr Bereitstellungsname, der einem bestimmten Modell zugeordnet ist.
    Anweisungen Anweisungen ähneln Systemmeldungen, die dem Modell Anleitungen dazu geben, wie es sich verhalten soll und auf welche Kontexte es beim Generieren von Antworten verweisen soll. Sie können die Persönlichkeit des Assistenten beschreiben, ihm sagen, was er beantworten soll und was nicht, und ihm sagen, wie Antworten formatiert werden sollen. Sie können auch Beispiele für die Schritte bereitstellen, die es beim Beantworten von Antworten ausführen soll.
    Bereitstellung Hier legen Sie fest, welche Modellimplementierung mit Ihrem Assistenten verwendet werden soll.
    Funktionen Erstellen Sie benutzerdefinierte Funktionsdefinitionen für die Modelle zum Formulieren von API-Aufrufen und strukturieren Sie Datenausgaben basierend auf Ihren Spezifikationen. In dieser Schnellstartanleitung nicht verwendet.
    Codeinterpreter Codeinterpreter bietet Zugriff auf eine Sandbox-Python-Umgebung, mit der das Modell Code testen und ausführen kann.
    Dateien Sie können bis zu 20 Dateien mit einer maximalen Dateigröße von 512 MB hochladen, um sie mit Tools zu verwenden. In dieser Schnellstartanleitung nicht verwendet.

    Screenshot: Bildschirm mit der Konfiguration des Assistenten ohne ausgefüllte Werte.

Erstellen Ihres ersten Assistenten

  1. Wählen Sie Ihre Bereitstellung in der Dropdownliste Bereitstellungen aus.

  2. Wählen Sie im Dropdownmenü „Assistenten-Setup“ die Option Neu aus.

  3. Geben Sie Ihrem Assistenten einen Namen.

  4. Geben Sie die folgenden Anweisungen ein: „Du bist ein KI-Assistent, der Code schreiben kann, um mathematische Fragen zu beantworten“.

  5. Wählen Sie eine Modellimplementierung aus. Es wird empfohlen, für Tests die neuesten gpt-4-Modelle zu verwenden.

  6. Wählen Sie den Umschalter zum Aktivieren des Codeinterpreters aus.

  7. Wählen Sie Speichern.

    Screenshot: Assistent mit eingegebenen Konfigurationsdetails.

  8. Geben Sie eine Frage ein, die der Assistent benatworten soll: „Ich muss die Rechnung 3x + 11 = 14 lösen. Kannst du mir helfen?“

  9. Wählen Sie die Schaltfläche Hinzufügen und Ausführen aus.

    The solution to the equation (3x + 11 = 14) is (x = 1).
    

    Wir sehen zwar, dass die Antwort richtig ist, aber um zu bestätigen, dass das Modell den Codeinterpreter verwendet hat, um zu dieser Antwort zu gelangen, und dass der von ihm geschriebene Code gültig ist und nicht einfach eine Antwort aus den Trainingsdaten des Modells wiederholt, müssen wir eine weitere Frage stellen.

  10. Geben Sie Folgendes ein: „Zeige mir den Code an, den du ausgeführt hast, um diese Lösung zu erhalten.“

    Sure. The code is very straightforward
    
    # calculation
    x = (14 - 11) / 3
    x
    
    
    First, we subtract 11 from 14, then divide the result by 3. This gives us the value of x which is 1.0.
    

    Screenshot: Unterhaltungssitzung im Playground des Assistenten.

Sie können auch die Protokolle im rechten Bereich konsultieren, um sicherzustellen, dass der Codeinterpreter verwendet wurde, und um den Code zu überprüfen, der zur Generierung der Antwort ausgeführt wurde. Es ist wichtig zu beachten, dass der Codeinterpreter das Modell zwar in die Lage versetzt, auf komplexere mathematische Fragen zu reagieren, indem er die Fragen in Code konvertiert und in einer Sandbox-Python-Umgebung ausgeführt. Dennoch müssen Sie die Antwort überprüfen, um sicherzustellen, dass das Modell Ihre Frage korrekt in eine gültige Codedarstellung übersetzt hat.

Wichtige Begriffe

Beachten Sie bei der Verwendung des Assistenten-Playgrounds die folgenden Konzepte.

Extras

Ein einzelner Assistent kann auf bis zu 128 Tools code interpretersowie auf alle benutzerdefinierten Tools, die Sie über Funktionen erstellen, zugreifen.

Chat-Sitzung

Die Chatsitzung, die innerhalb der API des Assistenten auch als Thread bezeichnet wird, ist der Ort, an dem die Unterhaltung zwischen Benutzer*innen und dem Assistenten stattfindet. Im Gegensatz zu herkömmlichen Chatabschlussaufrufen ist die Anzahl der Nachrichten in einem Thread nicht begrenzt. Der Assistent komprimiert automatisch Anforderungen, um den Eingabetokengrenzwert des Modells anzupassen.

Das bedeutet auch, dass Sie nicht steuern, wie viele Token während jeder Unterhaltung an das Modell übergeben werden. Das Verwalten von Token wird vollständig von der Assistants-API abstrahiert und verarbeitet.

Wählen Sie die Schaltfläche Chat löschen aus, um den aktuellen Konversationsverlauf zu löschen.

Unterhalb des Texteingabefelds gibt es zwei Schaltflächen:

  • Nachricht ohne Ausführung hinzufügen.
  • Hinzufügen und Ausführen.

Protokolle

Protokolle bieten eine detaillierte Momentaufnahme der API-Aktivität des Assistenten.

Anzeigen von Bereichen

Standardmäßig gibt es drei Bereiche: Assistenteneinrichtung, Chatsitzung und Protokolle. Mit Bereiche anzeigen können Sie die Bereiche hinzufügen, entfernen und neu anordnen. Wenn Sie jemals einen Bereich schließen und ihn wiederherstellen müssen, verwenden Sie Bereiche anzeigen, um den geschlossenen Bereich wiederherzustellen.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource selbst oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind.

Alternativ können Sie den Assistentenoder Thread über die API des Assistenten löschen.

Weitere Informationen

Referenzdokumentation | Quellcode der Bibliothek | Paket (PyPi) |

Voraussetzungen

  • Azure-Abonnement: Kostenloses Azure-Konto

  • Zugriff auf Azure OpenAI im gewünschten Azure-Abonnement gewährt

    Derzeit wird der Zugriff auf diesen Dienst nur auf Antrag gewährt. Sie können den Zugriff auf Azure OpenAI beantragen, indem Sie das Formular unter https://aka.ms/oai/access ausfüllen. Öffnen Sie ein Problem in diesem Repository, um uns bei einem Problem zu kontaktieren.

  • Python 3.8 oder eine höhere Version

  • Die folgenden Python-Bibliotheken: os, json, openai (Version 1.x ist erforderlich)

  • Jupyter-Notebooks

  • Azure OpenAI Assistants sind derzeit in Schweden, Mitte; USA, Osten 2 und Australien, Osten verfügbar. Weitere Informationen zur Modellverfügbarkeit in diesen Regionen finden Sie im Modellhandbuch.

  • Wir empfehlen, den Transparenzhinweis zu verantwortungsvoller KI und andere Ressourcen für verantwortungsvolle KI zu lesen, um sich mit den Funktionen und Einschränkungen von Azure OpenAI Service vertraut zu machen.

  • Zum Testen dieses Beispiels wurde eine Azure OpenAI-Ressource mit dem bereitgestellten gpt-4 (1106-preview)-Modell verwendet.

Einrichten

Installieren Sie die OpenAI Python-Clientbibliothek mit:

pip install openai==v1.20.0

Hinweis

  • Die Dateisuche kann bis zu 10.000 Dateien pro Assistent erfassen – 500 mal mehr als bisher. Sie ist schnell, unterstützt parallele Abfragen durch Multithreadsuchvorgänge und beinhaltet verbesserte Funktionen für Neusortierung und das Umschreiben von Abfragen.
    • Der Vektorspeicher ist ein neues Objekt in der API. Sobald eine Datei einem Vektorspeicher hinzugefügt wurde, wird sie automatisch geparst, aufgeteilt und eingebettet, damit sie durchsucht werden kann. Vektorspeicher können über Assistenten und Threads hinweg verwendet werden und vereinfachen so die Dateiverwaltung und Abrechnung.
  • Wir haben Unterstützung für den tool_choice-Parameter hinzugefügt. Dieser kann verwendet werden, um die Nutzung eines bestimmten Tools (z. B. Dateisuche, Codeinterpreter oder eine Funktion) in einer bestimmten Ausführung zu erzwingen.

Hinweis

Diese Bibliothek wird von OpenAI verwaltet. Lesen Sie den Versionsverlauf, um die neuesten Updates für die Bibliothek nachzuverfolgen.

Abrufen von Schlüssel und Endpunkt

Um erfolgreich einen Aufruf im Azure OpenAI Service auszuführen, benötigen Sie Folgendes:

Variablenname Wert
ENDPOINT Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Alternativ dazu finden Sie den Wert auch unter Azure OpenAI Studio>Playground>Code anzeigen. Ein Beispielendpunkt ist https://docs-test-001.openai.azure.com/.
API-KEY Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden.
DEPLOYMENT-NAME Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Sie finden diesen Wert im Azure-Portal unter Ressourcenverwaltung>Modellbereitstellungen oder in Azure OpenAI Studio unter Verwaltung>Bereitstellungen.

Wechseln Sie zu Ihrer Ressource im Azure-Portal. Die Werte für Schlüssel und Endpunkt finden Sie im Abschnitt Ressourcenverwaltung. Kopieren Sie die Werte für Endpunkt und Zugriffsschlüssel, da Sie beide für die Authentifizierung Ihrer API-Aufrufe benötigen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen.

Screenshot des Übersichtsblatts für eine Azure OpenAI-Ressource im Azure-Portal mit rot umrandeten Speicherort für Endpunkt und Zugriffsschlüssel

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

Umgebungsvariablen

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Erstellen eines Assistenten

In unserem Code geben wir die folgenden Werte an:

Name Beschreibung
Assistentenname Ihr Bereitstellungsname, der einem bestimmten Modell zugeordnet ist.
Anweisungen Anweisungen ähneln Systemmeldungen, die dem Modell Anleitungen dazu geben, wie es sich verhalten soll und auf welche Kontexte es beim Generieren von Antworten verweisen soll. Sie können die Persönlichkeit des Assistenten beschreiben, ihm sagen, was er beantworten soll und was nicht, und ihm sagen, wie Antworten formatiert werden sollen. Sie können auch Beispiele für die Schritte bereitstellen, die es beim Beantworten von Antworten ausführen soll.
Modell Hier legen Sie fest, welcher Modellimplementierungsname mit Ihrem Assistenten verwendet werden soll. Das Abruftool erfordert oder Modell gpt-35-turbo (1106) oder gpt-4 (1106-preview). Legen Sie diesen Wert auf Ihren Bereitstellungsnamen fest, nicht auf den Modellnamen, es sei denn, die Namen sind identisch.
Codeinterpreter Codeinterpreter bietet Zugriff auf eine Sandbox-Python-Umgebung, mit der das Modell Code testen und ausführen kann.

Extras

Ein einzelner Assistent kann auf bis zu 128 Tools code interpretersowie auf alle benutzerdefinierten Tools, die Sie über Funktionen erstellen, zugreifen.

Erstellen Sie einen Assistenten mit folgendem Code, und führen Sie ihn aus:

import os
import time
import json
from openai import AzureOpenAI
    
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2024-02-15-preview",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
    )

# Create an assistant
assistant = client.beta.assistants.create(
    name="Math Assist",
    instructions="You are an AI assistant that can write code to help answer math questions.",
    tools=[{"type": "code_interpreter"}],
    model="gpt-4-1106-preview" #You must replace this value with the deployment name for your model.
)

# Create a thread
thread = client.beta.threads.create()

# Add a user question to the thread
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="I need to solve the equation `3x + 11 = 14`. Can you help me?"
)

# Run the thread
run = client.beta.threads.runs.create(
  thread_id=thread.id,
  assistant_id=assistant.id,
)

# Retrieve the status of the run
run = client.beta.threads.runs.retrieve(
  thread_id=thread.id,
  run_id=run.id
)

status = run.status

# Wait till the assistant has responded
while status not in ["completed", "cancelled", "expired", "failed"]:
    time.sleep(5)
    run = client.beta.threads.runs.retrieve(thread_id=thread.id,run_id=run.id)
    status = run.status

messages = client.beta.threads.messages.list(
  thread_id=thread.id
)

print(messages.model_dump_json(indent=2))

Output

{
  "data": [
    {
      "id": "msg_XOL8597uuV6zIEgaqZtI0KD3",
      "assistant_id": "asst_WKFOCDJ42Ld1bVUfS8w2pt6E",
      "content": [
        {
          "text": {
            "annotations": [],
            "value": "The solution to the equation \\(3x + 11 = 14\\) is \\(x = 1\\)."
          },
          "type": "text"
        }
      ],
      "created_at": 1705892759,
      "file_ids": [],
      "metadata": {},
      "object": "thread.message",
      "role": "assistant",
      "run_id": "run_TSmF4LoU6bX4SD3xp5xDr1ey",
      "thread_id": "thread_hCOKdEZy1diZAAzwDudRqGRc"
    },
    {
      "id": "msg_F25tb90W5xTPqSn4KgU4aMsb",
      "assistant_id": null,
      "content": [
        {
          "text": {
            "annotations": [],
            "value": "I need to solve the equation `3x + 11 = 14`. Can you help me?"
          },
          "type": "text"
        }
      ],
      "created_at": 1705892751,
      "file_ids": [],
      "metadata": {},
      "object": "thread.message",
      "role": "user",
      "run_id": null,
      "thread_id": "thread_hCOKdEZy1diZAAzwDudRqGRc"
    }
  ],
  "object": "list",
  "first_id": "msg_XOL8597uuV6zIEgaqZtI0KD3",
  "last_id": "msg_F25tb90W5xTPqSn4KgU4aMsb",
  "has_more": false
}

Verstehen der Ergebnisse

In diesem Beispiel erstellen wir einen Assistenten mit aktivierten Codeinterpreter. Wenn wir dem Assistenten eine mathematische Frage stellen, übersetzt dieser die Frage in Python-Code und führt den Code in der Sandbox-Umgebung aus, um die Antwort auf die Frage zu finden. Der Code, den das Modell erstellt und testet, um zu einer Antwort zu gelangen, lautet:

    from sympy import symbols, Eq, solve  
      
    # Define the variable  
    x = symbols('x')  
      
    # Define the equation  
    equation = Eq(3*x + 11, 14)  
      
    # Solve the equation  
    solution = solve(equation, x)  
    solution  

Es ist wichtig zu beachten, dass der Codeinterpreter das Modell zwar in die Lage versetzt, auf komplexere Abfragen zu reagieren, indem er die Fragen in Code konvertiert und diesen iterativ in einer Python-Sandbox ausführt, bis er eine Lösung findet. Dennoch müssen Sie die Antwort überprüfen, um sicherzustellen, dass das Modell Ihre Frage korrekt in eine gültige Codedarstellung übersetzt hat.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource selbst oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind.

Siehe auch

Referenzdokumentation | Quellcode | Paket (NuGet)

Voraussetzungen

  • Azure-Abonnement: Kostenloses Azure-Konto

  • Zugriff auf Azure OpenAI im gewünschten Azure-Abonnement gewährt

    Derzeit wird der Zugriff auf diesen Dienst nur auf Antrag gewährt. Sie können den Zugriff auf Azure OpenAI beantragen, indem Sie das Formular unter https://aka.ms/oai/access ausfüllen. Öffnen Sie ein Problem in diesem Repository, um uns bei einem Problem zu kontaktieren.

  • Das .NET 8 SDK

  • Azure OpenAI Assistants sind derzeit in Schweden, Mitte; USA, Osten 2 und Australien, Osten verfügbar. Weitere Informationen zur Modellverfügbarkeit in diesen Regionen finden Sie im Modellhandbuch.

  • Wir empfehlen, den Transparenzhinweis zu verantwortungsvoller KI und andere Ressourcen für verantwortungsvolle KI zu lesen, um sich mit den Funktionen und Einschränkungen von Azure OpenAI Service vertraut zu machen.

  • Zum Testen dieses Beispiels wurde eine Azure OpenAI-Ressource mit dem bereitgestellten gpt-4 (1106-preview)-Modell verwendet.

Einrichten

Erstellen einer neuen .NET Core-Anwendung

Verwenden Sie in einem Konsolenfenster (z. B. cmd, PowerShell oder Bash) den Befehl dotnet new zum Erstellen einer neuen Konsolen-App mit dem Namen azure-openai-quickstart. Dieser Befehl erstellt ein einfaches „Hallo Welt“-Projekt mit einer einzigen C#-Quelldatei: Program.cs.

dotnet new console -n azure-openai-assistants-quickstart

Wechseln Sie zum Ordner der neu erstellten App. Sie können die Anwendung mit folgendem Befehl erstellen:

dotnet build

Die Buildausgabe sollte keine Warnungen oder Fehler enthalten.

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

Installieren Sie die OpenAI .NET-Clientbibliothek mit:

dotnet add package Azure.AI.OpenAI.Assistants --prerelease

Abrufen von Schlüssel und Endpunkt

Für erfolgreiche Azure OpenAI-Aufrufe benötigen Sie einen Endpunkt und einen Schlüssel.

Variablenname Wert
ENDPOINT Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Alternativ dazu finden Sie den Wert auch unter Azure OpenAI Studio>Playground>Codeansicht. Ein Beispielendpunkt ist https://docs-test-001.openai.azure.com/.
API-KEY Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden.

Wechseln Sie zu Ihrer Ressource im Azure-Portal. Den Abschnitt Schlüssel und Endpunkt finden Sie im Abschnitt Ressourcenverwaltung. Kopieren Sie die Werte für Endpunkt und Zugriffsschlüssel, da Sie beide für die Authentifizierung Ihrer API-Aufrufe benötigen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen.

Screenshot der Benutzeroberfläche mit der Übersicht über eine Azure OpenAI-Ressource im Azure-Portal, in der die Speicherorte für Endpunkt und Zugriffsschlüssel rot umrandet sind

Umgebungsvariablen

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Erstellen eines Assistenten

In unserem Code geben wir die folgenden Werte an:

Name Beschreibung
Assistentenname Ihr Bereitstellungsname, der einem bestimmten Modell zugeordnet ist.
Anweisungen Anweisungen ähneln Systemmeldungen, die dem Modell Anleitungen dazu geben, wie es sich verhalten soll und auf welche Kontexte es beim Generieren von Antworten verweisen soll. Sie können die Persönlichkeit des Assistenten beschreiben, ihm sagen, was er beantworten soll und was nicht, und ihm sagen, wie Antworten formatiert werden sollen. Sie können auch Beispiele für die Schritte bereitstellen, die es beim Beantworten von Antworten ausführen soll.
Modell Hier legen Sie fest, welcher Modellimplementierungsname mit Ihrem Assistenten verwendet werden soll. Das Abruftool erfordert oder Modell gpt-35-turbo (1106) oder gpt-4 (1106-preview). Legen Sie diesen Wert auf Ihren Bereitstellungsnamen fest, nicht auf den Modellnamen, es sei denn, die Namen sind identisch.
Codeinterpreter Codeinterpreter bietet Zugriff auf eine Sandbox-Python-Umgebung, mit der das Modell Code testen und ausführen kann.

Extras

Ein einzelner Assistent kann auf bis zu 128 Tools code interpretersowie auf alle benutzerdefinierten Tools, die Sie über Funktionen erstellen, zugreifen.

Erstellen Sie einen Assistenten mit folgendem Code, und führen Sie ihn aus:

using Azure;
using Azure.AI.OpenAI.Assistants;

string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? throw new ArgumentNullException("AZURE_OPENAI_ENDPOINT");
string key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? throw new ArgumentNullException("AZURE_OPENAI_API_KEY");
AssistantsClient client = new AssistantsClient(new Uri(endpoint), new AzureKeyCredential(key));

// Create an assistant
Assistant assistant = await client.CreateAssistantAsync(
    new AssistantCreationOptions("gpt-4-1106-preview") // Replace this with the name of your model deployment
    {
        Name = "Math Tutor",
        Instructions = "You are a personal math tutor. Write and run code to answer math questions.",
        Tools = { new CodeInterpreterToolDefinition() }
    });

// Create a thread
AssistantThread thread = await client.CreateThreadAsync();

// Add a user question to the thread
ThreadMessage message = await client.CreateMessageAsync(
    thread.Id,
    MessageRole.User,
    "I need to solve the equation `3x + 11 = 14`. Can you help me?");

// Run the thread
ThreadRun run = await client.CreateRunAsync(
    thread.Id,
    new CreateRunOptions(assistant.Id)
);

// Wait for the assistant to respond
do
{
    await Task.Delay(TimeSpan.FromMilliseconds(500));
    run = await client.GetRunAsync(thread.Id, run.Id);
}
while (run.Status == RunStatus.Queued
    || run.Status == RunStatus.InProgress);

// Get the messages
PageableList<ThreadMessage> messagesPage = await client.GetMessagesAsync(thread.Id);
IReadOnlyList<ThreadMessage> messages = messagesPage.Data;

// Note: messages iterate from newest to oldest, with the messages[0] being the most recent
foreach (ThreadMessage threadMessage in messages.Reverse())
{
    Console.Write($"{threadMessage.CreatedAt:yyyy-MM-dd HH:mm:ss} - {threadMessage.Role,10}: ");
    foreach (MessageContent contentItem in threadMessage.ContentItems)
    {
        if (contentItem is MessageTextContent textItem)
        {
            Console.Write(textItem.Text);
        }
        Console.WriteLine();
    }
}

Dadurch wird eine Ausgabe wie folgt gedruckt:

2024-03-05 03:38:17 -       user: I need to solve the equation `3x + 11 = 14`. Can you help me?
2024-03-05 03:38:25 -  assistant: The solution to the equation \(3x + 11 = 14\) is \(x = 1\).

Neue Nachrichten können vor der erneuten Ausführung im Thread erstellt werden, wodurch der Assistent die früheren Nachrichten als Kontext innerhalb des Threads verwendet.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource selbst oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind.

Siehe auch

Referenzdokumentation | Quellcode der Bibliothek | Paket (npm) |

Voraussetzungen

  • Azure-Abonnement: Kostenloses Azure-Konto

  • Zugriff auf Azure OpenAI im gewünschten Azure-Abonnement gewährt

    Derzeit wird der Zugriff auf diesen Dienst nur auf Antrag gewährt. Sie können den Zugriff auf Azure OpenAI beantragen, indem Sie das Formular unter https://aka.ms/oai/access ausfüllen. Öffnen Sie ein Problem in diesem Repository, um uns bei einem Problem zu kontaktieren.

  • Node.js-LTS mit TypeScript- oder ESM-Unterstützung

  • Die Azure CLI wird für die kennwortlose Authentifizierung in einer lokalen Entwicklungsumgebung verwendet. Erstellen Sie den erforderlichen Kontext, indem Sie sich mit der Azure CLI anmelden.

  • Azure OpenAI Assistants sind derzeit in Schweden, Mitte; USA, Osten 2 und Australien, Osten verfügbar. Weitere Informationen zur Modellverfügbarkeit in diesen Regionen finden Sie im Modellhandbuch.

  • Wir empfehlen, den Transparenzhinweis zu verantwortungsvoller KI und andere Ressourcen für verantwortungsvolle KI zu lesen, um sich mit den Funktionen und Einschränkungen von Azure OpenAI Service vertraut zu machen.

  • Zum Testen dieses Beispiels wurde eine Azure OpenAI-Ressource mit dem bereitgestellten gpt-4 (1106-preview)-Modell verwendet.

Für die kennwortlose Authentifizierung müssen Sie die folgenden Schritte ausführen:

  1. Verwenden Sie das @azure/identity-Paket.
  2. Weisen Sie Ihrem Benutzerkonto die Cognitive Services User-Rolle zu. Navigieren Sie hierzu im Azure-Portal zu Zugriffssteuerung (IAM)>Rollenzuweisungen hinzufügen.
  3. Melden Sie sich mit der Azure CLI an (z. B. az login).

Einrichten

  1. Installieren Sie mit dem folgenden Code die Clientbibliothek für OpenAI-Assistenten für JavaScript:

    npm install openai
    
  2. Für die empfohlene kennwortlose Authentifizierung:

    npm install @azure/identity
    

Abrufen von Schlüssel und Endpunkt

Um erfolgreich einen Aufruf im Azure OpenAI Service auszuführen, benötigen Sie Folgendes:

Variablenname Wert
ENDPOINT Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Alternativ dazu finden Sie den Wert auch unter Azure OpenAI Studio>Playground>Code anzeigen. Ein Beispielendpunkt ist https://docs-test-001.openai.azure.com/.
API-KEY Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden.
DEPLOYMENT-NAME Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Sie finden diesen Wert im Azure-Portal unter Ressourcenverwaltung>Modellbereitstellungen oder in Azure OpenAI Studio unter Verwaltung>Bereitstellungen.

Wechseln Sie zu Ihrer Ressource im Azure-Portal. Die Werte für Schlüssel und Endpunkt finden Sie im Abschnitt Ressourcenverwaltung. Kopieren Sie die Werte für Endpunkt und Zugriffsschlüssel, da Sie beide für die Authentifizierung Ihrer API-Aufrufe benötigen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen.

Screenshot: Übersichtsblatt für eine OpenAI-Ressource im Azure-Portal mit rot markiertem Speicherort für Endpunkt und Zugriffsschlüssel

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

Umgebungsvariablen

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Fügen Sie eine zusätzliche Umgebungsvariable für den Bereitstellungsnamen hinzu: AZURE_OPENAI_DEPLOYMENT_NAME.

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

setx AZURE_OPENAI_DEPLOYMENT_NAME "REPLACE_WITH_YOUR_DEPLOYMENT_NAME" 

Erstellen eines Assistenten

In unserem Code geben wir die folgenden Werte an:

Name Beschreibung
Assistentenname Ihr Bereitstellungsname, der einem bestimmten Modell zugeordnet ist.
Anweisungen Anweisungen ähneln Systemmeldungen, die dem Modell Anleitungen dazu geben, wie es sich verhalten soll und auf welche Kontexte es beim Generieren von Antworten verweisen soll. Sie können die Persönlichkeit des Assistenten beschreiben, ihm sagen, was er beantworten soll und was nicht, und ihm sagen, wie Antworten formatiert werden sollen. Sie können auch Beispiele für die Schritte bereitstellen, die es beim Beantworten von Antworten ausführen soll.
Modell Dies ist der Bereitstellungsname.
Codeinterpreter Codeinterpreter bietet Zugriff auf eine Sandbox-Python-Umgebung, mit der das Modell Code testen und ausführen kann.

Extras

Ein einzelner Assistent kann auf bis zu 128 Tools code interpretersowie auf alle benutzerdefinierten Tools, die Sie über Funktionen erstellen, zugreifen.

Melden Sie sich mit az login bei Azure an, und erstellen Sie dann einen Assistenten mit dem folgenden empfohlenen kennwortlosen TypeScript-Modul (index.ts). Führen Sie den Assistenten dann aus:

import "dotenv/config";
import { AzureOpenAI } from "openai";
import {
  Assistant,
  AssistantCreateParams,
  AssistantTool,
} from "openai/resources/beta/assistants";
import { Message, MessagesPage } from "openai/resources/beta/threads/messages";
import { Run } from "openai/resources/beta/threads/runs/runs";
import { Thread } from "openai/resources/beta/threads/threads";

// Add `Cognitive Services User` to identity for Azure OpenAI resource
import {
  DefaultAzureCredential,
  getBearerTokenProvider,
} from "@azure/identity";

// Get environment variables
const azureOpenAIEndpoint = process.env.AZURE_OPENAI_ENDPOINT as string;
const azureOpenAIDeployment = process.env
  .AZURE_OPENAI_DEPLOYMENT_NAME as string;

// Check env variables
if (!azureOpenAIEndpoint || !azureOpenAIDeployment) {
  throw new Error(
    "Please ensure to set AZURE_OPENAI_DEPLOYMENT_NAME and AZURE_OPENAI_ENDPOINT in your environment variables."
  );
}

// Get Azure SDK client
const getClient = (): AzureOpenAI => {
  const credential = new DefaultAzureCredential();
  const scope = "https://cognitiveservices.azure.com/.default";
  const azureADTokenProvider = getBearerTokenProvider(credential, scope);
  const assistantsClient = new AzureOpenAI({
    endpoint: azureOpenAIEndpoint,
    azureADTokenProvider,
  });
  return assistantsClient;
};

const assistantsClient = getClient();

const options: AssistantCreateParams = {
  model: azureOpenAIDeployment, // Deployment name seen in Azure AI Studio
  name: "Math Tutor",
  instructions:
    "You are a personal math tutor. Write and run JavaScript code to answer math questions.",
  tools: [{ type: "code_interpreter" } as AssistantTool],
};
const role = "user";
const message = "I need to solve the equation `3x + 11 = 14`. Can you help me?";

// Create an assistant
const assistantResponse: Assistant =
  await assistantsClient.beta.assistants.create(options);
console.log(`Assistant created: ${JSON.stringify(assistantResponse)}`);

// Create a thread
const assistantThread: Thread = await assistantsClient.beta.threads.create({});
console.log(`Thread created: ${JSON.stringify(assistantThread)}`);

// Add a user question to the thread
const threadResponse: Message =
  await assistantsClient.beta.threads.messages.create(assistantThread.id, {
    role,
    content: message,
  });
console.log(`Message created:  ${JSON.stringify(threadResponse)}`);

// Run the thread and poll it until it is in a terminal state
const runResponse: Run = await assistantsClient.beta.threads.runs.createAndPoll(
  assistantThread.id,
  {
    assistant_id: assistantResponse.id,
  },
  { pollIntervalMs: 500 }
);
console.log(`Run created:  ${JSON.stringify(runResponse)}`);

// Get the messages
const runMessages: MessagesPage =
  await assistantsClient.beta.threads.messages.list(assistantThread.id);
for await (const runMessageDatum of runMessages) {
  for (const item of runMessageDatum.content) {
    // types are: "image_file" or "text"
    if (item.type === "text") {
      console.log(`Message content: ${JSON.stringify(item.text?.value)}`);
    }
  }
}

Um den Dienstschlüssel für die Authentifizierung zu verwenden, können Sie einen Assistenten mit dem folgenden TypeScript-Modul (index.ts) erstellen und ausführen:

import "dotenv/config";
import { AzureOpenAI } from "openai";
import {
  Assistant,
  AssistantCreateParams,
  AssistantTool,
} from "openai/resources/beta/assistants";
import { Message, MessagesPage } from "openai/resources/beta/threads/messages";
import { Run } from "openai/resources/beta/threads/runs/runs";
import { Thread } from "openai/resources/beta/threads/threads";

// Get environment variables
const azureOpenAIKey = process.env.AZURE_OPENAI_KEY as string;
const azureOpenAIEndpoint = process.env.AZURE_OPENAI_ENDPOINT as string;
const azureOpenAIDeployment = process.env
  .AZURE_OPENAI_DEPLOYMENT_NAME as string;

// Check env variables
if (!azureOpenAIKey || !azureOpenAIEndpoint || !azureOpenAIDeployment) {
  throw new Error(
    "Please set AZURE_OPENAI_KEY and AZURE_OPENAI_ENDPOINT and AZURE_OPENAI_DEPLOYMENT_NAME in your environment variables."
  );
}

// Get Azure SDK client
const getClient = (): AzureOpenAI => {
  const assistantsClient = new AzureOpenAI({
    endpoint: azureOpenAIEndpoint,
    apiKey: azureOpenAIKey,
  });
  return assistantsClient;
};

const assistantsClient = getClient();

const options: AssistantCreateParams = {
  model: azureOpenAIDeployment, // Deployment name seen in Azure AI Studio
  name: "Math Tutor",
  instructions:
    "You are a personal math tutor. Write and run JavaScript code to answer math questions.",
  tools: [{ type: "code_interpreter" } as AssistantTool],
};
const role = "user";
const message = "I need to solve the equation `3x + 11 = 14`. Can you help me?";

// Create an assistant
const assistantResponse: Assistant =
  await assistantsClient.beta.assistants.create(options);
console.log(`Assistant created: ${JSON.stringify(assistantResponse)}`);

// Create a thread
const assistantThread: Thread = await assistantsClient.beta.threads.create({});
console.log(`Thread created: ${JSON.stringify(assistantThread)}`);

// Add a user question to the thread
const threadResponse: Message =
  await assistantsClient.beta.threads.messages.create(assistantThread.id, {
    role,
    content: message,
  });
console.log(`Message created:  ${JSON.stringify(threadResponse)}`);

// Run the thread and poll it until it is in a terminal state
const runResponse: Run = await assistantsClient.beta.threads.runs.createAndPoll(
  assistantThread.id,
  {
    assistant_id: assistantResponse.id,
  },
  { pollIntervalMs: 500 }
);
console.log(`Run created:  ${JSON.stringify(runResponse)}`);

// Get the messages
const runMessages: MessagesPage =
  await assistantsClient.beta.threads.messages.list(assistantThread.id);
for await (const runMessageDatum of runMessages) {
  for (const item of runMessageDatum.content) {
    // types are: "image_file" or "text"
    if (item.type === "text") {
      console.log(`Message content: ${JSON.stringify(item.text?.value)}`);
    }
  }
}

Output

Assistant created: {"id":"asst_zXaZ5usTjdD0JGcNViJM2M6N","createdAt":"2024-04-08T19:26:38.000Z","name":"Math Tutor","description":null,"model":"daisy","instructions":"You are a personal math tutor. Write and run JavaScript code to answer math questions.","tools":[{"type":"code_interpreter"}],"fileIds":[],"metadata":{}}
Thread created: {"id":"thread_KJuyrB7hynun4rvxWdfKLIqy","createdAt":"2024-04-08T19:26:38.000Z","metadata":{}}
Message created:  {"id":"msg_o0VkXnQj3juOXXRCnlZ686ff","createdAt":"2024-04-08T19:26:38.000Z","threadId":"thread_KJuyrB7hynun4rvxWdfKLIqy","role":"user","content":[{"type":"text","text":{"value":"I need to solve the equation `3x + 11 = 14`. Can you help me?","annotations":[]},"imageFile":{}}],"assistantId":null,"runId":null,"fileIds":[],"metadata":{}}
Created run
Run created:  {"id":"run_P8CvlouB8V9ZWxYiiVdL0FND","object":"thread.run","status":"queued","model":"daisy","instructions":"You are a personal math tutor. Write and run JavaScript code to answer math questions.","tools":[{"type":"code_interpreter"}],"metadata":{},"usage":null,"assistantId":"asst_zXaZ5usTjdD0JGcNViJM2M6N","threadId":"thread_KJuyrB7hynun4rvxWdfKLIqy","fileIds":[],"createdAt":"2024-04-08T19:26:39.000Z","expiresAt":"2024-04-08T19:36:39.000Z","startedAt":null,"completedAt":null,"cancelledAt":null,"failedAt":null}
Message content: "The solution to the equation \\(3x + 11 = 14\\) is \\(x = 1\\)."
Message content: "Yes, of course! To solve the equation \\( 3x + 11 = 14 \\), we can follow these steps:\n\n1. Subtract 11 from both sides of the equation to isolate the term with x.\n2. Then, divide by 3 to find the value of x.\n\nLet me calculate that for you."
Message content: "I need to solve the equation `3x + 11 = 14`. Can you help me?"

Es ist wichtig zu beachten, dass der Codeinterpreter das Modell zwar in die Lage versetzt, auf komplexere Abfragen zu reagieren, indem er die Fragen in Code konvertiert und diesen iterativ in JavaScript ausführt, bis er eine Lösung findet. Dennoch müssen Sie die Antwort überprüfen, um sicherzustellen, dass das Modell Ihre Frage korrekt in eine gültige Codedarstellung übersetzt hat.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource selbst oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind.

Beispielcode

Weitere Informationen

Voraussetzungen

  • Azure-Abonnement: Kostenloses Azure-Konto

  • Zugriff auf Azure OpenAI im gewünschten Azure-Abonnement gewährt

    Derzeit wird der Zugriff auf diesen Dienst nur auf Antrag gewährt. Sie können den Zugriff auf den Azure OpenAI-Dienst beantragen, indem Sie das Formular unter https://aka.ms/oai/access ausfüllen. Öffnen Sie ein Issue in diesem Repository, um uns bei einem Problem zu kontaktieren.

  • Python 3.8 oder eine höhere Version

  • Azure OpenAI Assistants sind derzeit in Schweden, Mitte; USA, Osten 2 und Australien, Osten verfügbar. Weitere Informationen zur Modellverfügbarkeit in diesen Regionen finden Sie im Modellhandbuch.

  • Wir empfehlen, den Transparenzhinweis zu verantwortungsvoller KI und andere Ressourcen für verantwortungsvolle KI zu lesen, um sich mit den Funktionen und Einschränkungen von Azure OpenAI Service vertraut zu machen.

  • Zum Testen dieses Beispiels wurde eine Azure OpenAI-Ressource mit dem bereitgestellten gpt-4 (1106-preview)-Modell verwendet.

Einrichten

Abrufen von Schlüssel und Endpunkt

Um erfolgreich einen Aufruf für Azure OpenAI auszuführen, benötigen Sie Folgendes:

Variablenname Wert
ENDPOINT Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Alternativ dazu finden Sie den Wert auch unter Azure OpenAI Studio>Playground>Codeansicht. Ein Beispielendpunkt ist https://docs-test-001.openai.azure.com/.
API-KEY Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. Sie können KEY1 oder KEY2 verwenden.
DEPLOYMENT-NAME Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Sie finden diesen Wert im Azure-Portal unter Ressourcenverwaltung>Bereitstellungen oder in Azure OpenAI Studio unter Verwaltung>Bereitstellungen.

Wechseln Sie zu Ihrer Ressource im Azure-Portal. Die Werte für Endpunkt und Schlüssel finden Sie im Abschnitt Ressourcenverwaltung. Kopieren Sie die Werte für Endpunkt und Zugriffsschlüssel, da Sie beide für die Authentifizierung Ihrer API-Aufrufe benötigen. Sie können KEY1 oder KEY2 verwenden. Wenn Sie jederzeit zwei Schlüssel zur Verfügung haben, können Sie die Schlüssel auf sichere Weise rotieren und neu generieren, ohne Dienstunterbrechungen zu verursachen.

Screenshot des Übersichtsblatts für eine Azure OpenAI-Ressource im Azure-Portal mit rot umrandeten Speicherort für Endpunkt und Zugriffsschlüssel

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

Umgebungsvariablen

Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

REST-API

Erstellen eines Assistenten

Hinweis

Bei Azure OpenAI erfordert der model-Parameter den Modellimplementierungsnamen. Wenn sich der Name der Modellimplementierung von dem zugrunde liegenden Modellnamen unterscheidet, ändern Sie den Code zu "model": "{your-custom-model-deployment-name}".

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants?api-version=2024-05-01-preview \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "instructions": "You are an AI assistant that can write code to help answer math questions.",
    "name": "Math Assist",
    "tools": [{"type": "code_interpreter"}],
    "model": "gpt-4-1106-preview"
  }'

Extras

Ein einzelner Assistent kann auf bis zu 128 Tools code interpretersowie auf alle benutzerdefinierten Tools, die Sie über Funktionen erstellen, zugreifen.

Erstellen eines Threads

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d ''

Hinzufügen einer Benutzerfrage zum Thread

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/messages \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d '{
      "role": "user",
      "content": "I need to solve the equation `3x + 11 = 14`. Can you help me?"
    }'

Ausführen des Threads

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/runs \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "assistant_id": "asst_abc123",
  }'

Abrufen des Ausführungsstatus

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/runs/run_abc123 \
  -H "api-key: $AZURE_OPENAI_API_KEY" \

Antwort des Assistenten

curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/messages \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \

Verstehen der Ergebnisse

In diesem Beispiel erstellen wir einen Assistenten mit aktivierten Codeinterpreter. Wenn wir dem Assistenten eine mathematische Frage stellen, übersetzt dieser die Frage in Python-Code und führt den Code in der Sandbox-Umgebung aus, um die Antwort auf die Frage zu finden. Der Code, den das Modell erstellt und testet, um zu einer Antwort zu gelangen, lautet:

    from sympy import symbols, Eq, solve  
      
    # Define the variable  
    x = symbols('x')  
      
    # Define the equation  
    equation = Eq(3*x + 11, 14)  
      
    # Solve the equation  
    solution = solve(equation, x)  
    solution  

Es ist wichtig zu beachten, dass der Codeinterpreter das Modell zwar in die Lage versetzt, auf komplexere Abfragen zu reagieren, indem er die Fragen in Code konvertiert und diesen iterativ in einer Python-Sandbox ausführt, bis er eine Lösung findet. Dennoch müssen Sie die Antwort überprüfen, um sicherzustellen, dass das Modell Ihre Frage korrekt in eine gültige Codedarstellung übersetzt hat.

Bereinigen von Ressourcen

Wenn Sie eine Azure OpenAI-Ressource bereinigen und entfernen möchten, können Sie die Ressource selbst oder die Ressourcengruppe löschen. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind.

Siehe auch