Azure OpenAI 추론 모델
Azure OpenAI o-series
모델은 포커스 및 기능 향상을 통해 추론 및 문제 해결 작업을 처리하도록 설계되었습니다. 이러한 모델은 사용자의 요청을 처리하고 이해하는 데 더 많은 시간을 할애하여 이전 반복에 비해 과학, 코딩, 수학과 같은 영역에서 매우 강력한 성능을 보입니다.
o 시리즈 모델의 주요 기능은 다음과 같습니다.
- 복잡한 코드 생성: 개발자를 지원하기 위해 알고리즘을 생성하고 고급 코딩 작업을 처리할 수 있습니다.
- 고급 문제 해결: 포괄적인 브레인스토밍 세션 및 다각적인 문제 해결에 이상적입니다.
- 복잡한 문서 비교: 계약, 사례 파일 또는 법적 문서를 분석하여 미묘한 차이를 식별하는 데 적합합니다.
- 지침 따르기 및 워크플로 관리: 더 짧은 컨텍스트가 필요한 워크플로를 관리하는 데 특히 효과적입니다.
가용성
등록에 액세스하려면 o3-mini
o1
o1-preview
등록이 필요하며 Microsoft의 자격 기준에 따라 액세스 권한이 부여됩니다.
이전에 액세스 권한을 o1
적용하거나 o1-preview
받은 고객은 최신 모델의 대기 목록에 자동으로 있으므로 다시 적용할 필요가 없습니다.
액세스 요청: 모델에 대한 제한된 액세스 신청서
사용 가능 지역
모델 | 지역 | 제한된 액세스 |
---|---|---|
o3-mini |
모델 가용성. | 제한된 액세스 모델 애플리케이션 |
o1 |
모델 가용성. | 제한된 액세스 모델 애플리케이션 |
o1-preview |
모델 가용성. | 이 모델은 원래 제한된 액세스 릴리스의 일부로 액세스 권한이 부여된 고객만 사용할 수 있습니다. 현재는 에 대한 액세스를 o1-preview 확장하지 않습니다. |
o1-mini |
모델 가용성. | 전역 표준 배포에 필요한 액세스 요청이 없습니다. 표준(지역) 배포는 현재 릴리스의 o1-preview 일부로 이전에 액세스 권한이 부여된 고객만 사용할 수 있습니다. |
API 및 기능 지원
기능 | o3-mini, 2025-01-31 | o1, 2024-12-17 | o1-preview, 2024-09-12 | o1-mini, 2024-09-12 |
---|---|---|---|---|
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 |
개발자 메시지 | ✅ | ✅ | - | - |
구조적 출력 | ✅ | ✅ | - | - |
컨텍스트 창 | 입력: 200,000 출력: 100,000 |
입력: 200,000 출력: 100,000 |
입력: 128,000 출력: 32,768 |
입력: 128,000 출력: 65,536 |
추론 노력 | ✅ | ✅ | - | - |
비전 지원 | - | ✅ | - | - |
함수/도구 | ✅ | ✅ | - | - |
max_completion_tokens * |
✅ | ✅ | ✅ | ✅ |
시스템 메시지** | ✅ | ✅ | - | - |
Streaming | ✅ | - | - | - |
* 추론 모델은 매개 변수에서만 작동합니다 max_completion_tokens
.
**최신 o* 시리즈 모델은 마이그레이션을 더 쉽게 하기 위해 시스템 메시지를 지원합니다. 시스템 메시지를 사용하는 경우 개발자 메시지 o3-mini
o1
로 처리됩니다. 동일한 API 요청에서 개발자 메시지와 시스템 메시지를 모두 사용하면 안 됩니다.
지원되지 않음
다음은 현재 추론 모델에서 지원되지 않습니다.
- 병렬 도구 호출
-
temperature
,top_p
,presence_penalty
,frequency_penalty
,logprobs
,top_logprobs
,logit_bias
max_tokens
사용
이러한 모델은 현재 채팅 완료 API를 사용하는 다른 모델과 동일한 매개 변수 집합을 지원하지 않습니다.
최신 매개 변수에 액세스하려면 OpenAI 클라이언트 라이브러리를 업그레이드해야 합니다.
pip install openai --upgrade
인증에 Microsoft Entra ID를 사용하는 경우 Microsoft Entra ID 인증을 사용하여 Azure OpenAI 서비스를 구성하는 방법을 참조하세요.
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))
출력:
{
"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"
}
}
}
]
}
추론 노력
참고 항목
추론 모델은 모델 reasoning_tokens
응답의 completion_tokens_details
일부로 사용됩니다. 이러한 토큰은 메시지 응답 콘텐츠의 일부로 반환되지 않지만 모델에 의해 요청에 대한 최종 답변을 생성하는 데 사용되는 숨겨진 토큰입니다.
2024-12-01-preview
는 또는 최신 o1
모델로 설정할 medium
high
low
수 있는 추가 새 매개 변수 reasoning_effort
를 추가합니다. 작업 설정이 높을수록 모델이 요청을 처리하는 데 더 오래 소비하게 되므로 일반적으로 더 많은 수의 reasoning_tokens
작업이 발생합니다.
개발자 메시지
기능적으로 개발자 메시지는 "role": "developer"
시스템 메시지와 동일합니다.
이전 코드 예제에 개발자 메시지를 추가하면 다음과 같이 표시됩니다.
최신 매개 변수에 액세스하려면 OpenAI 클라이언트 라이브러리를 업그레이드해야 합니다.
pip install openai --upgrade
인증에 Microsoft Entra ID를 사용하는 경우 Microsoft Entra ID 인증을 사용하여 Azure OpenAI 서비스를 구성하는 방법을 참조하세요.
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))
Markdown 출력
기본적으로 o3-mini
모델과 o1
모델은 markdown 서식을 포함하는 출력을 생성하려고 시도하지 않습니다. 이 동작이 바람직하지 않은 일반적인 사용 사례는 모델이 markdown 코드 블록 내에 포함된 코드를 출력하려는 경우입니다. 모델이 markdown 서식 지정 없이 출력을 생성하면 구문 강조 표시와 같은 기능과 대화형 플레이그라운드 환경에서 복사 가능한 코드 블록이 손실됩니다. 이 새로운 기본 동작을 재정의하고 모델 응답에 markdown을 포함하도록 하려면 개발자 메시지의 시작 부분에 문자열 Formatting re-enabled
을 추가합니다.
개발자 메시지의 시작 부분에 추가 Formatting re-enabled
해도 모델에 응답에 markdown 서식이 포함된다는 보장은 없으며 가능성만 높아집니다. 우리는 내부 테스트에서 Formatting re-enabled
모델 자체 o1
에 비해 o3-mini
덜 효과적인 것을 발견했습니다.
성능을 Formatting re-enabled
향상시키려면 개발자 메시지의 시작을 더욱 확대하여 원하는 출력을 생성할 수 있습니다. 개발자 메시지의 시작 부분에 추가하는 Formatting re-enabled
대신 아래 예제 중 하나와 같이 보다 설명적인 초기 명령을 추가하는 방법을 실험해 볼 수 있습니다.
Formatting re-enabled - please enclose code blocks with appropriate markdown tags.
Formatting re-enabled - code output should be wrapped in markdown.
예상 출력에 따라 특정 사용 사례를 대상으로 하려면 초기 개발자 메시지를 추가로 사용자 지정해야 할 수 있습니다.