本页面介绍如何将 LangChain 与 Azure OpenAI.
Azure OpenAI API 与 OpenAI API 兼容。 openai Python 包让您可以轻松使用 OpenAI 和 Azure OpenAI。您可以通过与调用 OpenAI 相同的方式调用 Azure OpenAI,例外情况如下所述。
API 配置
您可以使用环境变量配置 openai 包以使用 Azure OpenAI。 以下是适用于 bash:
# The API version you want to use: set this to `2023-12-01-preview` for the released version.
# The base URL for your Azure OpenAI resource. You can find this in the Azure portal under your Azure OpenAI resource.
# The API key for your Azure OpenAI resource. You can find this in the Azure portal under your Azure OpenAI resource.
或者,您可以直接在运行中的 Python 环境中配置 API:
os.environ["OPENAI_API_VERSION"] = "2023-12-01-preview"
Azure Active Directory 身份验证
您可以通过两种方式向 Azure OpenAI 进行身份验证:
- - API 密钥
- - Azure Active Directory (AAD)
使用 API 密钥是最简单的入门方式。您可以在 Azure 门户中 Azure OpenAI 资源下找到 API 密钥。
但是,如果您有复杂的安全要求,您可能需要使用 Azure Active Directory。您可以在以下位置找到有关如何将 AAD 与 Azure OpenAI 配合使用的更多信息 托管标识文档.
如果在本地开发,需要安装并登录 Azure CLI。您可以从以下位置安装 Azure CLI Azure CLI 安装指南。然后,运行 az login 登录。
添加 Azure 角色分配 Cognitive Services OpenAI User 作用域为您的 Azure OpenAI 资源。这将允许您获取 AAD 令牌以与 Azure OpenAI 配合使用。您可以将此角色分配授予用户、组、服务主体或托管标识。有关 Azure OpenAI RBAC 角色的更多信息,请参阅 基于角色的访问控制文档.
要在 Python 中将 AAD 与 LangChain 配合使用,请安装 azure-identity 包。然后,设置 OPENAI_API_TYPE to azure_ad。接下来,使用 DefaultAzureCredential 类通过调用 get_token 获取 AAD 令牌,如下所示。最后,将 OPENAI_API_KEY 环境变量设置为令牌值。
from azure.identity import DefaultAzureCredential
# Get the Azure Credential
credential = DefaultAzureCredential()
# Set the API type to `azure_ad`
os.environ["OPENAI_API_TYPE"] = "azure_ad"
# Set the API_KEY to the token from the Azure credential
os.environ["OPENAI_API_KEY"] = credential.get_token("https://cognitiveservices.azure.com/.default").token
DefaultAzureCredential 类是一种简单的 AAD 身份验证入门方式。您还可以根据需要自定义凭据链。在下面显示的示例中,我们首先尝试托管标识,然后回退到 Azure CLI。如果您正在 Azure 中运行代码,但希望在本地开发,这将非常有用。
from azure.identity import ChainedTokenCredential, ManagedIdentityCredential, AzureCliCredential
credential = ChainedTokenCredential(
ManagedIdentityCredential(),
AzureCliCredential()
)
部署
使用 Azure OpenAI,您可以设置自己的常见 GPT-3 和 Codex 模型部署。调用 API 时,需要指定要使用的部署。
_**注意**:这些文档适用于 Azure 文本补全模型。像 GPT-4 这样的模型是聊天模型。它们具有略有不同的接口,可以通过 AzureChatOpenAI 类访问。要查看 Azure 聊天的文档,请参阅 Azure Chat OpenAI 文档._
假设你的部署名称是 gpt-35-turbo-instruct-prod。在 openai Python API 中,你可以使用 engine 参数来指定此部署。例如:
client = openai.AzureOpenAI(
api_version="2023-12-01-preview",
)
response = client.completions.create(
model="gpt-35-turbo-instruct-prod",
prompt="Test prompt"
)
pip install -qU langchain-openai
os.environ["OPENAI_API_VERSION"] = "2023-12-01-preview"
os.environ["AZURE_OPENAI_ENDPOINT"] = "..."
os.environ["AZURE_OPENAI_API_KEY"] = "..."
# Import Azure OpenAI
from langchain_openai import AzureOpenAI
# Create an instance of Azure OpenAI
# Replace the deployment name with your own
llm = AzureOpenAI(
deployment_name="gpt-35-turbo-instruct-0914",
)
# Run the LLM
llm.invoke("Tell me a joke")
" Why couldn't the bicycle stand up by itself?\n\nBecause it was two-tired!"
我们也可以打印 LLM 并查看其自定义打印。
print(llm)
AzureOpenAI
Params: {'deployment_name': 'gpt-35-turbo-instruct-0914', 'model_name': 'gpt-3.5-turbo-instruct', 'temperature': 0.7, 'top_p': 1, 'frequency_penalty': 0, 'presence_penalty': 0, 'n': 1, 'logit_bias': {}, 'max_tokens': 256}