Udostępnij za pośrednictwem


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-minisystemu , o1i 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, logprobsfrequency_penalty, , top_logprobs, , logit_biasmax_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, mediumlub 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.