iT邦幫忙

2025 iThome 鐵人賽

DAY 7
1
生成式 AI

用 Node.js 打造生成式 AI 應用:從 Prompt 到 Agent 開發實戰系列 第 7

Day 07 - 認識 LangChain:打造生成式 AI 應用的 LLM 框架

  • 分享至 

  • xImage
  •  

昨天我們介紹了如何運用 Function Calling,讓模型能夠執行外部功能,進一步擴展聊天機器人的能力。不過,隨著功能持續擴充,程式碼的維護難度也隨之增加。例如:提示字串散落各處、流程控制愈加複雜,以及不同工具間的整合變得更加棘手。

這正是我們要著手解決的挑戰。接下來,我們將進入 LangChain 的主題,帶大家認識這個 LLM 框架的核心定位,瞭解它如何協助我們克服開發上的各種難題,以及我們選擇 LangChain 作為後續開發基礎工具的原因。

為什麼只靠 OpenAI API 不夠?

如果你只是想開發一個「輸入一句話、模型回一句話」的簡單聊天機器人,直接使用 OpenAI API 就很夠用。但當我們的應用開始變得更複雜,例如需要以下功能情境:

  • 多步驟任務流程:能夠依序執行多個動作,例如先翻譯文字,再進行摘要。
  • 上下文記憶:模型能記住使用者過去的對話內容,並延續上下文回應。
  • 工具自動選擇:根據使用者提問,自動選擇合適的工具來查詢資料或執行功能。
  • 外部資料整合:可串接文件、資料庫或向量查詢系統等外部資料來源。

你會很快發現,僅靠 OpenAI API 開發,邏輯管理會變得越來越棘手。每次呼叫模型前,我們必須自行組合提示字串、維護訊息歷史、處理條件分支、控制執行順序。這些工作不僅重複且容易出錯,隨著功能擴充,維護成本也會不斷攀升。

換句話說,OpenAI API 提供的是「模型能力」,但不提供「開發架構」。當我們想打造一個具備邏輯、記憶、互動能力的 AI 應用時,就需要一個能夠組織流程、管理模組的框架。這正是 LangChain 等 LLM 開發框架存在的意義:它幫助開發這把大型語言模型變成一個真正可組裝、可擴充的應用元件,而不只是單一回應器。

LLM 應用需要哪些工程能力?

要讓大型語言模型從「能回答問題」進化到「能完成任務」,中間必須補上大量工程設計。模型本身只負責生成文字,但真正的應用程式還需要整合資料、處理複雜邏輯、記憶上下文、管理工具,甚至要能組合出完整且流暢的使用流程。

以下是開發 LLM 應用時常見的挑戰與對應工程需求:

工程需求 常見問題描述 開發者需要的能力
Prompt 管理 不同任務、角色的提示詞需要切換與參數化,難以維護。 可參數化且易於維護的提示模板機制。
對話記憶與上下文 模型預設不會記住使用者過去的提問,長對話中容易失去脈絡。 自動化記憶管理與上下文擴充能力。
多步驟任務流程 像「先查資料、再分析、最後回答」這類邏輯需手動拼接 API 呼叫。 能組合多個模型呼叫的流程控制機制。
工具調用與動態決策 根據不同問題自動選擇工具或 API 來執行任務。 具備條件判斷與功能調用能力的 Agent 機制。
整合外部資料 模型需要查詢向量資料庫、SQL、JSON 文件等外部知識來源。 支援檔案載入、嵌入、查詢等 RAG 能力。
除錯與觀察 想追蹤模型怎麼處理每個步驟,但 console.log 不夠用。 能觀察輸入、輸出與中介狀態的除錯與監控工具。

這些挑戰並不是語言模型本身能解決的,而是屬於「應用開發層」必須處理的問題。這也是我們為什麼會需要一個「LLM 開發框架」的原因。它的目的,不是要取代模型,而是幫助你:

  • 開發方式模組化:提供可組裝、可測試、可維護的開發架構,讓應用程式更容易擴充與管理。
  • 提供常見的模組:支援提示模板、結構化輸出等常用功能模組,避免重新造輪子,提升開發效率。
  • 邏輯流程抽象化:可用結構化方式拆解並管理多步驟任務,讓複雜流程設計更清晰、易於串接。

LangChain 正是針對這些需求量身打造的框架。它讓你不必從零開始重寫每一段串接邏輯,而是能用結構化、模組化的方式,快速組裝出強大且可擴充的 LLM 應用。

LangChain 是什麼?為什麼選擇它?

LangChain 是一套開源的 LLM 開發框架,目的是協助開發者更有效率地建構、組合、擴充大型語言模型的應用邏輯。它不是新的模型,也不是單純封裝 OpenAI API 的 SDK,而是一套模組化工具,讓你能將 LLM 作為應用程式中的一個元件,靈活整合各種功能。

換句話說,LangChain 就像是大型語言模型的應用架構層:OpenAI 提供模型,LangChain 則幫你處理提示設計、記憶管理、工具調用等繁瑣的應用邏輯,讓整體流程更容易組裝、擴充與維護。

LangChain 的核心功能

LangChain 提供多項核心能力,主要包括:

  • Prompt 結構化與參數化:透過 PromptTemplate,可將提示詞模板化,將變數(如任務、輸入內容)抽離,提升重用性與維護性。
  • 多步驟流程組合:利用 Chain 或 LCEL(LangChain Expression Language),可將多個模型或處理步驟串接成有邏輯的執行流程,例如「查詢 → 整理 → 回答」。
  • 記憶與上下文管理:內建 Memory 機制,協助管理對話歷史,無需每次手動拼接訊息陣列,並支援進階記憶類型(如總結式記憶)。
  • 工具調用與決策流程Tool 模組可定義外部功能(如查天氣、查資料庫),搭配 Agent 動態決定何時使用哪些工具,賦予模型「自主選擇行動」的能力。
  • 整合外部知識資料:內建向量資料查詢(Retrieval)、文件分割(Text Splitter)、嵌入模型(Embedding Model)建立與向量資料庫(Vector Store)串接,是實作 RAG 系統的重要基礎。
  • 觀察與除錯:整合 LangSmith 工具,可觀察每個步驟的輸入與輸出,進行 Debug、追蹤與評估,大幅提升開發效率。

這些功能讓 LangChain 不僅僅是模型的包裝工具,更是打造完整 AI 應用系統的開發框架。

為什麼選擇 LangChain?

在眾多 LLM 框架中,我們選擇 LangChain 作為開發主軸,原因如下:

  • 功能完整,涵蓋多層應用:從 Prompt 管理、記憶系統,到工具調用、資料檢索、Agent 編排,LangChain 幾乎囊括 LLM 應用開發的所有需求,讓開發流程更順暢。
  • 模組化設計,彈性導入:可從最基礎的 PromptTemplateChatModel 起步,隨需求逐步擴充記憶、流程、工具等功能,降低學習與導入門檻。
  • 官方支援 JavaScript/TypeScriptLangChain.js 由官方維護,方便 Node.js 生態系的開發者整合前後端與 API,提升開發效率。
  • 活躍社群與豐富資源:穩定更新、詳細文件與大量範例,遇到問題容易找到解法,也能快速掌握新功能。

這些優勢讓 LangChain 成為 LLM 應用開發的熱門選擇,能靈活應用於各類場景。

LangChain 生態系:不只是框架,還有配套工具

LangChain 不僅是一個 LLM 應用開發框架,更是一個完整的生態系,涵蓋從開發、測試、部署到監控的全方位支援。這個生態系的設計目標,是讓開發者能有效率地開發、維護並擴展 LLM 應用,無論是簡單的聊天機器人,還是複雜的多 Agent 決策系統,都能找到合適的工具模組。

以下這張圖展示了 LangChain 生態系的主要組成:

https://ithelp.ithome.com.tw/upload/images/20250907/20150150BGNlNu4dhD.png
圖片來源:LangChain.js

這些元件大致可分為三個層級:基礎抽象、應用元件、開發工具,各自發揮不同功能:

@langchain/core:基礎抽象與流程語言

作為生態系的核心,@langchain/core 提供:

  • 標準化的 LLM 開發元件介面(如模型、提示詞、記憶、工具)。
  • LangChain Expression Language (LCEL):一種宣告式語法,讓你像拼積木一樣組合多個模組,快速建立複雜的處理流程。

這一層是所有 LangChain 應用的基礎,無論串接哪種模型或工具,都會依賴這個共通語言。

@langchain/community:第三方整合與擴充元件

這個套件收錄了大量外部整合元件,包括:

  • 多元模型供應商:如 OpenAI、Anthropic、Cohere、Azure 等,支援主流 LLM 平台。
  • 多樣化擴充元件:涵蓋搜尋、計算、API 呼叫等功能,靈活擴展應用場景。
  • 儲存與檢索整合:支援各式向量資料庫及文件載入器,強化資料管理能力。

此外,部分熱門整合(如 @langchain/openai@langchain/anthropic)被拆分為獨立套件,僅依賴 @langchain/core,讓開發者能更輕量、彈性地導入所需功能。

langchain:應用邏輯組裝層

這個套件整合了 Chain、Agent、Retriever 等常見應用邏輯,讓開發者能快速組裝對話流程、多步驟處理、檢索式問答等各類 LLM 應用。作為 LangChain 的應用層,它大幅簡化複雜邏輯的實作,協助開發者快速完成產品邏輯。

LangGraph:圖形化流程控制

LangGraph 是專為 LLM 應用設計的流程控制工具,開發者可透過「節點與邊」的圖形化方式,直觀定義應用邏輯流程。相較於傳統條件控制,這種設計更易於組合、追蹤與擴充,特別適合多 Agent 協作及多輪決策等複雜場景。LangGraph 與 LangChain 可無縫整合,並支援 LCEL 語法定義節點邏輯,讓流程設計更加靈活高效。

LangSmith:除錯、測試與品質監控平台

LangSmith 是由 LangChain 團隊打造的開發平台,能協助開發者全面追蹤每一次模型呼叫的輸入輸出、工具調用過程、錯誤紀錄與執行時間,同時支援 Prompt 與回應的版本控管與比對、測試資料集建立及自動對比不同版本表現。這些功能讓團隊在部署正式環境或建立可測試流程時,能有效掌握品質與效能,是 LLM 應用開發流程中的重要利器。

小結

今天我們從 LLM 應用開發的實務痛點切入,認識了 LangChain 這套專為大型語言模型打造的開源框架,如何為我們提供建構完整 AI 應用架構的全方位解決方案:

  • 隨著 AI 應用功能擴充,僅靠 OpenAI API 難以處理多步驟任務、上下文記憶、工具自動選擇及外部資料整合等挑戰。
  • LLM 應用開發需要工程能力,包括提示詞管理、記憶系統、流程控制、工具調用、資料整合及除錯監控,這些都不是模型本身能解決的。
  • LangChain 提供結構化提示、流程組合、記憶管理、工具調用、外部資料串接及除錯監控等核心功能,並有完整生態系(如 LangGraph、LangSmith)支援開發全流程。
  • 其模組化設計、官方 JS/TS 支援、活躍社群與豐富資源,讓開發者能快速組裝、擴充並維護各類 LLM 應用,成為主流選擇。

接下來,我們將實際操作,帶你用 LangChain 打造第一個 LLM 應用,親自體驗它的開發模式與運作邏輯!


上一篇
Day 06 - 函式呼叫實作:運用 Function Calling 擴充 AI 能力
下一篇
Day 08 - LangChain 快速上手:從零開始建立 LLM 應用程式
系列文
用 Node.js 打造生成式 AI 應用:從 Prompt 到 Agent 開發實戰14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言