Azure Anthropic(透過 Azure Foundry 使用 Claude)
LiteLLM 支援透過 Microsoft Azure Foundry 部署的 Claude 模型,包括 Claude Sonnet 4.5、Claude Haiku 4.5 和 Claude Opus 4.1。
可用模型
Azure Foundry 支援以下 Claude 模型:
claude-sonnet-4-5- Anthropic 最強大的模型,適合建立真實世界代理程式並處理複雜、長期的任務claude-haiku-4-5- 兼具接近前沿的效能、合適的速度與成本,適用於高流量使用情境claude-opus-4-1- 程式碼撰寫領域的業界領導者,能在長時間執行的任務中提供持續效能
| 屬性 | 詳細資料 |
|---|---|
| 說明 | 透過 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 |
主要功能
- 延伸思考:針對複雜任務提供增強的推理能力
- 圖片與文字輸入:強大的視覺能力,可分析圖表、技術圖解與報告
- 程式碼生成:進階思考搭配程式碼生成、分析與除錯(Claude Sonnet 4.5 與 Claude Opus 4.1)
- 與 Anthropic 相同的 API:所有請求/回應轉換都與主要 Anthropic 提供者完全相同
驗證
Azure Anthropic 支援兩種驗證方式:
- API Key:使用
api-key標頭 - Azure AD Token:使用
Authorization: Bearer <token>標頭(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
基本完成
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-4-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-4-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-4-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,
)
串流
from litellm import completion
response = completion(
model="azure_ai/claude-sonnet-4-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)
工具呼叫
from litellm import completion
response = completion(
model="azure_ai/claude-sonnet-4-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-4-5
litellm_params:
model: azure_ai/claude-sonnet-4-5
api_base: https://<resource-name>.services.ai.azure.com/anthropic
api_key: os.environ/AZURE_API_KEY
3. 測試
- curl
- OpenAI Python SDK
curl --location 'http://0.0.0.0:4000/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"model": "claude-sonnet-4-5",
"messages": [
{
"role": "user",
"content": "Hello!"
}
],
"max_tokens": 1000
}'
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-4-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-4-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 sk-anything" \
--data '{
"model": "claude-sonnet-4-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。當未提供 max_tokens 時,LiteLLM 會自動傳入 max_tokens=4096。
與標準 Anthropic 提供者的差異
Azure Anthropic 與標準 Anthropic 提供者之間唯一的差異是驗證:
- 標準 Anthropic:使用
x-api-key標頭 - Azure Anthropic:使用
api-key標頭,或使用Authorization: Bearer <token>進行 Azure AD 驗證
其他所有請求/回應轉換、工具呼叫、串流與功能支援都相同。
API Base URL 格式
API base URL 應遵循以下格式:
https://<resource-name>.services.ai.azure.com/anthropic
若 URL 中尚未包含,LiteLLM 會自動附加 /v1/messages。
範例:完整設定
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-4-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)
疑難排解
缺少 API Base 錯誤
如果您看到關於缺少 API base 的錯誤,請確認您已設定:
os.environ["AZURE_API_BASE"] = "https://<resource-name>.services.ai.azure.com/anthropic"
或者直接傳入:
response = completion(
model="azure_ai/claude-sonnet-4-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:若要自動重新整理 token,請設定
AZURE_TENANT_ID、AZURE_CLIENT_ID和AZURE_CLIENT_SECRET
相關文件
- Anthropic 提供者文件 - 用於標準 Anthropic API 用法
- Azure OpenAI 文件 - 用於 Azure OpenAI 模型
- Azure 驗證指南 - 用於 Azure AD token 設定