Ollama + LangChain: 本地运行LLM大语言模型
简介
在大型语言模型(LLM)领域,Ollama和LangChain已经成为开发人员和研究人员的强大工具。Ollama提供了一种无缝本地运行开源LLM的方式,而LangChain提供了将模型灵活集成到应用程序中的框架。本文将介绍如何设置和使用Ollama和LangChain,以便能够在项目中利用LLM的强大功能。
搭建Ollama
安装和配置
要使用Ollama,首先需要在系统上安装它。对于macOS用户,Homebrew简化了这个过程:
brew install ollama
brew services start ollama
安装完成并启动服务之后,Ollama会在11434端口监听http请求。可以在浏览器访问http://localhost:11434/
来验证服务是否已经正常开启。下一步拉取要运行的LLM模型。我们这里使用llama3.2
进行实验:
ollama pull llama3.2
这个命令将会下载llama3.2模型。
运行模型
可以直接使用命令或HTTP API和本地托管的LLM进行交互。对于命令行交互,Ollama提供了Ollama run <模型名字>
命令。对于HTTP API,可以向Ollama的API端点发送JSON请求:
curl http://localhost:11434/api/generate -d '{
"model": "llama3.2",
"prompt":"give me a chinese poem?"
}'
由于这种灵活性,可以将LLM无缝地集成到各种应用程序中。
将Ollama与Langchain整合集成
LangChain是一个旨在促进llm与应用程序集成的框架。它广泛支持包括Ollama在内的各种聊天模型,并为链式(chaining)操作提供了一种表达语言( LangChain Expression Language )。将Ollama和Langchain整合集成需要安装Langchain及其依赖。
可以使用下面的命令直接完成
pip install -U langchain-ollama
(官方文档在:https://python.langchain.com/docs/integrations/llms/ollama 。)
在Langchain中使用Ollama
要在LangChain应用程序中使用Ollama,首先要从langchain_community.llms
package导入相应的模块:
from langchain_community.llms import Ollama
然后,初始化一个Ollama模型实例:
llm = Ollama(model="llama3.2")
现在可以调用模型来生成响应。例如:
llm.invoke("Tell me a joke")
这个代码片段演示了如何使用Ollama生成对给定提示的响应。
高级用法
from langchain_community.llms import Ollama
llm = Ollama(model="llama3.2")
llm("The first man on the summit of Mount Everest, the highest peak on Earth, was ...")
LangChain还支持更复杂的操作,比如流式响应和使用提示模板。例如,可以像下面这样对模型的响应进行流处理:
from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
llm = Ollama(
model="mistral", callback_manager=CallbackManager([StreamingStdOutCallbackHandler()])
)
llm("The first man on the summit of Mount Everest, the highest peak on Earth, was ...")
这种方法对于需要与LLMS实时互动的应用特别有用。
使用LangServe部署
对于生产环境,LangChain提供了LangServe。LangServer是简化应用程序运行的部署工具。可以使用LangServe部署LangChain应用程序。
LangServe是LangChain的一个开源库,它使您基于链创建API服务器的过程更容易。LangServe为核心的LangChain表达式语言方法(如invoke、batch和stream)提供远程api。
运行以下命令进行安装:
pip install "langserve[all]"
from typing import List
from fastapi import FastAPI
from langchain.llms import Ollama
from langchain.output_parsers import CommaSeparatedListOutputParser
from langchain.prompts import PromptTemplate
from langserve import add_routes
import uvicorn
llama2 = Ollama(model="llama3.2")
template = PromptTemplate.from_template("Tell me a poem about {topic}.")
chain = template | llama2 | CommaSeparatedListOutputParser()
app = FastAPI(title="LangChain", version="1.0", description="The first server ever!")
add_routes(app, chain, path="/chain")
if __name__ == "__main__":
uvicorn.run(app, host="localhost", port=8000)
运行上面的代码
然后浏览器访问http://localhost:9001/chain/playground/
:
(有可能出现langchain-community缺失,可以pip install langchain-community
安装)
结语
通过集成Ollama和LangChain,开发人员可以在不需要外部api的情况下利用llm的功能。这种方案不仅节省了成本,而且允许更灵活的定制。无论是构建聊天机器人、内容生成工具还是交互式应用程序,Ollama和LangChain都提供了将llm引入其中所需的工具。
还真有人点开啊🤣随意随意😂