基于 LangChain 集成本地部署的 Llama3.1 大模型
本文介绍了如何在本地通过 Ollama 部署 Llama3.1 大模型,并结合 LangChain 框架实现 Python 应用集成。内容涵盖环境配置、模型拉取、基础调用、流式输出及性能优化方案,帮助开发者构建私有化 AI 应用。

本文介绍了如何在本地通过 Ollama 部署 Llama3.1 大模型,并结合 LangChain 框架实现 Python 应用集成。内容涵盖环境配置、模型拉取、基础调用、流式输出及性能优化方案,帮助开发者构建私有化 AI 应用。

随着大语言模型(LLM)技术的快速发展,如何在本地环境中安全、高效地运行和集成这些模型成为开发者的关注重点。Ollama 是一个轻量级的工具,允许用户在本地机器上轻松运行开源大模型,而 LangChain 则是构建基于 LLM 应用的强大框架。本文将详细介绍如何在本地部署 Llama3.1 模型,并通过 LangChain 实现 Python 应用集成,涵盖环境配置、模型管理、代码调用及性能优化等完整流程。
确保已安装 Python 环境,并创建虚拟环境以隔离依赖:
python -m venv langchain_env
# Windows 激活
langchain_env\Scripts\activate
# Linux/Mac 激活
source langchain_env/bin/activate
安装核心库:
pip install langchain
pip install langchain-ollama
pip install langchain-community
访问 Ollama 官网下载对应系统的安装包,或通过包管理器安装。
curl -fsSL https://ollama.com/install.sh | sh
.exe 安装包运行即可。安装完成后,验证服务是否启动:
ollama --version
Ollama 支持多种量化版本的模型。Llama3.1 提供了 8B 和 70B 等不同规格。
ollama pull llama3.1
ollama pull llama3.1:70b
查看已下载的模型列表:
ollama list
通过命令行直接与模型交互,验证模型是否正常响应:
ollama run llama3.1
输入问题如 "Hello",观察模型回复。若出现对话界面且无报错,说明本地推理服务正常。
使用 OllamaLLM 类连接本地模型,构建简单的提示链。
from langchain_core.prompts import ChatPromptTemplate
from langchain_ollama.llms import OllamaLLM
# 定义提示模板
template = """
Question: {question}
Answer: Let's think step by step.
请用简体中文回复。
"""
prompt = ChatPromptTemplate.from_template(template)
model = OllamaLLM(model="llama3.1")
# 构建链
chain = prompt | model
# 执行调用
result = chain.invoke({"question": "LangChain 是什么?"})
print(result)
为了提升用户体验,建议使用流式输出(Streaming),避免长时间等待。
from langchain_ollama.chat_models import ChatOllama
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
chat_model = ChatOllama(model="llama3.1", temperature=0.7)
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个专业的 AI 助手,请用简洁的语言回答。"),
("human", "{input}")
])
chain = prompt | chat_model | StrOutputParser()
for chunk in chain.stream({"input": "解释一下 Transformer 架构"}):
print(chunk, end="", flush=True)
在实际应用中,通常需要维护上下文记忆。LangChain 提供了 ConversationBufferMemory。
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationalRetrievalChain
from langchain_ollama.chat_models import ChatOllama
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
chat_model = ChatOllama(model="llama3.1")
# 注意:此处为简化示例,实际需结合 VectorStore 实现检索增强
# 仅演示对话链结构
from langchain.chains import ConversationChain
conversation = ConversationChain(llm=chat_model, memory=memory)
response = conversation.predict(input="你好")
print(response)
response = conversation.predict(input="我刚才问了什么?")
print(response)
llama3.1:3b 等更小版本。本地模型推理受限于硬件资源,建议在生产环境中限制并发请求数,防止 OOM(内存溢出)。
网络或服务不可用时,应添加异常捕获机制:
try:
result = chain.invoke({"question": "测试问题"})
except Exception as e:
print(f"调用失败:{e}")
OLLAMA_HOST 环境变量指定镜像源。num_ctx 上下文长度,或更换更小参数量模型。langchain-core 与 langchain-ollama 版本兼容,建议统一升级至最新版。本文详细展示了从本地部署 Llama3.1 到通过 LangChain 集成的全过程。利用 Ollama 进行私有化部署,不仅能保护数据隐私,还能降低 API 调用成本。开发者可根据硬件条件选择合适的模型版本,并结合流式输出、记忆管理等技术构建功能完善的 AI 应用。未来随着本地算力提升,本地大模型将在更多场景中得到广泛应用。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online