グラフがフラットなチェーンに勝る理由
実際のエージェントにはループ、再試行、条件分岐が必要です。DAGやグラフならチェーンでは表現できない処理を表現できます。
「グラフがフラットなチェーンに勝る理由」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
チェーンでは不十分な場合
LCELチェーンは、A -> B -> Cのような直線的なフローに適しています。しかし、次のような要件には対応しにくくなります:
- ループ(成功するまでリトライする)
- 条件分岐(状態に基づいてAまたはBを選択する)
- 人間参加型の一時停止
- 呼び出しをまたいだ永続的な状態
実際のエージェントはグラフです
エージェントは段階的に判断を下します。実際のエージェントは次のように動作します:
- 計画する
- 情報を検索する
- 見つかった場合は回答を作成し、見つからなければ再度検索する
- 検証する
- 無効なら修正し、有効なら返す
これは直線ではなく、グラフです。
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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- グラフがフラットなチェーンに勝る理由
- ノード、エッジ、状態
- 条件付きルーティングと分岐
- グラフ状態の永続化(チェックポイント)