AIエージェント入門

Claude Sonnet 4.6でAIエージェントを構築する完全ガイド【2026年】

Claude Sonnet 4.6でAIエージェントを構築する完全ガイド【2026年】

この記事の結論

Claude Sonnet 4.6(SWE-bench 79.6%・OSWorld 72.5%)のAdaptive Thinking APIでAIエージェントを実装する完全ガイド。effortパラメータ・ツール使用・マルチターンループを解説。

まず結論:Claude Sonnet 4.6(モデルID: claude-sonnet-4-6)は、SWE-bench Verified 79.6%・OSWorld 72.5%という数字が示すとおり、エージェント用途で実用レベルに到達した最初のSonnetファミリーモデルです。価格はSonnet 4.5と同じ$3/$15(入力/出力 per MTok)のまま、コーディング・コンピュータ使用・エージェント計画能力が全面向上しました。

この記事では、Anthropic公式ドキュメントに基づいてSonnet 4.6のAPIを実際に呼び出す方法、Adaptive Thinking(推奨)とExtended Thinking(非推奨・後継移行ガイド付き)の違い、マルチエージェント構成での使い所を解説します。

対象読者:PythonでClaudeを呼び出した経験があるエンジニア・PM。今日やること:Adaptive Thinking付きのエージェントループを動かすところまで到達する。

5分で動かす:Sonnet 4.6の基本呼び出し3選

即効コード1:Adaptive Thinking(推奨・最もシンプル)

Claude Sonnet 4.6では、Adaptive Thinkingが推奨方式です。以前のbudget_tokens方式(Extended Thinking)は非推奨となりました(まだ動きますが将来削除予定)。

import anthropic

client = anthropic.Anthropic()  # ANTHROPIC_API_KEY環境変数から自動読み込み

# Adaptive Thinkingの基本呼び出し
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=16000,
    thinking={"type": "adaptive"},  # 推奨方式
    messages=[
        {
            "role": "user",
            "content": "Pythonでバイナリサーチを実装し、エッジケースを列挙してください。"
        }
    ]
)

for block in response.content:
    if block.type == "thinking":
        print(f"[思考プロセス要約]: {block.thinking}")
    elif block.type == "text":
        print(f"[回答]: {block.text}")

ポイントthinking={"type": "adaptive"}を渡すだけ。モデルがタスクの複雑さを判断し、必要なときだけ内部推論を使います。不要なシンプルなタスクでは推論をスキップするため、コストと速度が最適化されます。

即効コード2:effortパラメータで思考深度を制御する

import anthropic

client = anthropic.Anthropic()

# effort: "high"(デフォルト)/ "medium" / "low" / "max" で深度を調整
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=16000,
    thinking={"type": "adaptive"},
    output_config={"effort": "medium"},  # 速度重視の場合はmediumかlow
    messages=[
        {
            "role": "user",
            "content": "このREADMEの誤字を修正してください:n'pyhton install requirments.txt'"
        }
    ]
)

print(response.content[0].text)

effortレベルの使い分け:複雑なアルゴリズム設計はhigh(デフォルト)かmax、定型的な文書整形や軽いQAはmediumlowにすることでAPIコストを下げられます。

即効コード3:ツール使用との組み合わせ(エージェントループの核心)

import anthropic

client = anthropic.Anthropic()

# ツール定義
tools = [
    {
        "name": "run_python",
        "description": "Pythonコードを実行して結果を返す",
        "input_schema": {
            "type": "object",
            "properties": {
                "code": {"type": "string", "description": "実行するPythonコード"}
            },
            "required": ["code"]
        }
    }
]

# Adaptive Thinking + ツール使用(interleaved thinkingが自動で有効に)
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=8000,
    thinking={"type": "adaptive"},  # ツール呼び出し間にも思考が走る
    tools=tools,
    messages=[
        {
            "role": "user",
            "content": "フィボナッチ数列の50番目を計算して、結果を確認してください。"
        }
    ]
)

# ツール呼び出しがあれば処理
for block in response.content:
    if block.type == "tool_use":
        print(f"[ツール呼び出し]: {block.name}({block.input})")
    elif block.type == "text":
        print(f"[最終回答]: {block.text}")

Adaptive Thinking + ツール使用の重要な点:Adaptive Thinkingを使うとinterleaved thinking(ツール呼び出し間にも推論を行う機能)が自動で有効になります。Extended Thinkingでは別途betaヘッダーが必要でしたが、Adaptive Thinkingでは設定不要です。

Claude Sonnet 4.6の実力:公式ベンチマーク解説

Anthropicが2026年2月17日に公開した数字を見ると、Sonnet 4.6がエージェント実装において実戦投入できるレベルに達したことがわかります。

ベンチマーク Sonnet 4.5 Sonnet 4.6 Opus 4.6
SWE-bench Verified(コーディングエージェント) 77.2% 79.6% 80.8%
OSWorld(コンピュータ使用) 未公開 72.5% 73.1%
SWE-bench Multilingual 未公開 75.9%
料金(入力/出力 per MTok) $3/$15 $3/$15(据え置き) $5/$25

特筆すべきはOpus 4.6との差がわずか1〜2%に縮まっている点です。Claude Codeでのユーザーテストでも、Sonnet 4.6はSonnet 4.5に対して約70%の確率で選ばれ、Opus 4.5に対しても59%で優位でした(Anthropic公式発表)。

OSWorld 72.5%という数字は、GUIを操作してマルチステップのタスクを完了させる能力を測るベンチマークです。スプレッドシートのナビゲーション、Webフォームへの入力、レガシーソフトウェアの操作といったシナリオで人間レベルに近づいています。

Adaptive ThinkingとExtended Thinkingの移行ガイド

Sonnet 4.6を使う上で最も重要な変更点が、推論モードの刷新です。公式ドキュメントを元に整理します。

今どのモードを使うべきか

状況 推奨設定 理由
Sonnet 4.6で新規開発 thinking: {type: "adaptive"} 公式推奨。interleaved thinking自動対応
Sonnet 4.6でレイテンシ重視 output_config: {effort: "low"}を追加 シンプルタスクは推論をスキップ
旧来のbudget_tokens設定が既にある 当面はそのまま動く。近いうちにadaptiveに移行推奨 deprecated扱いだが現時点では機能する
Sonnet 4.5以前のモデル thinking: {type: "enabled", budget_tokens: N} adaptive thinkingは未サポート

重要な制約:Claude Opus 4.8・4.7ではbudget_tokens指定が400エラーになります(adaptiveのみ対応)。Sonnet 4.6は両方動きますが、adaptiveへの移行が強く推奨されています。

既存コードの移行例

# Before(Extended Thinking・非推奨)
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=16000,
    thinking={"type": "enabled", "budget_tokens": 10000},  # 非推奨
    messages=[...]
)

# After(Adaptive Thinking・推奨)
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=16000,
    thinking={"type": "adaptive"},  # budget_tokensは不要
    output_config={"effort": "high"},  # 思考深度はeffortで制御
    messages=[...]
)

レスポンスの処理コードは変わりません。block.type == "thinking"で思考ブロックを取得する部分は同じです。Adaptive Thinkingでは思考内容はサマリー形式で返ります(フルの内部思考ではなくサマリー)。

エージェント実装パターン:Sonnet 4.6の実用構成4選

パターン1:コーディングエージェント(SWE-bench型)

SWE-bench 79.6%の能力を引き出すには、コードベースのコンテキストを最大限に渡すことが重要です。Sonnet 4.6の1Mトークンコンテキストウィンドウを活用します。

import anthropic
from pathlib import Path

client = anthropic.Anthropic()

# リポジトリの主要ファイルをコンテキストに含める
def build_coding_agent_prompt(issue_description: str, repo_files: dict) -> str:
    context = "nn".join([
        f"=== {path} ===n{content}"
        for path, content in repo_files.items()
    ])
    return f"""以下のリポジトリのコードを参照して、Issueを解決してください。

## Issue
{issue_description}

## リポジトリのファイル
{context}

修正すべきファイルと変更内容を具体的に示してください。"""

repo_files = {
    "src/utils.py": Path("src/utils.py").read_text(),
    "src/main.py": Path("src/main.py").read_text(),
    "tests/test_utils.py": Path("tests/test_utils.py").read_text(),
}

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=8000,
    thinking={"type": "adaptive"},
    output_config={"effort": "high"},  # コーディングは高思考深度で
    messages=[{
        "role": "user",
        "content": build_coding_agent_prompt(
            "utils.pyのparse_date関数がタイムゾーンを正しく処理しない",
            repo_files
        )
    }]
)
print(response.content[-1].text)

パターン2:マルチターンエージェントループ

実際のエージェント運用では、複数のツール呼び出しを繰り返すループが必要です。Adaptive Thinkingはinterleaved thinkingを自動有効化するため、ツール結果を受け取るたびに内部で計画を更新できます。

import anthropic

client = anthropic.Anthropic()

tools = [
    {
        "name": "search_web",
        "description": "Web検索を行い結果を返す",
        "input_schema": {
            "type": "object",
            "properties": {
                "query": {"type": "string"}
            },
            "required": ["query"]
        }
    },
    {
        "name": "write_file",
        "description": "ファイルに内容を書き込む",
        "input_schema": {
            "type": "object",
            "properties": {
                "path": {"type": "string"},
                "content": {"type": "string"}
            },
            "required": ["path", "content"]
        }
    }
]

def run_agent_loop(user_request: str, max_iterations: int = 5):
    messages = [{"role": "user", "content": user_request}]

    for iteration in range(max_iterations):
        response = client.messages.create(
            model="claude-sonnet-4-6",
            max_tokens=8000,
            thinking={"type": "adaptive"},
            tools=tools,
            messages=messages
        )

        # ツール呼び出しがなければ完了
        if response.stop_reason == "end_turn":
            for block in response.content:
                if block.type == "text":
                    return block.text
            break

        # ツール実行とフィードバック
        tool_results = []
        for block in response.content:
            if block.type == "tool_use":
                result = execute_tool(block.name, block.input)
                tool_results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": result
                })

        # 会話を継続
        messages.append({"role": "assistant", "content": response.content})
        messages.append({"role": "user", "content": tool_results})

    return "最大イテレーション数に達しました"

def execute_tool(name: str, inputs: dict) -> str:
    # 実際のツール実装に置き換える
    if name == "search_web":
        return f"検索結果: {inputs['query']}に関する情報..."
    elif name == "write_file":
        with open(inputs["path"], "w") as f:
            f.write(inputs["content"])
        return f"{inputs['path']}に書き込み完了"
    return "Unknown tool"

よくある失敗パターンと回避策

失敗1:budget_tokensをSonnet 4.6で使い続ける

まだ動くものの、将来のアップデートで削除される予定です。特にOpus 4.8以降へ移行する際に400エラーが出て急いで直すことになります。今のうちにAdaptive Thinkingへ書き換えることをお勧めします。

回避策:上記の移行例コードを参考に、thinking: {type: "adaptive"}output_config: {effort: "high"}の組み合わせに切り替える。

失敗2:max_tokensを小さく設定してthinking_tokensが溢れる

Adaptive Thinkingでは内部推論トークンもmax_tokensの上限に含まれます。思考プロセスが深くなるとテキスト出力のトークンが圧迫されます。レスポンスがstop_reason: "max_tokens"で途切れる場合はmax_tokensを増やすかeffortを下げてください。

回避策:コーディングや複雑な分析にはmax_tokens: 16000以上を設定する。実際の課金はresponse.usage.output_tokens_details.thinking_tokensで思考トークン数を確認できます。

失敗3:ツール使用時に思考ブロックを捨てる

マルチターン会話でツールを使う場合、前のターンの思考ブロック(thinkingブロック)をアシスタントメッセージに含めてAPIに戻す必要があります。Adaptive Thinkingモードではこの制約が緩和されていますが、一貫性のためにレスポンスをそのままmessagesに追加することが安全です。

# 正しい方法:response.contentをそのまま追加
messages.append({"role": "assistant", "content": response.content})

# 間違い:テキストブロックだけ抜き出す
# messages.append({"role": "assistant", "content": response.content[0].text})  # NG

コスト最適化:Sonnet 4.6を安く使うための設計指針

$3/$15 per MTokというSonnet 4.6の価格は、Opus系($5/$25)より40%安くなります。さらにコストを最適化するには以下の3点が効果的です。

  1. effortの使い分け:ルーティング判断や短文要約はeffort: "low"、コードレビューや複雑な設計はeffort: "high"に分ける。同じモデルで用途別に最適化できます。
  2. プロンプトキャッシュの活用:システムプロンプトや長いコンテキストにcache_control: {type: "ephemeral"}を付与すると、2回目以降は入力トークンコストが最大90%削減されます。Adaptive Thinkingでも同じ思考モードを使い続ければキャッシュが有効です。
  3. マルチエージェント構成でのモデル分担:複雑な計画・推論タスクはSonnet 4.6、単純な文書変換やフォーマット整形はHaiku 4.5($1/$5)に振り分けることで全体コストを下げられます。

参考・出典

まとめ:今日から始める3つのアクション

  1. 今日:即効コード1を自分の環境にコピーしてclaude-sonnet-4-6で動かす。Adaptive Thinkingを実感する。
  2. 今週中:既存のbudget_tokens指定をthinking: {type: "adaptive"}に移行し、effortパラメータで思考深度をチューニングする。
  3. 今月中:マルチターンエージェントループにSonnet 4.6を組み込み、SWE-benchレベルのコーディングタスクを自動化する。Haiku 4.5との組み合わせでコストを最適化する。

あわせて読みたい:

AIgent Lab編集部

この記事を読んで導入イメージが固まってきた方へ

UravationではAIエージェント導入の研修・コンサルを行っています。

Need help moving from reading to rollout?

この記事を読んで導入イメージが固まってきた方へ

Uravationでは、AIエージェントの要件整理、PoC設計、社内導入、研修まで一気通貫で支援しています。

この記事をシェア

X Facebook LINE

※ 本記事の情報は2026年6月時点のものです。サービスの料金・仕様は変更される可能性があります。最新情報は各サービスの公式サイトをご確認ください。

関連記事