0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【中級者向け】LangGraphで作るAIエージェント実践入門 ── 「考えて動くAI」を自分で組む

0
Posted at

2026年の技術トレンドの中心にあるのは、間違いなく 「AIエージェント」 です。

AIエージェントとは、LLMが単に質問に答えるだけでなく、自分で考え、必要なツールを使い、複数のステップを踏んで目的を達成する仕組みのことです。そして、このAIエージェントを構築するためのフレームワークとして最も広く使われているのが LangGraph です。

この記事では、LangGraphの基本概念を押さえつつ、実際に動くコードを使って「天気を調べて回答するエージェント」を作ってみます。


LangGraphとは?

LangGraph は、LangChainチームが開発した AIエージェント構築用のオーケストレーションフレームワーク です。2024年初頭にリリースされ、2025年10月に v1.0(GA) に到達しました。Uber、LinkedIn、Klarnaなどの企業が本番環境で採用しています。

LangChainとの関係を整理すると、こうなります。

LangChain LangGraph
役割 LLMとの接続・プロンプト管理 エージェントのワークフロー制御
設計思想 チェーン(直線的な処理の連鎖) グラフ(分岐・ループを含む処理)
向いている場面 RAGパイプラインなどの定型処理 状態に応じて動的に判断するエージェント

LangChainが「パーツ」の提供なら、LangGraphはそのパーツを 「どういう順番で、どう判断して動かすか」 を制御する役割です。


LangGraphの3つの基本概念

LangGraphを理解するうえで、押さえておくべき概念は3つだけです。

① State(状態)

エージェントが処理を進めるなかで持ち回るデータのことです。「今どういう状況か」を記録する辞書のようなものです。

from typing import Annotated, TypedDict
from langgraph.graph.message import add_messages

class AgentState(TypedDict):
    messages: Annotated[list, add_messages]

この例では messages(会話の履歴)を状態として保持しています。

② Node(ノード)

実際の処理を行う関数です。「LLMに問い合わせる」「ツールを実行する」といった各ステップが1つのノードになります。

③ Edge(エッジ)

ノード同士をつなぐ線です。「このノードが終わったら次はどのノードへ行くか」を定義します。条件分岐もエッジで表現します。

[LLM呼び出し] --ツールが必要→ [ツール実行] --結果を返す→ [LLM呼び出し]
              \--ツール不要→ [終了]

この 「ノードとエッジで構成されたグラフ」 がLangGraphの設計思想の核です。直線的なチェーンでは表現しにくい「LLMが自分で判断してループする」動きを、グラフ構造で自然に書けます。


実践:天気を調べるAIエージェントを作る

それでは、実際にLangGraphでエージェントを組んでみましょう。「天気を聞いたらツールで調べて答える」シンプルなエージェントです。

前提

pip install langgraph langchain-openai

Step 1:ツールを定義する

まず、エージェントが使えるツールを作ります。

from langchain_core.tools import tool

@tool
def get_weather(city: str) -> str:
    """指定された都市の天気を返す"""
    # 実際にはAPIを呼ぶが、ここではダミー
    weather_data = {
        "東京": "晴れ / 22°C",
        "大阪": "曇り / 19°C",
        "札幌": "雪 / -2°C",
    }
    return weather_data.get(city, f"{city}の天気情報は見つかりませんでした")

Step 2:LLMとツールを接続する

LLMにツールを使える能力を持たせます(Function Calling / Tool Use)。

from langchain_openai import ChatOpenAI

tools = [get_weather]
llm = ChatOpenAI(model="gpt-4o").bind_tools(tools)

Step 3:ノードを定義する

エージェントのグラフを構成する各処理を関数として書きます。

from langgraph.prebuilt import ToolNode

# ノード①:LLMに問い合わせる
def call_llm(state: AgentState):
    response = llm.invoke(state["messages"])
    return {"messages": [response]}

# ノード②:ツールを実行する
tool_node = ToolNode(tools)

Step 4:条件分岐を定義する

LLMの応答にツール呼び出しが含まれるかどうかで、次のステップを分岐させます。

def should_use_tool(state: AgentState) -> str:
    last_message = state["messages"][-1]
    if last_message.tool_calls:
        return "tools"    # ツール実行ノードへ
    return "end"          # 終了へ

Step 5:グラフを組み立てる

ノードとエッジを組み合わせてグラフを完成させます。

from langgraph.graph import StateGraph, END

# グラフを構築
graph = StateGraph(AgentState)

# ノードを追加
graph.add_node("llm", call_llm)
graph.add_node("tools", tool_node)

# エッジを定義
graph.set_entry_point("llm")
graph.add_conditional_edges("llm", should_use_tool, {
    "tools": "tools",
    "end": END,
})
graph.add_edge("tools", "llm")  # ツール実行後、LLMに戻る

# コンパイル
agent = graph.compile()

Step 6:実行する

from langchain_core.messages import HumanMessage

result = agent.invoke({
    "messages": [HumanMessage(content="東京の天気を教えて")]
})

print(result["messages"][-1].content)
# → 東京の天気は「晴れ / 22°C」です。

何が起きているのか

上のコードで実行されるフローはこうなっています:

ユーザー「東京の天気を教えて」
    ↓
[llm] LLMが「get_weatherツールを呼ぶべきだ」と判断
    ↓ (should_use_tool → "tools")
[tools] get_weather("東京") を実行 → "晴れ / 22°C"
    ↓
[llm] ツールの結果を元に自然言語で回答を生成
    ↓ (should_use_tool → "end")
[END] 「東京の天気は晴れ / 22°Cです。」

ポイントは、LLM自身が「ツールを使うべきか否か」を判断しているところです。単純なif文ではなく、LLMの推論によって処理フローが動的に変化します。これがAIエージェントの本質です。


RAG・MCP・Ollamaとの関係

LangGraphはこのシリーズで紹介してきた技術と自然に連携します。

技術 LangGraphとの関係
RAG 検索ツールをノードとして組み込み、知識に基づく回答を生成
MCP MCPサーバーをツールとして接続すれば、GitHub・Notionなどの外部操作が可能
Ollama ChatOllama に差し替えればローカルLLMでエージェントを動かせる

つまりLangGraphは、これらの技術を 「いつ・どの順番で・どう使うか」 をオーケストレーションする役割を果たします。


まとめ

キーワード 内容
LangGraph AIエージェントのワークフローを制御するフレームワーク
State エージェントが持ち回る状態データ
Node 各処理ステップ(LLM呼び出し、ツール実行など)
Edge ノード間の接続と条件分岐
v1.0 GA 2025年10月にリリース。本番環境で利用可能

LangGraphは「AIに考えさせて動かす」ための設計図を書くフレームワークです。まずは今回のような小さなエージェントから始めて、徐々にノードやツールを追加していくのがおすすめです。


参考:

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?