大家好,我是【同學小張】。持續(xù)學習,持續(xù)干貨輸出,關注我,跟我一起學AI大模型技術!有任何問題,歡迎+vx:jasper_8017,期待與志同道合的朋友一起討論,共同進步!
AI時代,相信大家或多或少都聽過 LangChain 的大名。通俗的說,LangChain是一個面向大模型的開發(fā)框架(SDK)。 目前 LangChain 仍在快速迭代中,所以在使用中要時刻關注你所使用的版本和接口變更。
0. 認識LangChain框架 從上圖可以看到,LangChain 目前有四層框架:
最下層深色部分:LangChain的Python和JavaScript庫。包含無數(shù)組件的接口和集成,以及將這些組件組合到一起的鏈(chain)和代理(agent)封裝,還有鏈和代理的具體實現(xiàn)。 Templates:一組易于部署的參考體系結構,用于各種各樣的任務。 LangServe:用于將LangChain鏈部署為REST API的庫。 LangSmith:一個開發(fā)人員平臺,允許您調試、測試、評估和監(jiān)控基于任何LLM框架構建的鏈,并與LangChain無縫集成。
在最下層深色部分- LangChain的Python和JavaScript庫中,可以看到它封裝了一系列模塊。 模型 I/O 封裝,包括: Retrieval 數(shù)據(jù)連接與向量檢索封裝,包括: Agents 根據(jù)用戶輸入,自動規(guī)劃執(zhí)行步驟,自動選擇每步需要的工具,最終完成用戶指定的功能,包括: Chain 實現(xiàn)一個功能或者一系列順序功能組合 Memory 記憶封裝,也就是上下文的管理能力封裝 Callbacks 一些過程回調函數(shù)
1. 動手實現(xiàn)你的第一個LangChain程序1.1 LangChain 環(huán)境(1)安裝 LangChain pip install langchain
conda install langchain -c conda-forge
(2)安裝 LangChain X OpenAI LangChain封裝了對于大模型的調用接口,也就是說,我們可以選擇使用的模型,無論是在線模型還是本地部署的模型。本文我們還是使用OpenAI的API來調用大模型。 pip install -U langchain-openai
1.2 通過LangChain的接口來調用OpenAI對話import os # 加載 .env 到環(huán)境變量 from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv())
from langchain_openai import ChatOpenAI ## langchain封裝的openai對話接口
llm = ChatOpenAI() # 默認是gpt-3.5-turbo response = llm.invoke("你是誰") ## 通過 invoke 傳入對話 print(response.content)
## 運行結果輸出:我是一個AI助手,沒有具體的身份。我是由OpenAI開發(fā)的,可以幫助回答問題和提供信息。
1.3 多輪對話的封裝import os # 加載 .env 到環(huán)境變量 from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv())
from langchain_openai import ChatOpenAI
llm = ChatOpenAI() # 默認是gpt-3.5-turbo
from langchain.schema import ( AIMessage, #等價于OpenAI接口中的assistant role HumanMessage, #等價于OpenAI接口中的user role SystemMessage #等價于OpenAI接口中的system role )
messages = [ SystemMessage(content="你是[同學小張]的個人助理。你叫[小明]"), HumanMessage(content="我叫[同學小張]"), AIMessage(content="好的老板,你有什么吩咐?"), HumanMessage(content="我是誰") ] response = llm.invoke(messages) print(response.content)
## 運行輸出:您是同學小張。
通過以上代碼可以看到: 這樣模型封裝的意義在哪?
好了,本文先寫到這,算是對 LangChain 系列開了個頭。后面咱們深入各個模塊去學習和實戰(zhàn)。 如果覺得本文對你有幫助,麻煩點個贊和關注唄 ~~~
大家好,我是【同學小張】。持續(xù)學習,持續(xù)干貨輸出,關注我,跟我一起學AI大模型技術!有任何問題,歡迎+vx:jasper_8017,期待與志同道合的朋友一起討論,共同進步!
|