Azure Anthropic
Azure Anthropic (Azure Foundry의 Claude)
LiteLLM은 Microsoft Azure Foundry로 배포된 Claude 모델(Claude Sonnet 4.5, Claude Haiku 4.5, Claude Opus 4.1 포함)을 지원해요.
출처: 문서
본문
사용 가능한 모델 (Available Models)
Azure Foundry는 다음 Claude 모델을 지원해요:
claude-sonnet-5- 실제 세계 에이전트 구축과 복잡한 장기 태스크 처리에 가장 적합한 모델claude-haiku-4-5- 고용량 사용 사례에 적합한 속도와 비용으로 근경계(frontier)급 성능 제공claude-opus-5- 코딩 분야의 업계 선두, 장기 실행 태스크에서 지속적 성능 제공
| 속성 | 설명 |
|---|---|
| 설명 | Microsoft Azure Foundry로 배포된 Claude 모델. Anthropic의 Messages API와 동일한 API지만 Azure 인증 사용 |
| LiteLLM 라우트 | azure_ai/ (Claude 모델 이름에 이 접두사를 추가 — 예: azure_ai/claude-sonnet-4-5) |
| 공급자 문서 | Azure Foundry Claude Models |
| API 엔드포인트 | https://<resource-name>.services.ai.azure.com/anthropic/v1/messages |
| 지원 엔드포인트 | /chat/completions, /anthropic/v1/messages |
주요 기능 (Key Features)
- 확장된 사고 (Extended thinking): 복잡한 태스크를 위한 향상된 추론 능력
- 이미지·텍스트 입력: 차트, 그래프, 기술 다이어그램, 보고서 분석을 위한 강력한 비전 능력
- 코드 생성: 코드 생성·분석·디버깅이 포함된 고급 사고 (Claude Sonnet 4.5, Claude Opus 4.1)
- Anthropic과 동일한 API: 모든 요청/응답 변환이 메인 Anthropic 공급자와 동일
인증 (Authentication)
Azure Anthropic은 두 가지 인증 방식을 지원해요:
- API Key:
api-key헤더 사용 - Azure AD Token:
Authorization: Bearer ***헤더 사용 (Microsoft Entra ID)
API 키와 설정
import os
# Option 1: API Key authentication
os.environ["AZURE_API_KEY"] = "your-azure-api-key"
os.environ["AZURE_API_BASE"] = "https://<resource-name>.services.ai.azure.com/anthropic"
# Option 2: Azure AD Token authentication
os.environ["AZURE_AD_TOKEN"] = "your-azure-ad-token"
os.environ["AZURE_API_BASE"] = "https://<resource-name>.services.ai.azure.com/anthropic"
# Optional: Azure AD Token Provider (for automatic token refresh)
os.environ["AZURE_TENANT_ID"] = "your-tenant-id"
os.environ["AZURE_CLIENT_ID"] = "your-client-id"
os.environ["AZURE_CLIENT_SECRET"] = "your-client-secret"
os.environ["AZURE_SCOPE"] = "https://cognitiveservices.azure.com/.default"
LiteLLM Python SDK 사용법
기본 Completion
from litellm import completion
# Set environment variables
os.environ["AZURE_API_KEY"] = "your-azure-api-key"
os.environ["AZURE_API_BASE"] = "https://<resource-name>.services.ai.azure.com/anthropic"
# Make a completion request
response = completion(
model="azure_ai/claude-sonnet-5",
messages=[
{"role": "user", "content": "What are 3 things to visit in Seattle?"}
],
max_tokens=1000,
temperature=0.7,
)
print(response)
API Key 파라미터로 호출
import litellm
response = litellm.completion(
model="azure_ai/claude-sonnet-5",
api_base="https://<resource-name>.services.ai.azure.com/anthropic",
api_key="your-azure-api-key",
messages=[
{"role": "user", "content": "Hello!"}
],
max_tokens=1000,
)
Azure AD Token으로 호출
import litellm
response = litellm.completion(
model="azure_ai/claude-sonnet-5",
api_base="https://<resource-name>.services.ai.azure.com/anthropic",
azure_ad_token="your-azure-ad-token",
messages=[
{"role": "user", "content": "Hello!"}
],
max_tokens=1000,
)
스트리밍 (Streaming)
from litellm import completion
response = completion(
model="azure_ai/claude-sonnet-5",
messages=[
{"role": "user", "content": "Write a short story"}
],
stream=True,
max_tokens=1000,
)
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Tool Calling
from litellm import completion
response = completion(
model="azure_ai/claude-sonnet-5",
messages=[
{"role": "user", "content": "What's the weather in Seattle?"}
],
tools=[
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA"
}
},
"required": ["location"]
}
}
}
],
tool_choice="auto",
max_tokens=1000,
)
print(response)
LiteLLM Proxy Server 사용법
1. 환경에 키 저장
export AZURE_API_KEY="your-azure-api-key"
export AZURE_API_BASE="https://<resource-name>.services.ai.azure.com/anthropic"
2. Proxy 설정
model_list:
- model_name: claude-sonnet-5
litellm_params:
model: azure_ai/claude-sonnet-5
api_base: https://<resource-name>.services.ai.azure.com/anthropic
api_key: os.environ/AZURE_API_KEY
3. 테스트
curl:
curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"model": "claude-sonnet-5",
"messages": [
{
"role": "user",
"content": "Hello!"
}
],
"max_tokens": 1000
}'
OpenAI Python SDK:
from openai import OpenAI
client = OpenAI(
api_key="anything",
base_url="http://0.0.0.0:4000"
)
response = client.chat.completions.create(
model="claude-sonnet-5",
messages=[
{"role": "user", "content": "Hello!"}
],
max_tokens=1000
)
print(response)
Messages API
Azure Anthropic은 네이티브 Anthropic Messages API도 지원해요. 엔드포인트 구조는 Anthropic의 /v1/messages API와 동일해요.
Anthropic SDK 사용:
from anthropic import Anthropic
client = Anthropic(
api_key="your-azure-api-key",
base_url="https://<resource-name>.services.ai.azure.com/anthropic"
)
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=1000,
messages=[
{"role": "user", "content": "Hello, world"}
]
)
print(response)
LiteLLM Proxy 사용:
curl --request POST \
--url http://0.0.0.0:4000/anthropic/v1/messages \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header "Authorization: bearer ***" \
--data '{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, world"}
]
}'
지원되는 OpenAI 파라미터
Azure Anthropic은 메인 Anthropic 공급자와 동일한 파라미터를 지원해요:
stream, stop, temperature, top_p, max_tokens, max_completion_tokens, tools, tool_choice, extra_headers, parallel_tool_calls, response_format, user, thinking, reasoning_effort
Azure Anthropic API는
max_tokens를 필수로 요구해요. LiteLLM은 max_tokens가 제공되지 않으면 자동으로max_tokens=4096을 전달해요.
표준 Anthropic 공급자와의 차이점
Azure Anthropic과 표준 Anthropic 공급자의 유일한 차이는 인증이에요:
- 표준 Anthropic:
x-api-key헤더 사용 - Azure Anthropic:
api-key헤더 또는 Azure AD 인증용Authorization: Bearer ***사용
다른 모든 요청/응답 변환, tool calling, 스트리밍, 기능 지원은 동일해요.
API Base URL 형식
https://<resource-name>.services.ai.azure.com/anthropic
API base URL은 이 형식을 따라야 해요. LiteLLM은 URL에 /v1/messages가 없으면 자동으로 추가해요.
예시: 전체 설정 (Full Configuration)
import os
from litellm import completion
# Configure Azure Anthropic
os.environ["AZURE_API_KEY"] = "your-azure-api-key"
os.environ["AZURE_API_BASE"] = "https://my-resource.services.ai.azure.com/anthropic"
# Make a request
response = completion(
model="azure_ai/claude-sonnet-5",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain quantum computing in simple terms."}
],
max_tokens=1000,
temperature=0.7,
stream=False,
)
print(response.choices[0].message.content)
문제 해결 (Troubleshooting)
API Base 누락 에러
API base 누락 에러가 보이면 다음을 설정했는지 확인하세요:
os.environ["AZURE_API_BASE"] = "https://<resource-name>.services.ai.azure.com/anthropic"
또는 직접 전달:
response = completion(
model="azure_ai/claude-sonnet-5",
api_base="https://<resource-name>.services.ai.azure.com/anthropic",
# ...
)
인증 에러
- API Key:
AZURE_API_KEY가 설정되었거나api_key파라미터로 전달되었는지 확인 - Azure AD Token:
AZURE_AD_TOKEN이 설정되었거나azure_ad_token파라미터로 전달되었는지 확인 - Token Provider: 자동 토큰 갱신을 위해
AZURE_TENANT_ID,AZURE_CLIENT_ID,AZURE_CLIENT_SECRET설정