Library 與 Framework(函式庫與框架)
又稱:函式庫 · library · framework · 框架 · 套件庫 · 第三方庫
函式庫是你去呼叫它;框架是它來呼叫你。
你會在什麼時候遇到它
挑 AI 工具時你會一直看到「用 LangChain 這類框架」跟「直接呼叫 API」的爭論。分不清兩者,你就無法判斷一個工具到底留給你多少控制權 —— 而控制權正是出錯時你查不查得到原因的分水嶺。
打個比方
函式庫像五金行:你自己去買螺絲起子,決定什麼時候用、用在哪。框架像組裝線:它規定流程,你只負責在指定位置放上零件。組裝線快,但卡住時你很難插手。
最小範例
函式庫(你主導):
import requests
r = requests.post(url, json=payload) # 你決定什麼時候發、發什麼
text = r.json()["choices"][0]["message"]["content"]
# 之後每一步也都是你寫的
框架(它主導):
agent = create_react_agent(llm, tools, prompt)
agent.invoke({"messages": [...]}) # 之後的迴圈由框架跑
# 它自己決定何時呼叫模型、何時呼叫工具、何時停判斷訣竅是看「迴圈在誰手上」。你的程式碼裡有一個 while 迴圈在呼叫模型,那是用函式庫;你只呼叫一次 invoke、裡面自己轉個不停,那是框架。LangChain、LlamaIndex 屬於後者,requests、openai 這類客戶端套件屬於前者。
最常搞錯的地方
- 以為框架「比較高級」所以新手該用。恰恰相反:框架把細節藏起來,出錯時你連問題出在哪一層都看不見。先用函式庫把同一件事跑通一次,你才會知道框架幫你做的是哪些事。
- 把「框架」跟 agent 的「harness」當同一個詞用。框架(LangChain 這類)是給你蓋 harness 的零件庫;harness 是蓋出來、實際在跑、負責組上下文與執行工具的那個東西。