今天我們開始來寫程式串接 Serverless 部署的 Llama-3.1-8B-Instruct。今天先來介紹我們的主角 LangChain。
LangChain 是一個專為開發由大型語言模型應該開發而誕生的框架。其核心精神是希望開發人員能夠很容易製作 LLMs 應用,並且與外部資料無縫整合,進而實現任務。目前主要有 Python 版本和 JavaScript 版本,不過以生態系來說,目前還是 Python 比較完整。
LangChain 是一個社群驅動的開源框架,而且很尊重社群的意見反饋。
在 2024 年 1 月時,LangChain 推出了 0.1 版的相對穩定版本,一掃過去常常亂改 API 的陋習。其實這也是社群抱怨他們常常改 API ,讓人很難決定用 LangChain 做產品,他們才因此改進的。
到現在最新的 0.3 版,這一路上幾乎是無痛升級。除非你過度依賴了 Pydantic 的特性,才會在 0.3 版的升級比較痛苦。不過這是 Pydantic 的問題,不是 LangChain 的問題。
LangSmith 提供監控、回饋、評估等功能,讓開發者能更有效地追蹤應用的性能,並根據反饋進行調整或優化。這是收費服務,也是 LangChain 主要的商業模式。
LangServe 可以用於將 chains 作為 REST API 進行部署,這個是一個超強的工具。你只要開發好你的 chain,就可以簡單改寫並快速部署成 web API、讓你的平台來串接了!
這個模組提供了大量的第三方開源套件的整合,供開發者自由選擇和組合,以滿足不同的需求,例如檢索器、文檔加載器、向量存儲(Vector Store)等等。像我們接下來會用的 Azure ML 的串接,也是屬於這一區的。
新一代做 Agent 的套件,甚至可以用圖論(graph)的方式來做 Agent。
LangChain-Core 是最核心的地方,LCEL (LangChain Expression Language) 就放在這裡。其他會盡可能保持不變的 API ,也都會放在這一區裡面。
LangChain 的 API 開始穩定了之後,LangChain 目前只剩下一個問題了,就是過度封裝限制了開發人員的彈性。
舉例來說,LangChain 的 CSVLoader,其實是來自於 Python 的 CSV 套件。如果你用原生的 CSV 套件,可以做的參數和調整更多,但是 CSVLoader 卻不支援這麼多。
不過這也有解法,就是你在這裡要載資料時,用原生的 CSV 套件就好了。其他大語言應用的核心功能再來用 LangChain。
其實你要用年輕的框架,就是要考慮一些權衡。千萬別忘了,這波生成式 AI 大爆發,是在 2022 年 11 月底才開始的,也才一年半載而已。對於這麼有社群能量的一個框架,我是建議再多給一些時間、再讓子彈飛一會兒吧!
明天我們先來講虛擬環境安裝 LangChain 吧!