Python から Amazon Bedrock のモデルを呼ぶには、boto3 の bedrock-runtime クライアントで converse() を使います。 Converse API は、モデルが違っても同じ形のリクエストで呼べる API です。モデルを変えるときは、modelId を書き換えるだけで済みます。

import boto3

client = boto3.client("bedrock-runtime", region_name="ap-northeast-1")
response = client.converse(
    modelId="jp.anthropic.claude-haiku-5-5",
    messages=[{"role": "user", "content": [{"text": "Amazon Bedrockを一言で説明して"}]}],
)
print(response["output"]["message"]["content"][0]["text"])

つまずきやすいのは「モデルID」と「権限」です。 新しい Claude は、anthropic. から始まる素のモデルIDではなく、jp. や global. から始まる推論プロファイルIDで呼びます。

やりたいこと 書き方 見出し
1回だけ聞く converse(modelId=..., messages=[...]) 最小コード
役割・長さ・ランダムさを決める system=[{"text": ...}]、inferenceConfig={"maxTokens": ...} system と inferenceConfig
会話を続ける 前の返答と新しい質問を messages に足して、全部送り直す 会話の履歴
少しずつ表示する converse_stream() の stream を for で回す converse_stream
関数を呼ばせる toolConfig → stopReason == "tool_use" → toolResult ツール利用
画像を読ませる {"image": {"format": "png", "source": {"bytes": ...}}} 画像入力

確認環境:boto3 / botocore 1.43.111・Python 3.11(Linux)。AWS には接続していません。boto3 が送るリクエストの形は、botocore の Stubber(ParamValidationError の再現)と、手元に立てた擬似エンドポイント(Bedrock の応答の形を返す小さな HTTP サーバー)で確かめました。モデルIDや権限、エラーの意味は AWS の公式ドキュメントで確かめました(確認日 2026年10月12日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Bedrock Python入門|Converse APIでClaudeを呼ぶ」

最初に用意するもの

用意するもの 内容
boto3 pip install boto3。Converse API の bedrock-runtime クライアントを使う
認証情報 aws configure やIAMロールなど、ふつうの boto3 と同じ
IAM の権限 converse は bedrock:InvokeModel、converse_stream は bedrock:InvokeModelWithResponseStream
Anthropic の利用申請 Claude は、アカウントで最初に使う前に First Time Use(FTU)フォームの提出がいる
モデルIDの確認 モデルカードで、使うリージョンに対応した ID を選ぶ

権限の対応は、AWS のドキュメント「Inference using Converse API」に書かれています。converse を呼ぶのに bedrock:Converse という権限は無く、bedrock:InvokeModel で許可します。

モデルの有効化について、ドキュメントでは「サードパーティのモデルを初めて呼ぶと、Bedrock が裏で自動的にサブスクリプションを始める」とされています。このとき、IAM に aws-marketplace:Subscribe などの権限が要ります。足りないと AccessDeniedException になります。IAM ポリシーの書き方は、関連記事「IAMポリシーの書き方|JSONの読み方と最小権限の作り方【例文つき】」で扱っています。

モデルIDと推論プロファイルID

推論プロファイルは、リクエストを複数のリージョンに振り分けて処理する仕組みです。モデルIDの前に jp. us. global. などが付きます。AWS のモデルカードで確かめた ID です。

モデル 推論プロファイルID(例) 東京(ap-northeast-1)から
Claude Haiku 5.5 jp.anthropic.claude-haiku-5-5/global.anthropic.claude-haiku-5-5 jp.(東京・大阪で処理)と global. が使える
Claude Sonnet 5.5 global.anthropic.claude-sonnet-5-5(us.・eu.・au. もある) global. だけ
Claude Haiku 4.5 jp.anthropic.claude-haiku-4-5-20251001-v1:0/global.anthropic.claude-haiku-4-5-20251001-v1:0 jp. と global. が使える
  • モデルカードには、Claude Haiku 4.5 について「素のモデルID(anthropic.…)は、bedrock-runtime のオンデマンド利用では使えない」と書かれています。Haiku 5.5・Sonnet 5.5 も、モデルカードの In-Region(そのリージョンだけで処理)の欄は、すべて「not supported」でした。
  • jp. などの Geo プロファイルはその地域の中で、global. は世界のリージョンで処理されます。ドキュメントでは、どちらも「元のリージョンの外に送られることがあり、1リージョンでのデータ保管にはならない」と注意しています。
  • modelId には、推論プロファイルの ID か ARN を渡します。システム定義の(AWS が用意した)推論プロファイルは、どちらでも呼べます。

推論プロファイルを使うときの IAM ポリシーは、プロファイルと、振り分け先の各リージョンのモデルの両方を Resource に入れる決まりです。ドキュメントの例から、呼び出しの権限だけを抜き出すと次の形です。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["bedrock:InvokeModel*"],
      "Resource": [
        "arn:aws:bedrock:*:*:inference-profile/*",
        "arn:aws:bedrock:*::foundation-model/*"
      ]
    }
  ]
}

ARN の読み方は、関連記事「AWS ARNとは?形式の読み方とサービス別の書き方一覧」で扱っています。

最小コード

返答は response["output"]["message"]["content"] のリストに入っています。 先頭が文字とは限らないので、text を持つ要素だけをつなげると安全です。

import boto3

MODEL_ID = "jp.anthropic.claude-haiku-5-5"
client = boto3.client("bedrock-runtime", region_name="ap-northeast-1")

response = client.converse(
    modelId=MODEL_ID,
    messages=[{"role": "user", "content": [{"text": "こんにちは"}]}],
)

message = response["output"]["message"]
text = "".join(block["text"] for block in message["content"] if "text" in block)
print(text)
print(response["stopReason"])   # end_turn
print(response["usage"])        # {'inputTokens': ..., 'outputTokens': ..., 'totalTokens': ...}

手元の擬似エンドポイントで受けたとき、boto3 は次の URL と JSON を送っていました。modelId は URL の中に入ります。

POST /model/jp.anthropic.claude-haiku-5-5/converse
{"messages": [{"role": "user", "content": [{"text": "こんにちは"}]}]}

レスポンスの中身

キー 中身
output.message {"role": "assistant", "content": [...]}。そのまま履歴に足せる
stopReason 止まった理由。下の表
usage inputTokens・outputTokens・totalTokens(課金の元になるトークン数)
metrics.latencyMs かかった時間(ミリ秒)

stopReason の値は、API リファレンスでは次の9つです。

stopReason 意味
end_turn ふつうに答え終わった
max_tokens maxTokens に達して途中で切れた
tool_use ツールを呼びたい(ツール利用)
stop_sequence stopSequences の文字が出た
guardrail_intervened・content_filtered ガードレールやフィルタで止まった
malformed_model_output・malformed_tool_use モデルの出力やツール呼び出しの形が崩れていた
model_context_window_exceeded 入力と出力の合計が、モデルの上限(コンテキストウィンドウ)を超えた

system と inferenceConfig

system は文字列ではなく、[{"text": "..."}] のリストで渡します。 messages の中に入れるのではなく、別の引数です。

response = client.converse(
    modelId=MODEL_ID,
    system=[{"text": "あなたは社内ヘルプデスクです。100文字以内で答えます。"}],
    messages=[{"role": "user", "content": [{"text": "VPNにつながりません"}]}],
    inferenceConfig={
        "maxTokens": 512,          # 出力の上限(トークン)
        "temperature": 0.2,        # 0〜1。小さいほど答えがぶれにくい
        "topP": 0.9,
        "stopSequences": ["###"],  # この文字が出たら止める
    },
)
inferenceConfig のキー 意味 boto3 が送る前に調べること
maxTokens 出力の上限 整数で、1以上(0 は ParamValidationError)
temperature ランダムさ 数値か。範囲は送ったあと Bedrock 側で調べる
topP 候補の絞り込み 数値か
stopSequences 止める文字 文字列のリストか

キーは camelCase です。 Anthropic SDK の max_tokens の書き方のまま渡すと、送る前に止まりました。

ParamValidationError: Parameter validation failed:
Unknown parameter in inferenceConfig: "max_tokens", must be one of: maxTokens, temperature, topP, stopSequences

inferenceConfig に無い、モデル独自のパラメータは additionalModelRequestFields(dict)で渡します。Anthropic SDK で直接 Claude API を呼ぶ書き方は、関連記事「Claude API Python入門|Anthropic SDKコピペレシピ集」で扱っています。

会話の履歴

Bedrock は会話を覚えていません。 前の返答(output.message)と次の質問を messages に足して、毎回全部送り直します。

import boto3

MODEL_ID = "jp.anthropic.claude-haiku-5-5"
client = boto3.client("bedrock-runtime", region_name="ap-northeast-1")
messages = []

def chat(prompt: str) -> str:
    messages.append({"role": "user", "content": [{"text": prompt}]})
    response = client.converse(
        modelId=MODEL_ID,
        system=[{"text": "簡潔に答えてください。"}],
        messages=messages,
        inferenceConfig={"maxTokens": 1024},
    )
    reply = response["output"]["message"]
    messages.append(reply)               # assistant の返答をそのまま足す
    return "".join(b["text"] for b in reply["content"] if "text" in b)

print(chat("私の名前は山田です。"))
print(chat("私の名前は?"))

2回目のリクエストでは、messages が「user → assistant → user」の3件で送られていました。履歴が長いほど inputTokens が増えるので、前半のやり取りを要約して短くする方法もあります。トークンの数え方は、関連記事「トークンとは|生成AIの数え方・日本語の文字数目安と節約方法」で扱っています。

converse_stream:少しずつ受け取る

converse_stream() は、返り値の stream を for で回すと、イベント(dict)が順に届きます。 引数は converse() と同じです。converse(..., stream=True) という書き方はできず、送る前に Unknown parameter in input: "stream" で止まりました。

擬似エンドポイントからイベントストリームの形式で返すと、boto3 は次の順で dict を返しました。

{'messageStart': {'role': 'assistant'}}
{'contentBlockDelta': {'delta': {'text': 'Bedrockは'}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'text': 'AWSの生成AIサービスです。'}, 'contentBlockIndex': 0}}
{'contentBlockStop': {'contentBlockIndex': 0}}
{'messageStop': {'stopReason': 'end_turn'}}
{'metadata': {'usage': {'inputTokens': 12, 'outputTokens': 9, 'totalTokens': 21}, 'metrics': {'latencyMs': 300}}}
イベント 中身
messageStart role(assistant)
contentBlockStart ツール呼び出しの始まり(toolUseId・name)
contentBlockDelta 文字の断片(delta.text)か、ツール引数の断片(delta.toolUse.input、文字列)
contentBlockStop ブロックの終わり
messageStop stopReason
metadata usage と metrics(最後に届く)

ツール引数は、JSON の文字列が分かれて届きます。つなげてから json.loads します。文字もツールも扱える完成形です。

import json

def stream_converse(client, **kwargs):
    resp = client.converse_stream(**kwargs)
    text, tools, cur, stop, usage = [], [], None, None, None
    for ev in resp["stream"]:
        if "contentBlockStart" in ev and "toolUse" in ev["contentBlockStart"]["start"]:
            s = ev["contentBlockStart"]["start"]["toolUse"]
            cur = {"toolUseId": s["toolUseId"], "name": s["name"], "input": ""}
        elif "contentBlockDelta" in ev:
            d = ev["contentBlockDelta"]["delta"]
            if "text" in d:
                print(d["text"], end="", flush=True)
                text.append(d["text"])
            elif "toolUse" in d:
                cur["input"] += d["toolUse"]["input"]
        elif "contentBlockStop" in ev and cur:
            cur["input"] = json.loads(cur["input"] or "{}")
            tools.append(cur)
            cur = None
        elif "messageStop" in ev:
            stop = ev["messageStop"]["stopReason"]
        elif "metadata" in ev:
            usage = ev["metadata"]["usage"]
    print()
    return "".join(text), tools, stop, usage

text, tools, stop, usage = stream_converse(
    client, modelId=MODEL_ID,
    messages=[{"role": "user", "content": [{"text": "東京の天気は?"}]}],
)

ツール引数を {"city": と "東京"} の2つに分けて返したときも、[{'toolUseId': 'tooluse_s1', 'name': 'get_weather', 'input': {'city': '東京'}}] と tool_use が得られました。

ストリームの途中でも、エラーがイベントとして届くことがあります。botocore の定義では、throttlingException・validationException・modelStreamErrorException・internalServerException・serviceUnavailableException の5つです。

ツール利用(toolConfig)

モデルは関数を自分で実行しません。 「この関数をこの引数で呼びたい」と返すので、自分のコードで実行し、結果を toolResult として送り返します。流れは次の3段です。

  1. toolConfig に関数の名前・説明・引数の JSON Schema を書いて converse
  2. stopReason が tool_use なら、content の toolUse(toolUseId・name・input)を見て関数を実行
  3. 返答(assistant)と、toolResult を入れた user のメッセージを履歴に足して、もう一度 converse
import boto3

MODEL_ID = "jp.anthropic.claude-haiku-5-5"
client = boto3.client("bedrock-runtime", region_name="ap-northeast-1")

def get_weather(city: str) -> dict:
    return {"city": city, "weather": "晴れ"}   # 本当は天気APIを呼ぶ

TOOLS = {"get_weather": get_weather}
tool_config = {
    "tools": [{
        "toolSpec": {
            "name": "get_weather",
            "description": "都市名を受け取り、今日の天気を返す",
            "inputSchema": {"json": {
                "type": "object",
                "properties": {"city": {"type": "string", "description": "都市名"}},
                "required": ["city"],
            }},
        }
    }],
    # "toolChoice": {"auto": {}}  # {"any": {}} や {"tool": {"name": "get_weather"}} も書ける
}

messages = [{"role": "user", "content": [{"text": "東京の天気は?"}]}]
while True:
    response = client.converse(modelId=MODEL_ID, messages=messages, toolConfig=tool_config)
    reply = response["output"]["message"]
    messages.append(reply)
    if response["stopReason"] != "tool_use":
        break
    results = []
    for block in reply["content"]:
        if "toolUse" not in block:
            continue
        tu = block["toolUse"]
        try:
            out = TOOLS[tu["name"]](**tu["input"])
            results.append({"toolResult": {"toolUseId": tu["toolUseId"], "content": [{"json": out}]}})
        except Exception as e:
            results.append({"toolResult": {"toolUseId": tu["toolUseId"],
                                           "content": [{"text": str(e)}], "status": "error"}})
    messages.append({"role": "user", "content": results})

print("".join(b["text"] for b in reply["content"] if "text" in b))

擬似エンドポイントで tool_use を返したとき、toolUse は次の dict で取り出せました。input は JSON 文字列ではなく、dict です(ストリームのときとの違い)。

{'toolUseId': 'tooluse_abc123', 'name': 'get_weather', 'input': {'city': '東京'}}
よくある書き間違い 結果
"inputSchema": {"type": "object", ...}(json で包んでいない) Unknown parameter in toolConfig.tools[0].toolSpec.inputSchema: "type", must be one of: json
toolResult の toolUseId を付けない botocore の定義で必須。送る前に止まる
2回目の converse に toolConfig を付けない ドキュメントの例では、2回目も toolConfig を付けて送っている

ツール利用の考え方は、関連記事「Function Calling(tool use)の仕組みとPython実装」で扱っています。

画像入力

画像は image ブロックで、ファイルのバイト列をそのまま渡します。 ドキュメントには「AWS SDK を使うなら base64 にしなくてよい」とあり、実際に boto3 が base64 に変えて送っていました。

from pathlib import Path

png = Path("screen.png").read_bytes()
response = client.converse(
    modelId=MODEL_ID,
    messages=[{"role": "user", "content": [
        {"image": {"format": "png", "source": {"bytes": png}}},
        {"text": "この画面のエラーの原因を推測して"},
    ]}],
)
{"messages": [{"role": "user", "content": [{"image": {"format": "png", "source": {"bytes": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR4nGP4z8AAAAMBAQDJ/pLvAAAAAElFTkSuQmCC"}}}, ...
項目 値(API リファレンス・botocore の定義)
format png・jpeg・gif・webp
source bytes(バイト列)か s3Location({"uri": "s3://..."})のどちらか1つ
文書(document) pdf・csv・doc・docx・xls・xlsx・html・txt・md。同じメッセージに text も入れる決まり

format は jpg ではなく jpeg です。 "jpg" は boto3 では止まらずに送られるので、Bedrock 側で弾かれる形になります。Claude Haiku 5.5・Sonnet 5.5 のモデルカードでは、入力は Text と Image に対応しています。

よく出るエラー

boto3 が送る前に止まるもの(ParamValidationError)

Stubber で再現した、送る前に止まる書き方です。AWS に届かないので、課金も CloudWatch のログもありません。

書いたもの エラー文(抜粋)
inferenceConfig={"max_tokens": 100} Unknown parameter in inferenceConfig: "max_tokens"
"content": "こんにちは"(文字列) Invalid type for parameter messages[0].content, ... valid types: <class 'list'>
system="あなたは…"(文字列) Invalid type for parameter system, ... valid types: <class 'list'>
role を書き忘れ Missing required parameter in messages[0]: "role"
"maxTokens": 0 Invalid value for parameter inferenceConfig.maxTokens, value: 0, valid min value: 1
"maxTokens": "100"(文字列) Invalid type for parameter inferenceConfig.maxTokens ... valid types: <class 'int'>
modelId="" Invalid length for parameter modelId, value: 0, valid min length: 1

一方、temperature: 1.5 や画像の format: "jpg" は、boto3 では止まりませんでした。値の範囲や種類は、Bedrock 側で調べられます。

Bedrock から返るもの(ClientError)

エラー名と HTTP ステータスは、Converse API のリファレンスとトラブルシューティングのページに基づきます。

エラー HTTP 主な原因 直し方
AccessDeniedException 403 IAM に bedrock:InvokeModel が無い。Anthropic の FTU フォーム未提出・審査中。初回の自動サブスクリプションに Marketplace 権限が無い 権限を足す。FTU を出す。設定後も反映まで数分かかることがある
ValidationException 400 値の範囲・形が違う。モデルIDの書き間違い。そのモデル・リージョンで使えない ID モデルカードで ID と対応リージョンを確かめる
ThrottlingException 429 アカウントのクォータ(上限)を超えた 待って再試行(指数バックオフ)。Service Quotas で上限を確かめる
ResourceNotFoundException 404 指定したリソースが無い モデルID・ARN を確かめる
ModelTimeoutException 408 モデルの処理時間が上限を超えた 入力を小さく、maxTokens を小さく
ServiceUnavailableException 503 サービス側の一時的な混雑(クォータとは別) 再試行。リージョンを分ける、推論プロファイルを使う

モデルIDの指定ミスの見分け方です。

症状 見るところ
anthropic.claude-… の素の ID で失敗する モデルカードで「In-Region」が not supported なら、jp. か global. の ID にする
jp. の ID がそのリージョンで使えない jp. は東京・大阪から呼ぶプロファイル。クライアントの region_name を確かめる
東京から Sonnet 5.5 を呼べない モデルカードでは、東京は global. だけ対応
bedrock クライアントで converse が無い 推論は bedrock-runtime。bedrock はモデル一覧などの管理用

エラーの取り出し方と、再試行の回数

from botocore.exceptions import ClientError

try:
    response = client.converse(modelId=MODEL_ID, messages=messages)
except client.exceptions.ThrottlingException as e:
    print("混雑:", e.response["ResponseMetadata"].get("RetryAttempts"))
except ClientError as e:
    print(e.response["Error"]["Code"], e.response["Error"]["Message"])

擬似エンドポイントで 429(ThrottlingException)を返し続けたとき、boto3 の再試行は次のとおりでした。

設定 届いたリクエスト RetryAttempts
既定(retry mode は legacy) 5回 4
Config(retries={"max_attempts": 6, "mode": "adaptive"}) 7回 6
403・400 を返したとき 1回 0(再試行しない)

boto3 1.43.111 の既定の read_timeout は 60秒でした。長い出力を converse で待つと、先に読み取りのタイムアウトになることがあります。Config(read_timeout=...) で延ばすか、converse_stream を使います。

from botocore.config import Config

client = boto3.client(
    "bedrock-runtime", region_name="ap-northeast-1",
    config=Config(read_timeout=300, retries={"max_attempts": 6, "mode": "adaptive"}),
)

ClientError の扱い全般は、関連記事「boto3のエラーハンドリング|ClientErrorのコード取得とリトライ設定」で扱っています。再試行の待ち時間の決め方は、関連記事「指数バックオフとは?リトライ間隔の決め方とジッターの実装」で扱っています。

テストは Stubber で書ける

AWS につながない単体テストでは、botocore の Stubber で「送るはずのリクエスト」と「返すレスポンス」を決められます。expected_params と違う形で呼ぶと、テストが失敗します。

import boto3
from botocore.stub import Stubber

client = boto3.client("bedrock-runtime", region_name="ap-northeast-1")
stubber = Stubber(client)
stubber.add_response(
    "converse",
    {"output": {"message": {"role": "assistant", "content": [{"text": "回答です。"}]}},
     "stopReason": "end_turn",
     "usage": {"inputTokens": 25, "outputTokens": 5, "totalTokens": 30},
     "metrics": {"latencyMs": 420}},
    expected_params={"modelId": "jp.anthropic.claude-haiku-5-5",
                     "messages": [{"role": "user", "content": [{"text": "質問"}]}]},
)
stubber.add_client_error("converse", service_error_code="ThrottlingException", http_status_code=429)

with stubber:
    r = client.converse(modelId="jp.anthropic.claude-haiku-5-5",
                        messages=[{"role": "user", "content": [{"text": "質問"}]}])
    assert r["output"]["message"]["content"][0]["text"] == "回答です。"

手元では、1回目が 回答です。、2回目が client.exceptions.ThrottlingException で受け取れました。

よくある質問

Q. InvokeModel と Converse はどちらを使いますか。 A. AWS の入門ページでは、対応しているモデルなら Converse を勧めています。InvokeModel はモデルごとのリクエスト形式(JSON 文字列)を自分で組み立てます。Converse はモデルが変わっても同じ形で、会話の履歴も扱いやすくなっています。

Q. Lambda から呼ぶときに気をつけることは? A. 実行ロールに bedrock:InvokeModel を付けます。Lambda のタイムアウトの既定は 3秒なので、生成にかかる時間に合わせて延ばします。Lambda の基本は、関連記事「AWS Lambda Python入門|3.14対応handler例とローカルテスト」で扱っています。

Q. 使えるモデルの一覧をコードで取れますか。 A. boto3.client("bedrock").list_foundation_models() で取れます。推論に使う bedrock-runtime とは別のクライアントです。

Q. 料金はどこを見ればよいですか。 A. レスポンスの usage に、入力と出力のトークン数が入っています。課金はこの数が元になります。

まとめ

  • Python からは boto3.client("bedrock-runtime").converse()。権限は bedrock:InvokeModel
  • 新しい Claude は jp. や global. の推論プロファイルIDで呼ぶ。東京から使える ID はモデルカードで確かめる
  • system は リスト、inferenceConfig は camelCase(maxTokens)
  • 会話は 毎回全部送り直す。返答の output.message をそのまま履歴に足す
  • ストリームは converse_stream() の stream を for で回す。ツール引数は文字列の断片で届く
  • ツールは tool_use → 自分で実行 → user の toolResult で返す
  • ThrottlingException は既定で4回まで再試行された。Config で回数と read_timeout を変えられる

参考・出典

確認日はいずれも 2026年10月12日です。

  • Amazon Bedrock ユーザーガイド「Inference using Converse API」:https://docs.aws.amazon.com/bedrock/latest/userguide/conversation-inference.html
  • Amazon Bedrock API リファレンス「Converse」:https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html
  • Amazon Bedrock API リファレンス「ImageBlock」:https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ImageBlock.html
  • Amazon Bedrock ユーザーガイド「Run Amazon Bedrock API examples with Boto3」:https://docs.aws.amazon.com/bedrock/latest/userguide/getting-started-api-ex-python.html
  • Amazon Bedrock ユーザーガイド「Models at a glance」:https://docs.aws.amazon.com/bedrock/latest/userguide/model-cards.html
  • Amazon Bedrock モデルカード「Claude Haiku 5.5」:https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-haiku-5-5.html
  • Amazon Bedrock モデルカード「Claude Sonnet 5.5」:https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-sonnet-5-5.html
  • Amazon Bedrock モデルカード「Claude Haiku 4.5」:https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-haiku-4-5.html
  • Amazon Bedrock ユーザーガイド「Use an inference profile in model invocation」:https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-use.html
  • Amazon Bedrock ユーザーガイド「Prerequisites for inference profiles」:https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-prereq.html
  • Amazon Bedrock ユーザーガイド「Access Amazon Bedrock foundation models」:https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html
  • Amazon Bedrock ユーザーガイド「Use a tool to complete an Amazon Bedrock model response」(client-side):https://docs.aws.amazon.com/bedrock/latest/userguide/tool-use-client-side.html
  • Amazon Bedrock ユーザーガイド「Troubleshooting Amazon Bedrock API Error Codes」:https://docs.aws.amazon.com/bedrock/latest/userguide/troubleshooting-api-error-codes.html

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Bedrock Python入門|Converse APIでClaudeを呼ぶ」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?