Claude Architect · レッスン

固定パイプラインと適応的な分解

既知の手順にはプロンプトチェーン、自由度の高い課題には適応的な分解を使います

レッスン 1/413 ステップ

「固定パイプラインと適応的な分解」はCoddyKit上の無料Claude Architectレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはClaude Architect学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Claude Architectコースには全4レッスンが含まれています。

作業を分解する2つの方法

1つのプロンプトでは大きすぎるタスクは、分解して処理します。基本的な戦略は2つあり、適切なものを選ぶことは、アーキテクチャ設計における重要なスキルです。

  • 固定パイプライン(prompt chaining):既知のステップを決まった順序でハードコードします。ステップ1の結果をステップ2に渡し、さらにステップ3へ渡します。
  • 適応的分解:モデルが発見した内容に基づいて次の処理を決め、目標を達成するまでループします。

目安は次のとおりです。既知の順次ステップには固定パイプライン、自由度の高い調査には適応的分解を使います。このレッスンでは、その判断基準を明確にします。

固定パイプライン = Prompt Chaining

固定パイプラインとは、単なる prompt chaining です。独自のコードで、決定論的な一連の処理をオーケストレーションします。ステップを事前に把握しているため、明示的に接続できます。各呼び出しは1つの集中した作業を行い、その出力が次の呼び出しの入力になります。

順序を制御できるため、フローは予測しやすく、デバッグしやすく、理解するためのコストも低くなります。次に何を行うかをモデルが分岐させることはなく、各ステップ内の作業だけを実行します。

# Fixed pipeline: extract -> classify -> summarize
from anthropic import Anthropic
client = Anthropic()

def step(system, user):
    r = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=1024,
        system=system,
        messages=[{"role": "user", "content": user}],
    )
    return r.content[0].text

entities = step("Extract entities as JSON.", document)
category = step("Classify this record.", entities)
summary  = step("Write a one-line summary.", category)

固定パイプラインが適している場合

作業の形が安定していて既知の場合は、固定パイプラインを選びます。

  • 毎回同じステップを実行する(抽出してから検証し、その後フォーマットするなど)。
  • 順序が重要で、ほとんど変わらない。
  • コスト、レイテンシ、デバッグのしやすさを予測可能にしたい。
  • 各段階の責任が明確で限定されている。

典型例は、構造化データの抽出です。フィールドを抽出し、検証と再試行の処理を行い、その後に出典情報を付与します。常にこの3つをこの順序で行うため、チェーンにします。

適応的分解 = モデル主導

適応的分解では、計画をモデルに委ねます。ツールと目標を与えると、モデルは結果を調べて次のアクションを選択します。これがエージェント型のループです。リクエストを送信し、stop_reason を確認し、それが tool_use ならツールを実行して結果を履歴に追加し、end_turn になるまで繰り返します。

事前に経路を把握できないため、処理経路をあらかじめ配線することはできません。経路は各ステップで明らかになる内容に依存します。

# Adaptive: the model decides which tool to call next
while True:
    resp = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=2048,
        tools=tools,
        messages=messages,
    )
    if resp.stop_reason == "tool_use":
        results = run_tools(resp)          # execute requested tools
        messages.append({"role": "assistant", "content": resp.content})
        messages.append({"role": "user", "content": results})
        continue
    break  # terminate on stop_reason, never by parsing text

適応的分解が適している場合

事前に経路を把握できない自由度の高い調査には、適応的分解を選びます。

  • 曖昧な症状からのデバッグ。見つかった内容に基づいて grep、読み取り、使用箇所の grep を行います。
  • 追加のクエリが以前の回答に依存する、複数ソースにまたがる調査。
  • 検索結果に応じて次のアクションが変わるカスタマーサポート。

ここでは分岐そのものが作業です。固定的なパイプラインでは、経路を見落とすか、保守できない条件分岐が爆発的に増えてしまいます。

テキストではなく stop_reason で終了する

試験で最もよくある適応型ループの間違いは、モデルのテキストを調べて「done」や「finished」などの単語が出たらループを終了することです。これはしないでください。判断はモデル主導で行い、API の stop_reason で終了します。

stop_reason が end_turn になるとループは終了します。tool_use の間は処理を続けます。反復回数の上限は安全策にすぎません。主な終了条件にしてはいけません。ハードコードした制御は、作業が概念的に完了したかを判断するためではなく、保証が必要な場合に限定して使います。

# WRONG: parsing text for completion
if "done" in resp.content[0].text.lower():
    break

# RIGHT: drive on stop_reason; cap is only a safety net
MAX_STEPS = 25
for _ in range(MAX_STEPS):
    resp = client.messages.create(...)
    if resp.stop_reason != "tool_use":
        break  # end_turn / max_tokens / stop_sequence

ハイブリッド:適応的ステージを含むパイプライン

実際のシステムでは、両方を組み合わせます。外側のフローは固定されたパイプラインであることが多い一方、1つのステージだけ適応型のエージェントループになる場合があります。これにより、マクロレベルではチェイニングの予測可能性を保ちつつ、本当に必要な部分では柔軟性を得られます。

例として、抽出パイプラインの中央ステージに、適応型の「曖昧さを解消する」エージェントを置く構成があります。このエージェントは、回数を事前に決めずに検索ツールを呼び出す可能性があります。その前後を、決定論的な検証・フォーマット処理のステージで囲みます。

# Outer = fixed chain; one stage = adaptive loop
raw      = extract_stage(document)        # fixed
resolved = adaptive_resolver(raw)         # agentic loop inside
final    = validate_and_format(resolved)  # fixed

マルチパスコードレビュー:分解方法の選択

分解は、パイプラインとループのどちらを選ぶかだけの話ではありません。モデルの注意力を守るために、タスクをどのように分割するかも重要です。複数ファイルのコードレビューがその典型です。

多くのファイルを1回でレビューすると、注意が分散し、ファイル単位のバグと統合上の問題の両方を見逃します。解決策は、意図的に分解することです。まずファイルごとのローカルパスを実行し、その後に独立したファイル横断の統合パスを実行します。焦点の定まった2回のパスは、焦点の定まらない1回のパスに勝ります。

# Decompose review into focused passes
for f in changed_files:
    review_local(f)          # pass 1: per-file, focused

review_cross_file(changed_files)  # pass 2: integration concerns

コーディネーターによる適応的な分解

ハブアンドスポーク型のマルチエージェントシステムでは、コーディネーターが目標を分解し、サブエージェントに委任してから結果を集約します。これはオーケストレーション層での適応的な分解です。コーディネーターがリクエストに応じて分割方法を決めます。

重要なのは、サブエージェントがコーディネーターの会話履歴を引き継がないことです。各サブエージェントのプロンプトには、完全なコンテキストを明示的に含める必要があります。1つのレスポンス内にある複数のTask呼び出しは並列に実行されます。サブ問題が独立している場合に便利です。

# Coordinator delegates with explicit, self-contained context
subagent_prompt = f"""You are researching ONE sub-topic.
Context (do not assume shared history):
  Goal: {goal}
  Sub-topic: {subtopic}
  Constraints: {constraints}
Return findings with source citations."""

セッション:再開、分岐、または新規開始

適応的な作業は、複数のセッションにまたがることがよくあります。Claude Code では、名前付きセッションを続行する--resume <name>と、共有地点から分岐して並行して別の案を試すfork_sessionを利用できます。

ただし注意が必要です。コードベースが変更されていると、再開したセッションのツール結果が古くなっている可能性があります。場合によっては、構造化された要約を初期情報として与えた新規セッションのほうが、再開より優れています。古いツール出力を引きずらずに、現在の状態と整理されたコンテキストを得られるためです。

# Continue a named session
claude --resume refactor-auth

# Branch to explore an alternative path
# fork_session creates a sibling from the shared point

# When code moved on, prefer a fresh session + summary
claude -p "Here is a structured summary of prior work: ..."

判断用チェックリスト

構築する前に、次の点を確認してください。

  • 手順を事前に、固定された順序で把握していますか。 -> 固定パイプライン / プロンプトチェイニング。
  • 次のステップは、それまでのステップで明らかになった内容に依存しますか。 -> 適応型エージェントループ。
  • ほとんどは固定されていますが、不確実なステージが1つありますか。 -> ハイブリッド:外側のフローをチェーン化し、適応型ループを組み込みます。
  • 多くのファイルをレビューしますか。 -> ファイルごとのパス、続いてファイル横断のパスに分解します。

そして常に、適応型ループはstop_reasonで終了させ、反復回数の上限は安全策としてのみ使用してください。

クイックチェック

分解戦略の選択を、シナリオに基づいて判断します。

まとめ

重要なポイント:

  • 既知の順序付けられた手順には、固定パイプライン(プロンプトチェイニング)を使います。予測しやすく、デバッグしやすく、低コストです。
  • 次のステップが発見した内容に依存する、答えの決まっていない調査には適応的な分解を使います。
  • ハイブリッドは一般的な構成です。固定された外側のフローに、適応型ステージを組み込みます。
  • 適応型ループは必ずstop_reason(end_turn)で終了させてください。反復回数の上限は安全策であり、主な停止条件ではありません。「done」というテキストを解析してはいけません。
  • 複数ファイルのレビューでは、ファイルごとのパスの後に、独立したファイル横断のパスを実行します。
  • サブエージェントは履歴を引き継ぎません。コンテキストを明示的に渡してください。セッションの再開は慎重に行い、構造化された要約を与えた新規セッションのほうが、古い再開セッションのツール結果より優れる場合があります。
無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
26
レッスン
104

よくある質問

「固定パイプラインと適応的な分解」レッスンは無料ですか?

はい。「固定パイプラインと適応的な分解」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Claude Architectコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Claude Architectコースには全4レッスンが含まれています。

「固定パイプラインと適応的な分解」で何を学びますか?

既知の手順にはプロンプトチェーン、自由度の高い課題には適応的な分解を使います ブラウザで直接実行するハンズオンコードでClaude Architectを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Claude Architectを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのClaude Architectは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「固定パイプラインと適応的な分解」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このClaude Architectレッスンでコードを書いて実行できますか?

はい。すべてのClaude Architectレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 固定パイプラインと適応的な分解
  2. 複数パスによる分解
  3. セッション管理
  4. 古いコンテキストと新規開始
← Claude Architectに戻る