您可以在 Azure 文档中找到有关 Azure OpenAI 最新模型及其成本、上下文窗口和支持的输入类型的信息 Azure 文档。有关 LangChain 中的完整 Microsoft 集成集合(包括 Azure AI Search、Azure Database for PostgreSQL 和 M365 套件等工具),请参阅 Microsoft 提供商页面.
概述
集成详情
| Class | Package | Serializable | JS/TS Support | Downloads | Latest Version |
|---|---|---|---|---|---|
AzureChatOpenAI | langchain-openai | beta | ✅ (npm) | <a href="https://pypi.org/project/langchain-openai/" target="_blank"><img src="https://static.pepy.tech/badge/langchain-openai/month" alt="Downloads per month" noZoom height="100" class="rounded" /></a> | <a href="https://pypi.org/project/langchain-openai/" target="_blank"><img src="https://img.shields.io/pypi/v/langchain-openai?style=flat-square&label=%20&color=orange" alt="PyPI - Latest version" noZoom height="100" class="rounded" /></a> |
模型功能
| 工具调用 | 结构化输出 | 图像输入 | 音频输入 | 视频输入 | 令牌级流式输出 | 原生异步 | 令牌使用量 | 对数概率 |
|---|---|---|---|---|---|---|---|---|
| ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |
设置
要访问 Azure OpenAI 模型,您需要 创建一个 Azure 账户,创建 Azure OpenAI 模型的部署,获取部署的名称和端点,并安装 langchain-openai 集成包。
安装
pip install -U langchain-openai
uv add langchain-openai
凭据
ChatOpenAI 和 AzureChatOpenAI 都支持使用 **Microsoft Entra ID** (推荐)或 **API 密钥**.
Microsoft Entra ID
Microsoft Entra ID 提供无密钥身份验证和自动令牌刷新。安装 azure-identity 包并创建令牌提供程序——同一提供程序同时适用于 ChatOpenAI 和 AzureChatOpenAI:
pip install azure-identity
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
token_provider = get_bearer_token_provider(
DefaultAzureCredential(),
"https://cognitiveservices.azure.com/.default",
)
API 密钥
前往 Azure 文档 创建您的部署并生成 API 密钥。设置 AZURE_OPENAI_API_KEY 和 AZURE_OPENAI_ENDPOINT 环境变量:
if "AZURE_OPENAI_API_KEY" not in os.environ:
os.environ["AZURE_OPENAI_API_KEY"] = getpass.getpass(
"Enter your AzureOpenAI API key: "
)
os.environ["AZURE_OPENAI_ENDPOINT"] = "https://YOUR-RESOURCE-NAME.openai.azure.com/"
要启用模型调用的自动跟踪,请设置您的 LangSmith API 密钥:
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
os.environ["LANGSMITH_TRACING"] = "true"
实例化
使用 v1 API 的 ChatOpenAI
将 base_url 设置为您的 Azure 端点,后跟 /openai/v1/ 。使用 v1 API,您可以调用部署在 Microsoft Foundry 中的任何模型(包括 OpenAI、Llama、DeepSeek、Mistral 和 Phi),通过单一接口指向 model 您的部署名称。
Entra ID (recommended)
将令牌提供程序传递给 api_key:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-5.4-mini", # your Azure deployment name
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider, # callable that handles token refresh
)
API key
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-5.4-mini", # your Azure deployment name
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key="your-azure-api-key",
)
AzureChatOpenAI
使用 AzureChatOpenAI 处理需要传统 Azure OpenAI API 版本的情况 api_version.
Entra ID (recommended)
传递令牌提供程序到 azure_ad_token_provider:
from langchain_openai import AzureChatOpenAI
llm = AzureChatOpenAI(
azure_deployment="gpt-5.4-mini", # or your deployment
api_version="2025-04-01-preview", # or your api version
azure_ad_token_provider=token_provider,
)
API key
读取 AZURE_OPENAI_API_KEY 和 AZURE_OPENAI_ENDPOINT 从环境变量:
from langchain_openai import AzureChatOpenAI
llm = AzureChatOpenAI(
azure_deployment="gpt-5.4-mini", # or your deployment
api_version="2025-04-01-preview", # or your api version
temperature=0,
max_tokens=None,
timeout=None,
max_retries=2,
# other params...
)
调用
messages = [
(
"system",
"You are a helpful assistant that translates English to French. Translate the user sentence.",
),
("human", "I love programming."),
]
ai_msg = llm.invoke(messages)
print(ai_msg.text)
J'adore la programmation.
工具调用
使用 Pydantic 类、字典模式、LangChain 工具或函数将工具绑定到模型:
from langchain_openai import ChatOpenAI
from pydantic import BaseModel, Field
class GetWeather(BaseModel):
"""Get the current weather in a given location"""
location: str = Field(description="The city and state, e.g. San Francisco, CA")
llm = ChatOpenAI(
model="gpt-5.4-mini",
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key="your-azure-api-key",
)
llm_with_tools = llm.bind_tools([GetWeather])
ai_msg = llm_with_tools.invoke("What is the weather like in San Francisco?")
ai_msg.tool_calls
[{'name': 'GetWeather',
'args': {'location': 'San Francisco, CA'},
'id': 'call_jUqhd8wzAIzInTJl72Rla8ht',
'type': 'tool_call'}]
有关绑定工具和工具调用输出的更多信息,请参阅 工具调用 docs.
构建代理
使用 create_agent 使用 Azure OpenAI 和工具构建代理:
from langchain.agents import create_agent
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-5.4-mini",
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key="your-azure-api-key",
)
def get_weather(city: str) -> str:
"""Get weather for a given city."""
return f"It's always sunny in {city}!"
agent = create_agent(
model=llm,
tools=[get_weather],
system_prompt="You are a helpful assistant",
)
# Stream agent responses
stream = agent.stream_events(
{"messages": [{"role": "user", "content": "What is the weather in SF?"}]},
version="v3",
)
for snapshot in stream.values:
print(snapshot["messages"][-1].text)
流式使用元数据
OpenAI 的 Chat Completions API 默认不流式传输令牌使用统计(请参阅 OpenAI API 参考中的流式传输选项).
要在流式传输时恢复令牌计数,请设置 stream_usage=True 作为初始化参数或在调用时:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-5.4-mini",
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key="your-azure-api-key",
stream_usage=True, # [!code highlight]
)
Responses API
Azure OpenAI 支持 Responses API,它提供有状态对话、内置服务器端工具(代码解释器、图像生成、文件搜索和远程 MCP)以及结构化推理摘要。ChatOpenAI 在您设置 reasoning 参数时会自动路由到 Responses API,或者您可以显式选择加入 use_responses_api=True:
Entra ID (recommended)
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-5.4-mini", # your Azure deployment name
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider,
use_responses_api=True, # [!code highlight]
)
# Bind a built-in server-side tool
llm_with_tools = llm.bind_tools( # [!code highlight]
[{"type": "code_interpreter", "container": {"type": "auto"}}] # [!code highlight]
) # [!code highlight]
response = llm_with_tools.invoke(
"Use the code interpreter to compute the 25th Fibonacci number."
)
print(response.text)
API key
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-5.4-mini", # your Azure deployment name
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key="your-azure-api-key",
use_responses_api=True, # [!code highlight]
)
# Bind a built-in server-side tool
llm_with_tools = llm.bind_tools( # [!code highlight]
[{"type": "code_interpreter", "container": {"type": "auto"}}] # [!code highlight]
) # [!code highlight]
response = llm_with_tools.invoke(
"Use the code interpreter to compute the 25th Fibonacci number."
)
print(response.text)
有关内置工具及其用法的详细信息,请参阅 Azure OpenAI Responses API 文档.
推理工作负载和摘要
Azure OpenAI 推理模型 (例如, o4-mini, gpt-5)在生成最终答案之前会花费额外的 token 来思考请求。通过 ChatOpenAI ,在 v1 API 上,你可以配置模型在推理上花费多少精力,并可选择请求其思维链的摘要。
推理力度
设置 reasoning_effort to "low", "medium", or "high"。更高的设置会让模型在推理上花费更多 token,这通常会以延迟为代价提高复杂任务的质量:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-5.4-mini", # your Azure reasoning model deployment
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider,
reasoning_effort="medium",
)
response = llm.invoke("Tell me about the bitter lesson.")
print(response.text)
推理摘要
通过 Responses API 使用推理模型时,你可以通过传递一个 reasoning 字典来请求模型思维链的摘要。设置 reasoning 会自动路由 ChatOpenAI 到 Responses API:
from langchain_openai import ChatOpenAI
reasoning = {
"effort": "high", # 'low', 'medium', or 'high'
"summary": "auto", # 'auto', 'concise', or 'detailed'
}
llm = ChatOpenAI(
model="gpt-5.4-mini", # your Azure reasoning model deployment
base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",
api_key=token_provider,
reasoning=reasoning,
)
response = llm.invoke("What's the optimal strategy to win at poker?")
# Final answer
print(response.text)
# Reasoning summary blocks
for block in response.content_blocks:
if block["type"] == "reasoning":
print(block["reasoning"])
指定模型版本(传统 API)
使用 AzureChatOpenAI时,Azure OpenAI 响应包含一个 model_name 响应元数据属性。与原生 OpenAI 响应不同,它不包含模型的具体版本(版本在 Azure 上的部署中设置)。传递 model_version 来区分不同版本:
from langchain_openai import AzureChatOpenAI
llm = AzureChatOpenAI(
azure_deployment="gpt-5.4-mini", # or your deployment
api_version="2025-04-01-preview", # or your api version
model_version="0301",
)
API 参考
有关所有功能和配置选项的详细文档,请访问 AzureChatOpenAI API 参考。