Szybki start: rozpoczynanie pracy z asystentami usługi Azure OpenAI (wersja zapoznawcza)
Asystenci usługi Azure OpenAI (wersja zapoznawcza) umożliwiają tworzenie opartych na sztucznej inteligencji asystentów dostosowanych do potrzeb za pomocą niestandardowych instrukcji i wspomaganych przez zaawansowane narzędzia, takie jak interpreter kodu i funkcje niestandardowe.
Ważne
Elementy oznaczone (wersja zapoznawcza) w tym artykule są obecnie dostępne w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie.
- Zasób centrum sztucznej inteligencji platformy Azure z wdrożonym modelem. Aby uzyskać więcej informacji na temat modeli wdrażania, zobacz przewodnik po modelach wdrażania).
- Projektu usługi Azure AI w usłudze Studio AI platformy Azure
Przejdź do usługi Azure AI Studio (wersja zapoznawcza)
Usługa Azure AI Studio umożliwia korzystanie z asystentów w wersji 2, które udostępnia kilka uaktualnień, takich jak narzędzie do wyszukiwania plików, które jest szybsze i obsługuje więcej plików.
Zaloguj się do usługi Azure AI Studio.
Przejdź do projektu lub utwórz nowy projekt w usłudze Azure AI Studio.
Z przeglądu projektu wybierz pozycję Asystenci znajdujący się w obszarze place zabaw.
Plac zabaw Asystentów umożliwia eksplorowanie, tworzenie prototypów i testowanie asystentów sztucznej inteligencji bez konieczności uruchamiania kodu. Na tej stronie można szybko iterować i eksperymentować z nowymi pomysłami.
Plac zabaw oferuje kilka opcji konfigurowania Asystenta. W poniższych krokach użyjesz okienka konfiguracji , aby utworzyć nowego asystenta sztucznej inteligencji.
Nazwa/nazwisko Opis Nazwa asystenta Nazwa wdrożenia skojarzona z określonym modelem. Instrukcje Instrukcje są podobne do komunikatów systemowych, w których podajesz wskazówki dotyczące tego, jak powinien zachowywać się model i do jakiego kontekstu powinien się odwoływać podczas generowania odpowiedzi. Możesz opisać osobowość asystenta, określić na jakie pytania powinien lub nie powinien odpowiadać i określić, w jaki sposób ma formatować odpowiedzi. Możesz również podać przykłady kroków, które ma wykonywać podczas udzielania odpowiedzi. Wdrożenie W tym miejscu można ustawić wdrożenie modelu do użycia z asystentem. Funkcje Tworzenie niestandardowych definicji funkcji dla modeli w celu formułowania wywołań interfejsu API i struktur danych wyjściowych danych na podstawie specyfikacji. Nie jest używany w tym przewodniku Szybki start. Interpreter kodu Interpreter kodu zapewnia dostęp do środowiska języka Python w trybie piaskownicy, umożliwiając modelowi testowanie i wykonywania kodu. Pliki Do użycia z narzędziami można przekazać maksymalnie 10 000 plików o maksymalnym rozmiarze 512 MB. Nie jest używany w tym przewodniku Szybki start.
Tworzenie pierwszego asystenta
Wybierz wdrożenie z listy rozwijanej Wdrożenia .
Z listy rozwijanej Konfiguracja Asystenta wybierz pozycję Nowy asystent.
Nadaj asystentowi nazwę.
Wprowadź następujące instrukcje: "Jesteś asystentem sztucznej inteligencji, który może napisać kod, aby pomóc w odpowiadaniu na pytania matematyczne"
Wybierz wdrożenie modelu. Zalecamy przetestowanie jednego z najnowszych modeli gpt-4.
Wybierz przełącznik włączania interpretera kodu.
Wybierz pozycję Zapisz.
Wprowadź pytanie dotyczące asystenta, aby odpowiedzieć: "Muszę rozwiązać równanie
3x + 11 = 14
. Czy możesz mi pomóc?"Wybierz przycisk Dodaj i uruchom
The solution to the equation (3x + 11 = 14) is (x = 1).
Chociaż widzimy, że odpowiedź jest poprawna, aby potwierdzić, że model użył interpretera kodu, aby uzyskać tę odpowiedź, i że napisany przez nią kod jest prawidłowy, a nie tylko powtarzając odpowiedź z danych treningowych modelu, zadajemy kolejne pytanie.
Wprowadź następujące pytanie: "Pokaż mi kod, który został uruchomiony, aby uzyskać to rozwiązanie".
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.
Możesz również zapoznać się z dziennikami w panelu po prawej stronie, aby potwierdzić, że użyto interpretera kodu i zweryfikować kod, który został uruchomiony w celu wygenerowania odpowiedzi. Należy pamiętać, że podczas gdy interpreter kodu daje modelowi możliwość odpowiadania na bardziej złożone pytania matematyczne, konwertując pytania na kod i uruchamiając je w środowisku języka Python w trybie piaskownicy, nadal trzeba zweryfikować odpowiedź, aby potwierdzić, że model poprawnie przetłumaczył pytanie na prawidłową reprezentację w kodzie.
Najważniejsze pojęcia
Podczas korzystania z placu zabaw Asystentów należy pamiętać o następujących pojęciach.
Narzędzia
Indywidualny asystent może uzyskać dostęp do maksymalnie 128 narzędzi, w tym code interpreter
, a także dowolnych niestandardowych narzędzi tworzonych za pośrednictwem funkcji.
Sesja rozmowy
Sesja czatu znana również jako wątek w interfejsie API Asystenta to miejsce, w którym odbywa się rozmowa między użytkownikiem a asystentem. W przeciwieństwie do tradycyjnych wywołań uzupełniania czatu nie ma limitu liczby wiadomości w wątku. Asystent automatycznie kompresuje żądania w celu dopasowania do limitu tokenu wejściowego modelu.
Oznacza to również, że nie kontrolujesz liczby tokenów przekazywanych do modelu podczas każdej rozmowy. Zarządzanie tokenami jest abstrahowane i obsługiwane w całości przez interfejs API Asystentów.
Wybierz przycisk Wyczyść czat, aby usunąć bieżącą historię konwersacji.
Poniżej pola wprowadzania tekstu znajdują się dwa przyciski:
- Dodaj komunikat bez uruchomienia.
- Dodaj i uruchom polecenie .
Dzienniki
Dzienniki zawierają szczegółową migawkę działania asystenta interfejsu API.
Pokaż panele
Domyślnie istnieją trzy panele: asystent konfiguracji, sesja czatu i dzienniki. Pokaż panele umożliwiają dodawanie, usuwanie i rozmieszczanie paneli. Jeśli kiedykolwiek zamkniesz panel i musisz go odzyskać, użyj opcji Pokaż panele , aby przywrócić utracony panel.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów.
Alternatywnie możesz usunąć asystenta lub wątku za pośrednictwem interfejsu API Asystenta.
Zobacz też
- Dowiedz się więcej na temat korzystania z asystentów, korzystając z naszego przewodnika z instrukcjami dotyczącymi asystentów.
- Przykłady interfejsu API asystentów openAI platformy Azure
Dokumentacja pakietu kodu | źródłowego biblioteki referencyjnej | (PyPi) |
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Środowisko Python w wersji 3.8 lub nowszej
- Następujące biblioteki języka Python: system operacyjny, openai (wymagana jest wersja 1.x)
- Interfejs wiersza polecenia platformy Azure używany do uwierzytelniania bez hasła w lokalnym środowisku projektowym, utwórz niezbędny kontekst, logując się przy użyciu interfejsu wiersza polecenia platformy Azure.
- Zasób usługi Azure OpenAI z zgodnym modelem w obsługiwanym regionie.
- Zalecamy zapoznanie się z notatką o przejrzystości odpowiedzialnej sztucznej inteligencji i innymi zasobami odpowiedzialnej sztucznej inteligencji, aby zapoznać się z możliwościami i ograniczeniami usługi Azure OpenAI.
- Zasób usługi Azure OpenAI z wdrożonym modelem
gpt-4 (1106-preview)
został użyty do testowania tego przykładu.
Zalecane jest uwierzytelnianie bez hasła
W przypadku uwierzytelniania bez hasła należy wykonać następujące kroki:
- Użyj pakietu azure-identity.
Cognitive Services User
Przypisz rolę do konta użytkownika. Można to zrobić w witrynie Azure Portal w obszarze Kontrola dostępu (IAM)>Dodawanie przypisania roli.- Zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure, takiego jak
az login
.
Konfiguruj
- Zainstaluj bibliotekę klienta języka Python openAI za pomocą następujących elementów:
pip install openai
- W przypadku zalecanego uwierzytelniania bez hasła:
pip install azure-identity
Uwaga
- Wyszukiwanie plików może pozyskiwać maksymalnie 10 000 plików na asystenta — 500 razy więcej niż wcześniej. Jest szybkie, obsługuje zapytania równoległe za pośrednictwem wyszukiwania wielowątkowego i oferuje ulepszone ponowne klasyfikowanie praz ponowne zapisywanie zapytań.
- Magazyn wektorów to nowy obiekt w interfejsie API. Po dodaniu pliku do magazynu wektorów jest on automatycznie analizowany, fragmentowany i osadzany oraz przygotowywany do wyszukiwania. Magazyny wektorów mogą być używane między asystentami i wątkami, upraszczając zarządzanie plikami i rozliczenia.
- Dodaliśmy obsługę parametru
tool_choice
, który może służyć do wymuszenia użycia określonego narzędzia (takiego jak wyszukiwanie plików, interpreter kodu lub funkcja) w określonym uruchomieniu.
Uwaga
Ta biblioteka jest utrzymywana przez interfejs OpenAI. Zapoznaj się z historią wydania, aby śledzić najnowsze aktualizacje biblioteki.
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebne są następujące elementy:
Nazwa zmiennej | Wartość |
---|---|
ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Punkt końcowy można również znaleźć na stronie Wdrożenia w usłudze Azure AI Studio. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
DEPLOYMENT-NAME |
Ta wartość będzie odpowiadać nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia modelu zarządzania>zasobami w witrynie Azure Portal lub za pośrednictwem strony Wdrożenia w usłudze Azure AI Studio. |
Przejdź do zasobu w witrynie Azure Portal. Klucze i punkt końcowy można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno do uwierzytelniania wywołań interfejsu API. Możesz użyć wartości KEY1
lub KEY2
. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi.
Zmienne środowiskowe
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Tworzenie asystenta
W naszym kodzie określimy następujące wartości:
Nazwa/nazwisko | Opis |
---|---|
Nazwa asystenta | Nazwa wdrożenia skojarzona z określonym modelem. |
Instrukcje | Instrukcje są podobne do komunikatów systemowych, w których podajesz wskazówki dotyczące tego, jak powinien zachowywać się model i do jakiego kontekstu powinien się odwoływać podczas generowania odpowiedzi. Możesz opisać osobowość asystenta, określić na jakie pytania powinien lub nie powinien odpowiadać i określić, w jaki sposób ma formatować odpowiedzi. Możesz również podać przykłady kroków, które ma wykonywać podczas udzielania odpowiedzi. |
Model | W tym miejscu należy ustawić nazwę wdrożenia modelu, która ma być używana z asystentem. Narzędzie pobierania wymaga gpt-35-turbo (1106) lub gpt-4 (1106-preview) modelu. Ustaw tę wartość na nazwę wdrożenia, a nie nazwę modelu, chyba że jest taka sama. |
Interpreter kodu | Interpreter kodu zapewnia dostęp do środowiska języka Python w trybie piaskownicy, umożliwiając modelowi testowanie i wykonywania kodu. |
Narzędzia
Indywidualny asystent może uzyskać dostęp do maksymalnie 128 narzędzi, w tym code interpreter
, a także dowolnych niestandardowych narzędzi tworzonych za pośrednictwem funkcji.
Tworzenie aplikacji w języku Python
Zaloguj się do platformy Azure za pomocą polecenia az login
, a następnie utwórz i uruchom asystenta przy użyciu następującego zalecanego przykładu języka Python bez hasła:
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))
Aby użyć klucza interfejsu API usługi do uwierzytelniania, możesz utworzyć i uruchomić asystenta przy użyciu następującego przykładu języka Python:
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))
Wyjście
Przebieg ukończony ze stanem: ukończono
{
"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
}
Informacje o wynikach
W tym przykładzie utworzymy asystenta z włączonym interpreterem kodu. Gdy zadajemy asystentowi pytanie matematyczne, tłumaczy to pytanie na kod języka Python i wykonuje kod w środowisku w trybie piaskownicy, aby określić odpowiedź na pytanie. Kod, który model tworzy i testuje, aby uzyskać odpowiedź, to:
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
Należy pamiętać, że podczas gdy interpreter kodu daje modelowi możliwość reagowania na bardziej złożone zapytania, konwertując pytania na kod i uruchamiając ten kod iteracyjnie w piaskownicy języka Python, dopóki nie osiągnie rozwiązania, nadal trzeba zweryfikować odpowiedź, aby potwierdzić, że model poprawnie przetłumaczył pytanie na prawidłową reprezentację w kodzie.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów.
Zobacz też
- Dowiedz się więcej na temat korzystania z asystentów, korzystając z naszego przewodnika z instrukcjami dotyczącymi asystentów.
- Przykłady interfejsu API asystentów openAI platformy Azure
Dokumentacja dotycząca | pakietu kodu | źródłowego (NuGet)
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Zestaw SDK platformy .NET 8
- Zasób usługi Azure OpenAI z zgodnym modelem w obsługiwanym regionie.
- Zalecamy zapoznanie się z notatką o przejrzystości odpowiedzialnej sztucznej inteligencji i innymi zasobami odpowiedzialnej sztucznej inteligencji, aby zapoznać się z możliwościami i ograniczeniami usługi Azure OpenAI.
- Zasób usługi Azure OpenAI z wdrożonym modelem
gpt-4 (1106-preview)
został użyty do testowania tego przykładu.
Konfiguruj
Tworzenie nowej aplikacji .NET Core
W oknie konsoli (takim jak cmd, PowerShell lub Bash) użyj
dotnet new
polecenia , aby utworzyć nową aplikację konsolową o nazwieazure-openai-quickstart
:dotnet new console -n azure-openai-assistants-quickstart
Przejdź do katalogu nowo utworzonego folderu aplikacji i skompiluj aplikację za
dotnet build
pomocą polecenia :dotnet build
Dane wyjściowe kompilacji nie powinny zawierać żadnych ostrzeżeń ani błędów.
... Build succeeded. 0 Warning(s) 0 Error(s) ...
Zainstaluj bibliotekę klienta platformy .NET openAI za pomocą polecenia dotnet add package :
dotnet add package Azure.AI.OpenAI --prerelease
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Azure OpenAI, potrzebujesz punktu końcowego i klucza.
Nazwa zmiennej | Wartość |
---|---|
ENDPOINT |
Punkt końcowy usługi można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz też znaleźć punkt końcowy za pośrednictwem strony Wdrożenia w usłudze Azure AI Studio. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
Przejdź do zasobu w witrynie Azure Portal. Sekcję Klucze i punkt końcowy można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno do uwierzytelniania wywołań interfejsu API. Możesz użyć wartości KEY1
lub KEY2
. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi.
Zmienne środowiskowe
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Zalecane jest uwierzytelnianie bez hasła
Uwierzytelnianie bez hasła jest bezpieczniejsze niż alternatywy oparte na kluczach i jest zalecanym podejściem do nawiązywania połączenia z usługami platformy Azure. W przypadku wybrania opcji Uwierzytelnianie bez hasła należy wykonać następujące czynności:
Dodaj pakiet
Azure.Identity
.dotnet add package Azure.Identity
Cognitive Services User
Przypisz rolę do konta użytkownika. Można to zrobić w witrynie Azure Portal w zasobie OpenAI w obszarze Kontrola dostępu (IAM)>Dodawanie przypisania roli.Zaloguj się do platformy Azure przy użyciu programu Visual Studio lub interfejsu wiersza polecenia platformy Azure za pomocą polecenia
az login
.
Tworzenie asystenta
Zaktualizuj plik przy Program.cs
użyciu następującego kodu, aby utworzyć asystenta:
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();
}
Uruchom aplikację przy użyciu dotnet run
polecenia :
dotnet run
Dane wyjściowe konsoli powinny wyglądać podobnie do następujących:
[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!
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów.
Zobacz też
- Dowiedz się więcej na temat korzystania z asystentów, korzystając z naszego przewodnika z instrukcjami dotyczącymi asystentów.
- Przykłady interfejsu API asystentów openAI platformy Azure
Dokumentacja pakietu kodu | źródłowego biblioteki referencyjnej | (npm) |
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- obsługa Node.js LTS lub ESM.
- Interfejs wiersza polecenia platformy Azure używany do uwierzytelniania bez hasła w lokalnym środowisku projektowym, utwórz niezbędny kontekst, logując się przy użyciu interfejsu wiersza polecenia platformy Azure.
- Zasób usługi Azure OpenAI z zgodnym modelem w obsługiwanym regionie.
- Zalecamy zapoznanie się z notatką o przejrzystości odpowiedzialnej sztucznej inteligencji i innymi zasobami odpowiedzialnej sztucznej inteligencji, aby zapoznać się z możliwościami i ograniczeniami usługi Azure OpenAI.
- Zasób usługi Azure OpenAI z wdrożonym modelem
gpt-4 (1106-preview)
został użyty do testowania tego przykładu.
Zalecane jest uwierzytelnianie identyfikatora Entra firmy Microsoft
W przypadku uwierzytelniania bez klucza należy wykonać następujące kroki:
@azure/identity
Użyj pakietu.Cognitive Services User
Przypisz rolę do konta użytkownika. Można to zrobić w witrynie Azure Portal w obszarze Kontrola dostępu (IAM)>Dodawanie przypisania roli.- Zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure, takiego jak
az login
.
Konfiguruj
Utwórz nowy folder
assistants-quickstart
zawierający aplikację i otwórz program Visual Studio Code w tym folderze za pomocą następującego polecenia:mkdir assistants-quickstart && code assistants-quickstart
Utwórz element
package.json
za pomocą następującego polecenia:npm init -y
Zaktualizuj element do ecMAScript
package.json
za pomocą następującego polecenia:npm pkg set type=module
Zainstaluj bibliotekę klienta Asystentów OpenAI dla języka JavaScript za pomocą następujących narzędzi:
npm install openai
W przypadku zalecanego uwierzytelniania bez hasła:
npm install @azure/identity
Pobieranie informacji o zasobie
Nazwa zmiennej | Wartość |
---|---|
AZURE_OPENAI_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Ta wartość będzie odpowiadać nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia modelu zarządzania>zasobami w witrynie Azure Portal. |
OPENAI_API_VERSION |
Dowiedz się więcej o wersjach interfejsu API. |
Dowiedz się więcej na temat uwierzytelniania bez klucza i ustawiania zmiennych środowiskowych.
Uwaga
Aby użyć zalecanego uwierzytelniania bez klucza z zestawem SDK, upewnij się, że zmienna AZURE_OPENAI_API_KEY
środowiskowa nie jest ustawiona.
Tworzenie asystenta
W naszym kodzie określimy następujące wartości:
Nazwa/nazwisko | Opis |
---|---|
Nazwa asystenta | Nazwa wdrożenia skojarzona z określonym modelem. |
Instrukcje | Instrukcje są podobne do komunikatów systemowych, w których podajesz wskazówki dotyczące tego, jak powinien zachowywać się model i do jakiego kontekstu powinien się odwoływać podczas generowania odpowiedzi. Możesz opisać osobowość asystenta, określić na jakie pytania powinien lub nie powinien odpowiadać i określić, w jaki sposób ma formatować odpowiedzi. Możesz również podać przykłady kroków, które ma wykonywać podczas udzielania odpowiedzi. |
Model | Jest to nazwa wdrożenia. |
Interpreter kodu | Interpreter kodu zapewnia dostęp do środowiska języka Python w trybie piaskownicy, umożliwiając modelowi testowanie i wykonywania kodu. |
Narzędzia
Pojedynczy asystent może uzyskiwać dostęp do maksymalnie 128 narzędzi, w tym code interpreter
narzędzi , i dowolnych narzędzi niestandardowych tworzonych za pośrednictwem funkcji.
Tworzenie nowej aplikacji JavaScript
index.js
Utwórz plik przy użyciu następującego kodu: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 Studio 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)}`); } } }
Zaloguj się do platformy Azure przy użyciu następującego polecenia:
az login
Uruchom plik JavaScript.
node index.js
Wyjście
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?"
Należy pamiętać, że podczas gdy interpreter kodu daje modelowi możliwość reagowania na bardziej złożone zapytania, konwertując pytania na kod i uruchamiając ten kod iteracyjnie w języku JavaScript, dopóki nie osiągnie rozwiązania, nadal trzeba zweryfikować odpowiedź, aby potwierdzić, że model poprawnie przetłumaczył pytanie na prawidłową reprezentację w kodzie.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów.
Przykładowy kod
Zobacz też
- Dowiedz się więcej na temat korzystania z asystentów, korzystając z naszego przewodnika z instrukcjami dotyczącymi asystentów.
- Przykłady interfejsu API asystentów openAI platformy Azure
Dokumentacja pakietu kodu | źródłowego biblioteki referencyjnej | (npm) |
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- obsługa Node.js LTS lub ESM.
- Język TypeScript zainstalowany globalnie
- Interfejs wiersza polecenia platformy Azure używany do uwierzytelniania bez hasła w lokalnym środowisku projektowym, utwórz niezbędny kontekst, logując się przy użyciu interfejsu wiersza polecenia platformy Azure.
- Zasób usługi Azure OpenAI z zgodnym modelem w obsługiwanym regionie.
- Zalecamy zapoznanie się z notatką o przejrzystości odpowiedzialnej sztucznej inteligencji i innymi zasobami odpowiedzialnej sztucznej inteligencji, aby zapoznać się z możliwościami i ograniczeniami usługi Azure OpenAI.
- Zasób usługi Azure OpenAI z wdrożonym modelem
gpt-4 (1106-preview)
został użyty do testowania tego przykładu.
Zalecane jest uwierzytelnianie bez hasła
W przypadku uwierzytelniania bez hasła należy wykonać następujące kroki:
@azure/identity
Użyj pakietu.Cognitive Services User
Przypisz rolę do konta użytkownika. Można to zrobić w witrynie Azure Portal w obszarze Kontrola dostępu (IAM)>Dodawanie przypisania roli.- Zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure, takiego jak
az login
.
Konfiguruj
Utwórz nowy folder
assistants-quickstart
zawierający aplikację i otwórz program Visual Studio Code w tym folderze za pomocą następującego polecenia:mkdir assistants-quickstart && code assistants-quickstart
Utwórz element
package.json
za pomocą następującego polecenia:npm init -y
Zaktualizuj element do ecMAScript
package.json
za pomocą następującego polecenia:npm pkg set type=module
Zainstaluj bibliotekę klienta Asystentów OpenAI dla języka JavaScript za pomocą następujących narzędzi:
npm install openai
W przypadku zalecanego uwierzytelniania bez hasła:
npm install @azure/identity
Pobieranie informacji o zasobie
Nazwa zmiennej | Wartość |
---|---|
AZURE_OPENAI_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Ta wartość będzie odpowiadać nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia modelu zarządzania>zasobami w witrynie Azure Portal. |
OPENAI_API_VERSION |
Dowiedz się więcej o wersjach interfejsu API. |
Dowiedz się więcej na temat uwierzytelniania bez klucza i ustawiania zmiennych środowiskowych.
Uwaga
Aby użyć zalecanego uwierzytelniania bez klucza z zestawem SDK, upewnij się, że zmienna AZURE_OPENAI_API_KEY
środowiskowa nie jest ustawiona.
Tworzenie asystenta
W naszym kodzie określimy następujące wartości:
Nazwa/nazwisko | Opis |
---|---|
Nazwa asystenta | Nazwa wdrożenia skojarzona z określonym modelem. |
Instrukcje | Instrukcje są podobne do komunikatów systemowych, w których podajesz wskazówki dotyczące tego, jak powinien zachowywać się model i do jakiego kontekstu powinien się odwoływać podczas generowania odpowiedzi. Możesz opisać osobowość asystenta, określić na jakie pytania powinien lub nie powinien odpowiadać i określić, w jaki sposób ma formatować odpowiedzi. Możesz również podać przykłady kroków, które ma wykonywać podczas udzielania odpowiedzi. |
Model | Jest to nazwa wdrożenia. |
Interpreter kodu | Interpreter kodu zapewnia dostęp do środowiska języka Python w trybie piaskownicy, umożliwiając modelowi testowanie i wykonywania kodu. |
Narzędzia
Pojedynczy asystent może uzyskiwać dostęp do maksymalnie 128 narzędzi, w tym code interpreter
narzędzi , i dowolnych narzędzi niestandardowych tworzonych za pośrednictwem funkcji.
Tworzenie nowej aplikacji TypeScript
index.ts
Utwórz plik przy użyciu następującego kodu: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 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)}`); } } }
Utwórz plik do
tsconfig.json
transpilowania kodu TypeScript i skopiuj następujący kod dla języka 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"] }
Transpiluj z języka TypeScript do języka JavaScript.
tsc
Zaloguj się do platformy Azure przy użyciu następującego polecenia:
az login
Uruchom kod za pomocą następującego polecenia:
node index.js
Wyjście
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?"
Należy pamiętać, że podczas gdy interpreter kodu daje modelowi możliwość reagowania na bardziej złożone zapytania, konwertując pytania na kod i uruchamiając ten kod iteracyjnie w języku JavaScript, dopóki nie osiągnie rozwiązania, nadal trzeba zweryfikować odpowiedź, aby potwierdzić, że model poprawnie przetłumaczył pytanie na prawidłową reprezentację w kodzie.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów.
Przykładowy kod
Zobacz też
- Dowiedz się więcej na temat korzystania z asystentów, korzystając z naszego przewodnika z instrukcjami dotyczącymi asystentów.
- Przykłady interfejsu API asystentów openAI platformy Azure
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Środowisko Python w wersji 3.8 lub nowszej
- Zasób usługi Azure OpenAI z zgodnym modelem w obsługiwanym regionie.
- Zalecamy zapoznanie się z notatką o przejrzystości odpowiedzialnej sztucznej inteligencji i innymi zasobami odpowiedzialnej sztucznej inteligencji, aby zapoznać się z możliwościami i ograniczeniami usługi Azure OpenAI.
- Zasób usługi Azure OpenAI z wdrożonym modelem
gpt-4 (1106-preview)
został użyty do testowania tego przykładu.
Konfiguruj
Pobieranie klucza i punktu końcowego
Aby pomyślnie nawiązać połączenie z usługą Azure OpenAI, potrzebne są następujące elementy:
Nazwa zmiennej | Wartość |
---|---|
ENDPOINT |
Punkt końcowy usługi można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz też znaleźć punkt końcowy za pośrednictwem strony Wdrożenia w usłudze Azure AI Studio. Przykładowy punkt końcowy to: https://docs-test-001.openai.azure.com/ . |
API-KEY |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
DEPLOYMENT-NAME |
Ta wartość będzie odpowiadać nazwie niestandardowej wybranej dla wdrożenia podczas wdrażania modelu. Tę wartość można znaleźć w obszarze Wdrożenia zarządzania>zasobami w witrynie Azure Portal lub za pośrednictwem strony Wdrożenia w usłudze Azure AI Studio. |
Przejdź do zasobu w witrynie Azure Portal. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno do uwierzytelniania wywołań interfejsu API. Możesz użyć wartości KEY1
lub KEY2
. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi.
Zmienne środowiskowe
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.
setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Interfejs API REST
Tworzenie asystenta
Uwaga
W przypadku usługi Azure OpenAI model
parametr wymaga nazwy wdrożenia modelu. Jeśli nazwa wdrożenia modelu jest inna niż nazwa modelu bazowego, należy dostosować kod do "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"
}'
Narzędzia
Indywidualny asystent może uzyskać dostęp do maksymalnie 128 narzędzi, w tym code interpreter
, a także dowolnych niestandardowych narzędzi tworzonych za pośrednictwem funkcji.
Tworzenie wątku
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d ''
Dodawanie pytania użytkownika do wątku
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?"
}'
Uruchamianie wątku
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",
}'
Pobieranie stanu przebiegu
curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/thread_abc123/runs/run_abc123 \
-H "api-key: $AZURE_OPENAI_API_KEY" \
Odpowiedź asystenta
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" \
Informacje o wynikach
W tym przykładzie utworzymy asystenta z włączonym interpreterem kodu. Gdy zadajemy asystentowi pytanie matematyczne, tłumaczy to pytanie na kod języka Python i wykonuje kod w środowisku w trybie piaskownicy, aby określić odpowiedź na pytanie. Kod, który model tworzy i testuje, aby uzyskać odpowiedź, to:
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
Należy pamiętać, że podczas gdy interpreter kodu daje modelowi możliwość reagowania na bardziej złożone zapytania, konwertując pytania na kod i uruchamiając ten kod iteracyjnie w piaskownicy języka Python, dopóki nie osiągnie rozwiązania, nadal trzeba zweryfikować odpowiedź, aby potwierdzić, że model poprawnie przetłumaczył pytanie na prawidłową reprezentację w kodzie.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób usługi Azure OpenAI, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów.
Zobacz też
- Dowiedz się więcej na temat korzystania z asystentów, korzystając z naszego przewodnika z instrukcjami dotyczącymi asystentów.
- Przykłady interfejsu API asystentów openAI platformy Azure