Modele rozumowania usługi Azure OpenAI
Modele usługi Azure OpenAI o-series
zostały zaprojektowane w celu rozwiązywania problemów i rozwiązywania problemów z większą koncentracją uwagi i możliwościami. Modele te poświęcają więcej czasu na przetwarzanie i zrozumienie żądania użytkownika, co czyni je wyjątkowo silnymi w obszarach takich jak nauka, kodowanie i matematyka w porównaniu z poprzednimi iteracjami.
Kluczowe możliwości modeli serii o:
- Złożone generowanie kodu: możliwość generowania algorytmów i obsługi zaawansowanych zadań kodowania w celu obsługi deweloperów.
- Zaawansowane rozwiązywanie problemów: idealne rozwiązanie dla kompleksowych sesji burzy mózgów i rozwiązywanie wielowymiarowych wyzwań.
- Złożone porównanie dokumentów: idealne rozwiązanie do analizowania kontraktów, plików przypadków lub dokumentów prawnych w celu identyfikowania subtelnych różnic.
- Instrukcje następujące i zarządzanie przepływami pracy: Szczególnie skuteczne zarządzanie przepływami pracy wymagającymi krótszych kontekstów.
Dostępność
Aby uzyskać dostęp do o3-mini
systemu , o1
i o1-preview
, wymagana jest rejestracja, a dostęp zostanie udzielony na podstawie kryteriów kwalifikowalności firmy Microsoft.
Klienci, którzy wcześniej zastosowali i otrzymali dostęp do o1
programu lub o1-preview
, nie muszą ponownie stosować aplikacji, ponieważ są one automatycznie na liście oczekujących dla najnowszego modelu.
Żądanie dostępu: aplikacja modelu ograniczonego dostępu
Dostępność w regionach
Model | Region (Region) | Ograniczony dostęp |
---|---|---|
o3-mini |
Dostępność modelu. | Aplikacja modelu ograniczonego dostępu |
o1 |
Dostępność modelu. | Aplikacja modelu ograniczonego dostępu |
o1-preview |
Dostępność modelu. | Ten model jest dostępny tylko dla klientów, którzy otrzymali dostęp w ramach oryginalnej wersji ograniczonego dostępu. Obecnie nie rozszerzamy dostępu do usługi o1-preview . |
o1-mini |
Dostępność modelu. | Żadne żądanie dostępu nie jest wymagane w przypadku wdrożeń w warstwie Global Standard. Wdrożenia standardowe (regionalne) są obecnie dostępne tylko dla wybranych klientów, którzy wcześniej udzielali dostępu w ramach o1-preview wersji. |
Obsługa interfejsu API i funkcji
Funkcja | o3-mini, 2025-01-31 | o1, 2024-12-17 | o1-preview, 2024-09-12 | o1-mini, 2024-09-12 |
---|---|---|---|---|
Wersja interfejsu API | 2024-12-01-preview 2025-01-01-preview |
2024-12-01-preview 2025-01-01-preview |
2024-09-01-preview 2024-10-01-preview 2024-12-01-preview |
2024-09-01-preview 2024-10-01-preview 2024-12-01-preview |
Komunikaty dla deweloperów | ✅ | ✅ | - | - |
Dane wyjściowe ze strukturą | ✅ | ✅ | - | - |
Okno kontekstu | Dane wejściowe: 200 000 Dane wyjściowe: 100 000 |
Dane wejściowe: 200 000 Dane wyjściowe: 100 000 |
Dane wejściowe: 128 000 Dane wyjściowe: 32 768 |
Dane wejściowe: 128 000 Dane wyjściowe: 65 536 |
Wysiłek rozumowania | ✅ | ✅ | - | - |
Obsługa obrazów | - | ✅ | - | - |
Funkcje/narzędzia | ✅ | ✅ | - | - |
max_completion_tokens * |
✅ | ✅ | ✅ | ✅ |
Komunikaty systemowe** | ✅ | ✅ | - | - |
Przesyłanie strumieniowe | ✅ | - | - | - |
* Modele rozumowania będą działać tylko z parametrem max_completion_tokens
.
**Najnowszy* model serii o obsługuje komunikaty systemowe ułatwiające migrację. Gdy używasz komunikatu systemowego i o1
będzie on traktowany jako komunikat o3-mini
dla deweloperów. Nie należy używać zarówno komunikatu dewelopera, jak i komunikatu systemowego w tym samym żądaniu interfejsu API.
Nieobsługiwany
Poniżej przedstawiono obecnie nieobsługiwane modele rozumowania:
- Równoległe wywoływanie narzędzi
-
temperature
,top_p
, ,presence_penalty
,logprobs
frequency_penalty
, ,top_logprobs
, ,logit_bias
max_tokens
Użycie
Te modele nie obsługują obecnie tego samego zestawu parametrów co inne modele korzystające z interfejsu API uzupełniania czatów.
Aby uzyskać dostęp do najnowszych parametrów, należy uaktualnić bibliotekę klienta openAI.
pip install openai --upgrade
Jeśli dopiero zaczynasz używać identyfikatora Entra firmy Microsoft do uwierzytelniania, zobacz How to configure Azure OpenAI Service with Microsoft Entra ID authentication (Jak skonfigurować usługę Azure OpenAI Service przy użyciu uwierzytelniania identyfikatora Entra firmy Microsoft).
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
azure_ad_token_provider=token_provider,
api_version="2024-12-01-preview"
)
response = client.chat.completions.create(
model="o1-new", # replace with the model deployment name of your o1-preview, or o1-mini model
messages=[
{"role": "user", "content": "What steps should I think about when writing my first Python API?"},
],
max_completion_tokens = 5000
)
print(response.model_dump_json(indent=2))
Wyjście:
{
"id": "chatcmpl-AEj7pKFoiTqDPHuxOcirA9KIvf3yz",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "Writing your first Python API is an exciting step in developing software that can communicate with other applications. An API (Application Programming Interface) allows different software systems to interact with each other, enabling data exchange and functionality sharing. Here are the steps you should consider when creating your first Python API...truncated for brevity.",
"refusal": null,
"role": "assistant",
"function_call": null,
"tool_calls": null
},
"content_filter_results": {
"hate": {
"filtered": false,
"severity": "safe"
},
"protected_material_code": {
"filtered": false,
"detected": false
},
"protected_material_text": {
"filtered": false,
"detected": false
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
],
"created": 1728073417,
"model": "o1-2024-12-17",
"object": "chat.completion",
"service_tier": null,
"system_fingerprint": "fp_503a95a7d8",
"usage": {
"completion_tokens": 1843,
"prompt_tokens": 20,
"total_tokens": 1863,
"completion_tokens_details": {
"audio_tokens": null,
"reasoning_tokens": 448
},
"prompt_tokens_details": {
"audio_tokens": null,
"cached_tokens": 0
}
},
"prompt_filter_results": [
{
"prompt_index": 0,
"content_filter_results": {
"custom_blocklists": {
"filtered": false
},
"hate": {
"filtered": false,
"severity": "safe"
},
"jailbreak": {
"filtered": false,
"detected": false
},
"self_harm": {
"filtered": false,
"severity": "safe"
},
"sexual": {
"filtered": false,
"severity": "safe"
},
"violence": {
"filtered": false,
"severity": "safe"
}
}
}
]
}
Wysiłek rozumowania
Uwaga
Modele rozumowania są reasoning_tokens
częścią completion_tokens_details
odpowiedzi modelu. Są to ukryte tokeny, które nie są zwracane jako część zawartości odpowiedzi komunikatu, ale są używane przez model, aby pomóc wygenerować ostateczną odpowiedź na twoje żądanie.
2024-12-01-preview
Dodaje dodatkowy nowy parametr reasoning_effort
, który można ustawić na low
, medium
lub high
z najnowszym o1
modelem. Im wyższe ustawienie nakładu pracy, tym dłużej model wyda przetwarzanie żądania, co zwykle spowoduje zwiększenie liczby reasoning_tokens
.
Komunikaty dla deweloperów
Komunikaty programistyczne funkcjonalnie są takie same jak komunikaty "role": "developer"
systemowe.
Dodanie komunikatu dla deweloperów do poprzedniego przykładu kodu wygląda następująco:
Aby uzyskać dostęp do najnowszych parametrów, należy uaktualnić bibliotekę klienta openAI.
pip install openai --upgrade
Jeśli dopiero zaczynasz używać identyfikatora Entra firmy Microsoft do uwierzytelniania, zobacz How to configure Azure OpenAI Service with Microsoft Entra ID authentication (Jak skonfigurować usługę Azure OpenAI Service przy użyciu uwierzytelniania identyfikatora Entra firmy Microsoft).
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
)
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
azure_ad_token_provider=token_provider,
api_version="2024-12-01-preview"
)
response = client.chat.completions.create(
model="o1-new", # replace with the model deployment name of your o1-preview, or o1-mini model
messages=[
{"role": "developer","content": "You are a helpful assistant."}, # optional equivalent to a system message for reasoning models
{"role": "user", "content": "What steps should I think about when writing my first Python API?"},
],
max_completion_tokens = 5000
)
print(response.model_dump_json(indent=2))
Dane wyjściowe języka Markdown
Domyślnie o3-mini
modele i o1
nie będą próbować tworzyć danych wyjściowych zawierających formatowanie markdown. Typowy przypadek użycia, w którym to zachowanie jest niepożądane, jest to, że chcesz, aby model wyświetlał kod wyjściowy zawarty w bloku kodu markdown. Gdy model generuje dane wyjściowe bez formatowania markdown, utracisz funkcje, takie jak wyróżnianie składni i bloki kodu z możliwością kopiowania w interaktywnych środowiskach zabaw. Aby zastąpić to nowe domyślne zachowanie i zachęcić do dołączania języka Markdown w odpowiedziach modelu, dodaj ciąg Formatting re-enabled
na początku komunikatu dla deweloperów.
Dodanie Formatting re-enabled
do początku komunikatu dla deweloperów nie gwarantuje, że model będzie zawierać formatowanie markdown w odpowiedzi, zwiększa tylko prawdopodobieństwo. Znaleźliśmy z testów wewnętrznych, które Formatting re-enabled
są mniej skuteczne w o1
modelu niż z o3-mini
.
Aby poprawić wydajność Formatting re-enabled
, można dodatkowo rozszerzyć początek komunikatu dewelopera, co często spowoduje wprowadzenie żądanych danych wyjściowych. Zamiast dodawać Formatting re-enabled
do początku komunikatu dla deweloperów, możesz eksperymentować z dodawaniem bardziej opisowej instrukcji początkowej, takiej jak jedna z poniższych przykładów:
Formatting re-enabled - please enclose code blocks with appropriate markdown tags.
Formatting re-enabled - code output should be wrapped in markdown.
W zależności od oczekiwanych danych wyjściowych może być konieczne dalsze dostosowanie początkowego komunikatu dewelopera w celu kierowania konkretnego przypadku użycia.