前言
在過去的十五年裡, 我從HTML5 的初探者成長為雲端原生(Cloud Native) 的實踐者, 最終步入通用人工智慧(Artificial General Intelligence,AGI)的時代進行探索。每個時代都有其獨特的技術特點和發展趨勢,而我始終堅信,無論時代如何變遷,將理論知識和技術應用緊密結合都是非常重要的。
在HTML5 時代,我見證了Web 技術的高速發展,它不僅改變了人們使用網際網路的習慣,也為後來的技術發展奠定了基礎。進入雲端原生時代後,我的研究領域擴充到了容器化、微服務、Serverless 等技術,這些技術極大地提高了軟體開發的效率和靈活性。如今,隨著通用人工智慧時代的到來,我見證了大型語言模型的崛起,它們在語言處理、影像辨識等領域展現出驚人的潛力。但與此同時,我也意識到,充分發揮這些大型語言模型的能力需要有效的應用程式開發框架來支援。LangChain 正是在這樣的背景下嶄露頭角的。
LangChain 是一個開放原始碼的大型語言模型應用程式開發框架,它不僅功能強大,而且易於學習和使用。在探索LangChain 的過程中,我深切地感受到,無論是前端開發者還是後端開發者,無論是否具備AI 專業知識,都可以透過LangChain 來開發自己的應用和產品。這激發了我透過架構圖繪製、影片講解和案例分享的方式,盡可能地將LangChain 的複雜概念和應用技巧簡化,從而將我學習到的知識和經驗傳播給更多的人的熱情。在這個過程中,我與社群成員們共同探討技術難題,交流心得。這種互動不僅使我能夠深入地理解LangChain,更重要的是,它讓我意識到知識傳播的價值。我希望透過我的努力,能夠幫助初學者和同行更進一步地理解和應用LangChain。
為了更進一步地向社群夥伴們傳遞LangChain 的最新技術和應用方法,我與兩位LangChain 同好——曹士圯、郭祖龍緊密合作,共同撰寫了本書。我們的目標是,基於LangChain 的核心理念和功能,為讀者提供全面、深入的學習路徑。在這個過程中,我們不僅會和大家一起探索LangChain 的開放原始碼穩定版本(0.1),也會著眼於整個LangChain 生態系統,對其進行多維度展示。
我們在書中特別強調了LangChain 的最新應用程式開發方式,例如LCEL。這種方式不僅代表了LangChain 技術的前端,也表現了我們對技術傳播和實用性的重視。我們致力於透過清晰的講解、實際的案例分析和易於理解的範例程式,幫助讀者深入理解LangChain 的工作原理和應用場景。
透過本書,我們希望能夠激發讀者對LangChain 的興趣,為他們提供可靠的學習資源。我們相信,無論是技術新手還是有經驗的開發者,都能從中獲得寶貴的知識和靈感,進而在自己的專案和研究中使用LangChain 開發出具有創新性和有效的解決方案。
在深入閱讀本書之前,這幾點建議可能會幫助您更進一步地理解和應用書中的內容。首先,本書假設您具備基本的Python 程式設計能力,以及在Linux或macOS 系統上進行軟體安裝的基礎知識。這些技能將幫助您更順暢地理解書中的範例程式和操作步驟。其次,我們建議您採取兩個階段的閱讀方法來深化對LangChain 的理解。
• 初步閱讀:在首次閱讀時,建議您整體瀏覽全書,了解LangChain 生態系統的基本概念和組成部分。特別是理解各個元件在LangChain 生態系統中的角色和功能。此時,可以初步瀏覽範例程式部分,無須深入。
• 深入閱讀:在第二次閱讀時,建議您結合範例程式深入理解LangChain的開發細節。您可以重點閱讀單獨介紹LCEL 語法和Runnable Sequence中可用元件的相關小節,以此來有效地熟悉和掌握LangChain 推薦的思維鏈撰寫方式。書中所有的範例程式都可以運行,您可以從GitHub 程式庫中獲取並進行實際操作,以加深理解。
本書共分為9 章,每章圍繞LangChain 的不同方面展開,旨在提供全面而深入的指導。
「第1 章 LangChain 生態系統概覽」是必讀內容, 為讀者全面介紹LangChain 生態系統的版面配置,並且透過解析一個官方的生產級應用ChatLangChain,幫助讀者初步認識LangChain 生態系統。
「第2 章 環境準備」對讀者隨閱讀進行程式的撰寫來說非常關鍵,這一章的重點是Ollama 的使用和llama2-chinese 模型的部署。
第3 章到第6 章結合具體的應用場景,深入講解LangChain 的核心模組。同時,會詳細介紹LCEL 語法和Runnable Sequence 中可用的Runnable 組件。在實際撰寫程式前,建議重點閱讀這幾章。
「第3 章 角色扮演寫作實戰」引入並講解Model I/O 三元組的概念和應用。
「第4 章 多媒體資源的摘要實戰」探討如何使用LangChain 載入、處理多媒體資源中的文字內容。
「第5 章 文件導向的對話機器人實戰」深入講解Retriever 模組的機制和應用,同時解析檢索增強生成(Retrieval Augmented Generation,RAG)的流程及其關鍵元件。
「第6 章 自然語言交流的搜尋引擎實戰」詳述如何利用Agent 和思維鏈建構自然語言處理的搜尋引擎,並且介紹了Callback 模組的功能。
「第7 章 快速建構互動式LangChain 應用原型」介紹如何將思維鏈快速轉化為本地和雲端應用,特別介紹了如何使用Streamlit 和Chainlit 框架在雲端快速發佈原型。
「第8 章 使用生態工具加速LangChain 應用程式開發」深入講解3 個關鍵的生態工具——LangSmith、LangServe 和Templates&CLI。
• LangSmith: 詳細介紹LangSmith 的功能和如何使用LangSmith 監控LangChain 應用。
• LangServe:詳細介紹如何將LangChain 應用部署至API,提高應用的可存取性和性能。
• Templates&CLI:詳細介紹如何使用應用範本和命令列介面快速啟動LangChain 專案。
「第9 章 我們的 大世界」展望更廣闊的大型語言模型應用程式開發領域。本章不僅分析和比較了LangChain、LlamaIndex、AutoGen 框架,還探討了基於LangChain Hub 的各種應用場景和通用人工智慧的認知架構的發展。
• 大型語言模型應用程式開發框架的「你我他」:分析和比較三大框架的特點和應用場景。
• 從LangChain Hub 看提示詞的豐富應用場景:基於LangChain Hub,總結熱門提示詞領域及其豐富的應用場景。
• 淺談通用人工智慧的認知架構的發展:討論通用人工智慧的認知架構概念,以及其在開放原始碼和閉源發展中的現狀和趨勢。
本書中所有的範例程式及其參考資料都可以從GitHub 程式庫中獲取。
感謝支援和幫助我們的家人們,是他們的理解和包容,才讓本書得以完成。在我們疲憊或灰心時,是家人們的關懷支持著我們繼續前行。
同時,我們也要感謝電子工業出版社的孫學瑛老師。她專業的指導幫助我們邏輯清晰地組織了本書的內容,使本書更加易讀好用。她嚴謹的工作態度和敬業精神,也激勵著我們不斷完善作品。
LangChain 是一個非常有前途和影響力的框架,它的快速發展讓所有參與者都對它充滿熱情和期待。然而,任何新事物在發展過程中都難免遇到困難。作為早期檢視者,我們的能力和經驗有限,在內容創作上也會不可避免地存在一些缺陷。如果各位讀者發現內容中有任何錯誤或不足之處,請您提出寶貴意見,我們會虛心接受、認真改進。
最後,我們由衷地感謝所有的讀者,您的支持就是我們最大的動力。我們衷心希望本書能成為您的有益工具。透過本書,我們也希望能夠幫助更多的開發者和技術同好走在技術的前端,探索和創造更多的可能。
張海立
2024 年3 月