Azure OpenAI 和 OpenAI 相同,实质都是调用 api,Azure OpenAI 的运用会略微复杂一点,但好处便是便利付费。
创立 Azure OpenAI 资源
首要,先登录 Azure 账号:azure.microsoft.com/zh-cn/
接着创立 OpenAI 资源:
- 如果没有资源组的话能够新建一个,记录在自己名下
- 留意这儿的称号,它会成为调用 api 地址的域名之一,比方我这儿是“kaipeng-openai”,最终我得到的 Azure OpenAI 的调用 api 地址是:
https://kaipeng-openai.openai.azure.com/
接下来都是直接点击“下一页”直至创立成功。
记录调用 api 和秘钥
接着进入到秘钥和 End Point(End Point 其实便是调用的 api 地址,中文翻译成“终结点”有点烂)
两个密钥都是相同的,供给两个主要是让你在切换密钥的时间段里面让别的一个密钥顶上去,也便是备胎密钥。Azure OpenAI 建议定期替换密钥。
布置Azure OpenAI 资源
转到 Azure OpenAI Studio
接着新建自己的布置,这一步其实是创立自己的 OpenAI 模型,由于 OpenAI 的模型有多种,比方 gpt-35-turbo、text-davinci-003、text-embedding-ada-002 等,Azure OpenAI AI 需要指定你运用的哪种模型。
留意这儿的布置名,后续在调用 api 的时候会用的,比方我这儿是 gpt-35-turbo,那么到时候我调用的完整的 api 地址便是:
https://kaipeng-openai.openai.azure.com/openai/deployments/gpt-35-turbo/chat/completions
当然,布置名是恣意的,可是我这儿建议布置名和模型名一致,便利分辩。
调用方法
有了密钥和 api 地址,就能够调用 Azure OpenAI 了。Azure OpenAI 的调用有几个参数,要关注一下:
-
api-version
:API 的版别,现在仅支撑三个version
,分别是2023-03-15-preview
,2022-12-01
,2023-05-15
,详情见 learn.microsoft.com/en-us/azure… 的 Supported versions 一节 -
azure-openai-key
:也便是上面提到的密钥 -
endpoint
:上面提到的 End Point 终结点
调用方法有几种:
Curl
参考:learn.microsoft.com/en-us/azure…
curl $AZURE_OPENAI_ENDPOINT/openai/deployments/gpt-35-turbo/chat/completions?api-version=2023-05-15 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_KEY" \
-d '{"messages":[{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},{"role": "user", "content": "Do other Azure Cognitive Services support this too?"}]}'
LangChain
LangChain 是一个封装 LLM 调用的库,在最新版中(>= 0.0.81)它支撑了对 Azure OpenAI 的调用。
import { OpenAIChat } from "langchain/llms/openai";
import './utils/dotenv.js'
const model = new OpenAIChat({
temperature: 0.9,
azureOpenAIApiKey: process.env.AZURE_OPENAI_API_KEY,
azureOpenAIApiInstanceName: process.env.AZURE_OPENAI_API_INSTANCE_NAME,
azureOpenAIApiDeploymentName: process.env.AZURE_OPENAI_API_DEPLOYMENT_NAME,
azureOpenAIApiVersion: process.env.AZURE_OPENAI_API_VERSION,
});
const res = await model.call(
"What would be a good company name a company that makes colorful socks?"
);
console.log({ res });
几个参数分别阐明一下:
-
azureOpenAIApiKey
:密钥 -
azureOpenAIApiInstanceName
:实例称号,也便是一开始创立 Azure OpenAI 资源的时候填写的称号,如下图,也便是“kaipeng-openai” -
azureOpenAIApiDeploymentName
:布置名 -
azureOpenAIApiVersion
:版别
这几个参数也能够直接注入到 Node 的环境变量中:
AZURE_OPENAI_API_KEY
AZURE_OPENAI_API_INSTANCE_NAME
AZURE_OPENAI_API_VERSION
AZURE_OPENAI_API_DEPLOYMENT_NAME
在 LangChain 源码中能够看到,如果找不到这些变量,会尝试从 process.env 去读取:
Azure OpenAI npm
Azure OpenAI 封装了一个直接调用的 npm 库:www.npmjs.com/package/@az…