iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0
生成式 AI

AI咒術迴戰~LLM絕對領域展開系列 第 18

Day18-LangChain & LangGraph

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20250927/20163257huoaqTEa1U.jpg

1️⃣ LangChain 與 LangGraph 是什麼?

LangChain

  • 定位:一個幫助開發者快速構建LLM應用開源框架
  • 核心功能
    • 模型封裝(支援 OpenAI、Ollama、Claude、Gemini 等)
    • Prompt模板(方便維護提示詞)
    • Chains(把多個步驟組成流程)
    • Agents(讓 LLM 自主選擇工具並執行)
    • 記憶功能(儲存對話上下文)

LangGraph

  • 定位:LangChain官方推出可視化與圖狀流程框架,適合構建多Agent協作與有狀態LLM應用
  • 核心功能
    1. 流程圖(Graph)式思維
      用節點(Node)和邊(Edge)描述 LLM 流程
    2. 多Agent協作
      讓多個 AI 模型像團隊一樣互相傳遞訊息
    3. 狀態管理
      每個節點可維護上下文,讓流程可中斷、恢復、迭代
    4. 可視化工具
      幫助開發者用圖形化方式檢查流程

2️⃣ 中文圖解 — LangChain vs LangGraph

+----------------+        +----------------+
| LangChain      |        | LangGraph      |
+----------------+        +----------------+
| - Prompt 模板   |        | - 節點(Node)   |
| - 模型封裝      |        | - 邊(Edge)     |
| - Chains 流程   |        | - 狀態管理     |
| - Agents 工具   |        | - 多 Agent 協作 |
| - 記憶功能      |        | - 視覺化監控   |
+----------------+        +----------------+
      ↓                           ↓
  適合快速開發 LLM 應用     適合複雜、有狀態、多 Agent 的應用

LangGraph 概念圖(中文版)

[開始節點] → [Agent1:資料檢索]
       ↓
 [Agent2:資料分析]
       ↓
 [Agent3:產生最終回覆]

3️⃣ LangChain 基本程式碼範例

以下用 Python 展示一個最簡單的 LangChain 例子(串接 OpenAI GPT)

from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.chains import LLMChain
# 1. 初始化 LLM
llm = ChatOpenAI(model="gpt-4o", temperature=0)
# 2. 定義 Prompt 模板
prompt = ChatPromptTemplate.from_template("請用一句中文解釋 {topic}")
# 3. 建立 Chain
chain = LLMChain(llm=llm, prompt=prompt)
# 4. 執行
result = chain.run({"topic": "LangChain 的用途"})
print(result)

4️⃣ LangGraph 基本程式碼範例

以下示範一個兩個 Agent 協作的 LangGraph 流程(簡化版)

from langgraph.graph import StateGraph, START, END
from langchain_openai import ChatOpenAI
# 節點狀態
class State:
    def __init__(self):
        self.messages = []
# 節點:第一個 Agent
def node_agent1(state: State):
    llm = ChatOpenAI(model="gpt-4o-mini")
    reply = llm.invoke("請給我一個 AI 技術的例子")
    state.messages.append(f"Agent1: {reply.content}")
    return state
# 節點:第二個 Agent
def node_agent2(state: State):
    llm = ChatOpenAI(model="gpt-4o-mini")
    reply = llm.invoke(f"請用三句話解釋:{state.messages[-1]}")
    state.messages.append(f"Agent2: {reply.content}")
    return state
# 建立圖形流程
graph = StateGraph(State)
graph.add_node("agent1", node_agent1)
graph.add_node("agent2", node_agent2)

graph.add_edge(START, "agent1")
graph.add_edge("agent1", "agent2")
graph.add_edge("agent2", END)

# 執行流程
final_state = graph.run(State())
print("\n".join(final_state.messages))

5️⃣ 適用場景比較

特性 LangChain LangGraph
易用性 ⭐⭐⭐⭐(簡單上手) ⭐⭐⭐(需要理解狀態與流程圖)
多Agent 基本支援(Agents) 專門設計
狀態管理 簡單記憶(Memory) 強大的有狀態節點管理
視覺化
適合應用 Chatbot、知識檢索、API 串接 企業級多 Agent 系統、任務分工、自動化

6️⃣ 結論

  • LangChain → 像是 LLM 的「開發工具箱」
  • LangGraph → 像是 LLM 的「流程控制室」
  • 如果做單一任務的 AI 助手,用 LangChain 就好
  • 如果要做多步驟、多 Agent、可視化監控的 AI 系統,用 LangGraph 更好

上一篇
Day17 - Llama.cpp & Gemma.cpp
下一篇
Day19-Ollama
系列文
AI咒術迴戰~LLM絕對領域展開20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言