langchain是一個基于python實現的開源LLM開發框架,llama.cpp是一個基于C++框架可以在本地部署大模型并開放服務端接口開放給外部應用使用。
本文結合langchain和llama.cpp,在本地部署輕量級的deepseek大模型,并構建一個簡單的鏈式LLM應用,實現輸入問題、回答問題、解析文本。
llama.cpp部署大模型
在huggingface或者modelscope下載模型文件,要求是gguf格式,支持llama.cpp本地加載,這里下載的是一個小尺寸的deepseek模型DeepSeek-R1-Distill-Qwen-1.5B-Q2_K.gguf
,放在本地model
文件夾。
在github下載對應自己操作系統的llama.cpp的預編譯版本包,解壓后帶有bin
目錄,在里面找到llama-server命令行程序。
執行命令行啟動模型服務:
./llama-server -m path/to/model/DeepSeek-R1-Distill-Qwen-1.5B-Q2_K.gguf
啟動成功后,llama.cpp加載的deepseek大模型服務默認監聽在8080端口,可以打開網頁http://localhost:8080/
進行聊天驗證。
langchain編寫LLM應用
在python里安裝依賴包:
pip install langchain
pip install langchain-openai
因為llama.cpp大模型服務對外開放了OpenAI風格的api,此處可以使用OpenAI的接口連接本地大模型服務進行交互
代碼
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_core.output_parsers import StrOutputParser# connect remote llama.cpp model server to init model
model = ChatOpenAI(model="my_model", base_url="http://127.0.0.1:8080/v1", api_key="EMPTY")
model# create parser and make a chain
parser = StrOutputParser()
chain = model | parser
chain# input message
messages = [HumanMessage(content="北京的旅游景點有哪些")
]
messages# use chain to generate result
response = chain.invoke(messages)
print(response)
輸出
<think>
嗯,用戶問北京的旅游景點有哪些。首先,我得回想一下北京有哪些著名的旅游景點。我記得有大興門、天安門、人民公園這些,不過可能還有其他景點,比如天安門、八達門、天山、四合院什么的。然后,我還需要考慮一些比較小的景點,比如小湯圓的地點,或者一些特色景點。接下來,我需要列出這些景點并給出一些推薦。比如大興門適合喜歡自然風光和歷史的游客,天安門適合喜歡歷史和文化的人,人民公園適合喜歡休閑的游客。小湯圓、古街巷這些可能會吸引喜歡美食的游客,還有小山公園、和平公園這些適合喜歡自然和歷史的游客。然后,我還需要考慮用戶的需求,可能他們想去旅游,喜歡自然、歷史、美食,或者喜歡休閑。因此,我需要針對不同的用戶需求提供不同的建議。例如,喜歡自然的游客,可以選擇大興門和天山;喜歡歷史的游客,可以選擇八達門;喜歡美食的游客,推薦小湯圓;喜歡休閑的游客,可以選擇人民公園。最后,我需要整理這些信息,確保涵蓋各個方面,并給出詳細的建議,讓用戶可以根據自己的需求選擇合適的景點。
</think>北京的旅游景點眾多,涵蓋了自然、歷史、美食、休閑等多種體驗。以下是一些常見的旅游景點推薦:1. **大興門**:位于北京市 central, 是北京市區的主要景點,適合喜歡自然風光、歷史文化和環境的游客。2. **天安門**:位于北京市 capital, 是北京市的主要景點,適合喜歡歷史、文化、自然和休閑的游客。3. **人民公園**:位于北京市 capital, 是北京市的主要景點,適合喜歡休閑、自然和歷史的游客。4. **八達門**:位于北京市 capital, 是北京的標志性景點,適合喜歡歷史、自然和休閑的游客。5. **小湯圓**:位于小湯圓的遺址遺址,適合喜歡美食的游客。6. **古街巷**:包括古街和古巷,是北京歷史景點,適合喜歡歷史、自然和休閑的游客。7. **小山公園**:位于小山,是北京市的著名景點,適合喜歡自然、歷史和休閑的游客。8. **和平公園**:位于北京市 capital, 是北京市的著名景點,適合喜歡自然、歷史和休閑的游客。9. **小山公園**:位于小山,是北京市的著名景點,適合喜歡自然、歷史和休閑的游客。10. **四合院**:位于四合院,是北京的著名景點,適合喜歡歷史和自然的游客。11. **天山**:位于天山,是北京的著名景點,適合喜歡自然和歷史的游客。12. **小湯圓**:位于小湯圓的遺址遺址,適合喜歡美食的游客。13. **古街巷**:包括古街和古巷,是北京歷史景點,適合喜歡歷史、自然和休閑的游客。14. **小湯圓**:位于小湯圓的遺址遺址,適合喜歡美食的游客。15. **古街巷**:包括古街和古巷,是北京歷史景點,適合喜歡歷史、自然和休閑的游客。
可以看到結合langchain和llama.cpp構建出了一個鏈式LLM應用,根據指定的輸入和流程,經過大模型的智能問答結果解析文本生成輸出。(請忽略小尺寸智障AI的回答結果,只是為了演示)