Ereignisse
Erstellen von KI-Apps und Agents
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
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.
Wichtig
Die in diesem Artikel markierten Elemente (Vorschau) sind aktuell als öffentliche 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.
Mit Azure KI Foundry können Sie v2-Assistenten verwenden, die mehrere Upgrades bieten. Das Dateisuche-Tool ist etwa schneller und unterstützt mehr Dateien.
Melden Sie sich bei Azure KI Foundry an.
Wenn Ihr Bildschirm nicht wie im folgenden Screenshot aussieht, wählen Sie Azure AI Foundry oben links auf dem Bildschirm aus.
Wählen Sie Los geht's in der Karte von Azure OpenAI Service aus.
Wählen Sie im Navigationsmenü auf der linken Seite Assistenten unter Playgrounds aus.
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 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 10.000 Dateien mit einer maximalen Dateigröße von 512 MB hochladen, um sie mit Tools zu verwenden. In dieser Schnellstartanleitung nicht verwendet. |
Wählen Sie Ihre Bereitstellung in der Dropdownliste Bereitstellungen aus.
Wählen Sie im Dropdownmenü „Assistenten-Setup“ die Option Neuer Assistent aus.
Geben Sie Ihrem Assistenten einen Namen.
Geben Sie die folgenden Anweisungen ein: „Du bist ein KI-Assistent, der Code schreiben kann, um mathematische Fragen zu beantworten“.
Wählen Sie eine Modellimplementierung aus. Es wird empfohlen, für Tests die neuesten gpt-4-Modelle zu verwenden.
Wählen Sie den Umschalter zum Aktivieren des Codeinterpreters aus.
Wählen Sie Speichern.
Geben Sie eine Frage ein, die der Assistent benatworten soll: „Ich muss die Rechnung 3x + 11 = 14
lösen. Kannst du mir helfen?“
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.
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.
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.
Beachten Sie bei der Verwendung des Assistenten-Playgrounds die folgenden Konzepte.
Ein einzelner Assistent kann auf bis zu 128 Tools code interpreter
sowie auf alle benutzerdefinierten Tools, die Sie über Funktionen erstellen, zugreifen.
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:
Protokolle bieten eine detaillierte Momentaufnahme der API-Aktivität des Assistenten.
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.
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.
Referenzdokumentation | Quellcode der Bibliothek | Paket (PyPi) |
gpt-4 (1106-preview)
-Modell verwendet.Für die kennwortlose Authentifizierung müssen Sie die folgenden Schritte ausführen:
Cognitive Services User
-Rolle zu. Navigieren Sie hierzu im Azure-Portal zu Zugriffssteuerung (IAM)>Rollenzuweisungen hinzufügen.az login
).pip install openai
pip install azure-identity
Hinweis
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.
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. Sie finden den Endpunkt auch über die Seite Bereitstellungen im Azure KI Foundry-Portal. 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. Diesen Wert finden Sie unter Ressourcenverwaltung>Modellbereitstellungen im Azure-Portal oder auf der Seite Bereitstellungen im Azure KI Foundry-Portal. |
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.
Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.
Wichtig
Es wird empfohlen, die Microsoft Entra ID-Authentifizierung mit verwalteten Identitäten für Azure-Ressourcen zu kombinieren, um das Speichern von Anmeldeinformationen mit den in der Cloud ausgeführten Anwendungen zu vermeiden.
Verwenden Sie API-Schlüssel mit Vorsicht. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich. Wenn Sie API-Schlüssel verwenden, speichern Sie sie sicher in Azure Key Vault, rotieren Sie die Schlüssel regelmäßig, und beschränken Sie den Zugriff auf Azure Key Vault mithilfe von rollenbasierter Zugriffssteuerung und Netzwerkzugriffsbeschränkungen. Weitere Informationen zur sicheren Verwendung von API-Schlüsseln in Ihren Apps finden Sie unter API-Schlüssel mit Azure Key Vault.
Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
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. |
Ein einzelner Assistent kann auf bis zu 128 Tools code interpreter
sowie auf alle benutzerdefinierten Tools, die Sie über Funktionen erstellen, zugreifen.
Melden Sie sich mit az login
bei Azure an, und erstellen Sie anschließend mit dem folgenden empfohlenen kennwortlosen Python-Beispiel einen Assistenten:
import os
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import AzureOpenAI
token_provider = get_bearer_token_provider(DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default")
client = AzureOpenAI(
azure_ad_token_provider=token_provider,
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
api_version="2024-05-01-preview",
)
# 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 and poll for the result
run = client.beta.threads.runs.create_and_poll(
thread_id=thread.id,
assistant_id=assistant.id,
instructions="Please address the user as Jane Doe. The user has a premium account.",
)
print("Run completed with status: " + run.status)
if run.status == "completed":
messages = client.beta.threads.messages.list(thread_id=thread.id)
print(messages.to_json(indent=2))
Um den API-Dienstschlüssel für die Authentifizierung zu verwenden, können Sie einen Assistenten mit dem folgenden Python-Beispiel erstellen und ausführen:
import os
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.environ["AZURE_OPENAI_API_KEY"],
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
api_version="2024-05-01-preview",
)
# 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 and poll for the result
run = client.beta.threads.runs.create_and_poll(
thread_id=thread.id,
assistant_id=assistant.id,
instructions="Please address the user as Jane Doe. The user has a premium account.",
)
print("Run completed with status: " + run.status)
if run.status == "completed":
messages = client.beta.threads.messages.list(thread_id=thread.id)
print(messages.to_json(indent=2))
Ausführung abgeschlossen mit dem Status: Abgeschlossen
{
"data": [
{
"id": "msg_4SuWxTubHsHpt5IlBTO5Hyw9",
"assistant_id": "asst_cYqL1RuwLyFV3HU1gkaE2k0K",
"attachments": [],
"content": [
{
"text": {
"annotations": [],
"value": "The solution to the equation \\(3x + 11 = 14\\) is \\(x = 1\\)."
},
"type": "text"
}
],
"created_at": 1716397091,
"metadata": {},
"object": "thread.message",
"role": "assistant",
"run_id": "run_hFgBPbUtO8ZNTnNPC8PgpH1S",
"thread_id": "thread_isb7spwRycI5ueT9E7357aOm"
},
{
"id": "msg_Z32w2E7kY5wEWhZqQWxIbIUB",
"assistant_id": null,
"attachments": [],
"content": [
{
"text": {
"annotations": [],
"value": "I need to solve the equation `3x + 11 = 14`. Can you help me?"
},
"type": "text"
}
],
"created_at": 1716397025,
"metadata": {},
"object": "thread.message",
"role": "user",
"run_id": null,
"thread_id": "thread_isb7spwRycI5ueT9E7357aOm"
}
],
"object": "list",
"first_id": "msg_4SuWxTubHsHpt5IlBTO5Hyw9",
"last_id": "msg_Z32w2E7kY5wEWhZqQWxIbIUB",
"has_more": false
}
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.
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.
Referenzdokumentation | Quellcode | Paket (NuGet)
gpt-4 (1106-preview)
-Modell verwendet.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-assistants-quickstart
:
dotnet new console -n azure-openai-assistants-quickstart
Erstellen Sie die App mit dem Befehl dotnet build
im neu erstellten Ordner azure-openai-assistants-quickstart
:
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 dem Befehl dotnet add package:
dotnet add package Azure.AI.OpenAI --prerelease
Für erfolgreiche Azure OpenAI-Aufrufe benötigen Sie einen Endpunkt und einen Schlüssel.
Variablenname | Wert |
---|---|
ENDPOINT |
Der Dienstendpunkt befindet sich im Abschnitt Schlüssel und Endpunkt, wenn Sie Ihre Ressource aus dem Azure-Portal untersuchen. Alternativ können Sie den Endpunkt über die Seite Bereitstellungen im Azure KI Foundry-Portal finden. 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.
Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.
Wichtig
Es wird empfohlen, die Microsoft Entra ID-Authentifizierung mit verwalteten Identitäten für Azure-Ressourcen zu kombinieren, um das Speichern von Anmeldeinformationen mit den in der Cloud ausgeführten Anwendungen zu vermeiden.
Verwenden Sie API-Schlüssel mit Vorsicht. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich. Wenn Sie API-Schlüssel verwenden, speichern Sie sie sicher in Azure Key Vault, rotieren Sie die Schlüssel regelmäßig, und beschränken Sie den Zugriff auf Azure Key Vault mithilfe von rollenbasierter Zugriffssteuerung und Netzwerkzugriffsbeschränkungen. Weitere Informationen zur sicheren Verwendung von API-Schlüsseln in Ihren Apps finden Sie unter API-Schlüssel mit Azure Key Vault.
Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Die passwortlose Authentifizierung ist sicherer als schlüsselbasierte Alternativen und ist der empfohlene Ansatz für die Verbindung mit Azure-Diensten. Wenn Sie die passwortlose Authentifizierung auswählen, müssen Sie Folgendes ausführen:
Fügen Sie das Paket Azure.Identity
hinzu.
dotnet add package Azure.Identity
Weisen Sie Ihrem Benutzerkonto die Cognitive Services User
-Rolle zu. Dies kann im Azure-Portal auf Ihrer OpenAI-Ressource unter Access Control (IAM)>Rollenzuweisung hinzufügen erfolgen.
Melden Sie sich mit Visual Studio oder der Azure CLI über az login
in Azure an.
Aktualisieren Sie die Program.cs
-Datei mit dem folgenden Code, um einen Assistenten zu erstellen:
using Azure;
using Azure.AI.OpenAI.Assistants;
// Assistants is a beta API and subject to change
// Acknowledge its experimental status by suppressing the matching warning.
string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
var openAIClient = new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));
// Use for passwordless auth
//var openAIClient = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential());
FileClient fileClient = openAIClient.GetFileClient();
AssistantClient assistantClient = openAIClient.GetAssistantClient();
// First, let's contrive a document we'll use retrieval with and upload it.
using Stream document = BinaryData.FromString("""
{
"description": "This document contains the sale history data for Contoso products.",
"sales": [
{
"month": "January",
"by_product": {
"113043": 15,
"113045": 12,
"113049": 2
}
},
{
"month": "February",
"by_product": {
"113045": 22
}
},
{
"month": "March",
"by_product": {
"113045": 16,
"113055": 5
}
}
]
}
""").ToStream();
OpenAIFileInfo salesFile = await fileClient.UploadFileAsync(
document,
"monthly_sales.json",
FileUploadPurpose.Assistants);
// Now, we'll create a client intended to help with that data
AssistantCreationOptions assistantOptions = new()
{
Name = "Example: Contoso sales RAG",
Instructions =
"You are an assistant that looks up sales data and helps visualize the information based"
+ " on user queries. When asked to generate a graph, chart, or other visualization, use"
+ " the code interpreter tool to do so.",
Tools =
{
new FileSearchToolDefinition(),
new CodeInterpreterToolDefinition(),
},
ToolResources = new()
{
FileSearch = new()
{
NewVectorStores =
{
new VectorStoreCreationHelper([salesFile.Id]),
}
}
},
};
Assistant assistant = await assistantClient.CreateAssistantAsync(deploymentName, assistantOptions);
// Create and run a thread with a user query about the data already associated with the assistant
ThreadCreationOptions threadOptions = new()
{
InitialMessages = { "How well did product 113045 sell in February? Graph its trend over time." }
};
ThreadRun threadRun = await assistantClient.CreateThreadAndRunAsync(assistant.Id, threadOptions);
// Check back to see when the run is done
do
{
Thread.Sleep(TimeSpan.FromSeconds(1));
threadRun = assistantClient.GetRun(threadRun.ThreadId, threadRun.Id);
} while (!threadRun.Status.IsTerminal);
// Finally, we'll print out the full history for the thread that includes the augmented generation
AsyncCollectionResult<ThreadMessage> messages
= assistantClient.GetMessagesAsync(
threadRun.ThreadId,
new MessageCollectionOptions() { Order = MessageCollectionOrder.Ascending });
await foreach (ThreadMessage message in messages)
{
Console.Write($"[{message.Role.ToString().ToUpper()}]: ");
foreach (MessageContent contentItem in message.Content)
{
if (!string.IsNullOrEmpty(contentItem.Text))
{
Console.WriteLine($"{contentItem.Text}");
if (contentItem.TextAnnotations.Count > 0)
{
Console.WriteLine();
}
// Include annotations, if any.
foreach (TextAnnotation annotation in contentItem.TextAnnotations)
{
if (!string.IsNullOrEmpty(annotation.InputFileId))
{
Console.WriteLine($"* File citation, file ID: {annotation.InputFileId}");
}
if (!string.IsNullOrEmpty(annotation.OutputFileId))
{
Console.WriteLine($"* File output, new file ID: {annotation.OutputFileId}");
}
}
}
if (!string.IsNullOrEmpty(contentItem.ImageFileId))
{
OpenAIFileInfo imageInfo = await fileClient.GetFileAsync(contentItem.ImageFileId);
BinaryData imageBytes = await fileClient.DownloadFileAsync(contentItem.ImageFileId);
using FileStream stream = File.OpenWrite($"{imageInfo.Filename}.png");
imageBytes.ToStream().CopyTo(stream);
Console.WriteLine($"<image: {imageInfo.Filename}.png>");
}
}
Console.WriteLine();
}
Führen Sie die Anwendung mit dem Befehl dotnet run
aus:
dotnet run
Die Konsolenausgabe sollte wie folgt aussehen:
[USER]: How well did product 113045 sell in February? Graph its trend over time.
[ASSISTANT]: Product 113045 sold 22 units in February. Let's visualize its sales trend over the given months (January through March).
I'll create a graph to depict this trend.
[ASSISTANT]: <image: 553380b7-fdb6-49cf-9df6-e8e6700d69f4.png>
The graph above visualizes the sales trend for product 113045 from January to March. As seen, the sales peaked in February with 22 units sold, and fluctuated over the period from January (12 units) to March (16 units).
If you need further analysis or more details, feel free to ask!
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.
Referenzdokumentation | Quellcode der Bibliothek | Paket (npm) |
gpt-4 (1106-preview)
-Modell verwendet.Für die empfohlene schlüssellose Authentifizierung mit Microsoft Entra ID müssen Sie:
Cognitive Services User
-Rolle zu. Sie können Rollen im Azure-Portal unter Zugriffssteuerung (IAM)>Rollenzuweisung hinzufügen zuweisen.Erstellen Sie einen neuen Ordner assistants-quickstart
für die Anwendung, und öffnen Sie Visual Studio Code in diesem Ordner mit dem folgenden Befehl:
mkdir assistants-quickstart && code assistants-quickstart
Erstellen Sie package.json
mit dem folgenden Befehl:
npm init -y
Aktualisieren Sie package.json
mit dem folgenden Befehl auf ECMAScript:
npm pkg set type=module
Installieren Sie mit dem folgenden Code die Clientbibliothek für OpenAI-Assistenten für JavaScript:
npm install openai
Für die empfohlene kennwortlose Authentifizierung:
npm install @azure/identity
Sie müssen die folgenden Informationen abrufen, um Ihre Anwendung bei Ihrer Azure OpenAI-Ressource zu authentifizieren:
Variablenname | Wert |
---|---|
AZURE_OPENAI_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Diesen Wert finden Sie unter Ressourcenverwaltung>Modellbereitstellungen im Azure-Portal. |
OPENAI_API_VERSION |
Erfahren Sie mehr über API-Versionen. |
Erfahren Sie mehr über schlüssellose Authentifizierung und das Festlegen von Umgebungsvariablen.
Achtung
Um die empfohlene schlüssellose Authentifizierung mit dem SDK zu verwenden, stellen Sie sicher, dass die Umgebungsvariable AZURE_OPENAI_API_KEY
nicht festgelegt ist.
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. |
Ein einzelner Assistent kann auf bis zu 128 Tools, einschließlich code interpreter
, sowie auf alle benutzerdefinierten Tools zugreifen, die Sie über Funktionen erstellen.
Erstellen Sie die Datei index.js
mit dem folgenden Code:
const { AzureOpenAI } = require("openai");
const {
DefaultAzureCredential,
getBearerTokenProvider,
} = require("@azure/identity");
// Get environment variables
const azureOpenAIEndpoint = process.env.AZURE_OPENAI_ENDPOINT;
const azureOpenAIDeployment = process.env.AZURE_OPENAI_DEPLOYMENT_NAME;
const azureOpenAIVersion = process.env.OPENAI_API_VERSION;
// Check env variables
if (!azureOpenAIEndpoint || !azureOpenAIDeployment || !azureOpenAIVersion) {
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 = () => {
const credential = new DefaultAzureCredential();
const scope = "https://cognitiveservices.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(credential, scope);
const assistantsClient = new AzureOpenAI({
endpoint: azureOpenAIEndpoint,
apiVersion: azureOpenAIVersion,
azureADTokenProvider,
});
return assistantsClient;
};
const assistantsClient = getClient();
const options = {
model: azureOpenAIDeployment, // Deployment name seen in Azure AI Foundry portal
name: "Math Tutor",
instructions:
"You are a personal math tutor. Write and run JavaScript code to answer math questions.",
tools: [{ type: "code_interpreter" }],
};
const role = "user";
const message = "I need to solve the equation `3x + 11 = 14`. Can you help me?";
// Create an assistant
const assistantResponse = await assistantsClient.beta.assistants.create(
options
);
console.log(`Assistant created: ${JSON.stringify(assistantResponse)}`);
// Create a thread
const assistantThread = await assistantsClient.beta.threads.create({});
console.log(`Thread created: ${JSON.stringify(assistantThread)}`);
// Add a user question to the thread
const threadResponse = 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 = 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 = 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)}`);
}
}
}
Melden Sie sich mithilfe des folgenden Befehls bei Azure an:
az login
Führen Sie die JavaScript-Datei aus.
node index.js
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.
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.
Referenzdokumentation | Quellcode der Bibliothek | Paket (npm) |
gpt-4 (1106-preview)
-Modell verwendet.Für die empfohlene schlüssellose Authentifizierung mit Microsoft Entra ID müssen Sie:
Cognitive Services User
-Rolle zu. Sie können Rollen im Azure-Portal unter Zugriffssteuerung (IAM)>Rollenzuweisung hinzufügen zuweisen.Erstellen Sie einen neuen Ordner assistants-quickstart
für die Anwendung, und öffnen Sie Visual Studio Code in diesem Ordner mit dem folgenden Befehl:
mkdir assistants-quickstart && code assistants-quickstart
Erstellen Sie package.json
mit dem folgenden Befehl:
npm init -y
Aktualisieren Sie package.json
mit dem folgenden Befehl auf ECMAScript:
npm pkg set type=module
Installieren Sie mit dem folgenden Code die Clientbibliothek für OpenAI-Assistenten für JavaScript:
npm install openai
Für die empfohlene kennwortlose Authentifizierung:
npm install @azure/identity
Sie müssen die folgenden Informationen abrufen, um Ihre Anwendung bei Ihrer Azure OpenAI-Ressource zu authentifizieren:
Variablenname | Wert |
---|---|
AZURE_OPENAI_ENDPOINT |
Diesen Wert finden Sie im Abschnitt Schlüssel und Endpunkt, wenn Sie die Ressource über das Azure-Portal untersuchen. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Dieser Wert entspricht dem benutzerdefinierten Namen, den Sie während der Bereitstellung eines Modells für die Bereitstellung ausgewählt haben. Diesen Wert finden Sie unter Ressourcenverwaltung>Modellbereitstellungen im Azure-Portal. |
OPENAI_API_VERSION |
Erfahren Sie mehr über API-Versionen. |
Erfahren Sie mehr über schlüssellose Authentifizierung und das Festlegen von Umgebungsvariablen.
Achtung
Um die empfohlene schlüssellose Authentifizierung mit dem SDK zu verwenden, stellen Sie sicher, dass die Umgebungsvariable AZURE_OPENAI_API_KEY
nicht festgelegt ist.
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. |
Ein einzelner Assistent kann auf bis zu 128 Tools, einschließlich code interpreter
, sowie auf alle benutzerdefinierten Tools zugreifen, die Sie über Funktionen erstellen.
Erstellen Sie die Datei index.ts
mit dem folgenden Code:
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;
const openAIVersion = process.env.OPENAI_API_VERSION as string;
// Check env variables
if (!azureOpenAIEndpoint || !azureOpenAIDeployment || !openAIVersion) {
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,
apiVersion: openAIVersion,
azureADTokenProvider,
});
return assistantsClient;
};
const assistantsClient = getClient();
const options: AssistantCreateParams = {
model: azureOpenAIDeployment, // Deployment name seen in Azure AI Foundry portal
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)}`);
}
}
}
Erstellen Sie die Datei tsconfig.json
, um den TypeScript-Code zu transpilieren, und kopieren Sie den folgenden Code für ECMAScript.
{
"compilerOptions": {
"module": "NodeNext",
"target": "ES2022", // Supports top-level await
"moduleResolution": "NodeNext",
"skipLibCheck": true, // Avoid type errors from node_modules
"strict": true // Enable strict type-checking options
},
"include": ["*.ts"]
}
Transpilieren Sie von TypeScript in JavaScript:
tsc
Melden Sie sich mithilfe des folgenden Befehls bei Azure an:
az login
Führen Sie den Code mithilfe des folgenden Befehls aus:
node index.js
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.
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.
gpt-4 (1106-preview)
-Modell verwendet.Um erfolgreich einen Aufruf für Azure OpenAI auszuführen, benötigen Sie Folgendes:
Variablenname | Wert |
---|---|
ENDPOINT |
Der Dienstendpunkt befindet sich im Abschnitt Schlüssel und Endpunkt, wenn Sie Ihre Ressource aus dem Azure-Portal untersuchen. Alternativ können Sie den Endpunkt über die Seite Bereitstellungen im Azure KI Foundry-Portal finden. 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. Diesen Wert finden Sie unter Ressourcenverwaltung>Bereitstellungen im Azure-Portal oder auf der Seite Bereitstellungen im Azure KI Foundry-Portal. |
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.
Erstellen und Zuweisen von beständigen Umgebungsvariablen für Ihren Schlüssel und Endpunkt.
Wichtig
Es wird empfohlen, die Microsoft Entra ID-Authentifizierung mit verwalteten Identitäten für Azure-Ressourcen zu kombinieren, um das Speichern von Anmeldeinformationen mit den in der Cloud ausgeführten Anwendungen zu vermeiden.
Verwenden Sie API-Schlüssel mit Vorsicht. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich. Wenn Sie API-Schlüssel verwenden, speichern Sie sie sicher in Azure Key Vault, rotieren Sie die Schlüssel regelmäßig, und beschränken Sie den Zugriff auf Azure Key Vault mithilfe von rollenbasierter Zugriffssteuerung und Netzwerkzugriffsbeschränkungen. Weitere Informationen zur sicheren Verwendung von API-Schlüsseln in Ihren Apps finden Sie unter API-Schlüssel mit Azure Key Vault.
Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
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"
}'
Ein einzelner Assistent kann auf bis zu 128 Tools code interpreter
sowie auf alle benutzerdefinierten Tools, die Sie über Funktionen erstellen, zugreifen.
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d ''
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?"
}'
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",
}'
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/runs/run_abc123 \
-H "api-key: $AZURE_OPENAI_API_KEY" \
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" \
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.
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.
Ereignisse
Erstellen von KI-Apps und Agents
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenTraining
Modul
Verwenden eines Azure OpenAI-Modells zum Erstellen einer App - Training
Nach Abschluss dieses Moduls sind Sie darauf vorbereitet, eine Anwendung mithilfe von Azure OpenAI-Ressourcen in Microsoft Teams bereitzustellen.
Zertifizierung
Microsoft Certified: Azure AI Engineer Associate - Certifications
Entwerfen und implementieren Sie eine Azure KI-Lösung mit Azure KI Services, Azure KI-Suche und Azure OpenAI.