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.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie.
- 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.
Przejdź do programu Azure OpenAI Studio
Przejdź do usługi Azure OpenAI Studio pod adresem https://oai.azure.com/ i zaloguj się przy użyciu poświadczeń, które mają dostęp do zasobu usługi Azure OpenAI. Podczas lub po przepływie pracy logowania wybierz odpowiedni katalog, subskrypcję platformy Azure i zasób usługi Azure OpenAI.
Na stronie docelowej usługi Azure OpenAI Studio uruchom plac zabaw Asystenta z asystentów nawigacji po lewej stronie — place zabaw>(wersja zapoznawcza)
Plac 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.
Konfiguracja asystenta
Użyj okienka Konfiguracja Asystenta, aby utworzyć nowego asystenta sztucznej inteligencji lub wybrać istniejącego asystenta.
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 | Możesz tworzyć niestandardowe definicje funkcji dla modeli w celu formułowania wywołań interfejsu API i struktur danych wyjściowych na podstawie specyfikacji |
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żesz przesłać do 20 plików o maksymalnym rozmiarze pliku 512 MB. Możesz przekazać maksymalnie 10 000 plików przy użyciu programu AI Studio. |
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.
Tworzenie pierwszego asystenta
Z listy rozwijanej Asystenta wybierz pozycję Nowy
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 programu
gpt-4 (1106-preview)
. Na liście rozwijanej zostaną wyświetlone niestandardowe nazwy wdrożenia, więc jeśli nazwy modelu/wdrożenia różnią się, należy wybrać wdrożenie, w którym bazowy model jest odpowiednikiem modelu 1106-preview.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".
Certainly! Here's the Python code I ran to find the solution for the equation (3x + 11 = 14):
from sympy import symbols, Eq, solve # Define the variable x = symbols('x') # Define the equation equation = Eq(3*x + 11, 14) # Solve the equation solution = solve(equation, x) solution
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.
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
Ważne
Niektóre funkcje opisane w tym artykule mogą być dostępne tylko w 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)
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ącą się w obszarze Plac zabaw dla projektu.
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 Asystenta, 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.
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. Alternatywnie możesz znaleźć wartość w kodzie widoku placu zabaw>usługi Azure OpenAI 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 alternatywnie w obszarze Wdrożenia zarządzania>w usłudze Azure OpenAI 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 nazwie azure-openai-quickstart
. To polecenie tworzy prosty projekt "Hello World" z pojedynczym plikiem źródłowym języka C#: Program.cs.
dotnet new console -n azure-openai-assistants-quickstart
Zmień katalog na nowo utworzony folder aplikacji. Aplikację można skompilować za pomocą następujących funkcji:
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ą następujących funkcji:
dotnet add package Azure.AI.OpenAI.Assistants --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 |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Alternatywnie możesz znaleźć wartość w widoku kodu placu zabaw>usługi Azure OpenAI 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"
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.
Utwórz i uruchom asystenta, wykonując następujące czynności:
using Azure;
using Azure.AI.OpenAI.Assistants;
string endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT") ?? throw new ArgumentNullException("AZURE_OPENAI_ENDPOINT");
string key = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY") ?? throw new ArgumentNullException("AZURE_OPENAI_API_KEY");
AssistantsClient client = new AssistantsClient(new Uri(endpoint), new AzureKeyCredential(key));
// Create an assistant
Assistant assistant = await client.CreateAssistantAsync(
new AssistantCreationOptions("gpt-4-1106-preview") // Replace this with the name of your model deployment
{
Name = "Math Tutor",
Instructions = "You are a personal math tutor. Write and run code to answer math questions.",
Tools = { new CodeInterpreterToolDefinition() }
});
// Create a thread
AssistantThread thread = await client.CreateThreadAsync();
// Add a user question to the thread
ThreadMessage message = await client.CreateMessageAsync(
thread.Id,
MessageRole.User,
"I need to solve the equation `3x + 11 = 14`. Can you help me?");
// Run the thread
ThreadRun run = await client.CreateRunAsync(
thread.Id,
new CreateRunOptions(assistant.Id)
);
// Wait for the assistant to respond
do
{
await Task.Delay(TimeSpan.FromMilliseconds(500));
run = await client.GetRunAsync(thread.Id, run.Id);
}
while (run.Status == RunStatus.Queued
|| run.Status == RunStatus.InProgress);
// Get the messages
PageableList<ThreadMessage> messagesPage = await client.GetMessagesAsync(thread.Id);
IReadOnlyList<ThreadMessage> messages = messagesPage.Data;
// Note: messages iterate from newest to oldest, with the messages[0] being the most recent
foreach (ThreadMessage threadMessage in messages.Reverse())
{
Console.Write($"{threadMessage.CreatedAt:yyyy-MM-dd HH:mm:ss} - {threadMessage.Role,10}: ");
foreach (MessageContent contentItem in threadMessage.ContentItems)
{
if (contentItem is MessageTextContent textItem)
{
Console.Write(textItem.Text);
}
Console.WriteLine();
}
}
Spowoduje to wyświetlenie danych wyjściowych w następujący sposób:
2024-03-05 03:38:17 - user: I need to solve the equation `3x + 11 = 14`. Can you help me?
2024-03-05 03:38:25 - assistant: The solution to the equation \(3x + 11 = 14\) is \(x = 1\).
Nowe komunikaty można utworzyć w wątku przed ponownym uruchomieniem, co spowoduje, że asystent użyje poprzednich komunikatów jako kontekstu w wątku.
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
- Node.js LTS z obsługą języków TypeScript 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 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
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 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. Alternatywnie możesz znaleźć wartość w kodzie widoku placu zabaw>usługi Azure OpenAI 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 alternatywnie w obszarze Wdrożenia zarządzania>w usłudze Azure OpenAI 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"
Dodaj dodatkowe zmienne środowiskowe dla nazwy wdrożenia i wersji interfejsu API:
AZURE_OPENAI_DEPLOYMENT_NAME
: Nazwa wdrożenia, jak pokazano w witrynie Azure Portal.OPENAI_API_VERSION
: Dowiedz się więcej o wersjach interfejsu API.
setx AZURE_OPENAI_DEPLOYMENT_NAME "REPLACE_WITH_YOUR_DEPLOYMENT_NAME"
setx OPENAI_API_VERSION "REPLACE_WITH_YOUR_API_VERSION"
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
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.
Zaloguj się do platformy Azure, az login
a następnie utwórz i uruchom asystenta przy użyciu następującego zalecanego modułu TypeScript bez hasła (index.ts):
import "dotenv/config";
import { AzureOpenAI } from "openai";
import {
Assistant,
AssistantCreateParams,
AssistantTool,
} from "openai/resources/beta/assistants";
import { Message, MessagesPage } from "openai/resources/beta/threads/messages";
import { Run } from "openai/resources/beta/threads/runs/runs";
import { Thread } from "openai/resources/beta/threads/threads";
// Add `Cognitive Services User` to identity for Azure OpenAI resource
import {
DefaultAzureCredential,
getBearerTokenProvider,
} from "@azure/identity";
// Get environment variables
const azureOpenAIEndpoint = process.env.AZURE_OPENAI_ENDPOINT as string;
const azureOpenAIDeployment = process.env
.AZURE_OPENAI_DEPLOYMENT_NAME as string;
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)}`);
}
}
}
Aby użyć klucza usługi do uwierzytelniania, możesz utworzyć i uruchomić asystenta przy użyciu następującego modułu TypeScript (index.ts):
import "dotenv/config";
import { AzureOpenAI } from "openai";
import {
Assistant,
AssistantCreateParams,
AssistantTool,
} from "openai/resources/beta/assistants";
import { Message, MessagesPage } from "openai/resources/beta/threads/messages";
import { Run } from "openai/resources/beta/threads/runs/runs";
import { Thread } from "openai/resources/beta/threads/threads";
// Get environment variables
const azureOpenAIKey = process.env.AZURE_OPENAI_KEY as string;
const azureOpenAIEndpoint = process.env.AZURE_OPENAI_ENDPOINT as string;
const azureOpenAIDeployment = process.env
.AZURE_OPENAI_DEPLOYMENT_NAME as string;
const openAIVersion = process.env.OPENAI_API_VERSION as string;
// Check env variables
if (!azureOpenAIKey || !azureOpenAIEndpoint || !azureOpenAIDeployment || !openAIVersion) {
throw new Error(
"Please set AZURE_OPENAI_KEY and AZURE_OPENAI_ENDPOINT and AZURE_OPENAI_DEPLOYMENT_NAME in your environment variables."
);
}
// Get Azure SDK client
const getClient = (): AzureOpenAI => {
const assistantsClient = new AzureOpenAI({
endpoint: azureOpenAIEndpoint,
apiVersion: openAIVersion,
apiKey: azureOpenAIKey,
});
return assistantsClient;
};
const assistantsClient = getClient();
const options: AssistantCreateParams = {
model: azureOpenAIDeployment, // Deployment name seen in Azure AI Studio
name: "Math Tutor",
instructions:
"You are a personal math tutor. Write and run JavaScript code to answer math questions.",
tools: [{ type: "code_interpreter" } as AssistantTool],
};
const role = "user";
const message = "I need to solve the equation `3x + 11 = 14`. Can you help me?";
// Create an assistant
const assistantResponse: Assistant =
await assistantsClient.beta.assistants.create(options);
console.log(`Assistant created: ${JSON.stringify(assistantResponse)}`);
// Create a thread
const assistantThread: Thread = await assistantsClient.beta.threads.create({});
console.log(`Thread created: ${JSON.stringify(assistantThread)}`);
// Add a user question to the thread
const threadResponse: Message =
await assistantsClient.beta.threads.messages.create(assistantThread.id, {
role,
content: message,
});
console.log(`Message created: ${JSON.stringify(threadResponse)}`);
// Run the thread and poll it until it is in a terminal state
const runResponse: Run = await assistantsClient.beta.threads.runs.createAndPoll(
assistantThread.id,
{
assistant_id: assistantResponse.id,
},
{ pollIntervalMs: 500 }
);
console.log(`Run created: ${JSON.stringify(runResponse)}`);
// Get the messages
const runMessages: MessagesPage =
await assistantsClient.beta.threads.messages.list(assistantThread.id);
for await (const runMessageDatum of runMessages) {
for (const item of runMessageDatum.content) {
// types are: "image_file" or "text"
if (item.type === "text") {
console.log(`Message content: ${JSON.stringify(item.text?.value)}`);
}
}
}
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 |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Wartość tę można też znaleźć w obszarze Azure OpenAI Studio>Środowisko testowe>Widok kodu. 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 Zarządzanie zasobami>Wdrożenia w witrynie Azure Portal albo w obszarze Zarządzanie>Wdrożenia w usłudze Azure OpenAI 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