主题
本地模型:Ollama
来源:LangChain 教程 · 第 02 章第 4 节《本地模型的部署与调用》 定位:LangChain 支持通过 Ollama、vLLM 等框架启动的本地大模型。本章以 Ollama 为例。
1. Ollama 是什么
Ollama 是 GitHub 上的开源项目,定位是一个本地运行大模型的集成框架,能实现主流大模型(如 Qwen、DeepSeek)的下载、启动和本地运行的自动化部署与推理流程。
- 官方地址:https://ollama.com
- 跨平台:支持 Mac、Linux、Windows。
- 优势:模型数据保存在本地,隐私可控、无需联网计费。
2. 下载与安装
2.1 macOS
直接访问 https://ollama.com/download 下载对应系统的安装包,双击安装即可。
2.2 Linux
bash
curl -fsSL https://ollama.com/install.sh | sh该命令会:检查系统环境 → 下载 Ollama 二进制文件 → 配置系统服务(创建用户/用户组、写入配置)→ 启动 Ollama 服务。
2.3 Windows
- 手动创建安装目录(如
F:\common_tools\Ollama),把安装包放进去。 - 在路径栏输入
cmd打开命令行。 - 执行:
powershell
OllamaSetup.exe /DIR=F:\common_tools\Ollama语法:软件名 /DIR=指定安装目录。
3. 模型的下载
3.1 设置模型存储目录
在 Ollama 设置中手动指定大模型要下载到的本地目录位置(避免默认路径占用系统盘)。
3.2 下载模型
方式 1:图形化界面下载
在 Ollama 桌面端直接搜索下载(蓝色标记为在线模型,需在 Ollama 平台付费;开源模型免费)。
方式 2:命令行下载并运行
访问 https://ollama.com/search 查看支持的模型,用命令行下载运行:
bash
ollama run deepseek-r1:1.5b # 首次会先下载再进入交互4. 常用命令速查
| 命令 | 一句话说明 |
|---|---|
ollama pull llama3 | 下载指定模型(例:llama3) |
ollama run llama3 | 启动并进入该模型交互对话 |
ollama list | 列出本机已下载的所有模型 |
ollama rm llama3 | 删除不再需要的模型以节省磁盘 |
ollama cp llama3 my-llama3 | 本地复制 / 重命名模型 |
ollama show llama3 | 查看模型详细信息(参数、大小等) |
ollama create my-model -f Modelfile | 用自定义 Modelfile 构建新模型 |
ollama serve | 启动后台服务,供 API 调用 |
ollama ps | 查看当前正在运行的模型进程 |
ollama stop llama3 | 停止正在运行的模型 |
ollama --version | 查看安装的 ollama 版本 |
5. LangChain 调用本地模型
5.1 安装依赖
bash
pip install -qU langchain-ollama
pip install -U ollama5.2 方式 1:专用类 ChatOllama
python
from langchain_ollama import ChatOllama
ollama_llm = ChatOllama(
model="deepseek-r1:1.5b",
base_url="http://localhost:11434", # 本机默认端口运行时可省略
)
result = ollama_llm.invoke("你好,请你介绍一下你自己。")
print(result)base_url:Ollama 服务地址,本机默认http://localhost:11434,局域网内可用http://<IP>:11434。
5.3 方式 2:统一接口 init_chat_model
python
from langchain.chat_models import init_chat_model
ollama_llm = init_chat_model(
model="deepseek-r1:1.5b",
model_provider="ollama",
# base_url="http://192.168.1.106:11434",
)
result = ollama_llm.invoke("你好,请你介绍一下你自己。")
print(result)两种方式等价,
init_chat_model会自动路由到ChatOllama。
6. 注意事项
- 本地小模型通常不支持或支持不完整的 tool calling / 结构化输出,使用
.bind_tools()/.with_structured_output()前要先验证。 - 模型名以
ollama list为准(如deepseek-r1:1.5b),需与下载名一致。 ollama run进入的是交互模式;程序调用用ollama serve(后台服务)+ 代码里的base_url。- 本地推理速度依赖硬件(GPU),大模型选择过大的参数量会导致响应很慢或内存不足。