【LangChain】P15 大模型私有化部署:基于 Ollama 与 LangChain 的实践指南
目录
- 引言
- 为什么企业需要私有化部署大模型?
- Ollama 前序工作
- 什么是 Ollama
- Ollama 的下载与安装
- Ollama 常用命令
- 查看已安装的模型
- 运行模型
- 下载新模型
- 删除模型
- 查看运行中的模型
- 停止模型服务
- 在 LangChain 中调用本地大模型
- 环境准备
- 基础调用示例
- 流式输出
- 结合提示词模板
- 构建对话系统
- 总结
引言
随着大模型技术的快速发展,越来越多的企业开始思考如何将这项技术真正落地应用。相比于依赖云端 API 服务,私有化部署正在成为企业的必行趋势。
为什么企业需要私有化部署大模型?
私有化部署大模型具有以下显著优势:
- 数据安全与隐私保护: 企业的敏感数据无需上传到第三方服务器,完全在本地环境中处理,从根本上消除了数据泄露的风险。这对于金融、医疗、法律等对数据安全要求极高的行业尤为重要。
- 成本可控: 虽然初期需要一定的硬件投入,但长期来看,私有化部署可以避免持续的 API 调用费用。特别是对于高频调用场景,成本优势会更加明显。
- 服务稳定性: 不依赖外部网络和第三方服务的可用性,避免因网络波动或服务商故障导致的业务中断。企业可以完全掌控服务的可用性和响应速度。
- 定制化能力: 企业可以根据自身业务需求对模型进行微调和优化,打造专属的行业解决方案,而不受云服务提供商的限制。
- 合规性要求: 某些行业和地区的法规要求数据必须存储在本地或特定区域,私有化部署可以轻松满足这些合规要求。
而实现本地私有化部署,之于我们私人而言,最简单的方式莫过于使用 Ollama。而关于企业级部署,我们将在单独的一个专题系列博文中阐述。本博文将详细介绍如何通过 Ollama 部署本地大模型,并如何在 LangChain 中进行调用。
Ollama 前序工作
什么是 Ollama
Ollama 是 GitHub 上的一个明星开源项目,其定位是一个本地运行大模型的集成框架。Ollama 主要具有以下特点:
- 架构支持广泛: 主要针对主流的 Llama 架构开源大模型设计,完美支持 Qwen、DeepSeek、Llama、Mistral 等热门模型。
- 一键式部署: 实现模型下载、启动和本地运行的全自动化流程,完全脱离复杂配置。
- 跨平台兼容: 支持 macOS、Linux、Windows 三大主流操作系统。
虽然 Ollama 为本地大模型部署提供了极大便利,我们也需客观认识它的一些局限性。其最主要的局限性在于企业级应用中需要的批处理性能方面:
- 功能相对简化:相比于 vLLM 等专业推理框架,Ollama 在批量推理、动态批处理、多 GPU 并行等高级特性上支持有限。对于需要极致性能优化、高负载的企业级生产环境,必须考虑其他方案。
其余限制,如封装度较高带来的调试信息有限、量化格式限制,功能简化不支持的模型微调不便等限制。不过,万里长征看脚下,我们先从 ollama 开启。
Ollama 的下载与安装
访问 Ollama 官网,下载对应操作系统的安装包,双击安装即可。
按照默认安装顺序完成安装,并在 CMD/终端 中输入如下命令验证安装(博主开发环境为 MBP,后续截图将按 Mac 操作系统展开):
ollama --version
Ollama 常用命令
掌握以下几个核心命令,就能轻松驾驭 Ollama:
查看已安装的模型
ollama list
这个命令会列出所有已下载到本地的模型,包括模型名称、大小和最后修改时间。博主在几个月前下载了 Qwen3
系列模型:
运行模型
首次运行会自动下载模型,之后会直接启动交互式对话界面,以 qwen2.5-7b
模型为例。
ollama run qwen2.5:7b
对于其他模型,用户可以在官方查找指定模型名称,并按照命令下载。
下载新模型
拉取模型(仅下载不运行),以 qwen2.5-7b
模型为例:
ollama pull qwen2.5:7b
删除模型
ollama rm qwen2.5:7b
查看运行中的模型
ollama ps
停止模型服务
ollama stop qwen2.5:7b
在 LangChain 中调用本地大模型
在开启本部分内容学习前,建议读者先行了解本系列博文前序内容。
环境准备
首先安装必要的 Python 包(默认已安装、掌握 langchain 前序知识):
pip install langchain-ollama
基础调用示例
下面是一个最简单的调用示例:
from langchain_ollama import ChatOllama# 初始化模型
llm = ChatOllama(model="qwen2.5:30b"
)# 直接调用
response = llm.invoke("什么是量子计算?请用简单的语言解释。")
print(response.content)
流式输出
对于需要实时反馈的场景,可以使用流式输出:
from langchain_ollama import ChatOllamallm = ChatOllama(model="qwen2.5:30b"
)# 流式输出
for chunk in llm.stream("写一首关于春天的诗"):print(chunk.content, end="", flush=True)
结合提示词模板
在实际应用中,我们通常需要使用提示词模板来规范模型的输入输出:
from langchain_ollama import ChatOllama
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain# 定义提示词模板
template = """你是一个专业的技术顾问。请根据以下问题提供详细的解答:问题: {question}请确保回答:
1. 准确专业
2. 结构清晰
3. 包含实际案例回答:"""prompt = PromptTemplate(template=template,input_variables=["question"]
)# 创建链
llm = ChatOllama(model="qwen2.5:30b"
)chain = LLMChain(llm=llm, prompt=prompt)# 执行
result = chain.run(question="什么是微服务架构?")
print(result)
构建对话系统
对于需要保持上下文的对话场景:
from langchain_ollama import ChatOllama
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChainllm = ChatOllama(model="qwen2.5:30b", temperature=0.7)# 添加记忆功能
memory = ConversationBufferMemory()# 创建对话链
conversation = ConversationChain(llm=llm,memory=memory,verbose=True
)# 多轮对话
print(conversation.predict(input="我想学习 Python,应该从哪里开始?"))
print(conversation.predict(input="那数据类型部分有哪些重点?"))
print(conversation.predict(input="能给我举个字典的例子吗?"))
总结
通过 Ollama ,配合 LangChain 强大的开发框架,个人可以快速构建自己的大模型应用系统。从数据安全、成本控制到服务稳定性,私有化部署的优势显而易见。随着硬件成本的持续下降和开源模型的不断进步,这一趋势将会越来越明显。
现在就开始你的大模型私有化部署之旅吧!从安装 Ollama,到下载第一个模型,再到用 LangChain 构建你的应用 —— 这一切比你想象的要简单得多。而关于企业级部署与应用,敬请关注我的另一个系列博文 —— 大模型企业级部署。
2025.10.07 北京·西直门