Udostępnij za pośrednictwem


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)

Zrzut ekranu przedstawiający stronę docelową programu Azure OpenAI Studio.

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.

Zrzut ekranu przedstawiający ekran konfiguracji Asystenta bez wszystkich wypełnionych wartości.

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

  1. Z listy rozwijanej Asystenta wybierz pozycję Nowy

  2. Nadaj asystentowi nazwę

  3. Wprowadź następujące instrukcje: "Jesteś asystentem sztucznej inteligencji, który może napisać kod, aby pomóc w odpowiadaniu na pytania matematyczne"

  4. 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.

  5. Wybierz przełącznik włączania interpretera kodu.

  6. Wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający asystenta ze wprowadzonymi szczegółami konfiguracji.

  7. Wprowadź pytanie dotyczące asystenta, aby odpowiedzieć: "Muszę rozwiązać równanie 3x + 11 = 14. Czy możesz mi pomóc?"

  8. 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.

  9. 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  
    

Zrzut ekranu przedstawiający sesję konwersacji na placu zabaw asystenta.

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ż

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

Przejdź do usługi Azure AI Studio (wersja zapoznawcza)

  1. Zaloguj się do usługi Azure AI Studio.

  2. Przejdź do projektu lub utwórz nowy projekt w usłudze Azure AI Studio.

  3. 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.

    Zrzut ekranu przedstawiający ekran konfiguracji Asystenta bez wszystkich wypełnionych wartości.

Tworzenie pierwszego asystenta

  1. Wybierz wdrożenie z listy rozwijanej Wdrożenia .

  2. Z listy rozwijanej Konfiguracja asystenta wybierz pozycję Nowy.

  3. Nadaj asystentowi nazwę.

  4. Wprowadź następujące instrukcje: "Jesteś asystentem sztucznej inteligencji, który może napisać kod, aby pomóc w odpowiadaniu na pytania matematyczne"

  5. Wybierz wdrożenie modelu. Zalecamy przetestowanie jednego z najnowszych modeli gpt-4.

  6. Wybierz przełącznik włączania interpretera kodu.

  7. Wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający asystenta ze wprowadzonymi szczegółami konfiguracji.

  8. Wprowadź pytanie dotyczące asystenta, aby odpowiedzieć: "Muszę rozwiązać równanie 3x + 11 = 14. Czy możesz mi pomóc?"

  9. 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.

  10. 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.
    

    Zrzut ekranu przedstawiający sesję konwersacji na placu zabaw asystenta.

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ż

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.

W przypadku uwierzytelniania bez hasła należy wykonać następujące kroki:

  1. Użyj pakietu azure-identity.
  2. 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.
  3. Zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure, takiego jak az login.

Konfiguruj

  1. Zainstaluj bibliotekę klienta języka Python openAI za pomocą następujących elementów:
pip install openai
  1. 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.

Zrzut ekranu przedstawiający blok przeglądu zasobu usługi Azure OpenAI w witrynie Azure Portal z lokalizacją punktu końcowego i kluczy dostępu w kolorze czerwonym.

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ż

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.

Zrzut ekranu przedstawiający interfejs użytkownika przeglądu zasobu usługi Azure OpenAI w witrynie Azure Portal z lokalizacją punktu końcowego i kluczy dostępu w kolorze czerwonym.

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ż

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.

W przypadku uwierzytelniania bez hasła należy wykonać następujące kroki:

  1. @azure/identity Użyj pakietu.
  2. 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.
  3. Zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure, takiego jak az login.

Konfiguruj

  1. Zainstaluj bibliotekę klienta Asystentów OpenAI dla języka JavaScript za pomocą następujących narzędzi:

    npm install openai
    
  2. 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.

Zrzut ekranu przedstawiający blok przeglądu zasobu OpenAI w witrynie Azure Portal z lokalizacją punktów końcowych i kluczy dostępu w kolorze czerwonym.

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ż

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.

Zrzut ekranu przedstawiający blok przeglądu zasobu usługi Azure OpenAI w witrynie Azure Portal z lokalizacją punktu końcowego i kluczy dostępu w kolorze czerwonym.

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ż