过去想在 AWS 上跑 OpenAI 模型,要么自建代理层转发 API,要么把流量引到 OpenAI 自己的端点——两种方式都增加了运维复杂度和数据合规风险。现在 GPT-5.5、GPT-5.4 以及 Codex 在 Amazon Bedrock 上正式 GA(Generally Available),意味着你可以用 Bedrock 的统一推理引擎直接调用这些模型,把它们塞进生产应用和 Agent 里,不需要额外的中间层。
三款模型各自定位
Bedrock 上可用的三款 OpenAI 模型覆盖了不同场景:
- GPT-5.5——旗舰级通用模型,适合复杂推理、长文档理解、多步骤 Agent 编排。
- GPT-5.4——平衡性能与成本,适合日常对话、内容生成、结构化提取等中等复杂度任务。
- Codex——专为代码生成与执行设计,能理解项目上下文、写出可运行代码,适合开发辅助和自动化流水线。
三款模型共享 Bedrock 的高性能推理引擎,延迟和吞吐表现由 Bedrock 底层管控,不需要你自己操心模型服务化。
用 boto3 调用:从零到第一次请求
下面给出一个最小可运行的 Python 示例,使用 boto3 通过 Bedrock 调用 GPT-5.4。前提是你已经在 AWS 控制台里为 Bedrock 启用了 OpenAI 模型的访问权限(Bedrock 控制台 → Model access → 勾选 OpenAI 提供的模型 → Enable)。
import boto3
import json
# 创建 Bedrock Runtime 客户端(region 选你启用模型访问的区域)
client = boto3.client("bedrock-runtime", region_name="us-east-1")
# 模型 ID 格式:提供方前缀 + 模型名
# 实际模型 ID 请以 Bedrock 控制台显示为准,此处为示意格式
model_id = "openai.gpt-5-4"
# 构造请求体——OpenAI 在 Bedrock 上的请求格式与原生 API 类似
body = {
"messages": [
{"role": "system", "content": "你是一位资深后端工程师,用中文回答。"},
{"role": "user", "content": "用 Python 写一个读取 S3 文件内容的函数,要求处理异常并返回字节。"}
],
"max_tokens": 1024,
"temperature": 0.2,
}
response = client.invoke_model(
modelId=model_id,
contentType="application/json",
accept="application/json",
body=json.dumps(body),
)
result = json.loads(response["body"].read())
print(result["choices"][0]["message"]["content"])
运行前需要:
- 安装依赖:
pip install boto3 - 配置 AWS 凭证(
aws configure或环境变量AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY) - 在 Bedrock 控制台启用对应模型的访问权限
注意:模型 ID 的具体字符串以 Bedrock 控制台 Model catalog 页面显示为准。上面
openai.gpt-5-4是示意格式,实际可能是openai.gpt5-4或包含版本号后缀。部署前先在控制台确认。
Codex 实战:让模型写代码并执行
Codex 的核心能力是理解代码上下文、生成可运行代码。下面演示一个 Agent 场景——把 Codex 嵌入自动化流水线,让它根据需求描述生成脚本:
import boto3
import json
client = boto3.client("bedrock-runtime", region_name="us-east-1")
# Codex 模型 ID(以控制台为准)
codex_model_id = "openai.codex"
task_description = """
写一个 Shell 脚本,功能如下:
1. 接收一个目录路径参数
2. 找出该目录下所有超过 7 天未修改的 .log 文件
3. 将这些文件压缩为 .tar.gz 并删除原文件
4. 输出压缩后的文件列表
"""
body = {
"messages": [
{"role": "system", "content": "You are Codex, a code generation assistant. Output only runnable code."},
{"role": "user", "content": task_description},
],
"max_tokens": 2048,
"temperature": 0.0, # 代码生成用低温度,减少随机性
}
response = client.invoke_model(
modelId=codex_model_id,
contentType="application/json",
accept="application/json",
body=json.dumps(body),
)
result = json.loads(response["body"].read())
generated_code = result["choices"][0]["message"]["content"]
print(generated_code)
# 可选:把生成结果写入文件直接执行
# with open("cleanup_logs.sh", "w") as f:
# f.write(generated_code)
temperature 设为 0 是代码生成的实用选择——你希望输出稳定、可复现,而不是每次跑出不同风格的脚本。
Bedrock Agent 配置示例
如果你的场景是构建一个多步骤 Agent,Bedrock 的 Agent 服务可以直接挂载 OpenAI 模型作为推理核心。以下是一个最小化的 Agent 创建 YAML 配置思路(通过 AWS CLI 或 SDK 部署):
# 用 AWS CLI 创建 Bedrock Agent,指定 OpenAI 模型作为 foundation model
aws bedrock-agent create-agent \
--agent-name "log-cleanup-agent" \
--foundation-model-id "openai.codex" \
--instruction "你是一个运维自动化助手。用户描述清理需求后,生成对应的 Shell 脚本并解释每一步。" \
--region us-east-1
创建 Agent 后,还需要关联 Action Group(定义 Agent 可调用的工具)和 Knowledge Base(注入项目文档或运维手册),这些步骤在 Bedrock 控制台里可视化完成比纯 CLI 更直观。
投产前的几件事
把 OpenAI 模型搬上 Bedrock 不等于直接甩给生产流量,有几个点值得提前想清楚:
| 考虑项 | 建议 |
|---|---|
| 模型 ID 确认 | Bedrock 控制台 → Model catalog → 找到 OpenAI 提供的模型,复制精确的 model ID,别靠猜 |
| 区域可用性 | 不是所有 AWS 区域都上线了 OpenAI 模型,先查 Bedrock 区域支持列表 |
| 定价模型 | Bedrock 按 token 计费,不同模型价格不同;Codex 可能按输入/输出 token 分级计价,投产前用 Price calculator 估算 |
| 延迟与并发 | Bedrock 支持 Provisioned Throughput(预留吞吐),高 QPS 场景建议提前预留,避免突发限流 |
| 数据合规 | 通过 Bedrock 调用,数据留在 AWS 体系内,不经过 OpenAI 端点;对有数据驻留要求的团队这是关键优势 |
| 模型切换 | Bedrock 的统一 API 让你可以在 OpenAI 和其他提供方(Anthropic、Meta 等)之间一行代码切换模型,方便做 A/B 对比 |
一句话总结:如果你已经在用 Bedrock 做模型推理,现在可以直接把 OpenAI 的三款模型加入你的模型池,不用改架构,不用加代理层。如果你之前是直接调 OpenAI API,现在有了数据留在 AWS 内、推理引擎统一管理的替代路径。先在控制台启用模型访问,跑一个 boto3 请求验证连通性,再决定是否把流量切过来。