Skip to main content
您可以在 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 部分以了解如何使用 ChatOpenAI 与 Azure 的 v1 API 结合使用。AzureChatOpenAI 当前仍然支持传统的 Azure OpenAI API 版本和需要特定于 Azure 配置的场景,但我们建议在 LangChain Azure AI 中使用 ChatOpenAIAzureAIOpenAIApiChatModel
AzureChatOpenAIChatOpenAI 共享相同的底层基础实现, 这个接口直接与 OpenAI 服务进行交互。本页面提供了一个快速入门指南,用于对您的 Azure OpenAI 服务进行身份验证并将其连接到 LangChain 聊天模型。您可以访问 ChatOpenAI 文档以了解可用功能的详细信息,或者前往 AzureChatOpenAI API 参考。
API 参考有关所有功能和配置选项的详细文档,请访问 AzureChatOpenAI API 参考。

概览

集成细节

序列化JS/TS 支持下载量最新版本
AzureChatOpenAIlangchain-openaibeta(npm)每月下载量PyPI - 最新版本

模型功能

工具调用结构化输出图像输入音频输入视频输入标记级别流式传输原生异步标记使用情况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(
        "请输入您的 AzureOpenAI API 密钥: "
    )
os.environ["AZURE_OPENAI_ENDPOINT"] = "https://YOUR-ENDPOINT.openai.azure.com/"
要启用对模型调用的自动跟踪,请设置 LangSmith API 密钥:
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("请输入您的 LangSmith API 密钥: ")
os.environ["LANGSMITH_TRACING"] = "true"

实例化

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

llm = AzureChatOpenAI(
    azure_deployment="gpt-35-turbo",  # 或您的部署名称
    api_version="2023-06-01-preview",  # 或您的 API 版本
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
    # 其他参数...
)

调用

messages = [
    (
        "system",
        "您是一个将英语翻译成法语的帮助助手。请翻译用户的句子。",
    ),
    ("human", "我热爱编程。"),
]
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 的 Chat Completions API 默认不流式传输标记使用统计数据(请参阅 OpenAI API 参考中的流选项)。 要在使用 ChatOpenAIAzureChatOpenAI 进行流式传输时恢复标记计数,请将 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。这使得很难知道生成响应使用的是哪个模型版本,结果可能导致例如错误的成本计算。 为了解决这个问题,您可以向 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"总成本(美元): ${format(cb.total_cost, '.6f')}"
    )  # 如果未指定模型版本,则使用每 1 千个输入和输出标记的固定费率 0.002 美元
总成本(美元): $0.000063
llm_0301 = AzureChatOpenAI(
    azure_deployment="gpt-35-turbo",  # 或您的部署名称
    api_version="2023-06-01-preview",  # 或您的 API 版本
    model_version="0301",
)
with get_openai_callback() as cb:
    llm_0301.invoke(messages)
    print(f"总成本(美元): ${format(cb.total_cost, '.6f')}")
总成本(美元): $0.000074

API 参考

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