
Bedrock の OpenAI モデルでも reasoning summaries が使えるようになったので試してみた
はじめに
2026年10月9日、Amazon Bedrock の OpenAI モデルが Responses API の reasoning.summary に対応し、回答とともに推論要約を受け取れるようになりました。
今回の推論要約への対応は、2026年8月に OpenAI GPT モデルをサポートした bedrock-runtime エンドポイントの、OpenAI API との互換性が向上したアップデートです。
この記事では、GPT-6 Luna を curl(SigV4 署名)による Responses API と AWS CLI による Converse API で呼び出し、どちらでも推論要約を受け取った結果を紹介します。
Responses API で要約を受け取る
推論プロファイルや認証など、Bedrock で OpenAI モデルを呼ぶ手順は、次の記事で説明しています。
us-east-1 で、モデル ID global.openai.gpt-6-luna のモデルを呼びます。リクエスト本文は req-luna-auto-hard.json として保存します。
{
"model": "global.openai.gpt-6-luna",
"input": "1から100までの素数の個数と、その総和を求めてください。",
"reasoning": {
"effort": "medium",
"summary": "auto"
},
"store": false
}
aws-cli 2.37.12 の bedrock-runtime には Responses API を呼び出すサブコマンドがないので、curl の --aws-sigv4 オプションで署名して呼びます。認証情報とリージョンは、環境変数 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN、AWS_REGION(us-east-1)で渡します。
curl -sS --aws-sigv4 "aws:amz:${AWS_REGION}:bedrock" \
--user "${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}" \
-H "x-amz-security-token: ${AWS_SESSION_TOKEN}" \
-H 'Content-Type: application/json' \
-d @req-luna-auto-hard.json \
"https://bedrock-runtime.${AWS_REGION}.amazonaws.com/openai/v1/responses"
応答の output を抜粋します。encrypted_content は長さだけ残して伏せています。
"output": [
{
"content": [],
"encrypted_content": "<redacted len=1228>",
"summary": [
{
"text": "**Calculating prime statistics**\n\nI’m preparing the response in Japanese and checking both requested values carefully. The prime numbers from 1 through 100 total 25, remembering that 1 is not prime. I’m also verifying their sum in groups to avoid an arithmetic slip: the total comes to 1,060. I’ll provide the complete list so the result is transparent, followed by the count and sum. The answer should stay concise while still explaining the key point about 1.",
"type": "summary_text"
}
],
"type": "reasoning"
},
{
"content": [
{
"text": "1は素数ではありません。1から100までの素数は**25個**で、総和は**1060**です。",
"type": "output_text"
}
],
"role": "assistant",
"type": "message"
}
]
summary に指定できる値はモデルによって異なります。モデルごとの対応は OpenAI の reasoning ガイドに書かれています。Luna では auto、concise、detailed を指定できました。auto は、そのモデルで最も詳細な要約を選ぶ値です。
summary の指定と要約の返り方
先ほどの素数の質問を、summary に auto、concise、detailed を指定して2回ずつ送ると、6回すべてで summary 配列に要約が返りました。指定しなかった呼び出しでは、summary 配列は空でした。
一方、「17 * 24 は? 途中の考え方も踏まえて答えてください。」と聞くと、auto または concise を指定した8回のうち2回は、summary 配列が空でした。
日本語で聞いた素数の質問では、回答は日本語でしたが、要約は6回とも見出しも本文も英語でした。
ストリーミング
リクエスト本文に "stream": true を追加し、curl に -N を付けて呼ぶと、要約は回答より先に届きました。要約のテキストは response.reasoning_summary_text.delta、回答のテキストは response.output_text.delta のイベントで流れました。
Converse API で要約を受け取る
Converse API でも、additionalModelRequestFields に summary を含む reasoning を渡すと要約を得ることができました。
リクエストは req-converse-luna.json として保存します。
{
"modelId": "global.openai.gpt-6-luna",
"messages": [{"role": "user", "content": [{"text": "1から100までの素数の個数と、その総和を求めてください。"}]}],
"additionalModelRequestFields": {"reasoning": {"effort": "medium", "summary": "auto"}}
}
次のコマンドで呼びます。
aws bedrock-runtime converse --region us-east-1 --cli-input-json file://req-converse-luna.json
応答の output を抜粋します。
"output": {
"message": {
"role": "assistant",
"content": [
{
"reasoningContent": {
"reasoningText": {
"text": "**Calculating prime totals**\n\nI’m answering in Japanese and providing the prime numbers below 100. I’m checking the count and sum carefully: there are 25 primes, and their total is 1,060. I’ll include the complete list so the result is easy to verify, followed by the count and sum. Keeping the explanation concise should fit the likely goal while still showing how the totals were obtained."
}
}
},
{
"text": "1から100までの素数は **25個**、その総和は **1060** です。\n\n素数は \n2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 \nです。"
}
]
}
}
summary を指定しない呼び出しでは、reasoningContent に、要約の代わりに中身の読めない redactedContent が入っていました。
まとめ
Amazon Bedrock の OpenAI モデルでも、推論要約を受け取れるようになりました。
これまで bedrock-runtime が推論要約をサポートしていなかったために発生していたエラーの解消や、回避パッチが不要になることが期待できます。
GPT モデルの応答精度を調整する素材の一つとして、今回 Bedrock で利用可能になった推論要約をご活用ください。










