OpenAI Amazon Bedrock

2026-11-09 13:38 更新

Amazon Bedrock在AWS管理的基础设施上运行受支持的OpenAI模型。本页对照OpenAI API能力,并介绍OpenAI SDK连接方式;部署设置由所链接的AWS文档说明。模型及API兼容性决定应用能力,AWS管理模型访问、区域、路由、账单和运维控制。

Bedrock可用性如何确定

OpenAI模型通过bedrock-runtime和bedrock-mantle两个端点提供;对支持的模型,两者均兼容Responses和Chat Completions,但能力范围不同,例如托管网页搜索目前需要Mantle。应按所需能力选择,见AWS端点比较。

来源列出GPT-6 Sol、Luna可通过Runtime及us-east-1(弗吉尼亚北部)的Mantle使用;GPT-6 Astra可通过Runtime及us-west-2(俄勒冈)的Mantle使用。本页示例为us-east-2的GPT-5.6 Terra,换模型前需同步选择受支持区域。参见模型端点可用性和端点说明。

发起Responses API请求

示例使用OpenAI SDK连接Mantle。具备Bedrock提供程序的JavaScript、Python、Go、Java客户端根据区域推导基址;本页使用https://bedrock-mantle.us-east-2.api.aws/openai/v1。Ruby显式设置该路径,因为提供程序默认/v1路由不支持示例模型。

Mantle模型ID带openai.前缀。使用GPT-6 Sol/Luna时,把模型改为openai.gpt-6-sol或openai.gpt-6-luna,区域也改为us-east-1;Ruby还需修改显式base_url。Runtime使用美国推理配置ID us.openai.gpt-6-sol、us.openai.gpt-6-luna,或全球ID global.openai.gpt-6-sol、global.openai.gpt-6-luna。Runtime基址与配置见AWS Responses说明。

第一组使用环境变量AWS_BEARER_TOKEN_BEDROCK中的Bedrock API密钥。Java示例需先安装可选Bedrock提供程序:

来源示例 1(xml):

<!-- [中文] 安装/配置Bedrock可选提供程序和依赖;保留来源区域、模型及版本,未安装。 -->
<dependency>
  <groupId>com.openai</groupId>
  <artifactId>openai-java-bedrock</artifactId>
  <version>4.57.0</version>
</dependency>

通过Bedrock发送请求:

来源示例 2(javascript):

// [中文] 通过Amazon Bedrock发送Responses请求;按示例选区域及openai.模型ID,不能只更换模型不更换区域。本组使用Bedrock API密钥。
import OpenAI from "openai";
import { bedrock } from "openai/providers/bedrock";

const client = new OpenAI({
  provider: bedrock({
    region: "us-east-2",
    apiKey: process.env.AWS_BEARER_TOKEN_BEDROCK,
  }),
});

const response = await client.responses.create({
  model: "openai.gpt-5.6-terra",
  input: "Write a haiku about cloud infrastructure.",
});

console.log(response.output_text);

来源示例 3(python):

## [中文] 通过Amazon Bedrock发送Responses请求;按示例选区域及openai.模型ID,不能只更换模型不更换区域。本组使用Bedrock API密钥。
import os

from openai import OpenAI
from openai.providers import bedrock

client = OpenAI(
    provider=bedrock(
        region="us-east-2",
        api_key=os.environ["AWS_BEARER_TOKEN_BEDROCK"],
    )
)

response = client.responses.create(
    model="openai.gpt-5.6-terra",
    input="Write a haiku about cloud infrastructure.",
)

print(response.output_text)

来源示例 4(go):

// [中文] 通过Amazon Bedrock发送Responses请求;按示例选区域及openai.模型ID,不能只更换模型不更换区域。本组使用Bedrock API密钥。
package main

import (
    "context"
    "fmt"
    "os"

    "github.com/openai/openai-go/v3"
    "github.com/openai/openai-go/v3/bedrock"
    "github.com/openai/openai-go/v3/responses"
)

func main() {
    client, err := bedrock.NewClient(context.Background(), bedrock.Config{
        AWSRegion: "us-east-2",
        APIKey:    os.Getenv("AWS_BEARER_TOKEN_BEDROCK"),
    })
    if err != nil {
        panic(err)
    }

    response, err := client.Responses.New(context.Background(), responses.ResponseNewParams{
        Model: "openai.gpt-5.6-terra",
        Input: responses.ResponseNewParamsInputUnion{
            OfString: openai.String("Write a haiku about cloud infrastructure."),
        },
    })
    if err != nil {
        panic(err)
    }
    fmt.Println(response.OutputText())
}

来源示例 5(java):

// [中文] 通过Amazon Bedrock发送Responses请求;按示例选区域及openai.模型ID,不能只更换模型不更换区域。本组使用Bedrock API密钥。
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.BedrockOpenAIOkHttpClient;
import com.openai.models.responses.ResponseCreateParams;

public final class AmazonBedrockCreateResponseExample {
  private AmazonBedrockCreateResponseExample() {}

  public static void main(String[] args) {
    OpenAIClient client =
        BedrockOpenAIOkHttpClient.builder()
            .awsRegion("us-east-2")
            .apiKey(System.getenv("AWS_BEARER_TOKEN_BEDROCK"))
            .build();

    ResponseCreateParams params =
        ResponseCreateParams.builder()
            .model("openai.gpt-5.6-terra")
            .input("Write a haiku about cloud infrastructure.")
            .build();

    client.responses().create(params).output().stream()
        .flatMap(item -> item.message().stream())
        .flatMap(message -> message.content().stream())
        .flatMap(content -> content.outputText().stream())
        .forEach(text -> System.out.println(text.text()));
  }
}

来源示例 6(csharp):

// [中文] 通过Amazon Bedrock发送Responses请求;按示例选区域及openai.模型ID,不能只更换模型不更换区域。本组使用Bedrock API密钥。
using System.ClientModel;
using OpenAI.Responses;
#pragma warning disable OPENAI001

string key = Environment.GetEnvironmentVariable("AWS_BEARER_TOKEN_BEDROCK")!;
ResponsesClient client = new(
    new ApiKeyCredential(key),
    new ResponsesClientOptions
    {
        Endpoint = new Uri("https://bedrock-mantle.us-east-2.api.aws/openai/v1"),
    }
);

CreateResponseOptions options = new()
{
    Model = "openai.gpt-5.6-terra",
};
options.InputItems.Add(
    ResponseItem.CreateUserMessageItem("Write a haiku about cloud infrastructure.")
);

ResponseResult response = await client.CreateResponseAsync(options);

Console.WriteLine(response.GetOutputText());

来源示例 7(ruby):

## [中文] 通过Amazon Bedrock发送Responses请求;按示例选区域及openai.模型ID,不能只更换模型不更换区域。本组使用Bedrock API密钥。
require "openai"

client = OpenAI::Client.new(
  provider: OpenAI::Providers.bedrock(
    region: "us-east-2",
    base_url: "https://bedrock-mantle.us-east-2.api.aws/openai/v1",
    api_key: ENV.fetch("AWS_BEARER_TOKEN_BEDROCK")
  )
)

response = client.responses.create(
  model: "openai.gpt-5.6-terra",
  input: "Write a haiku about cloud infrastructure."
)

puts(response.output_text)

来源示例 8(bash):

## [中文] 通过Amazon Bedrock发送Responses请求;按示例选区域及openai.模型ID,不能只更换模型不更换区域。本组使用Bedrock API密钥。
curl "https://bedrock-mantle.us-east-2.api.aws/openai/v1/responses" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK" \
  -d '{
    "model": "openai.gpt-5.6-terra",
    "input": "Write a haiku about cloud infrastructure."
  }'

长期运行应用更适合标准AWS凭证链。JavaScript、Python、Go、Java、Ruby提供程序会获取新凭证,并对每次请求尝试进行SigV4签名。凭证可来自aws login、共享配置、工作负载角色、实例或容器。

先安装相应可选依赖:

来源示例 9(shell):

## [中文] 安装/配置Bedrock可选提供程序和依赖;保留来源区域、模型及版本,未安装。
npm install @aws-sdk/credential-provider-node @smithy/hash-node @smithy/signature-v4
pip install 'openai[bedrock]'
go get github.com/openai/openai-go/v3/bedrock
bundle add aws-sdk-core

.NET目前没有同等Bedrock提供程序或AWS SigV4认证策略;可用Bedrock API密钥,或在需要凭证链时通过支持AWS签名的客户端发送HTTP请求。

来源示例 10(javascript):

// [中文] 通过Amazon Bedrock发送Responses请求;按示例选区域及openai.模型ID,不能只更换模型不更换区域。本组使用AWS凭证链与SigV4,由提供程序刷新凭证;不会创建AWS权限。
import OpenAI from "openai";
import { defaultProvider } from "@aws-sdk/credential-provider-node";
import { bedrock } from "openai/providers/bedrock/aws";

const client = new OpenAI({
  provider: bedrock({
    region: "us-east-2",
    endpoint: "mantle",
    credentialProvider: defaultProvider(),
  }),
});

const response = await client.responses.create({
  model: "openai.gpt-5.6-terra",
  input: "Write a haiku about cloud infrastructure.",
});

console.log(response.output_text);

来源示例 11(python):

## [中文] 通过Amazon Bedrock发送Responses请求;按示例选区域及openai.模型ID,不能只更换模型不更换区域。本组使用AWS凭证链与SigV4,由提供程序刷新凭证;不会创建AWS权限。
from openai import OpenAI
from openai.providers import bedrock

client = OpenAI(
    provider=bedrock(
        region="us-east-2",
        api_key=None,
    )
)

response = client.responses.create(
    model="openai.gpt-5.6-terra",
    input="Write a haiku about cloud infrastructure.",
)

print(response.output_text)

来源示例 12(go):

// [中文] 通过Amazon Bedrock发送Responses请求;按示例选区域及openai.模型ID,不能只更换模型不更换区域。本组使用AWS凭证链与SigV4,由提供程序刷新凭证;不会创建AWS权限。
package main

import (
    "context"
    "fmt"

    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/openai/openai-go/v3"
    "github.com/openai/openai-go/v3/bedrock"
    "github.com/openai/openai-go/v3/responses"
)

func main() {
    awsConfig, err := config.LoadDefaultConfig(context.Background())
    if err != nil {
        panic(err)
    }

    client, err := bedrock.NewClient(context.Background(), bedrock.Config{
        AWSRegion:              "us-east-2",
        AWSCredentialsProvider: awsConfig.Credentials,
    })
    if err != nil {
        panic(err)
    }

    response, err := client.Responses.New(context.Background(), responses.ResponseNewParams{
        Model: "openai.gpt-5.6-terra",
        Input: responses.ResponseNewParamsInputUnion{
            OfString: openai.String("Write a haiku about cloud infrastructure."),
        },
    })
    if err != nil {
        panic(err)
    }
    fmt.Println(response.OutputText())
}

来源示例 13(java):

// [中文] 通过Amazon Bedrock发送Responses请求;按示例选区域及openai.模型ID,不能只更换模型不更换区域。本组使用AWS凭证链与SigV4,由提供程序刷新凭证;不会创建AWS权限。
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.BedrockOpenAIOkHttpClient;
import com.openai.models.responses.ResponseCreateParams;
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;

public final class AmazonBedrockCreateResponseWithAwsCredentialsExample {
  private AmazonBedrockCreateResponseWithAwsCredentialsExample() {}

  public static void main(String[] args) {
    OpenAIClient client =
        BedrockOpenAIOkHttpClient.builder()
            .awsRegion("us-east-2")
            .awsCredentialsProvider(DefaultCredentialsProvider.create())
            .build();

    ResponseCreateParams params =
        ResponseCreateParams.builder()
            .model("openai.gpt-5.6-terra")
            .input("Write a haiku about cloud infrastructure.")
            .build();

    client.responses().create(params).output().stream()
        .flatMap(item -> item.message().stream())
        .flatMap(message -> message.content().stream())
        .flatMap(content -> content.outputText().stream())
        .forEach(text -> System.out.println(text.text()));
  }
}

来源示例 14(ruby):

## [中文] 通过Amazon Bedrock发送Responses请求;按示例选区域及openai.模型ID,不能只更换模型不更换区域。本组使用AWS凭证链与SigV4,由提供程序刷新凭证;不会创建AWS权限。
require "openai"

client = OpenAI::Client.new(
  provider: OpenAI::Providers.bedrock(
    region: "us-east-2",
    base_url: "https://bedrock-mantle.us-east-2.api.aws/openai/v1",
    api_key: nil
  )
)

response = client.responses.create(
  model: "openai.gpt-5.6-terra",
  input: "Write a haiku about cloud infrastructure."
)

puts(response.output_text)

Responses API能力可用性

能力取决于模型与端点,支持某个API不意味着支持其所有工具或响应模式。

能力 OpenAI API Amazon Bedrock
文本生成 支持 支持
图像输入 支持 支持
文件输入 支持 支持
结构化输出 支持 支持
函数调用 支持 支持
异步工具调用 受支持模型可用 不支持
流式响应 支持 支持
WebSocket连接 支持 不支持
轮次中引导 受支持模型可用 不支持
上下文窗口 依模型 依模型
推理力度 支持 支持
推理配置更新 受支持模型可用 不支持
Pro模式 受支持模型可用 不支持
持久推理 受支持模型可用 受支持模型可用
提示缓存 支持 支持
程序化工具调用 受支持模型可用 不支持
多智能体 受支持模型Beta 不支持
自定义工具 支持 支持
客户端tool_search 支持 支持
托管网页搜索 支持 仅Mantle
托管文件搜索 支持 不支持
计算机使用 支持 支持
Shell工具 支持 不支持
图像生成工具 支持 不支持
远程MCP服务器 支持 不支持

Bedrock不支持async:true异步工具或configuration_update推理更新。轮次中引导依赖WebSocket,因此两种端点均不可用。客户端工具搜索与托管工具、远程MCP不同。计算机使用可用于两端点的受支持模型,由应用执行操作并回传结果,不需要Bedrock托管执行环境。

来源列出的Bedrock上下文窗口:GPT-5.4、5.5为100万词元;GPT-5.6 Sol、Terra、Luna和GPT-6 Astra为1,050,000词元。具体见AWS模型卡。

端点差异

能力 Runtime Mantle
GPT-6 Astra 可用 us-west-2可用
GPT-6 Sol/Luna 美国与全球配置 us-east-1可用
计算机使用 受支持模型可用 受支持模型可用
流式响应 支持 支持
background:true 不支持 受数据保留设置限制
托管网页搜索 不支持 受支持模型可用
previous_response_id续接 每次仍需model 可继承上一响应模型

后台模式与流式、异步函数调用是不同能力。完整约定见AWS Responses文档,网页搜索权限见AWS搜索指南。

可用性与运维

AWS维护Bedrock部署及可用性:模型ID/API见模型卡,区域见模型区域列表及端点区域列表,路由见跨区域推理,提额见Bedrock配额。

AWS区域不是OpenAI数据驻留司法区域。有位置要求时,应核对推理配置的实际目标区域及AWS条款,而非只看端点URL。

数据访问与保留

  • 零运维人员访问(ZOA):AWS运维人员没有技术途径登录Mantle底层计算系统或访问其中客户数据,见设计说明。
  • 零数据保留(ZDR):有效保留模式为none时,请求/响应不写入持久存储。

store:false本身不保证ZDR。有效模式为none时,Responses拒绝store:true且不可用后台模式。OpenAI模型在Bedrock的有效保留模式为default或none时,AWS不向OpenAI共享请求/响应内容。模式、资格、账户设置见AWS数据保留,例外见滥用检测。

如果图像疑似包含儿童性虐待材料(CSAM),AWS可能将被标记的输入或输出移出ZOA环境,仅为确认是否为CSAM而存储和审查,并可能向国家主管机关报告。

认证与运维

AWS管理员控制账户、模型及功能权限。凭证生命周期见API密钥,身份权限见IAM。本页SDK示例仅传入凭证,不配置AWS权限。

价格

Bedrock由AWS计费,商业区域同等服务价格与OpenAI直连对应;区域特定服务按OpenAI区域处理对应价格计费,适用Amazon商业条款。OpenAI价格见API定价,Bedrock费率、层级及选项见AWS定价和模型卡。

Bedrock Managed Agents

AWS托管智能体会话见Bedrock Managed Agents。

后续阅读

ChatGPT Work及Codex配置见Amazon Bedrock设置。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号