Azure OpenAI 绑定组件规范

关于 Azure OpenAI 绑定组件的详细文档

组件格式

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

Microsoft Entra ID 认证

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 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 API

要执行 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 - 指定消息角色的字符串。可以是 usersystemassistant
    • 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"
    }
  }
]

获取嵌入 API

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 输出绑定的信息

观看以下社区电话演示以了解更多关于 Azure OpenAI 输出绑定的信息。

相关链接