Modelli di ragionamento OpenAI di Azure
I modelli OpenAI o-series
di Azure sono progettati per affrontare le attività di ragionamento e risoluzione dei problemi con maggiore attenzione e funzionalità. Questi modelli dedicano più tempo all'elaborazione e comprensione delle richieste degli utenti, rafforzando al contempo aree come scienze, codifica e matematica rispetto alle iterazioni precedenti.
Funzionalità principali dei modelli di serie o:
- Generazione di codice complessa: in grado di generare algoritmi e gestire attività di codifica avanzate per supportare gli sviluppatori.
- Risoluzione avanzata dei problemi: ideale per sessioni di brainstorming complete e per affrontare le sfide multiformi.
- Confronto documenti complessi: perfetto per l'analisi di contratti, file di casi o documenti legali per identificare piccole differenze.
- Istruzioni successive e Gestione del flusso di lavoro: particolarmente efficace per la gestione dei flussi di lavoro che richiedono contesti più brevi.
Disponibilità
Per l'accesso a o3-mini
, o1
e o1-preview
, è necessaria la registrazione e l'accesso verrà concesso in base ai criteri di idoneità di Microsoft.
I clienti che in precedenza hanno applicato e ricevuto l'accesso a o1
o o1-preview
, non devono riapplicare perché si trovano automaticamente nell'elenco di attesa per il modello più recente.
Richiesta di accesso: domanda per il modello con accesso limitato
Aree di disponibilità
Modello | Paese | Accesso limitato |
---|---|---|
o3-mini |
Disponibilità del modello. | Applicazione modello di accesso limitato |
o1 |
Disponibilità del modello. | Applicazione modello di accesso limitato |
o1-preview |
Disponibilità del modello. | Questo modello è disponibile solo per i clienti a cui è stato concesso l'accesso come parte della versione di accesso limitato originale. Attualmente non si espande l'accesso a o1-preview . |
o1-mini |
Disponibilità del modello. | Nessuna richiesta di accesso necessaria per le distribuzioni Standard globali. Le distribuzioni Standard (a livello di area) sono attualmente disponibili solo per i clienti selezionati a cui è stato precedentemente concesso l'accesso come parte della o1-preview versione. |
Supporto api e funzionalità
Funzionalità | o3-mini, 2025-01-31 | o1, 2024-12-17 | o1-preview, 2024-09-12 | o1-mini, 2024-09-12 |
---|---|---|---|---|
Versione 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 |
Messaggi per sviluppatori | ✅ | ✅ | - | - |
Output strutturati | ✅ | ✅ | - | - |
Finestra di contesto | Input: 200.000 Output: 100.000 |
Input: 200.000 Output: 100.000 |
Input: 128.000 Output: 32.768 |
Input: 128.000 Output: 65.536 |
Sforzo di ragionamento | ✅ | ✅ | - | - |
Supporto per la visione | - | ✅ | - | - |
Funzioni/Strumenti | ✅ | ✅ | - | - |
max_completion_tokens * |
✅ | ✅ | ✅ | ✅ |
Messaggi di sistema** | ✅ | ✅ | - | - |
Streaming | ✅ | - | - | - |
* I modelli di ragionamento funzioneranno solo con il max_completion_tokens
parametro .
**Il modello serie o* più recente supporta i messaggi di sistema per semplificare la migrazione. Quando si usa un messaggio di sistema con o3-mini
e o1
verrà considerato come un messaggio per sviluppatori. Non è consigliabile usare sia un messaggio per sviluppatori che un messaggio di sistema nella stessa richiesta API.
Non supportato
Di seguito sono attualmente non supportati i modelli di ragionamento:
- Chiamata di strumenti paralleli
-
temperature
,top_p
,presence_penalty
,frequency_penalty
logprobs
,top_logprobs
, ,logit_bias
max_tokens
Utilizzo
Questi modelli non supportano attualmente lo stesso set di parametri di altri modelli che usano l'API di completamento della chat.
È necessario aggiornare la libreria client OpenAI per l'accesso ai parametri più recenti.
pip install openai --upgrade
Se non si ha familiarità con l'uso dell'ID Entra di Microsoft per l'autenticazione, vedere Come configurare il servizio Azure OpenAI con l'autenticazione microsoft Entra ID.
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))
Output:
{
"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"
}
}
}
]
}
Sforzo di ragionamento
Nota
I modelli di ragionamento hanno reasoning_tokens
come parte della completion_tokens_details
risposta del modello. Si tratta di token nascosti che non vengono restituiti come parte del contenuto della risposta del messaggio, ma usati dal modello per generare una risposta finale alla richiesta.
2024-12-01-preview
aggiunge un nuovo parametro aggiuntivo reasoning_effort
che può essere impostato su low
, medium
o high
con il modello più recente o1
. Maggiore è l'impostazione dell'impegno, maggiore sarà la spesa per l'elaborazione della richiesta da parte del modello, che in genere comporterà un numero maggiore di reasoning_tokens
.
Messaggi per sviluppatori
I messaggi "role": "developer"
dello sviluppatore funzionalmente sono gli stessi dei messaggi di sistema.
L'aggiunta di un messaggio per sviluppatore all'esempio di codice precedente sarà simile alla seguente:
È necessario aggiornare la libreria client OpenAI per l'accesso ai parametri più recenti.
pip install openai --upgrade
Se non si ha familiarità con l'uso dell'ID Entra di Microsoft per l'autenticazione, vedere Come configurare il servizio Azure OpenAI con l'autenticazione microsoft Entra ID.
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))
Output markdown
Per impostazione predefinita, i o3-mini
modelli e o1
non tenteranno di produrre output che include la formattazione markdown. Un caso d'uso comune in cui questo comportamento è indesiderato è quando si vuole che il modello restituisca il codice contenuto in un blocco di codice markdown. Quando il modello genera l'output senza formattazione markdown, si perdono funzionalità come l'evidenziazione della sintassi e i blocchi di codice copiabili nelle esperienze di playground interattive. Per eseguire l'override di questo nuovo comportamento predefinito e incoraggiare l'inclusione markdown nelle risposte del modello, aggiungere la stringa Formatting re-enabled
all'inizio del messaggio dello sviluppatore.
L'aggiunta Formatting re-enabled
all'inizio del messaggio dello sviluppatore non garantisce che il modello includa la formattazione markdown nella risposta, ma aumenta solo la probabilità. È stato rilevato dal test interno che Formatting re-enabled
è meno efficace da solo con il modello rispetto a o1
con o3-mini
.
Per migliorare le prestazioni di è possibile aumentare ulteriormente l'inizio del messaggio dello Formatting re-enabled
sviluppatore che spesso comporterà l'output desiderato. Invece di aggiungere Formatting re-enabled
semplicemente all'inizio del messaggio dello sviluppatore, è possibile provare ad aggiungere un'istruzione iniziale più descrittiva come uno degli esempi seguenti:
Formatting re-enabled - please enclose code blocks with appropriate markdown tags.
Formatting re-enabled - code output should be wrapped in markdown.
A seconda dell'output previsto, potrebbe essere necessario personalizzare ulteriormente il messaggio iniziale dello sviluppatore per specificare come destinazione il caso d'uso specifico.