本偏要來介紹這系列文的一大核心,就是LangChain!
langchain是一個為了大語言模型(LLM)應用的框架,能簡化我們在開發時與語言模型的交互、讓我們做出各種運用,他集成了許多工具、套件等等,使我們的開發更加方便,像是後面要帶大家做的許多應用也是要用這個框架來實現。
這邊就舉幾個langchain的應用例子,像是多種語言模型交互的支援、讓模型有上下文對話的記憶功能,將複雜的任務流程串接,或是現在正熱門的檢索增強生成(RAG)等等,我們都可以在這個框架上去實現,以上舉的例子在後續篇幅也會一一來介紹實現!
本篇就先來簡單嘗試一下用Langchain和模型交互吧!
首先必須先在環境下載LangChain,一樣用pip或conda都可以,
pip install langchain
conda install -c conda-forge langchain
接著這邊使用前面玩過的Ollama來運行本地模型,並且在用langchain內提供的一個class,叫做ChatOllama。
首先要去cmd輸入ollama serve
,將ollama打開,這邊就是用ollama提供的api去和模型交互
from langchain_community.chat_models.ollama import ChatOllama
//將模型初始化出來
llm = ChatOllama(model="llama3")
prompt = "I am Malenia, blade of Miqulle."
response = llm.invoke(prompt);
print(response)
這樣就成功和模型交互並得到回應了,是不是很簡單啊!
當然這只是其中一種方法,在langchain中還有非常非常多種class、function能和llm去交互,接下來我們就試試看ChatOllama其他種方法,astream
import asyncio
from langchain_community.chat_models.ollama import ChatOllama
llm = ChatOllama(model="llama3")
prompt = "I am Malenia, blade od Miqulle."
async def main():
async for response in llm.astream(prompt):
print(response)
asyncio.run(main())
用astrem則是能將模型的回應一段一段接收並print出來,適合用在需要及時反饋的時候,像是聊天機器人就很適合使用! 不過這種方法是異步的,所以需要異步函數來寫,在執行。
我們這樣就完成基礎的模型交互了!
當然其實在Langchain框架中用Ollama去運行模型其實也不是只有ChatOllama這個Class可以使用,在LangChain中有非常多Class、方法等等,大家有興趣可以在去LangChain官網或是Github查查!
LangChain Docs
LangChain Github