Skip to content

本地模型: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 ​

  1. 手动创建安装目录(如 F:\common_tools\Ollama),把安装包放进去。
  2. 在路径栏输入 cmd 打开命令行。
  3. 执行:
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 ollama

5.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),大模型选择过大的参数量会导致响应很慢或内存不足。