BedrockでClaude 3.7 Sonnetのextended thinkingを呼ぶ7つの方法

> 2025/3/1: LangChain、Anthropic SDkを使用する方法を追記

---

忘れた頃に確認できるようにおいておきます。

:::note
boto3は最新（現時点で1.37.0）以降に上げましょう。
:::

考え中でなかなかレスポンスが帰ってこないことがありましたので、タイムアウトを伸ばしたほうがいいかもしれません。タイムアウトの伸ばし方は、[このあたり](https://qiita.com/yh1224/items/5bdf43307c4c97281e7e)が参考になりそうです。

## 共通部分

```python
import json

import boto3

client = boto3.client("bedrock-runtime")

model_id = "us.anthropic.claude-3-7-sonnet-20250219-v1:0"
```

## InvokeModel API

`thinking`を指定します。

```python
response = client.invoke_model(
    modelId=model_id,
    body=json.dumps(
        {
            "anthropic_version": "bedrock-2023-05-31",
            "max_tokens": 2400,
            "thinking": {"type": "enabled", "budget_tokens": 1600},
            "messages": [
                {
                    "role": "user",
                    "content": "生成AIの仕組みを10歳の子どもにわかりやすく解説して",
                }
            ],
        }
    ),
)

response_body = json.loads(response.get("body").read())
print(json.dumps(response_body, indent=2, ensure_ascii=False))
```

<details><summary>出力</summary>

```json
{
  "id": "msg_bdrk_015ykemmXHYLDd27XkvK3VqG",
  "type": "message",
  "role": "assistant",
  "model": "claude-3-7-sonnet-20250219",
  "content": [
    {
      "type": "thinking",
      "thinking": "この質問では、生成AIの仕組みを10歳の子どもにもわかりやすく説明することが求められています。専門用語を避け、身近な例えを使って説明するのが良いでしょう。\n\n生成AIの基本的な仕組みとしては以下のポイントを含めるといいと思います：\n1. 大量のデータからの学習\n2. パターンの認識と予測\n3. 文章・画像・音声などの生成の仕組み\n4. 入力に対して適切な出力を作る方法\n\n10歳の子どもが理解できるレベルで、これらを説明していきましょう。学校での勉強や遊びなど、子どもが理解できる例えを使うと効果的です。",
      "signature": "EqgBCkYQARgCIkDQL5YlEpcyGRr238BABFu1ubbPcooUWh1/AbmuBZvsRN5fAl5vV9pzzK6+QGwU/bacr6s8nSU0uoLo0Whh+77oEgyBjVPbR6LYgwV8QiYaDDnkkOD/u/gTQe8RhiIwW0fmsIOtg+rOhfv3E+Iowzt0N3RbdmE6Py5QsxGePzyCphUtjTIsV6+UThD38gr5KhDfkdaocirN23CnstcixRQ8"
    },
    {
      "type": "text",
      "text": "# 生成AIの仕組み～10歳のキミにも分かる説明～\n\nこんにちは！「生成AI」という言葉を聞いたことがあるかな？チャットGPTやお絵描きAIのことだよ。どうやって動いているのか、一緒に見てみよう！\n\n## 生成AIってなに？\n\n生成AIは、新しい文章や絵、音楽を作り出すことができるコンピュータプログラムだよ。まるで魔法みたいだけど、実は魔法じゃなくて「学習」と「パターン」がカギなんだ。\n\n## どうやって学習するの？\n\n### 📚 たくさん見て覚える\n生成AIは、まず本当にたくさんの例を見て学習するよ。\n- 文章を作るAIなら、何百万冊もの本や記事を読む\n- お絵描きAIなら、何百万枚もの絵や写真を見る\n\nこれは、キミが学校でたくさん本を読んだり、先生の書き方を見て字を覚えたりするのに似ているんだ。\n\n### 🧩 パターンを見つける\nAIは見たものの中から「こういうときはこうなる」というパターンを見つけていくよ。例えば：\n- 「おはよう」の次には「ございます」が来ることが多い\n- 空の絵には青い色が使われることが多い\n\n## どうやって新しいものを作るの？\n\n### 🔮 予測する力\nAIは「次に何が来そうか」を予測するのが得意！\n\n例えば、「昨日、友達と公園で...」と入力すると、AIは「遊んだ」「サッカーをした」など、続きそうな言葉をたくさん考えて、一番良さそうなものを選ぶんだ。\n\n### 🎨 少しずつ作っていく\n例えば絵を描くときは、最初はぼんやりとした形から始めて、だんだん細かい部分を描き加えていくよ。キミがなぐり描きから絵を完成させていくのに似ているね。\n\n## 生成AIのすごいところ\n\n- 📝 宿題の手伝いができる\n- 🎮 ゲームのキャラクターを考えられる\n- 🎵 オリジナルの音楽が作れる\n\nでも、AIは「本当の理解」はできていないよ。ただパターンを見つけているだけなんだ。だからときどき変な間違いをすることもあるんだよ。\n\n生成AIは、たくさんの例から学んで、パターンを見つけて、新しいものを作る「とってもすごい物まね名人」みたいなものなんだ！何か質問ある？"
    }
  ],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 62,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0,
    "output_tokens": 1069
  }
}
```

</details>


## InvokeModelWithResponseStream API

```python
response = client.invoke_model_with_response_stream(
    modelId=model_id,
    body=json.dumps(
        {
            "anthropic_version": "bedrock-2023-05-31",
            "max_tokens": 2400,
            "thinking": {"type": "enabled", "budget_tokens": 1600},
            "messages": [
                {
                    "role": "user",
                    "content": "生成AIの仕組みを10歳の子どもにわかりやすく解説して",
                }
            ],
        }
    ),
)

stream = response.get("body")
for event in stream:
    chunk = event.get("chunk")
    if chunk:
        print(json.loads(chunk.get("bytes").decode()))
```

<details><summary>出力</summary>

```
{'type': 'message_start', 'message': {'id': 'msg_bdrk_015o7LPUFpNfpqEWSkUB3hQC', 'type': 'message', 'role': 'assistant', 'model': 'claude-3-7-sonnet-20250219', 'content': [], 'stop_reason': None, 'stop_sequence': None, 'usage': {'input_tokens': 62, 'cache_creation_input_tokens': 0, 'cache_read_input_tokens': 0, 'output_tokens': 2}}}
{'type': 'content_block_start', 'index': 0, 'content_block': {'type': 'thinking', 'thinking': '', 'signature': ''}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'この'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '質問は、「'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '生成AI」の'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '仕組みを'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '10歳の子'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'どもにも'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'わかるように'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '簡単に説明して'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'ほしいという'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '依頼です。'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '10歳の子'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'どもに説明するため'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'には、専門用'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '語を避け、身'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '近な例え'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '話を使い、短'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'くシンプルな'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '文章で説明'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'する必要があります'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '。\n\n生成AI'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'の基本的'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'な仕組みと'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'して説明すべ'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'き内容:'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '\n1. 大'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '量の'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'データから'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '学習する'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '仕組み'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '\n2. パ'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'ターンを見つける'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '能力\n3.'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': ' 新しい'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '内容を作り'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '出す方'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '法\n4.'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': ' 入力に'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '対して出力を'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '生成する過'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '程\n\nこれ'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'らを10歳の'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '子どもに'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': 'もわかるような'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '言葉と例えで説'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'thinking_delta', 'thinking': '明していきます。'}}
{'type': 'content_block_delta', 'index': 0, 'delta': {'type': 'signature_delta', 'signature': 'EqgBCkYQARgCIkAUQsu//CQWCKOcyHrIR3FHofZqYaJeiJyqpILdXMj+ZdRaIfF/9A/SHSnE+6cBgHMkpCLB+mXOMdULQru7A/bgEgy/f9FEqv+tTIzifEAaDBpxPWne6xWv8NuT5CIwRo9O20BjZxa9yJ5RjzHcsnnGNe1kMUUBdaZMk36V2fQb/AQ8HBksLc1AH1J9zuARKhDp7VA91VbuKsrRm1eBuOQ5'}}
{'type': 'content_block_stop', 'index': 0}
{'type': 'content_block_start', 'index': 1, 'content_block': {'type': 'text', 'text': ''}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '# 生成AI'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'の仕組'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'み（10歳向'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'け解説）\n\nこ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'んにちは'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '！今日は「'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '生成AI」という'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '、コンピューター'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'が文章'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'や絵、'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '音楽などを'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '作り出す'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '仕組み'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'についてお話しする'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ね。\n\n##'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': ' 生成AI'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ってなに？'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '\n\n生成AI'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'は、たくさんの「'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'お手本」を'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '見て学習'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'して、自分で'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'も似たようなもの'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'を作れる'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ようになるコ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ンピュータープ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ログラムだ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'よ。'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '\n\n## どうや'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'って学習するの？'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '\n\n### 1'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '. たくさん'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '見て覚える'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '\nまず、生'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '成AIはと'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'っても多くのお'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '手本を見'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'せられるん'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'だ。例'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'えば、文'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '章を作るA'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'Iなら、本'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'や記事や'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '会話など、何'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '百万、何十'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '億もの文章を'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '読み込む'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'よ。\n\n###'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': ' 2. パ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ターンを見つける\n次'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'に、AIは'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'それらのお'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '手本から「'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'パターン」を見つけ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'るんだ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '。例えば「'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'こういう言葉の'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '後に'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'はこんな言'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '葉が来ること'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'が多いな'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '」とか「'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'この話'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '題'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ではこういう'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '表現が'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'よく'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '使われている'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'な」'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ということを'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '覚えてい'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'くん'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'だよ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '。\n\n##'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': ' どうやって新'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'しい'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ものを作る'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'の？\n\n1. 君'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'が「'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '猫についての'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'お話を作'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'って」'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'とお願'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'いすると'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '\n2. AI'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'は「'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '猫」に'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '関連する'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '知識や'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'パターンを思'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'い出して'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '\n3. 「'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '多くの場合'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '、猫の'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'お話は'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'こんな感じで'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '始まることが多いな'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '」と考'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'えて\n4. '}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '少しずつ文'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '章を組み立ててい'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'くんだ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '\n\n## わかりやす'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'い例え'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '\n\n生成AIは、'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'お友達と'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '「しりとり」を'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'するようなもの'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'だと思'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ってね。相'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '手が「'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'りんご'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '」と言ったら、「'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ご」から始'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'まる'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '言葉を考'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'えるで'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'しょ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '？AIも'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '同じように、'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'これまでの流'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'れから次に'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '何が'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '来るべ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'きかを予'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '測して、少'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'しずつ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '作っていくん'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'だよ。\n\nで'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'も、AIの'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'すごい'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ところは、何'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '十億もの「'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'しりとり」'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'の例'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'を'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '覚えてい'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'て、その'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '中からぴ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ったりのものを選べ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ることなんだ！'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '\n\n## まとめ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '\n\n生成AIは、た'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'くさんの'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'お手本を'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '見て学習'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'して、パターンを見'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'つけ、'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'そのパターンを'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '使って新しいものを作'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'る、とっ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ても賢い'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'コンピュー'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': 'ターなんだよ'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '！\n\n何か質'}}
{'type': 'content_block_delta', 'index': 1, 'delta': {'type': 'text_delta', 'text': '問ある？'}}
{'type': 'content_block_stop', 'index': 1}
{'type': 'message_delta', 'delta': {'stop_reason': 'end_turn', 'stop_sequence': None}, 'usage': {'output_tokens': 908}}
{'type': 'message_stop', 'amazon-bedrock-invocationMetrics': {'inputTokenCount': 62, 'outputTokenCount': 908, 'invocationLatency': 26897, 'firstByteLatency': 2659}}
```

</details>

## Converse API

`thinking`のような、モデルごとの特別なパラメーターは`additionalModelRequestFields`の中に指定します。

```python
response = client.converse(
    modelId=model_id,
    messages=[
        {
            "role": "user",
            "content": [{"text": "生成AIの仕組みを10歳の子どもにわかりやすく解説して"}],
        }
    ],
    additionalModelRequestFields={
        "thinking": {"type": "enabled", "budget_tokens": 1600},
    },
)

message = response["output"]["message"]
print(json.dumps(message, indent=2, ensure_ascii=False))
```

<details><summary>出力</summary>

```json
{
  "role": "assistant",
  "content": [
    {
      "reasoningContent": {
        "reasoningText": {
          "text": "この質問は、生成AIの仕組みを10歳の子どもにわかりやすく説明するよう求められています。子どもにとってわかりやすい言葉や例えを使いながら、専門的すぎない範囲で生成AIの基本的な仕組みを説明する必要があります。\n\n説明のポイント:\n1. 簡単な言葉を使う\n2. 身近な例えを使う\n3. 複雑な技術的詳細は避ける\n4. 視覚的にイメージしやすい表現を使う\n5. 子どもが親しみやすい例を用いる\n\n生成AIの基本的な仕組みの説明として以下の要素を含めたいと思います：\n- AIが学習する仕組み（データから学ぶこと）\n- パターン認識の概念\n- 予測の仕組み\n- 生成AIが新しいものを作り出す仕組み\n\nそれでは、10歳の子どもにわかりやすい言葉で説明を作成します。",
          "signature": "EqgBCkYQARgCIkB5v+lAvHb05OArjbR5HKMK7fR+fobhZwfIJLUh9+3Bi74ER06Xti+YCtwXkbzDDslEh9XIj9fTEPGzAHRdot+EEgyWiXsqA/uciUW//gMaDNFdGaUWUnWRb5ZJQCIwbC6U/OiCWg1NjZkm94YbDZxBZQWzmTptPmRVO1ceKqui2NDoAPUl4GrBtvtj/V41KhAGov2i+SODQ3w8RTdNHPoa"
        }
      }
    },
    {
      "text": "# 生成AIの仕組み：10歳のキミにもわかるように説明するね！\n\nこんにちは！「生成AI」って言葉を聞いたことがあるかな？これは新しい絵や文章、音楽などを作れるコンピュータのことだよ。どうやって動いているのか、一緒に見てみよう！\n\n## 生成AIってどうやって勉強するの？\n\n生成AIは、まるで大きな図書館で本をたくさん読んだお友達みたいなんだ。\n\n1. **たくさん見て学ぶ** - AIはインターネットの文章や絵、音楽など、山のようなものを見せられるんだ\n2. **パターンを覚える** - 「猫の絵にはひげと三角の耳がよく出てくるな」とか「物語は起承転結があるな」といったパターンを見つける\n3. **つながりを理解する** - 「雨が降ると、傘が必要になる」といった言葉や物事のつながりを覚える\n\n## どうやって新しいものを作るの？\n\n次のような感じで動いているよ：\n\n1. **ヒントをもらう** - キミが「猫の絵を描いて」とか「おもしろいお話を作って」と頼む\n2. **思い出す** - AIは学んだパターンを思い出して「猫ならこんな形だったな」と考える\n3. **少しずつ作る** - 最初はざっくりとしたものから始めて、だんだん細かくしていくよ\n4. **チェックする** - 「これは本当に猫に見えるかな？」と自分でチェックしながら作る\n\n## 簡単な例えで考えよう\n\n生成AIは、お絵かきをする友達のようなものだと思ってね。その友達は：\n\n- 世界中の絵をたくさん見たことがある\n- でも丸写しはしない\n- キミのリクエストにあわせて、記憶を組み合わせて新しい絵を描く\n\n## 生成AIができること\n\n- お話や詩を作る\n- 絵や写真のような画像を作る\n- 音楽を作る\n- 質問に答える\n- 宿題を手伝う\n\nおもしろいでしょ？生成AIは学校の先生みたいに勉強して、アーティストみたいに創造力を使うんだ。でも、自分で考えたり感じたりはできないから、やっぱり人間の想像力はもっとすごいものなんだよ！\n\n何か質問があったら、もっと詳しく教えるね！"
    }
  ]
}
```

</details>

## ConverseStream API

```python
response = client.converse_stream(
    modelId=model_id,
    messages=[
        {
            "role": "user",
            "content": [{"text": "生成AIの仕組みを10歳の子どもにわかりやすく解説して"}],
        }
    ],
    additionalModelRequestFields={
        "thinking": {"type": "enabled", "budget_tokens": 1600},
    },
)

for event in response["stream"]:
    print(event)
```

<details><summary>出力</summary>

```
{'messageStart': {'role': 'assistant'}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'この'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '質問では'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '、生'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '成AI（'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '生成的な人'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '工知能）'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'の仕組'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'みを'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '10歳の'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '子どもに'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'わかりや'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'すく説'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '明すること'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'が求められています。'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '専門用語を'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '避'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'け、シ'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'ンプルな'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '言葉と'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '身近な'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '例えを'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '使って説明する'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '必要があります。'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '\n\n生成AI'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'の主な仕組'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'みとして説'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '明すべきポ'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'イント：\n1'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '. 大量のデータ'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'からの学習'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '\n2. パターン'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '認識'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '\n3. 予'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '測と生'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '成のプ'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'ロセス'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '\n4. 深'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '層学習（'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'ディープラーニ'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'ング）の基'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '本概念（'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '簡略化して'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '）\n\n10'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '歳児'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '向けの説明'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'なので：\n-'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': ' 短く'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '簡潔な'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '文\n- 身近'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'な例え'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '（例'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '：本を'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '読んで'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '勉強するように'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '、AIも情'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '報から学'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'ぶ'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '）\n- '}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '難しい用語'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'を避'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'ける\n- '}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '具体的な例'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'を挙げ'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'る（文'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '章作成、'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '絵を'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '描く'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'など）'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '\n- 好'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '奇心を'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '刺激する説'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '明\n\nでは'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '、以下'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': 'のように説明します'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'text': '：'}}, 'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'reasoningContent': {'signature': 'EqgBCkYQARgCIkCwAg4+GhqcUa0k5+Vt7wEMXAnIA2T8lBnnzlz3PZTtWB0FsFaNUXJVAzTvSFCRnv4C1OVO5TIyqpymP1k1w+bDEgyrPCbAiNX2ErNYl4MaDN5OfZYm6P4g0a6o3iIwVzl47oGzN+Ny8rt+v62lUB1SHmel5jZ2pjKz1n2VPx2K8u7u9cMQRMbGiI2pRezGKhCgv4nwfIBerMPWCRqHfiEO'}}, 'contentBlockIndex': 0}}
{'contentBlockStop': {'contentBlockIndex': 0}}
{'contentBlockDelta': {'delta': {'text': '# 生成AI'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'の仕組'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'み -'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': ' 10歳'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'の君に'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'も分かる'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '説明\n\nこ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'んにちは！'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '生成AIって'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '聞いたこと'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'があるか'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'な？Chat'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'GPTや'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'お絵描'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'きAIの'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ことだよ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '。これがどう'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'やって動いているか'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '、わかりや'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'すく説明'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'するね'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '。\n\n##'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': ' 生'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '成AIって'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '何を'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'するの？'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '\n生成AIは'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '、新しい'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '文章や絵'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '、音楽など'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'を「作り'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '出す」'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ことができるコンピュータ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ープログラムだ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'よ。例'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'えば、お話'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'を続けたり、絵'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'を描いた'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'りすることができる'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'んだ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '。\n\n##'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': ' どうやって学'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '習するの？\n1'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '. **'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'たくさん'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '見て'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '覚える'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '**: 君'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'が本'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'をた'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'くさん読'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'んで言'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '葉を'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '覚える'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'みたいに'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '、AIも'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'インターネット'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '上の文'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '章や絵'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'をたーく'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'さん見て'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '学習するん'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'だ。'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '\n\n2. **パ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ターンを見つける'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '**: 例'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'えば'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '「'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '猫は'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '〇〇する'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '動'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '物」という'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '文'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'があ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ったら、'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '〇〇に'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '「'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '鳴く」'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'や'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '「'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '寝る」が'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '来'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ること'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'が多'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'いと'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '覚えてい'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'くよ。'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '\n\n##'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': ' どう'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'やって答'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'えを作'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'るの？'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '\n1. **予'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '想'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ゲーム**:'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': ' AIは「'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '次に'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '何が来'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'そうか」を'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '予想する'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'のが得'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '意。例えば「'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'おはよう」と言'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'われたら「'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ございます'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '」が続'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'きそうだ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'と予想できるん'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'だ。'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '\n\n2. **少'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'しずつ作'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'る**: '}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '長い文章も'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '、一度'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'に全部'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ではなく、'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '少しずつ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '「次の'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '言葉」を'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '予想し'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ながら作っ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ていくよ。\n\n##'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': ' 例えで'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '考えてみよ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'う\nお母さんが料'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '理の作り方を教'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'えてくれる'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'とき、「'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '玉ねぎを'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '切ったら、'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '次は何を'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'する？」と考'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'えるで'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'しょ？AIも'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '同じように「この'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '言葉の次は何が'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '来るかな'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '？」と予想し'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ながら答えを'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '作っていく'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'んだよ。\n\n##'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': ' 生成AI'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'のすごいところ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '\n- たくさんの'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '情報を覚えられる'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '（本を何'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '億冊も'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '読める'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'くらい！'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '）\n- パ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ターンを見つける'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'のが得意\n- 新'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'しいもの'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'を作り'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '出せる'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '\n\nでも、AI'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'にも間違いは'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'あるし、す'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'べてを知'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'っているわけじ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ゃないん'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'だ。人'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '間の'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '助けが'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'まだまだ必要'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'なんだよ'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '。\n\n何'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'か質問は'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ある？も'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'っと知'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'りたいこと'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'があった'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': 'ら聞いてね'}, 'contentBlockIndex': 1}}
{'contentBlockDelta': {'delta': {'text': '！'}, 'contentBlockIndex': 1}}
{'contentBlockStop': {'contentBlockIndex': 1}}
{'messageStop': {'stopReason': 'end_turn'}}
{'metadata': {'usage': {'inputTokens': 62, 'outputTokens': 994, 'totalTokens': 1056}, 'metrics': {'latencyMs': 27502}}}
```

</details>


## AWS SDK以外の方法

### LangChain

`langchain_aws`ライブラリーを使用します。

```python
pip install langchain_aws
```

#### ChatBedrock

```python
from langchain_aws import ChatBedrock

chat_model = ChatBedrock(
    model="us.anthropic.claude-3-7-sonnet-20250219-v1:0",
    max_tokens=1025,  # budget_tokensよりも値
    model_kwargs={"thinking": {"type": "enabled", "budget_tokens": 1024}},
)

response = chat_model.invoke("生成AIの仕組みを10歳の子どもにわかりやすく解説して")
```

<details><summary>出力</summary>

```
AIMessage(content='# 生成AIの仕組み：10歳のキミにもわかる説明\n\nこんにちは！今日は「生成AI」というすごい技術について、わかりやすく説明するね。\n\n## 生成AIって何？\n生成AIは、文章を書いたり、絵を描いたり、音楽を作ったりできるコンピュータープログラムだよ。私（このアシスタント）も生成AIの一種なんだ！\n\n## どうやって動いているの？\n\n### 1. たくさん「お勉強」している\n生成AIは、本や文章、インターネットの情報など、とっても多くの材料を読んで学習しているんだ。例えば、何百万冊もの本を読んだみたいな感じだね。\n\n### 2. パターンを覚える\n例えば、「りんごは赤くて、バナナは」と聞かれたら「黄色い」と答えられるように、言葉と言葉のつながりや、どんな言葉がどんな時に使われるかを覚えているんだ。\n\n### 3. 予想して作り出す\nAIは学んだことを使って、次に来そうな言葉や、質問の答えを予想して作り出すんだ。ちょうど、友達との会話で「次に何を言うかな？」と考えるみたいに。\n\n## わかりやすい例え話\n\n生成AIは、すごくたくさんの絵本や物語を読んだ友達みたいなものだよ。その友達に「魔法使いのお話を作って」と頼むと、読んだ物語を思い出しながら、でも全く同じではない新しいお話を作ってくれるんだ。\n\nもしくは、すごく大きな「言葉のパズル」を解いているとも言えるね。「この言葉の次には何が来るかな？」というパズルを、学習した知識を使ってどんどん解いていくんだよ。\n\n## おもしろいところ\n生成AIはとってもたくさんのことを知っているけど、本当に「考える」わけではないんだ。だから時々間違えることもあるし、想像で答えてしまうこともあるよ。\n\n何か他に知りたいことはある？もっと詳しく知りたい部分があれば教えてね！', additional_kwargs={'usage': {'prompt_tokens': 62, 'completion_tokens': 875, 'total_tokens': 937}, 'stop_reason': 'end_turn', 'thinking': {'text': '生成AIの仕組みを10歳の子どもにわかりやすく説明する必要があります。専門用語を避け、身近な例えを使って、シンプルな言葉で説明することが重要です。\n\n生成AIの基本的な仕組みには以下の要素があります：\n1. 大量のデータからの学習\n2. パターンの認識\n3. 新しいコンテンツの生成\n4. フィードバックによる改善\n\nこれらを子どもにわかりやすく説明するために、身近な例えや簡単な言葉を使います。', 'signature': 'EqoBCkgIARABGAIiQFhcB/OIPHlhI997XhGSFBm/qGs/s/TtgqSUtAGZ3V+gXD08ihbNHP3vC0E98hYsO4hXoItd1opfdFYwcuiLlKASDFH9Cd5uZe5akgi/XBoM4K3QhLqc8qi+DFQ+IjBJhEnnivu5x5Ipmz9Jq6/uOS0TGYbmYWVns5XaXnDPguE1Bur81ndP9JBlKBMxkMcqEHsiQWFwrXPr9hffpgxy3d4='}, 'model_id': 'us.anthropic.claude-3-7-sonnet-20250219-v1:0'}, response_metadata={'usage': {'prompt_tokens': 62, 'completion_tokens': 875, 'total_tokens': 937}, 'stop_reason': 'end_turn', 'thinking': {'text': '生成AIの仕組みを10歳の子どもにわかりやすく説明する必要があります。専門用語を避け、身近な例えを使って、シンプルな言葉で説明することが重要です。\n\n生成AIの基本的な仕組みには以下の要素があります：\n1. 大量のデータからの学習\n2. パターンの認識\n3. 新しいコンテンツの生成\n4. フィードバックによる改善\n\nこれらを子どもにわかりやすく説明するために、身近な例えや簡単な言葉を使います。', 'signature': 'EqoBCkgIARABGAIiQFhcB/OIPHlhI997XhGSFBm/qGs/s/TtgqSUtAGZ3V+gXD08ihbNHP3vC0E98hYsO4hXoItd1opfdFYwcuiLlKASDFH9Cd5uZe5akgi/XBoM4K3QhLqc8qi+DFQ+IjBJhEnnivu5x5Ipmz9Jq6/uOS0TGYbmYWVns5XaXnDPguE1Bur81ndP9JBlKBMxkMcqEHsiQWFwrXPr9hffpgxy3d4='}, 'model_id': 'us.anthropic.claude-3-7-sonnet-20250219-v1:0'}, id='run-cbe193ff-aa3c-47dc-8e44-92127c830b72-0', usage_metadata={'input_tokens': 62, 'output_tokens': 875, 'total_tokens': 937})
```

</details>

#### ChatBedrockConverse

```python
from langchain_aws import ChatBedrockConverse

chat_model_converse = ChatBedrockConverse(
    model="us.anthropic.claude-3-7-sonnet-20250219-v1:0",
    additional_model_request_fields={
        "thinking": {"type": "enabled", "budget_tokens": 1024},
    },
)
```

<details><summary>出力</summary>

```
AIMessage(content=[{'type': 'reasoning_content', 'reasoning_content': {'type': 'text', 'text': '生成AIの仕組みを10歳の子ども向けに解説するのはいい課題です。専門的な概念を簡単な言葉で説明することが重要です。\n\n生成AIの主要なポイント：\n1. 学習の仕組み：たくさんのデータから学ぶこと\n2. パターン認識：見たものの特徴を覚えること\n3. 予測：学んだパターンを使って新しいものを作ること\n4. 例え：身近なものに例えること\n\n子ども向けの言葉で、比喩も使いながら解説していきます。', 'signature': 'EqoBCkgIARABGAIiQCd4v2pfucB28TpqomaNf4+pZJonrW+d9kGmufKAwmDuVpbv6wviUwI6l5xbFU+VH/+mcG1JtAlChYvK35QOjZoSDBcu16O1FpBr74jpJRoMq1dFeS6mLAmvo3nRIjA5FmkTiwfXHXt3uNdgzuPvmXzfJYn0IXVWxh91KfksRVb357G+CbTbRqLpq8CA/roqEGuZ1EGDJBF9HS/o/H7jICQ='}}, {'type': 'text', 'text': '# 生成AIのひみつ 〜10さいでもわかる説明〜\n\nこんにちは！「生成AI」ってきいたことあるかな？チャットGPTや、すごいイラストを描くAIのことだよ。どうやって動いているのか、わかりやすく説明するね。\n\n## 生成AIってなにをするの？\n生成AIは、新しい文章や絵、音楽などを作り出すコンピュータープログラムだよ。まるで魔法みたいだけど、実はひみつがあるんだ！\n\n## どうやって学ぶの？\n1. **たくさん見て覚える** - 生成AIは、何百万もの本や絵、ウェブサイトを見て「こういうものがあるんだ」と覚えるんだ。これは君が絵本をたくさん読んで、いろんな話を覚えるようなものだよ。\n\n2. **パターンを見つける** - 例えば、「ねこ」という言葉のあとには「は」や「が」が来ることが多いとか、空の絵には青色と白色がよく使われているとか、そういうパターンを見つけるんだ。\n\n## どうやって新しいものを作るの？\n1. **パズルみたい** - 覚えたパターンを使って、パズルのピースをつなぎ合わせるように新しいものを作るよ。\n\n2. **予測ゲーム** - 「もし次にこの言葉が来たら、その次は何が来るかな？」というゲームを何度も繰り返すんだ。\n\n## わかりやすい例え話\n生成AIは、すごく大きな料理本をすべて覚えた料理人みたいなものだよ。その料理人は新しいレシピを考えるとき、覚えたレシピのパターンを組み合わせて「これとこれを混ぜると美味しそう！」と考えて、新しい料理を作り出すんだ。\n\n## まとめ\n生成AIは、たくさんのものを見て学び、パターンを見つけて、そのパターンを使って新しいものを作るんだよ。すごいでしょう？\n\n何か質問があったら、もっと詳しく教えるね！'}], additional_kwargs={}, response_metadata={'ResponseMetadata': {'RequestId': '8b827586-f9c4-443c-b6aa-7efa2cab61f1', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sat, 01 Mar 2025 13:06:53 GMT', 'content-type': 'application/json', 'content-length': '3170', 'connection': 'keep-alive', 'x-amzn-requestid': '8b827586-f9c4-443c-b6aa-7efa2cab61f1'}, 'RetryAttempts': 0}, 'stopReason': 'end_turn', 'metrics': {'latencyMs': [19736]}}, id='run-0effba04-7a7c-41af-aebc-443e057af278-0', usage_metadata={'input_tokens': 62, 'output_tokens': 872, 'total_tokens': 934})
```

</details>

## Anthropic SDK

Anthropic SDKでもBedrockのClaudeを呼ぶことができます。

```python
pip install anthropic
```

```python
from anthropic import AnthropicBedrock

client = AnthropicBedrock()

response = client.messages.create(
    model="us.anthropic.claude-3-7-sonnet-20250219-v1:0",
    max_tokens=1025,
    thinking={"type": "enabled", "budget_tokens": 1024},
    messages=[
        {
            "role": "user",
            "content": "生成AIの仕組みを10歳の子どもにわかりやすく解説して",
        }
    ],
)
```

<details><summary>出力</summary>

```
Message(id='msg_bdrk_01XLbeinpifL37FcLwksVs3V', content=[ThinkingBlock(signature='EqoBCkgIARABGAIiQEbV+2eYOh7GhKscMwVnI1Ej4bsC7KjqFOIt5m7t0u/5JLU8ukTdwAUOcfxVr2FfQWUqu02aT8S6FBXjUIGREocSDDEB/3gACUflnRF7uBoMOlud+Utg8l51S6gQIjDUF6P3z+hKDjQ5uNTnWna3b2BewqdTrwKEO9i6GeqtRZDKCJJH3e76C64pf6/BbPUqEHYY9x3XUT6WVDycU9IUqtY=', thinking='この質問では、生成AI（Generative AI）の仕組みを10歳の子どもにもわかりやすく説明することが求められています。専門用語を避け、身近な例えを使い、シンプルな言葉で説明する必要があります。\n\n生成AIの仕組みを子ども向けに説明するポイント：\n1. 学習の仕組み - たくさんの例から学ぶこと\n2. パターン認識 - データの中のパターンを見つけること\n3. 生成の仕組み - 学んだパターンを使って新しいものを作ること\n4. 入力と出力の関係 - 指示に応じて適切なものを作ること\n\n具体的な例えを使って、食べ物、遊び、学校での学習など、子どもの日常生活に関連付けながら説明しましょう。', type='thinking'), TextBlock(citations=None, text='# 生成AIの仕組み：子ども向け解説\n\nこんにちは！今日は「生成AI」というすごい技術について、わかりやすくお話しするね。\n\n## 生成AIって何？\n\n生成AIは、文章を書いたり、絵を描いたり、音楽を作ったりできるコンピュータープログラムだよ。ぼくはその一種なんだ！\n\n## どうやって学ぶの？\n\n### 1. たくさん見て覚える\nまず、生成AIはとってもたくさんの本や絵や音楽を見せてもらうんだ。例えば、絵を描くAIなら、何百万枚もの絵を見せてもらうよ。\n\nこれは、キミが新しいゲームのルールを覚えるみたいなものだね。最初はわからなくても、何回も見ていると「あ、こういうパターンがあるんだ！」って気づくでしょ？\n\n### 2. パターンを見つける\n生成AIは、見たものの中からパターンを見つけるのがとっても得意。例えば：\n- ネコの絵には耳とひげがある\n- 面白いお話には起承転結がある\n- 楽しい曲にはリズムがある\n\n### 3. 新しいものを作る\nパターンを覚えたら、それを使って新しいものを作れるようになるんだ。「ネコを描いて」と言われたら、覚えた「ネコらしさ」を使って、見たことのない新しいネコの絵を描けるよ。\n\n## たとえで考えよう\n\n生成AIは、巨大な「レゴブロックの山」から学ぶようなものだよ。たくさんのレゴの組み方を見て覚えて、「お城を作って」と言われたら、見たことのあるお城のパーツを組み合わせて、新しいお城を作るんだ。\n\nでも、レゴのパーツや組み方を見たことがないものは作れないよ。だから、AIが学んだことの範囲で、新しいものを作り出すんだ。\n\n## 最後に\n\n生成AIはとってもたくさんの情報から学んで、新しいものを作るけど、自分で考えているわけではないんだ。だから時々間違えることもあるし、人間の助けが必要なこともあるよ。\n\n何か質問があったら、またきいてね！', type='text')], model='claude-3-7-sonnet-20250219', role='assistant', stop_reason='end_turn', stop_sequence=None, type='message', usage=Usage(cache_creation_input_tokens=0, cache_read_input_tokens=0, input_tokens=62, output_tokens=997))
```

</details>