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引入其中所需的工具。

posted @ 2024-10-17 18:06  Tacey Wong  阅读(1178)  评论(1编辑  收藏  举报