🎯 课程主题
介绍如何使用 Ollama 在本地部署大语言模型,并通过 LangChain 的 ChatOllama 类和 init_chat_model 函数调用本地模型。
📝 核心知识点
1. Ollama 简介
- 概念说明:Ollama 是 GitHub 上的开源项目,目标是在本地运行大语言模型的集成框架。
- 核心能力:模型下载、本地启动、推理调用。
- 定位说明:本节以 Windows 平台的 Ollama 为例演示本地模型部署,实际企业级开发中通常使用 vLLM 等框架在 Linux + Docker 环境中部署,但原理相通。
2. Ollama 安装与配置
- 下载:从 ollama.com 下载对应操作系统的安装包。
- 自定义安装路径(避免装到 C 盘):
# 在安装包所在目录下执行 OllamaSetup.exe /DIR="F:\ollama" - 修改模型存储路径:在 Ollama 客户端 → Settings 中修改模型下载目录,避免占用 C 盘空间。
- 默认端口:Windows 上 Ollama 默认端口为
11434,即http://localhost:11434。
3. 模型下载与使用
- 在 Ollama 官网 Models 页面 选择模型,复制下载指令,如:
ollama run deepseek-r1:1.5b - 常用 CLI 命令:
ollama run <model>:启动模型交互界面。ollama list:查看本地已安装的模型。- 输入
/bye:退出交互。
- 个人电脑选型建议:7B~14B 已是普通个人电脑的上限,32B 及以上难以流畅运行。
4. LangChain 调用本地 Ollama 模型
- 方式一:使用
ChatOllama类 - 方式二:使用
init_chat_model(需显式指定model_provider="ollama")
🏗️ 架构与工作流
[在线平台 / 本地 Ollama] ──模型──▶ [LangChain 应用]
│
ChatOllama ◀── 直接专用类
init_chat_model(model_provider="ollama") ◀── 统一接口
💻 代码实战
# ===== 方式一:使用 ChatOllama 类 =====
from langchain_community.chat_models import ChatOllama
model = ChatOllama(
model="deepseek-r1:1.5b",
base_url="http://localhost:11434" # 可省略(默认值)
)
response = model.invoke("介绍一下你自己。")
print(response.content)
# ===== 方式二:使用 init_chat_model(务必指定 model_provider) =====
from langchain.chat_models import init_chat_model
model = init_chat_model(
model="deepseek-r1:1.5b",
model_provider="ollama", # ⚠️ 必须显式指定,否则自动推断可能错误
base_url="http://localhost:11434"
)
response = model.invoke("介绍一下你自己。")
print(response.content)
⚠️ 常见问题与避坑指南
init_chat_model调用本地模型时必须指定model_provider="ollama":如果不写或写错,init_chat_model可能错误地根据模型名自动推断为ChatDeepSeek等在线 provider,导致调用远程 API 而报错。- 本地小模型可能存在明显的幻觉问题:本地部署的模型通常参数规模较小,生成质量不如在线大模型,实际项目开发中建议使用服务器端大模型。
- 模型存储路径建议修改:默认存储在 C 盘,下载几个模型后可能占满磁盘空间,安装后应及时在 Settings 中修改路径。
💡 个人总结与延伸
Ollama 适合个人学习和本地实验,让开发者在不花费 API 费用的情况下体验大模型调用。但在企业级项目中,应使用 vLLM 等高性能框架在服务器端部署模型,或直接调用在线 API 服务(如 closeAI 平台)。LangChain 中 ChatOllama 类的接口设计与 ChatOpenAI 等在线类保持一致,切换模型来源时仅需修改初始化方式,业务代码无需改动。