使用 OpenAI 批处理 API 批量提交提示 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 OpenAI 批处理 API 批量提交提示

您可以将 OpenAI 创建批处理 API 与 Amazon Bedrock OpenAI 模型结合使用,来运行批量推理作业。

您可通过以下方式调用 OpenAI 创建批处理 API:

  • 通过 Amazon Bedrock 运行时端点发出 HTTP 请求。

  • 将 OpenAI SDK 请求和 Amazon Bedrock 运行时端点配合使用。

选择一个主题以了解更多信息:

支持 OpenAI 批处理 API 的模型和区域

您可以对 Amazon Bedrock 和支持这些OpenAI模型的 AWS 地区支持的所有型号使用OpenAI创建批处理 API。有关支持的模型和区域的更多信息,请参阅 Amazon Bedrock 中支持的根基模型

使用 OpenAI 批处理 API 的先决条件

要查看使用 OpenAI 批处理 API 操作的先决条件,请选择与您的首选方法对应的选项卡,然后按照以下步骤操作:

OpenAI SDK
  • 身份验证 – OpenAI SDK 仅支持使用 Amazon Bedrock API 密钥进行身份验证。生成 Amazon Bedrock API 密钥以对您的请求进行身份验证。要了解有关 Amazon Bedrock API 密钥以及如何生成密钥的信息,请参阅 “构建” 一章中的 API 密钥部分。

  • 终端节点 — 找到与要在 Amazon Bedrock 运行时终端节点和配额中使用的 AWS 区域相对应的终端节点。如果您使用 S AWS DK,则在设置客户端时可能只需要指定区域代码,而无需指定整个端点。

  • 模型访问权限 – 请求访问支持此功能的 Amazon Bedrock 模型。有关更多信息,请参阅使用 SDK 和 CLI 管理模型访问权限

  • 安装 OpenAI SDK – 有关更多信息,请参阅 OpenAI 文档中的

  • 上传到 S3 的批处理 JSONL 文件 – 按照 OpenAI 文档中准备批处理文件中的步骤,采用恰当的格式准备批处理文件。然后,将其上传到 Amazon S3 存储桶。

  • IAM 权限 – 确保您拥有具适当权限的以下 IAM 身份:

    • 通过身份验证的 IAM 身份,该身份可以执行与批量推理相关的 API 操作。有关更多信息,请参阅IAM 身份提交和管理批量推理作业所需的权限

    • 您使用的批量推理服务角色可以代入您的身份,调用您使用的 OpenAI 模型,以及访问 S3 中的批处理 JSONL 文件。有关更多信息,请参阅 服务角色

HTTP request
  • 身份验证 — 您可以使用您的 AWS 证书或 Amazon Bedrock API 密钥进行身份验证。

    设置您的 AWS 凭证或生成 Amazon Bedrock API 密钥来验证您的请求。

    • 要了解如何设置 AWS 证书,请参阅使用AWS 安全凭证进行编程访问

    • 要了解有关 Amazon Bedrock API 密钥以及如何生成密钥的信息,请参阅 “构建” 一章中的 API 密钥部分。

  • 终端节点 — 找到与要在 Amazon Bedrock 运行时终端节点和配额中使用的 AWS 区域相对应的终端节点。如果您使用 S AWS DK,则在设置客户端时可能只需要指定区域代码,而无需指定整个端点。

  • 模型访问权限 – 请求访问支持此功能的 Amazon Bedrock 模型。有关更多信息,请参阅使用 SDK 和 CLI 管理模型访问权限

  • 上传到 S3 的批处理 JSONL 文件 – 按照 OpenAI 文档中准备批处理文件中的步骤,采用恰当的格式准备批处理文件。然后,将其上传到 Amazon S3 存储桶。

  • IAM 权限 – 确保您拥有具适当权限的以下 IAM 身份:

    • 通过身份验证的 IAM 身份,该身份可以执行与批量推理相关的 API 操作。有关更多信息,请参阅IAM 身份提交和管理批量推理作业所需的权限

    • 您使用的批量推理服务角色可以代入您的身份,调用您使用的 OpenAI 模型,以及访问 S3 中的批处理 JSONL 文件。有关更多信息,请参阅服务角色

创建 OpenAI 批处理作业

有关 OpenAI 创建批处理 API 的详细信息,请参阅 OpenAI 文档中的以下资源:

  • 创建批处理 – 详细说明请求和响应。

  • 请求输出对象 – 详细说明批处理作业所生成的输出的字段。如需解释 S3 存储桶中的结果,请参阅此文档。

构造请求

在构造批量推理请求时,请注意以下特定于 Amazon Bedrock 的字段和值:

请求标头
请求正文参数:
  • 端点 – 必须是 v1/chat/completions

  • input_file_id – 指定批处理 JSONL 文件的 S3 URI。

查找生成的结果

创建的响应中包含批处理 ID。批量推理作业的结果和错误日志记录将写入包含输入文件的 S3 文件夹。结果位于与批处理 ID 同名的文件夹中,如以下文件夹结构所示:

---- {batch_input_folder} |---- {batch_input}.jsonl |---- {batch_id} |---- {batch_input}.jsonl.out |---- {batch_input}.jsonl.err

要查看结合不同方法使用 OpenAI 创建批处理 API 的示例,请选择与您的首选方法对应的选项卡,然后按照以下步骤操作:

OpenAI SDK (Python)

要使用 OpenAI SDK 创建批处理作业,请执行以下操作:

  1. 导入 OpenAI SDK 并使用以下字段设置客户端:

    • base_url – 将 Amazon Bedrock 运行时端点添加为 /openai/v1 的前缀,格式如下:

      https://${bedrock-runtime-endpoint}/openai/v1
    • api_key – 指定 Amazon Bedrock API 密钥。

    • default_headers – 如果需要包含任何标头,可将其作为键值对包含在此对象中。也可在进行特定 API 调用时在 extra_headers 中指定标头。

  2. 在客户端上使用 batches.create() 方法。

在运行以下示例之前,请先替换以下字段中的占位符:

  • api_key — 替换$AWS_BEARER_TOKEN_BEDROCK为实际的 API 密钥。

  • X-Amzn-BedrockRoleArn — arn:aws:iam::123456789012:role/BatchServiceRole 替换为您设置的实际批量推理服务角色。

  • input_file_id — s3://amzn-s3-demo-bucket/openai-input.jsonl 替换为将批处理 JSONL 文件上传到的实际 S3 URI。

以下示例在 us-west-2 中调用 OpenAI 创建批处理作业 API,并包含一段元数据。

from openai import OpenAI client = OpenAI( base_url="https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1", api_key="$AWS_BEARER_TOKEN_BEDROCK", # Replace with actual API key default_headers={ "X-Amzn-Bedrock-RoleArn": "arn:aws:iam::123456789012:role/BatchServiceRole" # Replace with actual service role ARN } ) job = client.batches.create( input_file_id="s3://amzn-s3-demo-bucket/openai-input.jsonl", # Replace with actual S3 URI endpoint="/v1/chat/completions", completion_window="24h", metadata={ "description": "test input" }, extra_headers={ "X-Amzn-Bedrock-ModelId": "openai.gpt-oss-20b-1:0", } ) print(job)
HTTP request

要通过直接 HTTP 请求创建聊天补全作业,请执行以下操作:

  1. 使用 POST 方法,并通过将 Amazon Bedrock 运行时端点添加为 /openai/v1/batches 的前缀来指定 URL,格式如下:

    https://${bedrock-runtime-endpoint}/openai/v1/batches
  2. Authorization标题中指定您的 AWS 证书或 Amazon Bedrock API 密钥。

在运行以下示例之前,请先替换以下字段中的占位符:

  • 授权-$AWS_BEARER_TOKEN_BEDROCK 替换为实际的 API 密钥。

  • X-Amzn-BedrockRoleArn — arn:aws:iam::123456789012:role/BatchServiceRole 替换为您设置的实际批量推理服务角色。

  • input_file_id — s3://amzn-s3-demo-bucket/openai-input.jsonl 替换为将批处理 JSONL 文件上传到的实际 S3 URI。

以下示例在 us-west-2 中调用创建聊天补全 API,并包含一段元数据:

curl -X POST 'https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1/batches' \ -H 'Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK' \ -H 'Content-Type: application/json' \ -H 'X-Amzn-Bedrock-ModelId: openai.gpt-oss-20b-1:0' \ -H 'X-Amzn-Bedrock-RoleArn: arn:aws:iam::123456789012:role/BatchServiceRole' \ -d '{ "input_file_id": "s3://amzn-s3-demo-bucket/openai-input.jsonl", "endpoint": "/v1/chat/completions", "completion_window": "24h", "metadata": {"description": "test input"} }'

检索 OpenAI 批处理作业

有关 OpenAI 检索批处理 API 请求和响应的详细信息,请参阅检索批处理

在发出请求时,您需要指定要获取其信息的批处理作业的 ID。响应会返回有关批处理作业的信息,包括您可以在 S3 存储桶中查找的输出和错误文件名。

要查看运用不同方法使用 OpenAI 检索批处理 API 的示例,请选择与您的首选方法对应的选项卡,然后按照以下步骤操作:

OpenAI SDK (Python)

要使用 OpenAI SDK 检索批处理作业,请执行以下操作:

  1. 导入 OpenAI SDK 并使用以下字段设置客户端:

    • base_url – 将 Amazon Bedrock 运行时端点添加为 /openai/v1 的前缀,格式如下:

      https://${bedrock-runtime-endpoint}/openai/v1
    • api_key – 指定 Amazon Bedrock API 密钥。

    • default_headers – 如果需要包含任何标头,可将其作为键值对包含在此对象中。也可在进行特定 API 调用时在 extra_headers 中指定标头。

  2. 在客户端上使用 batches.retrieve() 方法,并指定要检索其信息的批处理作业的 ID。

在运行以下示例之前,请先替换以下字段中的占位符:

  • api_key — 替换$AWS_BEARER_TOKEN_BEDROCK为实际的 API 密钥。

  • batch_id — 替换为实际的 $AWS_BEARER_TOKEN_BEDROCK API 密钥。

该示例在 ID 为的批处理作业中us-west-2调用OpenAI检索批处理作业 API batch_abc123

from openai import OpenAI client = OpenAI( base_url="https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1", api_key="$AWS_BEARER_TOKEN_BEDROCK" # Replace with actual API key ) job = client.batches.retrieve(batch_id="batch_abc123") # Replace with actual ID print(job)
HTTP request

要通过直接 HTTP 请求检索批处理作业,请执行以下操作:

  1. 使用 GET 方法,并通过将 Amazon Bedrock 运行时端点添加为 /openai/v1/batches/${batch_id} 的前缀来指定 URL,格式如下:

    https://${bedrock-runtime-endpoint}/openai/v1/batches/batch_abc123
  2. Authorization标题中指定您的 AWS 证书或 Amazon Bedrock API 密钥。

在运行以下示例之前,请先替换以下字段中的占位符:

  • 授权-$AWS_BEARER_TOKEN_BEDROCK 替换为实际的 API 密钥。

  • batch_abc123 – 在路径中,将此值替换为批处理作业的实际 ID。

以下示例在 ID 为的批处理作业中us-west-2调用OpenAI检索批处理 API batch_abc123

curl -X GET 'https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1/batches/batch_abc123' \ -H 'Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK'

列出 OpenAI 批处理作业

有关 OpenAI 列出批处理 API 请求和响应的详细信息,请参阅列出批处理。响应会返回有关您的批处理作业的一组信息。

在发出请求时,您可以包含查询参数以筛选结果。响应会返回有关批处理作业的信息,包括您可以在 S3 存储桶中查找的输出和错误文件名。

要查看运用不同方法使用 OpenAI 列出批处理 API 的示例,请选择与您的首选方法对应的选项卡,然后按照以下步骤操作:

OpenAI SDK (Python)

要使用 OpenAI SDK 列出批处理作业,请执行以下操作:

  1. 导入 OpenAI SDK 并使用以下字段设置客户端:

    • base_url – 将 Amazon Bedrock 运行时端点添加为 /openai/v1 的前缀,格式如下:

      https://${bedrock-runtime-endpoint}/openai/v1
    • api_key – 指定 Amazon Bedrock API 密钥。

    • default_headers – 如果需要包含任何标头,可将其作为键值对包含在此对象中。也可在进行特定 API 调用时在 extra_headers 中指定标头。

  2. 在客户端上使用 batches.list() 方法。您可以包括任何可选参数。

在运行以下示例之前,请先替换以下字段中的占位符:

  • api_key — 替换$AWS_BEARER_TOKEN_BEDROCK为实际的 API 密钥。

以下示例在 us-west-2 中调用 OpenAI 列出批处理作业 API,并指定返回的结果上限为 2 个。

from openai import OpenAI client = OpenAI( base_url="https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1", api_key="$AWS_BEARER_TOKEN_BEDROCK" # Replace with actual API key ) job = client.batches.retrieve(batch_id="batch_abc123") # Replace with actual ID print(job)
HTTP request

要通过直接 HTTP 请求列出批处理作业,请执行以下操作:

  1. 使用 GET 方法,并通过将 Amazon Bedrock 运行时端点添加为 /openai/v1/batches 的前缀来指定 URL,格式如下:

    https://${bedrock-runtime-endpoint}/openai/v1/batches

    您可以包括任何可选的查询参数。

  2. Authorization标题中指定您的 AWS 证书或 Amazon Bedrock API 密钥。

在运行以下示例之前,请先替换以下字段中的占位符:

  • 授权-$AWS_BEARER_TOKEN_BEDROCK 替换为实际的 API 密钥。

以下示例在 us-west-2 中调用 OpenAI 列出批处理 API,并指定返回的结果上限为 2 个。

curl -X GET 'https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1/batches/batch_abc123' \ -H 'Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK'

取消 OpenAI 批处理作业

有关 OpenAI 取消批处理 API 请求和响应的详细信息,请参阅取消批处理。响应会返回有关已取消的批处理作业的信息。

在发出请求时,您需要指定要取消的批处理作业的 ID。

要查看运用不同方法使用 OpenAI 取消批处理 API 的示例,请选择与您的首选方法对应的选项卡,然后按照以下步骤操作:

OpenAI SDK (Python)

要使用 OpenAI SDK 取消批处理作业,请执行以下操作:

  1. 导入 OpenAI SDK 并使用以下字段设置客户端:

    • base_url – 将 Amazon Bedrock 运行时端点添加为 /openai/v1 的前缀,格式如下:

      https://${bedrock-runtime-endpoint}/openai/v1
    • api_key – 指定 Amazon Bedrock API 密钥。

    • default_headers – 如果需要包含任何标头,可将其作为键值对包含在此对象中。也可在进行特定 API 调用时在 extra_headers 中指定标头。

  2. 在客户端上使用 batches.cancel() 方法,并指定要检索其信息的批处理作业的 ID。

在运行以下示例之前,请先替换以下字段中的占位符:

  • api_key — 替换$AWS_BEARER_TOKEN_BEDROCK为实际的 API 密钥。

  • batch_id — 替换为实际的 $AWS_BEARER_TOKEN_BEDROCK API 密钥。

该示例在 ID 为的批处理作业us-west-2上调用 “OpenAI取消批处理作业 API” batch_abc123

from openai import OpenAI client = OpenAI( base_url="https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1", api_key="$AWS_BEARER_TOKEN_BEDROCK" # Replace with actual API key ) job = client.batches.cancel(batch_id="batch_abc123") # Replace with actual ID print(job)
HTTP request

要直接通过 HTTP 请求取消批处理作业,请执行以下操作:

  1. 使用 POST 方法,并通过将 Amazon Bedrock 运行时端点添加为 /openai/v1/batches/${batch_id}/cancel 的前缀来指定 URL,格式如下:

    https://${bedrock-runtime-endpoint}/openai/v1/batches/batch_abc123/cancel
  2. Authorization标题中指定您的 AWS 证书或 Amazon Bedrock API 密钥。

在运行以下示例之前,请先替换以下字段中的占位符:

  • 授权-$AWS_BEARER_TOKEN_BEDROCK 替换为实际的 API 密钥。

  • batch_abc123 – 在路径中,将此值替换为批处理作业的实际 ID。

以下示例在 ID 为的批处理作业中us-west-2调用OpenAI取消批处理 API batch_abc123

curl -X GET 'https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1/batches/batch_abc123/cancel' \ -H 'Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK'