クラウドがよく分かる!お役立ちコラム
Amazon Bedrockがアップデート!OpenAIのResponses APIに対応

公開日:2026年2月16日 最終更新日: 2026年2月16日

Amazon Bedrockがアップデート!OpenAIのResponses APIに対応
この記事でわかること

生成AIアプリを現場で運用していると「OpenAI SDKを活かせないか」「社内の文書を用いてRAGを構築したい」などの要望が出るでしょう。このとき検討したいAWSのサービスがAmazon Bedrockです。2025年12月にアップデートが発表され、OpenAI互換のResponses APIをサポートしました。今回は、アプリ開発者向けに、Amazon Bedrockのアップデート概要と具体的な使い方について解説します。

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のドキュメントも参考にしてみましょう。

クラウドの運用代行や導入、開発は24年の実績をもつジードにご相談ください

  • クラウドの運用代行

    クラウドの監視・保守・運用の代行 お客様が運営するクラウドの監視・保守・運用業務を、ジードが代行いたします。

    サービスの詳細はこちら

  • クラウドの設計・構築

    クラウドの設計・構築 お客様のご要望に沿って、適切なクラウド選定から設計・構築までを行います。

    サービスの詳細はこちら

  • クラウド上でのシステム開発

    クラウドの設計・構築 Azure上で、AI + 機械学習、分析、ブロックチェーン、IoTを開発します。

    サービスの詳細はこちら

お問い合わせ・お見積もりのご依頼はお気軽に

トップへ戻る