纲要

  • 闭源模型与开源本地模型的权衡
  • 硬件对推理速度的关键影响
  • 本地推理框架选择:Ollama
  • 本地部署流程
    • 安装 Ollama
    • 拉取模型
    • 启动 API 服务
  • LangChain 接入本地模型
    • 安装 langchain-ollama
    • 使用 ChatOllama 进行同步与流式调用
  • 完整可运行代码示例

闭源模型 vs 开源本地模型

在 AI Agent 开发中,选择模型时通常面临两条路径:

对比维度 闭源模型(GPT-4、Claude) 开源本地模型(DeepSeek、Llama)
使用方式 直接调用 API 本地部署推理服务
成本构成 按 Token 计费 硬件投入 + 运维成本
数据隐私 数据需传输至外部 数据完全保留在本地
硬件要求 仅需网络连接 需要较高 GPU 或大内存
灵活性 受限于 API 提供的能力 可微调、量化、完全自主

选用本地开源模型的典型场景包括:数据安全合规要求、长期高频推理的成本控制、离线环境运行。但前提是拥有足够算力,否则推理速度会成为瓶颈。

硬件对推理速度的关键影响

本地推理的性能主要由 GPU 显存和计算单元决定。以 Llama 系列模型为例,不同硬件上的实测 Token 生成速度:

硬件 7B 参数模型(token/s) 65B 参数模型(token/s)
Apple M1 9.00 1.00
Apple M2 28.57 3.08
NVIDIA A100 (80GB) 276.00 29.77
  • 消费级设备(M1/M2)足以运行 7B 量化模型,但大参数模型速度极慢。
  • 专业 GPU(如 A100)拥有充足显存,推理速度有数量级优势,适合生产环境。

想要本地流畅运行 DeepSeek-R1 671B 等超大模型需多卡高端 GPU;日常开发使用 7B~13B 量化版本即可。

推理框架:为什么选择 Ollama

Ollama 是当前最友好的本地推理框架之一,具备以下特点:

  • 一键安装,命令行操作简单
  • 内置模型仓库,覆盖 Llama、DeepSeek、Phi 等主流模型
  • 自动处理量化与 GPU 加速
  • 提供与 OpenAI 兼容的 REST API(默认 http://localhost:11434
  • 活跃的社区更新

本地部署流程

下面以部署 DeepSeek-R1 7B 为例演示完整步骤。

安装 Ollama

ollama.com 下载安装包。安装后在终端验证:

ollama --version

拉取模型

下载所需的模型文件:

ollama pull deepseek-r1:7b

查看已安装模型:

ollama list
# NAME              ID              SIZE      MODIFIED
# deepseek-r1:7b    ...             4.7 GB    ...

启动 API 服务

运行以下命令,模型将以 API 形式在 localhost:11434 提供服务:

ollama serve

使用 curl 快速测试:

curl http://localhost:11434/api/generate -d '{
  "model": "deepseek-r1:7b",
  "prompt": "你好",
  "stream": false
}'

收到 JSON 响应即表示部署成功。

LangChain 接入本地模型

通过官方包 langchain-ollama 即可在代码中调用本地模型。

安装依赖

pip install langchain-ollama

同步调用

from langchain_ollama import ChatOllama

llm = ChatOllama(model="deepseek-r1:7b")
response = llm.invoke("用一句话介绍什么是 AI Agent")
print(response.content)

流式输出

for chunk in llm.stream("写一首关于春天的五言绝句"):
    print(chunk.content, end="", flush=True)

项目结构

最小化项目如下:

├── main.py
└── requirements.txt

requirements.txt 内容:

langchain-ollama>=0.1.0

完整可运行代码

将以下代码保存为 main.py,确保 Ollama 服务运行且模型已下载。

from langchain_ollama import ChatOllama

# 初始化本地 DeepSeek-R1 7B 模型
llm = ChatOllama(
    model="deepseek-r1:7b",
    temperature=0.7,
    num_predict=256,
)

print("=== 同步调用 ===")
response = llm.invoke("请用一句话解释什么是强化学习")
print("回答:", response.content)
if response.usage_metadata:
    print("Token 用量:", response.usage_metadata)

print("\n=== 流式输出 ===")
prompt = "请写一首关于秋天的七言绝句"
print("用户:", prompt)
print("助手: ", end="")
for chunk in llm.stream(prompt):
    print(chunk.content, end="", flush=True)
print()

运行说明

  • 需提前安装 langchain-ollama
  • 确保 ollama serve 正在运行,且已执行 ollama pull deepseek-r1:7b
  • 若电脑性能较弱,可调小 num_predict 或改用更轻量的模型。

关键要点

  • 本地开源模型适合隐私敏感、长期高频、离线环境,但需投入硬件成本。
  • Ollama 大幅降低了本地部署门槛,推荐作为首选推理框架。
  • 通过 ChatOllama 接入 LangChain 后,可与 API 模型保持一致的调用接口,方便无缝切换。
  • 生产环境中建议将 Ollama 部署到独立的 GPU 服务器上,供团队共享。
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐