生成AIアプリを現場で運用していると「OpenAI SDKを活かせないか」「社内の文書を用いてRAGを構築したい」などの要望が出るでしょう。このとき検討したいAWSのサービスがAmazon Bedrockです。2025年12月にアップデートが発表され、OpenAI互換のResponses APIをサポートしました。今回は、アプリ開発者向けに、Amazon Bedrockのアップデート概要と具体的な使い方について解説します。
目次 <Contents>
Amazon Bedrockの概要
Amazon Bedrockは、生成AIモデルを AWS上で一元的に利用するためのマネージドサービスです。単純に「モデル推論のAI」として利用するだけではなく、AWSのサービスと連携しやすい点が評価されています。たとえば、CloudTrailと組み合わせてログ管理や監査対応、IAMを紐づけて権限管理するなどです。企業で運用しやすい環境が整っているといえるでしょう。
そして、2025年12月、Bedrockで OpenAI互換のResponses API が利用できると発表されました。re:Invent2025での告知で、大きな反響を呼んでいます。さらに2026年1月には、Responses APIで サーバーサイドのカスタムツールがアップデートされると告知されました。
OpenAI APIの基本知識
Amazon Bedrockのアップデートを理解するにあたって、OpenAI APIについても理解することが重要です。OpenAIのAPIは、大きく分けて2つの選択肢があります。
Chat Completions API
OpenAIが提供するAPIの中でも、旧式に該当するものです。従来から利用されるチャット中心のAPIに該当します。いわゆる「messages(system/user/assistant)で会話」する形式のAPIです。Amazon Bedrockでも以前からChat Completions APIが利用できました。ただ、現在はベストプラクティスではなく、互換として利用できる状態です。
Responses API
Responses APIはOpenAIが「より新しいインタフェース」として提供するAPIです。新しく提供が開始されたもので、今回のアップデートでAmazon Bedrockでも利用できるようになりました。
大きな特徴として、前回の出力と次の出力を接続する「ステートフルな会話」が挙げられます。また、バックグラウンド実行も可能で、非同期処理を活用した長時間処理などにも対応しました。
他にも、Amazon Bedrockの公式ドキュメントで、OpenAI互換エンドポイント(Mantle)について解説が追加されました。既存のOpenAI SDKコードを「base URLとAPI keyの差し替え中心」で移植できることが示されています。Responses APIで 非同期・ステート管理・ツール利用・ストリーミングなどを扱えることも明記されました。
Amazon BedrockでAPIを呼び出すRuntimeとMantle
Amazon BedrockでOpenAIのAPIを扱う際は、実装のエンドポイントが2系統あることを意識すべきです。RuntimeとMantleの違いを理解していないと、アップデート後の良さを把握できません。むしろ、理解不足によって誤った実装になるリスクがあるのです。
Bedrock Runtime
Bedrock Runtimeは「bedrock-runtime.<region>.amazonaws.com」の形式で呼び出すものです。APIのうち、Chat Completionsを呼び出すために利用されています。OpenAI専用の仕組みではなく、Bedrock runtime endpointを使えば各種APIへのリクエストを実現できるものです。
Mantle
Mantleは「bedrock-mantle.<region>.api.aws /v1」の形式で呼び出すものです。Responses API・Models API・Chat Completions APIなど、OpenAIのAPIをまとめて扱えます。公式ドキュメントでは「OpenAI compatible API endpoints」と表現されていました。
今回のアップデートは「Responses API対応」がテーマです。そのため、以下ではこちらのMantle(bedrock-mantle)を軸にさらなる解説を続けます。
参考:Invoke a model with the OpenAI Chat Completions API
Amazon BedrockからResponses APIを呼び出す事前準備
今回のアップデートを用いてResponses APIを呼び出すために事前準備が必要です。
対応リージョンの確認
Responses APIを呼び出すためのMantleはすべてのリージョンに対応していません。現在は以下のリージョンで利用できます。
- 米国東部 (オハイオ)
- 米国東部 (バージニア北部)
- 米国西部 (オレゴン)
- アジアパシフィック (ジャカルタ)
- アジアパシフィック (ムンバイ)
- アジアパシフィック (東京)
- 欧州 (フランクフルト)
- 欧州 (アイルランド)
- 欧州 (ロンドン)
- 欧州 (ミラノ)
- 欧州 (ストックホルム)
- 南米 (サンパウロ)
東京リージョンでの利用は可能ですが、必要に応じて他リージョンで構築するようにしてください。
APIキーの準備
Amazon BedrockのエンドポイントをPythonやNode JSなどOpenAI SDKで叩く場合に必要です。事前にAmazon Bedrock API keyを取得して認証します。APIキーは2種類あり、状況に応じて使い分けが必要です。
- Short-term:最大12時間・生成したリージョンでのみ利用・本番向け
- Long-term:運用や実行の制限あり・検証向け
基本的にはLong-termで検証し、実運用に乗せる場合はShort-termに切り替えます。どちらも、画像の赤枠部分で簡単に生成が可能です。

環境変数の設定
Amazon Bedrockから呼び出す情報のうち、秘匿性が高いものは環境変数へ設定すべきです。AWSの公式ドキュメントでも、以下の値を環境変数へ格納することが推奨されています。
- OPENAI_API_KEY:「Amazon Bedrock API key」
- OPENAI_BASE_URL:「https://bedrock-mantle.ap-northeast-1.api.aws/v1 など」
環境変数はSSMの機能であるパラメーターストアに格納する方法がおすすめです。

「パラメータの作成」をクリックして、上記2つの環境変数を作成してください。
Amazon BedrockからAPIを呼び出す具体的な使い方
続いては、実際にAPIを呼び出して機能を実装するための使い方を解説します。Pythonで実装することが多いですが、近年はNode.jsを使うことも増えました。そのため、必要に応じてコードを併記しています。
Step 1:依存関係の導入
まずは環境に応じて依存関係のモジュールを導入しましょう。
Python
pip install openai
Node.js
npm i openai
Step 2:Models APIで利用可能モデルを一覧取得
まずはモデルIDの確認が必要です。公式ドキュメントを参考に「/v1/models」で一覧を取得します。
Python
import os
from openai import OpenAI
# OPENAI_API_KEY / OPENAI_BASE_URL を環境変数で設定しておく
client = OpenAI()
models = client.models.list()
for m in models.data:
print(m.id)
Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: process.env.OPENAI_BASE_URL,
});
const models = await client.models.list();
for (const m of models.data) console.log(m.id);
Step 3:Responses APIでリクエストの試行
Step2でモデルIDの把握ができたなら、まずはリクエストを試行してみましょう。
Python
from openai import OpenAI
client = OpenAI()
resp = client.responses.create(
model="(確認したモデルID)",
input=[{"role": "user", "content": "こんにちは。できることを教えて"}],
)
# 出力テキストを取り出す(レスポンス構造に沿って抽出)
text = ""
for item in resp.output:
if item.type == "message":
for c in item.content:
if c.type == "output_text":
text += c.text
print(text)
Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
baseURL: process.env.OPENAI_BASE_URL,
});
const resp = await client.responses.create({
model: "(確認したモデルID)",
input: [{ role: "user", content: "こんにちは。できることを教えて" }],
});
let text = "";
for (const item of resp.output ?? []) {
if (item.type === "message") {
for (const c of item.content ?? []) {
if (c.type === "output_text") text += c.text;
}
}
}
console.log(text);
Responses APIのレスポンスは output 配列に message が入り、content に output_text が入る形です。
Step 4:ストリーミングに切り替える
Step3の時点で基本的なやり取りは可能です。ただ、ストリーミングに切り替えたほうが体感速度が高まります。実装に依存する部分はありますが、切り替えて速度を比較してみると良いでしょう。
Python
from openai import OpenAI
client = OpenAI()
stream = client.responses.create(
model="(確認したモデルID)",
input=[{"role": "user", "content": "要点だけでRAGとは何か説明して"}],
stream=True,
)
for event in stream:
# イベント構造を確認
print(event)
Node.js
import OpenAI from "openai";
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, baseURL: process.env.OPENAI_BASE_URL });
const stream = await client.responses.create({
model: "(確認したモデルID)",
input: [{ role: "user", content: "要点だけでRAGとは何か説明して" }],
stream: true,
});
for await (const event of stream) {
console.log(event);
}
Step 5:非同期で長時間の処理にチャレンジ
Responses APIには「background」のパラメータがあります。これを用いることで、バックグラウンド実行が可能です。処理に時間がかかるリクエストの場合は、非同期で処理して「responses.retrieve」で取得するようにします。
Python
from openai import OpenAI
import time
client = OpenAI()
job = client.responses.create(
model="(確認したモデルID)",
input="長い社内規程を要約して、リスクと対応案を箇条書きで出して",
background=True,
)
# job.id を控えておき、後で取得
resp_id = job.id
#ポーリング
while True:
r = client.responses.retrieve(resp_id)
if r.status == "completed":
break
time.sleep(1)
print(r.status)
コラム:Chat Completions APIの活用も可能
現状、Chat Completions APIで実装している場合、移植して利用することも可能です。既存コードがあるならば、こちらの移植からスタートしても良いでしょう。必要になってから、Responses APIに作り直しても遅くありません。たとえば、以下のような実装が可能です。
Python
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="(確認したモデルID)",
messages=[
{"role": "system", "content": "あなたは優秀な開発アシスタントです。"},
{"role": "user", "content": "BedrockでResponses APIを使うメリットは?"},
],
)
print(completion.choices[0].message.content)
Amazon Bedrockのアップデートを活用する際の注意点
実際にAmazon BedrockからResponses APIを呼び出した際に発生したトラブルを注意点としてまとめます。
注意1:OPENAI_BASE_URLは /v1まで含める
OPENAI_BASE_URLを環境変数へ登録する際は「/v1」まで忘れずに含めましょう。これが不足すると、適切に呼び出せず404エラーが発生します。「https://bedrock-mantle…/v1」のような形式が正確です。
注意2:実行できない操作がある
Bedrock API keysは、利用できる操作がBedrock・Bedrock Runtime系に限定されています。Agents等では使えないため注意してください。OpenAI互換のサービスですが、公式と同じように動作するわけではないのです。
注意3:Short-termキーはリージョン制約がある
Short-termキーを発行する場合、生成したリージョンのみで利用できる点に注意しましょう。マルチリージョン構成を実現する場合、それぞれにキーを割り当てるなどの考慮が必要です。予期せぬ動作につながる部分であるため、制約はよく確認してください。
参考:API keys
Responses APIの活用例
最後に、Amazon BedrockでResponses APIを呼び出すと、どういったサービスを構築できるか紹介します。
RAG(社内文書検索)
社内規程、手順書、仕様書、障害対応、見積/提案テンプレなど、さまざまな検索が可能です。文字列による単純な検索よりも、柔軟かつ精度の高い結果が期待できます。AIとして「根拠のある回答」を示してくれる点も評価ポイントです。
長文の生成
バックグラウンド処理を活用すれば、長文の生成も苦ではありません。たとえば、監査向け要約、規程差分、契約書比較など、長くなりやすいリクエストも簡単に処理できます。非同期化しておけば、サービスがロックされてしまうこともありません。
まとめ
Amazon Bedrockのアップデートによって、Responses APIをAWS上で使えるようになりました。PythonやNode.jで実装できる前提ですが、非常に魅力的な機能追加です。re:Inventで公開後、短期間で機能改修も実施されました。
なお、今回はAWSから呼び出すことに焦点を当てたアップデートで、AIとしての機能アップではありません。より魅力的なAI開発を目指すならば、OpenAIのドキュメントも参考にしてみましょう。


お客様が運営するクラウドの監視・保守・運用業務を、ジードが代行いたします。
お客様のご要望に沿って、適切なクラウド選定から設計・構築までを行います。
Azure上で、AI + 機械学習、分析、ブロックチェーン、IoTを開発します。