本文原創,著作權歸 WGrape(https://wgrape.github.io/) 所有,未經授權,嚴禁轉載
一. 前言
隨著GPT模型的問世,大語言模型(LLM)時代已經來臨。LLM的出現,使得人工智能在語言處理方面的能力得到了極大的提升。Langchain作為一個面向后端開發者的框架,旨在幫助開發者快速上手并利用LLM開發出強大的應用程序。本教程將為您提供一份全面的指南,幫助您快速掌握Langchain的使用方法!
二. 基礎介紹
1. 什么是Langchain
Langchain是一個基于大語言模型的應用開發框架,隨著社區的快速長大,它現在已不僅僅是一個開發框架,更多的是一個LLM應用的基建工程,提供從開發到上線整個閉環流程的全程支持。
最全面又最淺顯易懂的Langchain快速上手教程(上)-1.jpg (13.36 KB, 下載次數: 11)
下載附件
2024-8-21 23:53 上傳
所以當提到Langchain的時候,需要知道它起初只是一個比較簡單的LLM應用開發框架,只是后來社區長大后,出現了一系列Langchain命名的項目,它們共同組成了現在的Langchain社區。
2. Langchain的核心組成
(1) 四大部分
Langchain作為一個LLM應用的基建工程,整體是非常龐大的,從底向上主要分為四個部分
- LangChain Lib 庫 :主要包括core/community/experimental等Python庫,源碼位置 langchain-ai/langchain/libs/
- LangChain Template 模板庫 :主要包括各種可參考和借鑒的LLM生產級別應用,源碼位置 langchain-ai/langchain/templates
- LangServe REST服務支持 :主要用于將LLM應用部署為REST服務,源碼位置 langchain-ai/langserve
- LangSmith 開發者平臺 :主要包括LL應用從開發、測試、部署、運維于一體的Devops平臺
最全面又最淺顯易懂的Langchain快速上手教程(上)-2.jpg (152.58 KB, 下載次數: 10)
下載附件
2024-8-21 23:53 上傳
(2) LangChain Lib結構
LangChain Lib從底向上主要包括LangChain-Core/LangChain-Community/LangChain(本身)三大部分
- LangChain-Core :LangChain-Core是整個LangChain生態的抽象,比如LangChain Expression Language(LCEL)language models, document loaders, embedding models, vectorstores, retrievers等模塊的抽象,源碼位置 langchain-ai/langchain/libs/core
- LangChain-Community :LangChain-Community是對Core層抽象的實現,比如對LangChain Expression Language(LCEL)language models, document loaders, embedding models, vectorstores, retrievers等模塊抽象的實現,源碼位置 langchain-ai/langchain/libs/community
- LangChain :對LangChain-Community部分進行整合和適配,就構成了LangChain這個單一項目。只通過這一個LangChain項目就可以快速構建LLM應用了,它主要由LLMs and Prompts, Chains, Data Augmented Generation, Agents, Memory組成。源碼位置 langchain-ai/langchain/libs/langchain
最全面又最淺顯易懂的Langchain快速上手教程(上)-3.jpg (31.03 KB, 下載次數: 9)
下載附件
2024-8-21 23:53 上傳
(3) 其他部分
這里會簡單概述下LangChain Template、LangServe和LangSmith模塊的應用場景。
- LangSmith :當一個LLM應用越來越復雜的同時,伴隨著的底層實現也越來越復雜。比如越來越多的Chain、Agent等模塊之間的調用也更加復雜化,這時Debug的關鍵性就會顯現出來,這就是LangSmith出現的原因。它雖然不是必須使用的產品,但是絕對會幫助并提高工作的效率。
3. Langchain Lib中的Langchain
在上文的《LangChain Lib結構》中已介紹了Langchain Lib主要由三層組成,所以了解這個架構設計會對后面的理解非常有幫助。無論官方提供的功能操作有多少,多”混亂“,我們也可以時刻找到正確的方向。
最全面又最淺顯易懂的Langchain快速上手教程(上)-4.jpg (23.15 KB, 下載次數: 11)
下載附件
2024-8-21 23:53 上傳
本文會主要講解Langchain Lib部分,所以后面提到的Langchain單詞,需要明確知道它不是指一個龐大的Langchain體系,而是特指Langchain Lib中的Langchain,或者代指整個Langchain Lib部分。
為了更簡單的理解,甚至可以把Langchain和Langchain Lib作等同的理解,二者在理解上其實沒有太大的區別。
4. 關于安裝
可以選擇使用一鍵式多環境管理sparrow服務中已經集成的Langchain環境
(1) 安裝Langchain
使用如下命令即可快速安裝Langchain。通過python -m site命令查看langchain的安裝目錄,就會發現它就是上面提到Langchain源碼 langchain-ai/langchain/libs/langchain。
pip install langchain
最全面又最淺顯易懂的Langchain快速上手教程(上)-5.jpg (39.9 KB, 下載次數: 8)
下載附件
2024-8-21 23:53 上傳
所以在官網中可以看到,使用下面源碼安裝的方式也可以同樣成功安裝Langchain。
最全面又最淺顯易懂的Langchain快速上手教程(上)-6.jpg (37.31 KB, 下載次數: 14)
下載附件
2024-8-21 23:53 上傳
(2) 安裝Langchain-Community
從上文《LangChain Lib結構》可知Langchain是對Langchain-Community的整合和適配。所以在安裝完Langchain后,會自動安裝langchain-community,如果需要單獨安裝,使用下面命令即可
pip install langchain-community(3) 安裝Langchain-Core
從上文《LangChain Lib結構》可知Langchain-Community是對Langchain-Core中抽象的具體實現。所以在安裝完Langchain后,會自動安裝langchain-core,如果需要單獨安裝,使用下面命令即可
pip install langchain-core(4) 安裝Langchain Lib的其他部分
截止2024年2月份,可以看到在Lib中有新增的一些模塊
- experimental :實驗模塊,使用pip install langchain-experimental命令安裝
- cli :命令行模塊,使用pip install langchain-cli命令安裝
最全面又最淺顯易懂的Langchain快速上手教程(上)-7.jpg (30.31 KB, 下載次數: 10)
下載附件
2024-8-21 23:53 上傳
(5) 安裝LangServe和LangSmith
LangSmith SDK模塊在安裝完Langchain后也會自動安裝,如果需要單獨安裝,請使用如下命令
pip install langsmithLangServe模塊只有在安裝完Langchain CLI后才會自動安裝(注意不是Langchain),如果需要單獨安裝,請使用如下命令
# 同時安裝客戶端和服務端pip install "langserve[all]"# 僅安裝客戶端pip install "langserve[client]"# 僅安裝服務端pip install "langserve[server]"(6) 安裝其他依賴
建議根據如下提示進行安裝
# 必須安裝pip install langchain-openai # LLM大語言模型必須使用5. 入門例子
在下面這個例子中,主要分為幾個簡單的入門例子
- 創建LLM :使用langchain_openai包中的ChatOpenAI()創建一個LLM大語言模型對象
- 創建Prompt :使用langchain_core包中的ChatPromptTemplate創建一個Prompt對象
- 創建Output_parser :使用langchain_core包中的StrOutputParser()創建一個輸出處理器
- 使用LCEL語進行鏈式調用 :使用或運算符|即可自動實現鏈式調用(基于ror魔法函數實現),如prompt | llm | output_parser
# ==================== 創建LLM并調用 ====================from langchain_openai import ChatOpenAI# 1. 使用系統配置的OPENAI_API_KEY環境變量llm = ChatOpenAI()# 2. 傳遞openai_api_key參數# llm = ChatOpenAI(openai_api_key="")print(llm.invoke("1+1=?"))# ==================== 創建一個復雜的Prompt并使用Chain鏈式調用 ====================from langchain_core.prompts import ChatPromptTemplateprompt = ChatPromptTemplate.from_messages([ ("system", "You are good at math."), ("user", "{input}")])chain = prompt | llmprint(chain.invoke({"input": "1+1=?"}))# ==================== 創建一個StrOutputParser輸出處理器并加入到Chain中 ====================from langchain_core.output_parsers import StrOutputParseroutput_parser = StrOutputParser()chain = prompt | llm | output_parserprint(chain.invoke({"input": "1+1=?"}))暫時未完...
由于文章篇幅的限制,先告一段落。相信經過上面簡單的介紹之后,相信已經可以對Langchain有了初步的理解,下面會著重用最簡單的描述、最容易理解的圖、最直觀的代碼來深入講解Langchain。
暫時未完,請期待下篇文章 《最全面又最淺顯易懂的Langchain快速上手教程(下)》 |
|