0Pricing
AI Agents · レッスン

グラフがフラットなチェーンに勝る理由

実際のエージェントにはループ、再試行、条件分岐が必要です。DAGやグラフならチェーンでは表現できない処理を表現できます。

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

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

チェーンでは不十分な場合

LCELチェーンは、A -> B -> Cのような直線的なフローに適しています。しかし、次のような要件には対応しにくくなります:

  • ループ(成功するまでリトライする)
  • 条件分岐(状態に基づいてAまたはBを選択する)
  • 人間参加型の一時停止
  • 呼び出しをまたいだ永続的な状態

実際のエージェントはグラフです

エージェントは段階的に判断を下します。実際のエージェントは次のように動作します:

  1. 計画する
  2. 情報を検索する
  3. 見つかった場合は回答を作成し、見つからなければ再度検索する
  4. 検証する
  5. 無効なら修正し、有効なら返す

これは直線ではなく、グラフです。

LangGraphの紹介

LangChainチームが開発したLangGraphを使うと、エージェントをグラフとして定義できます:

  • ノード — 状態を読み取り、更新する関数
  • エッジ — 次に実行するノード
  • 状態 — 共有される永続的なdict

Nodes Are Just Functions

from langgraph.graph import StateGraph

class AgentState(TypedDict):
    messages: list
    plan: str
    answer: str

def plan_step(state: AgentState) -> AgentState:
    plan = generate_plan(state['messages'])
    return {'plan': plan}

Edges Connect Nodes

from langgraph.graph import StateGraph, END

graph = StateGraph(AgentState)
graph.add_node('plan', plan_step)
graph.add_node('search', search_step)
graph.add_node('answer', answer_step)

graph.set_entry_point('plan')
graph.add_edge('plan', 'search')
graph.add_edge('search', 'answer')
graph.add_edge('answer', END)

app = graph.compile()

Running the Graph

result = app.invoke({'messages': [{'role': 'user', 'content': 'What is RAG?'}]})
print(result['answer'])

状態の更新はマージされます

ノードが部分的なdictを返すと、LangGraphはそれを状態にマージします。各ステップで状態全体を記述する必要はありません。

条件分岐

状態に基づいてルーティングするには、add_conditional_edgesを使用します:

def needs_more_info(state):
    if state['confidence'] < 0.7:
        return 'search'
    return 'answer'

graph.add_conditional_edges('plan', needs_more_info, {
    'search': 'search',
    'answer': 'answer'
})

Loops Are Just Edges Back

graph.add_edge('search', 'plan')   # loop back to planner
# The planner decides if more search is needed.

可視化

LangGraphはグラフのMermaid図を生成します。構造のデバッグに便利です:

from IPython.display import Image
Image(app.get_graph().draw_mermaid_png())

自前のwhileループとの比較

これはPythonのwhileループでも実装できます。LangGraphには次の機能が追加されます:

  • 明示的なグラフ構造(可視化可能)
  • 組み込みのチェックポイント機能
  • 状態更新のストリーミング
  • 人間参加型処理のプリミティブ

LangGraphとLCEL

ノードにはLCELチェーンを含む任意のcallableを指定できます。自由に組み合わせられます:

summarise_chain = prompt | model | parser

def summarise_node(state):
    return {'summary': summarise_chain.invoke(state['text'])}

グラフを使うタイミング

単純なLCELチェーンよりもLangGraphを使うメリットが最も大きいのは、どのようなシナリオですか?

まとめ

ループ、分岐、永続化、人間参加型処理が必要なら、チェーンよりもグラフが適しています。LangGraphがその構造を提供します。

よくある質問

「グラフがフラットなチェーンに勝る理由」レッスンは無料ですか?

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

「グラフがフラットなチェーンに勝る理由」で何を学びますか?

実際のエージェントにはループ、再試行、条件分岐が必要です。DAGやグラフならチェーンでは表現できない処理を表現できます。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Agentsを始めるのに経験は必要ですか?

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

「グラフがフラットなチェーンに勝る理由」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. グラフがフラットなチェーンに勝る理由
  2. ノード、エッジ、状態
  3. 条件付きルーティングと分岐
  4. グラフ状態の永続化(チェックポイント)
← AI Agentsに戻る