要设置 Azure OpenAI 绑定组件,请创建一个类型为 bindings.azure.openai
的组件。请参阅本指南了解如何创建和应用绑定配置。
有关 Azure OpenAI 服务的文档,请参阅此处。
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: <NAME>
spec:
type: bindings.azure.openai
version: v1
metadata:
- name: apiKey # 必需
value: "1234567890abcdef"
- name: endpoint # 必需
value: "https://myopenai.openai.azure.com"
字段 | 必需 | 绑定支持 | 详情 | 示例 |
---|---|---|---|---|
endpoint | Y | 输出 | Azure OpenAI 服务端点的 URL。 | "https://myopenai.openai.azure.com" |
apiKey | Y* | 输出 | Azure OpenAI 服务的访问密钥。仅在不使用 Microsoft Entra ID 认证时需要。 | "1234567890abcdef" |
azureTenantId | Y* | 输入 | Azure OpenAI 资源的租户 ID。仅在未提供 apiKey 时需要。 | "tenentID" |
azureClientId | Y* | 输入 | 用于创建或更新 Azure OpenAI 订阅并认证传入消息的客户端 ID。仅在未提供 apiKey 时需要。 | "clientId" |
azureClientSecret | Y* | 输入 | 用于创建或更新 Azure OpenAI 订阅并认证传入消息的客户端密钥。仅在未提供 apiKey 时需要。 | "clientSecret" |
Azure OpenAI 绑定组件支持使用所有 Microsoft Entra ID 机制进行认证。有关更多信息以及根据选择的 Microsoft Entra ID 认证机制提供的相关组件元数据字段,请参阅认证到 Azure 的文档。
apiVersion: dapr.io/v1alpha1
kind: component
metadata:
name: <NAME>
spec:
type: bindings.azure.openai
version: v1
metadata:
- name: endpoint
value: "https://myopenai.openai.azure.com"
- name: azureTenantId
value: "***"
- name: azureClientId
value: "***"
- name: azureClientSecret
value: "***"
此组件支持以下操作的输出绑定:
completion
: Completion APIchat-completion
: Chat Completion APIget-embedding
: Embedding API要使用提示调用 Completion API,请使用 POST
方法调用 Azure OpenAI 绑定,并使用以下 JSON 正文:
{
"operation": "completion",
"data": {
"deploymentId": "my-model",
"prompt": "A dog is",
"maxTokens":5
}
}
数据参数为:
deploymentId
- 指定要使用的模型部署 ID 的字符串。prompt
- 指定要生成完成的提示的字符串。maxTokens
- (可选)定义要生成的最大令牌数。Completion API 默认为 16。temperature
- (可选)定义采样温度,范围为 0 到 2。较高的值如 0.8 使输出更随机,而较低的值如 0.2 使其更集中和确定。Completion API 默认为 1.0。topP
- (可选)定义采样温度。Completion API 默认为 1.0。n
- (可选)定义要生成的完成数。Completion API 默认为 1。presencePenalty
- (可选)介于 -2.0 和 2.0 之间的数字。正值根据它们是否出现在文本中对新令牌进行惩罚,从而增加模型谈论新主题的可能性。Completion API 默认为 0.0。frequencyPenalty
- (可选)介于 -2.0 和 2.0 之间的数字。正值根据它们在文本中的现有频率对新令牌进行惩罚,从而减少模型逐字重复同一行的可能性。Completion API 默认为 0.0。在 Azure OpenAI API 文档中阅读更多关于这些参数的重要性和用法。
curl -d '{ "data": {"deploymentId: "my-model" , "prompt": "A dog is ", "maxTokens":15}, "operation": "completion" }' \
http://localhost:<dapr-port>/v1.0/bindings/<binding-name>
响应正文包含以下 JSON:
[
{
"finish_reason": "length",
"index": 0,
"text": " a pig in a dress.\n\nSun, Oct 20, 2013"
},
{
"finish_reason": "length",
"index": 1,
"text": " the only thing on earth that loves you\n\nmore than he loves himself.\"\n\n"
}
]
要执行 chat-completion 操作,请使用 POST
方法调用 Azure OpenAI 绑定,并使用以下 JSON 正文:
{
"operation": "chat-completion",
"data": {
"deploymentId": "my-model",
"messages": [
{
"role": "system",
"message": "You are a bot that gives really short replies"
},
{
"role": "user",
"message": "Tell me a joke"
}
],
"n": 2,
"maxTokens": 30,
"temperature": 1.2
}
}
数据参数为:
deploymentId
- 指定要使用的模型部署 ID 的字符串。messages
- 将用于生成聊天完成的消息数组。
每条消息的格式为:role
- 指定消息角色的字符串。可以是 user
、system
或 assistant
。message
- 指定角色的对话消息的字符串。maxTokens
- (可选)定义要生成的最大令牌数。Chat Completion API 默认为 16。temperature
- (可选)定义采样温度,范围为 0 到 2。较高的值如 0.8 使输出更随机,而较低的值如 0.2 使其更集中和确定。Chat Completion API 默认为 1.0。topP
- (可选)定义采样温度。Chat Completion API 默认为 1.0。n
- (可选)定义要生成的完成数。Chat Completion API 默认为 1。presencePenalty
- (可选)介于 -2.0 和 2.0 之间的数字。正值根据它们是否出现在文本中对新令牌进行惩罚,从而增加模型谈论新主题的可能性。Chat Completion API 默认为 0.0。frequencyPenalty
- (可选)介于 -2.0 和 2.0 之间的数字。正值根据它们在文本中的现有频率对新令牌进行惩罚,从而减少模型逐字重复同一行的可能性。Chat Completion API 默认为 0.0。curl -d '{
"data": {
"deploymentId": "my-model",
"messages": [
{
"role": "system",
"message": "You are a bot that gives really short replies"
},
{
"role": "user",
"message": "Tell me a joke"
}
],
"n": 2,
"maxTokens": 30,
"temperature": 1.2
},
"operation": "chat-completion"
}' \
http://localhost:<dapr-port>/v1.0/bindings/<binding-name>
响应正文包含以下 JSON:
[
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "Why was the math book sad? Because it had too many problems.",
"role": "assistant"
}
},
{
"finish_reason": "stop",
"index": 1,
"message": {
"content": "Why did the tomato turn red? Because it saw the salad dressing!",
"role": "assistant"
}
}
]
get-embedding
操作返回给定输入的向量表示,可以被机器学习模型和其他算法轻松使用。
要执行 get-embedding
操作,请使用 POST
方法调用 Azure OpenAI 绑定,并使用以下 JSON 正文:
{
"operation": "get-embedding",
"data": {
"deploymentId": "my-model",
"message": "The capital of France is Paris."
}
}
数据参数为:
deploymentId
- 指定要使用的模型部署 ID 的字符串。message
- 指定要嵌入的文本的字符串。curl -d '{
"data": {
"deploymentId": "embeddings",
"message": "The capital of France is Paris."
},
"operation": "get-embedding"
}' \
http://localhost:<dapr-port>/v1.0/bindings/<binding-name>
响应正文包含以下 JSON:
[0.018574921,-0.00023652936,-0.0057790717,.... (1536 floats total for ada)]
观看以下社区电话演示以了解更多关于 Azure OpenAI 输出绑定的信息。