📚
Amazon BedrockでClaude Sonnet 4の1M コンテキストウインドウを使う
2025年8月13日、Claude Sonnet 4が1Mトークンのコンテキストウインドウをサポートしました。Amazon Bedrockでも利用可能です。
参考リンク:
注意点
- Amazon Bedrockにおいてはこの機能は現在USのオレゴン、バージニア、オハイオリージョンのみ提供しています。
- 1M-Context-Windowを利用する場合、Amazon BedrockにおいてもAnthropic APIでも単価が上がるので注意してください。
プロンプトサイズ | Input | Output |
---|---|---|
≤ 200K tokens | $3 / MTok | $15 / MTok |
> 200K tokens | $6 / MTok | $22.50 / MTok |
Python SDK (Boto3) + Converse APIのサンプルコード
import boto3
# Bedrockクライアント初期化
bedrock = boto3.client(
service_name='bedrock-runtime',
region_name='us-west-2'
)
# 現在はClaude Sonnet 4のみ1M Context Windowをサポート
model_id = "us.anthropic.claude-sonnet-4-20250514-v1:0"
# 大量のテキストを準備
large_text = "サンプルテキスト " * 50000
# リクエスト構築
request_body = {
"messages": [
{
"role": "user",
"content": [{"text": f"このテキストを要約してください: {large_text}"}]
}
],
"additionalModelRequestFields": {
"anthropic_beta": ["context-1m-2025-08-07"] # 1Mコンテキスト有効化
},
"inferenceConfig": {
"maxTokens": 500
}
}
# API呼び出し
response = bedrock.converse(
modelId=model_id,
**request_body
)
# 結果表示
print(f"入力トークン: {response['usage']['inputTokens']:,}")
print(f"出力トークン: {response['usage']['outputTokens']:,}")
print(response['output']['message']['content'][0]['text'])
TypeScript SDK + Converse APIのサンプルコード
import { BedrockRuntimeClient, ConverseCommand } from "@aws-sdk/client-bedrock-runtime";
// Bedrockクライアント初期化
const bedrock = new BedrockRuntimeClient({
region: "us-west-2"
});
// 現在はClaude Sonnet 4のみ1M Context Windowをサポート
const modelId = "us.anthropic.claude-sonnet-4-20250514-v1:0";
async function main() {
try {
// 大量のテキストを準備
const largeText = "サンプルテキスト ".repeat(50000);
// リクエスト構築
const requestBody = {
modelId: modelId,
messages: [
{
role: "user" as const,
content: [
{
text: `このテキストを要約してください: ${largeText}`
}
]
}
],
additionalModelRequestFields: {
anthropic_beta: ["context-1m-2025-08-07"] // 1Mコンテキスト有効化
},
inferenceConfig: {
maxTokens: 500
}
};
// API呼び出し
const command = new ConverseCommand(requestBody);
const response = await bedrock.send(command);
// 結果表示
console.log(`入力トークン: ${response.usage?.inputTokens?.toLocaleString()}`);
console.log(`出力トークン: ${response.usage?.outputTokens?.toLocaleString()}`);
console.log(response.output?.message?.content?.[0]?.text);
} catch (error) {
console.error("Error:", error);
}
}
// 実行
if (require.main === module) {
main();
}
export { bedrock, modelId };
TypeScript SDK + InvokeModelのサンプルコード
import { BedrockRuntimeClient, InvokeModelCommand } from "@aws-sdk/client-bedrock-runtime";
// Bedrockクライアント初期化
const bedrock = new BedrockRuntimeClient({
region: "us-west-2"
});
// 現在はClaude Sonnet 4のみ1M Context Windowをサポート
const modelId = "us.anthropic.claude-sonnet-4-20250514-v1:0";
async function main() {
try {
// 大量のテキストを準備
const largeText = "サンプルテキスト ".repeat(50000);
// リクエスト構築
const requestBody = {
anthropic_version: "bedrock-2023-05-31",
anthropic_beta: ["context-1m-2025-08-07"], // 1Mコンテキスト有効化
max_tokens: 500,
messages: [
{
role: "user",
content: [
{
type: "text",
text: `このテキストを要約してください: ${largeText}`
}
]
}
]
};
// API呼び出し
const command = new InvokeModelCommand({
modelId: modelId,
contentType: "application/json",
accept: "application/json",
body: JSON.stringify(requestBody)
});
const response = await bedrock.send(command);
const responseBody = JSON.parse(new TextDecoder().decode(response.body));
// 結果表示
console.log(`入力トークン: ${responseBody.usage.input_tokens.toLocaleString()}`);
console.log(`出力トークン: ${responseBody.usage.output_tokens.toLocaleString()}`);
console.log(responseBody.content[0].text);
} catch (error) {
console.error("Error:", error);
}
}
// 実行
if (require.main === module) {
main();
}
export { bedrock, modelId };
実行結果の例
入力トークン: 400,018
出力トークン: 184
申し訳ございませんが、提供されたテキストは「サンプルテキスト」という文字が大量に繰り返されているだけで...
トラブルシューティング
- Amazon BedrockにおいてUSリージョンのみサポートしているため、使うリージョンによってはサポートしていないエラーが出ます。
- Claude Sonnet 4はインスタンスプロファイルを使ったクロスリージョン推論のみサポートしており、2025年8月15日時点ではモデルID
us.anthropic.claude-sonnet-4-20250514-v1:0
を指定する場合のみ動作します。その際にはクロスリージョン推論で使う可能性のあるすべてのリージョンのモデルアクセスを有効化する必要があり、そうでなければYou don't have access to the model with the specified model ID.
のエラーが出ることがあります。 -
Too many tokens, please wait before trying again.
のエラーが出る際にはコンテキストウインドウの問題ではなくスロットリングです。AWS AccountのQuotaを確認してください。
まとめ
ポイントは2つ:
- モデルIDに
us.anthropic.claude-sonnet-4-20250514-v1:0
を指定 -
additionalModelRequestFields
にanthropic_beta: ["context-1m-2025-08-07"]
を追加
これで1Mトークンまでのコンテキストが利用できます。
Discussion