本指南提供了在 Azure 上开始使用 OpenAI 聊天模型 的快速概述。 您可以在 Azure 文档 中找到有关 Azure OpenAI 最新模型、成本、上下文窗口和支持的输入类型的信息。
Azure OpenAI vs 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 特定配置的场景,但我们建议将来使用 LangChain Azure AI 中的 ChatOpenAIAzureAIChatCompletionsModel
AzureChatOpenAIChatOpenAI 共享相同的基础实现, 后者直接与 OpenAI 服务接口。此页面用作将 Azure OpenAI 服务身份验证和连接到 LangChain 聊天模型的快速入门。有关可用功能的详细信息,请访问 ChatOpenAI 文档, 或前往 AzureChatOpenAI API 参考。

概述

集成详情

ClassPackageSerializableJS/TS SupportDownloadsLatest Version
AzureChatOpenAIlangchain-openaibeta(npm)Downloads per monthPyPI - Latest version

模型功能

Tool callingStructured outputJSON modeImage inputAudio inputVideo inputToken-level streamingNative asyncToken usageLogprobs

设置

要访问 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.

指定模型版本

Azure OpenAI 响应包含 model_name 响应元数据属性,这是用于生成响应的模型名称。但是,与原生 OpenAI 响应不同,它不包含模型的具体版本,该版本在 Azure 的部署中设置。例如,它不区分 gpt-35-turbo-0125gpt-35-turbo-0301。这使得很难知道使用哪个版本的模型来生成响应,这可能导致例如使用 OpenAICallbackHandler 计算总成本时出错。 为了解决这个问题,您可以将 model_version 参数传递给 AzureChatOpenAI 类,该参数将添加到 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 参考。
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.