Skip to main content
您可以在 Azure 文档中找到有关 Azure OpenAI 最新模型及其成本、上下文窗口和支持输入类型的信息。
Azure OpenAI 与 OpenAIAzure OpenAI 是指托管在 Microsoft Azure 平台上的 OpenAI 模型。OpenAI 也提供其自己的模型 API。要直接访问 OpenAI 服务,请使用 ChatOpenAI 集成
Azure OpenAI v1 APIAzure OpenAI 的 v1 API(2025 年 8 月正式发布)允许您直接将 ChatOpenAI 与 Azure 端点配合使用。这提供了统一的接口和对 Microsoft Entra ID 身份验证的原生支持,并可自动刷新令牌。有关将 ChatOpenAI 与 Azure v1 API 配合使用的详情,请参阅 ChatOpenAI Azure 部分AzureChatOpenAI 目前仍支持传统 Azure OpenAI API 版本和需要 Azure 特定配置的场景,但我们建议今后使用 ChatOpenAILangChain Azure AI 中的 AzureAIChatCompletionsModel
AzureChatOpenAIChatOpenAI 共享相同的底层基础实现,后者直接与 OpenAI 服务交互。本页面作为验证身份并将 Azure OpenAI 服务连接到 LangChain 聊天模型的快速入门指南。访问 ChatOpenAI 文档了解可用功能的详情,或前往 AzureChatOpenAI API 参考。
API 参考有关所有功能和配置选项的详细文档,请访问 AzureChatOpenAI API 参考。

概述

集成详情

可序列化JS/TS 支持下载量最新版本
AzureChatOpenAIlangchain-openaibeta(npm)Downloads per monthPyPI - Latest version

模型功能

工具调用结构化输出图像输入音频输入视频输入Token 级流式传输原生异步Token 用量Logprobs

设置

要访问 AzureChatOpenAI 模型,您需要创建 Azure 账户、创建 Azure OpenAI 模型的部署、获取部署的名称和端点、获取 Azure OpenAI API 密钥,并安装 langchain-openai 集成包。

安装

pip install -U langchain-openai

凭据

请访问 Azure 文档创建您的部署并生成 API 密钥。完成后,设置 AZURE_OPENAI_API_KEYAZURE_OPENAI_ENDPOINT 环境变量:
import getpass
import os

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-ENDPOINT.openai.azure.com/"
要启用模型调用的自动追踪,请设置您的 LangSmith API 密钥:
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
os.environ["LANGSMITH_TRACING"] = "true"

实例化

现在我们可以实例化模型对象并生成聊天补全。
from langchain_openai import AzureChatOpenAI

llm = AzureChatOpenAI(
    azure_deployment="gpt-35-turbo",  # or your deployment
    api_version="2023-06-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)
ai_msg
AIMessage(content="J'adore la programmation.", response_metadata={'token_usage': {'completion_tokens': 8, 'prompt_tokens': 31, 'total_tokens': 39}, 'model_name': 'gpt-35-turbo', 'system_fingerprint': None, 'prompt_filter_results': [{'prompt_index': 0, 'content_filter_results': {'hate': {'filtered': False, 'severity': 'safe'}, 'self_harm': {'filtered': False, 'severity': 'safe'}, 'sexual': {'filtered': False, 'severity': 'safe'}, 'violence': {'filtered': False, 'severity': 'safe'}}}], 'finish_reason': 'stop', 'logprobs': None, 'content_filter_results': {'hate': {'filtered': False, 'severity': 'safe'}, 'self_harm': {'filtered': False, 'severity': 'safe'}, 'sexual': {'filtered': False, 'severity': 'safe'}, 'violence': {'filtered': False, 'severity': 'safe'}}}, id='run-bea4b46c-e3e1-4495-9d3a-698370ad963d-0', usage_metadata={'input_tokens': 31, 'output_tokens': 8, 'total_tokens': 39})
print(ai_msg.content)
J'adore la programmation.

流式传输用量元数据

OpenAI 的聊天补全 API 默认不流式传输 Token 用量统计信息(请参阅此处的 API 参考)。 要在使用 ChatOpenAIAzureChatOpenAI 流式传输时获取 Token 计数,请将 stream_usage=True 设置为初始化参数或调用时参数:
from langchain_openai import AzureChatOpenAI

llm = AzureChatOpenAI(model="gpt-4.1-mini", stream_usage=True)

指定模型版本

Azure OpenAI 响应包含 model_name 响应元数据属性,即用于生成响应的模型名称。但与原生 OpenAI 响应不同,它不包含在 Azure 部署中设置的模型具体版本,例如无法区分 gpt-35-turbo-0125gpt-35-turbo-0301。这使得难以知道使用哪个版本的模型生成了响应,从而可能导致例如使用 OpenAICallbackHandler 计算总成本时出现错误。 为解决此问题,您可以向 AzureChatOpenAI 类传递 model_version 参数,该参数将添加到 LLM 输出的模型名称中。这样您就可以轻松区分不同版本的模型。
pip install -qU langchain-community
from langchain_community.callbacks import get_openai_callback

with get_openai_callback() as cb:
    llm.invoke(messages)
    print(
        f"Total Cost (USD): ${format(cb.total_cost, '.6f')}"
    )  # without specifying the model version, flat-rate 0.002 USD per 1k input and output tokens is used
Total Cost (USD): $0.000063
llm_0301 = AzureChatOpenAI(
    azure_deployment="gpt-35-turbo",  # or your deployment
    api_version="2023-06-01-preview",  # or your api version
    model_version="0301",
)
with get_openai_callback() as cb:
    llm_0301.invoke(messages)
    print(f"Total Cost (USD): ${format(cb.total_cost, '.6f')}")
Total Cost (USD): $0.000074

API 参考

有关所有功能和配置选项的详细文档,请访问 AzureChatOpenAI API 参考。