Azure OpenAI
import Image from '@theme/IdealImage'; import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem';
Overview
Azure OpenAI
Overview
| Property | Details |
|---|---|
| Description | Azure OpenAI Service provides REST API access to OpenAI's powerful language models including o1, o1-mini, GPT-5, GPT-4o, GPT-4o mini, GPT-4 Turbo with Vision, GPT-4, GPT-3.5-Turbo, and Embeddings model series. Also supports Claude models via Azure Foundry. |
| Provider Route on LiteLLM | azure/, azure/o_series/, azure/gpt5_series/, azure/claude-* (Claude models via Azure Foundry) |
| Supported Operations | /chat/completions, /responses, /completions, /embeddings, /audio/speech, /audio/transcriptions, /fine_tuning, /batches, /files, /images, /anthropic/v1/messages |
| Link to Provider Doc | Azure OpenAI ↗, Azure Foundry Claude ↗ |
API Keys, Params
api_key, api_base, api_version etc can be passed directly to litellm.completion - see here or set as litellm.api_key params see here
os.environ["AZURE_API_KEY"] = "" # "my-azure-api-key"
os.environ["AZURE_API_BASE"] = "" # "https://example-endpoint.openai.azure.com"
os.environ["AZURE_API_VERSION"] = "" # "2023-05-15"
# optional
os.environ["AZURE_AD_TOKEN"] = ""
os.environ["AZURE_API_TYPE"] = ""
:::info Azure Foundry Claude Models
Azure also supports Claude models via Azure Foundry. Use azure/claude-* model names (e.g., azure/claude-sonnet-4-5) with Azure authentication. See the Azure Anthropic documentation for details.
:::
Usage - LiteLLM Python SDK
<a target="_blank" href="https://colab.research.google.com/github/BerriAI/litellm/blob/main/cookbook/LiteLLM_Azure_OpenAI.ipynb"> <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/> </a>Completion - using .env variables
from litellm import completion
## set ENV variables
os.environ["AZURE_API_KEY"] = ""
os.environ["AZURE_API_BASE"] = ""
os.environ["AZURE_API_VERSION"] = ""
# azure call
response = completion(
model = "azure/<your_deployment_name>",
messages = [{ "content": "Hello, how are you?","role": "user"}]
)
Completion - using api_key, api_base, api_version
# azure call
response = litellm.completion(
model = "azure/<your deployment name>", # model = azure/<your deployment name>
api_base = "", # azure api base
api_version = "", # azure api version
api_key = "", # azure api key
messages = [{"role": "user", "content": "good morning"}],
)
Completion - using azure_ad_token, api_base, api_version
# azure call
response = litellm.completion(
model = "azure/<your deployment name>", # model = azure/<your deployment name>
api_base = "", # azure api base
api_version = "", # azure api version
azure_ad_token="", # azure_ad_token
messages = [{"role": "user", "content": "good morning"}],
)
Usage - LiteLLM Proxy Server
Here's how to call Azure OpenAI models with the LiteLLM Proxy Server
1. Save key in your environment
2. Start the proxy
model_list:
- model_name: gpt-3.5-turbo
litellm_params:
model: azure/chatgpt-v-2
api_base: https://openai-gpt-4-test-v-1.openai.azure.com/
api_version: "2023-05-15"
api_key: os.environ/AZURE_API_KEY # The `os.environ/` prefix tells litellm to read this from the env.
3. Test it
curl --location 'http://0.0.0.0:4000/chat/completions' \\
--header 'Content-Type: application/json' \\
--data ' {
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "what llm are you"
}
]
}
'
client = openai.OpenAI(
api_key="anything",
base_url="http://0.0.0.0:4000"
)
response = client.chat.completions.create(model="gpt-3.5-turbo", messages = [
{
"role": "user",
"content": "this is a test request, write a short poem"
}
])
print(response)
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
ChatPromptTemplate,
HumanMessagePromptTemplate,
SystemMessagePromptTemplate,
)
from langchain.schema import HumanMessage, SystemMessage
chat = ChatOpenAI(
openai_api_base="http://0.0.0.0:4000", # set openai_api_base to the LiteLLM Proxy
model = "gpt-3.5-turbo",
temperature=0.1
)
messages = [
SystemMessage(
content="You are a helpful assistant that im using to make a test request to."
),
HumanMessage(
content="test from litellm. tell me why it's amazing in 1 sentence"
),
]
response = chat(messages)
print(response)
Setting API Version
You can set the api_version for Azure OpenAI in your proxy config.yaml in the following ways
Option 1: Per Model Configuration
model_list:
- model_name: gpt-4
litellm_params:
model: azure/my-gpt4-deployment
api_base: https://your-resource.openai.azure.com/
api_version: "2024-08-01-preview" # Set version per model
api_key: os.environ/AZURE_API_KEY
Azure OpenAI Chat Completion Models
:::tip
We support ALL Azure models, just set model=azure/<your deployment name> as a prefix when sending litellm requests
:::
| Model Name | Function Call |
|---|---|
| o1-mini | response = completion(model="azure/<your deployment name>", messages=messages) |
| o1-preview | response = completion(model="azure/<your deployment name>", messages=messages) |
| gpt-5 | response = completion(model="azure/<your deployment name>", messages=messages) |
| gpt-4o-mini | completion('azure/<your deployment name>', messages) |
| gpt-4o | completion('azure/<your deployment name>', messages) |
| gpt-4 | completion('azure/<your deployment name>', messages) |
| gpt-4-0314 | completion('azure/<your deployment name>', messages) |
| gpt-4-0613 | completion('azure/<your deployment name>', messages) |
| gpt-4-32k | completion('azure/<your deployment name>', messages) |
| gpt-4-32k-0314 | completion('azure/<your deployment name>', messages) |
| gpt-4-32k-0613 | completion('azure/<your deployment name>', messages) |
| gpt-4-1106-preview | completion('azure/<your deployment name>', messages) |
| gpt-4-0125-preview | completion('azure/<your deployment name>', messages) |
| gpt-3.5-turbo | completion('azure/<your deployment name>', messages) |
| gpt-3.5-turbo-0301 | completion('azure/<your deployment name>', messages) |
| gpt-3.5-turbo-0613 | completion('azure/<your deployment name>', messages) |
| gpt-3.5-turbo-16k | completion('azure/<your deployment name>', messages) |
| gpt-3.5-turbo-16k-0613 | completion('azure/<your deployment name>', messages) |
Azure OpenAI Vision Models
| Model Name | Function Call |
|---|---|
| gpt-4-vision | completion(model="azure/<your deployment name>", messages=messages) |
| gpt-4o | completion('azure/<your deployment name>', messages) |
Usage
from litellm import completion
os.environ["AZURE_API_KEY"] = "your-api-key"
# azure call
response = completion(
model = "azure/<your deployment name>",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "What’s in this image?"
},
{
"type": "image_url",
"image_url": {
"url": "https://awsmp-logos.s3.amazonaws.com/seller-xw5kijmvmzasy/c233c9ade2ccb5491072ae232c814942.png"
}
}
]
}
],
)
Usage - with Azure Vision enhancements
Note: Azure requires the base_url to be set with /extensions
Example
base_url=https://gpt-4-vision-resource.openai.azure.com/openai/deployments/gpt-4-vision/extensions
# base_url="{azure_endpoint}/openai/deployments/{azure_deployment}/extensions"
Usage
from litellm import completion
os.environ["AZURE_API_KEY"] = "your-api-key"
# azure call
response = completion(
model="azure/gpt-4-vision",
timeout=5,
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Whats in this image?"},
{
"type": "image_url",
"image_url": {
"url": "https://avatars.githubusercontent.com/u/29436595?v=4"
},
},
],
}
],
base_url="https://gpt-4-vision-resource.openai.azure.com/openai/deployments/gpt-4-vision/extensions",
api_key=os.getenv("AZURE_VISION_API_KEY"),
enhancements={"ocr": {"enabled": True}, "grounding": {"enabled": True}},
dataSources=[
{
"type": "AzureComputerVision",
"parameters": {
"endpoint": "https://gpt-4-vision-enhancement.cognitiveservices.azure.com/",
"key": os.environ["AZURE_VISION_ENHANCE_KEY"],
},
}
],
)
O-Series Models
Azure OpenAI O-Series models are supported on LiteLLM.
LiteLLM routes any deployment name with o1 or o3 in the model name, to the O-Series transformation logic.
To set this explicitly, set model to azure/o_series/<your-deployment-name>.
Automatic Routing
litellm.completion(model="azure/my-o3-deployment", messages=[{"role": "user", "content": "Hello, world!"}]) # 👈 Note: 'o3' in the deployment name
model_list:
- model_name: o3-mini
litellm_params:
model: azure/o3-model
api_base: os.environ/AZURE_API_BASE
api_key: os.environ/AZURE_API_KEY
Explicit Routing
litellm.completion(model="azure/o_series/my-random-deployment-name", messages=[{"role": "user", "content": "Hello, world!"}]) # 👈 Note: 'o_series/' in the deployment name
model_list:
- model_name: o3-mini
litellm_params:
model: azure/o_series/my-random-deployment-name
api_base: os.environ/AZURE_API_BASE
api_key: os.environ/AZURE_API_KEY
GPT-5 Models
| Property | Details |
|---|---|
| Description | Azure OpenAI GPT-5 models |
| Provider Route on LiteLLM | azure/gpt5_series/<custom-name> or azure/gpt-5-deployment-name |
LiteLLM supports using Azure GPT-5 models in one of the two ways:
- Explicit Routing:
model = azure/gpt5_series/<deployment-name>. In this scenario the model onboarded to litellm follows the formatmodel=azure/gpt5_series/<deployment-name>. - Inferred Routing (If the azure deployment name contains
gpt-5in the name):model = azure/gpt-5-mini. In this scenario the model onboarded to litellm follows the formatmodel=azure/gpt-5-mini.
Explicit Routing
Use azure/gpt5_series/<deployment-name> for explicit GPT-5 model routing.
response = litellm.completion(
model="azure/gpt5_series/my-gpt-5-deployment",
messages=[{"role": "user", "content": "Hello, world!"}]
)
model_list:
- model_name: gpt-5
litellm_params:
model: azure/gpt5_series/my-gpt-5-deployment
api_base: os.environ/AZURE_API_BASE
api_key: os.environ/AZURE_API_KEY
Inferred Routing (gpt-5 in the deployment name)
If your Azure deployment name contains gpt-5, LiteLLM automatically recognizes it as a GPT-5 model.
# Deployment name contains 'gpt-5' - automatically inferred
response = litellm.completion(
model="azure/my-gpt-5-deployment",
messages=[{"role": "user", "content": "Hello, world!"}]
)
model_list:
- model_name: gpt-5-mini
litellm_params:
model: azure/my-gpt-5-deployment # deployment name contains 'gpt-5'
api_base: os.environ/AZURE_API_BASE
api_key: os.environ/AZURE_API_KEY
Azure Audio Model
from litellm import completion
os.environ["AZURE_API_KEY"] = ""
os.environ["AZURE_API_BASE"] = ""
os.environ["AZURE_API_VERSION"] = ""
response = completion(
model="azure/azure-openai-4o-audio",
messages=[
{
"role": "user",
"content": "I want to try out speech to speech"
}
],
modalities=["text","audio"],
audio={"voice": "alloy", "format": "wav"}
)
print(response)
- Setup config.yaml
model_list:
- model_name: azure-openai-4o-audio
litellm_params:
model: azure/azure-open