Ollama 本地模型服务指南 · Dylan AI Agent Nexus

Run, Manage and Call Local LLMs via Ollama

定位与价值

Ollama 是一个轻量的本地大模型运行与管理服务,支持在本机/私有服务器上拉取并运行多种开源模型(如 Llama、Qwen、Mistral 等),通过统一的 HTTP API 提供推理能力,契合我们的“本地化部署、安全与数据主权”的总体原则。

运行与模型管理(概念)

  • 服务进程:启动后台服务后,默认监听本机端口(可配置),对外暴露 HTTP API。
  • 模型仓库:使用命令拉取模型镜像到本地(如 llama3、qwen2、mistral)。
  • 生命周期:首次调用会加载模型到内存;空闲可由 keep_alive 控制释放与保活。
  • 多平台:支持 CPU/GPU 推理,GPU 可显著提升推理吞吐与延迟表现。
本页不涵盖安装步骤,仅介绍原理、用法与注意事项。安装与环境请参考“部署与配置”相关页面。

API 基础

  • 生成接口POST /api/generate(单轮、补全式)。
  • 聊天接口POST /api/chat(多轮、messages 结构)。
  • 流式输出:通过 stream: true 以逐步返回增量结果;客户端需拼接。
  • 选项options 支持 temperaturetop_pnum_predictstopseednum_ctx 等。
  • 结构化输出:可使用 format: "json"(部分模型与版本支持)获得更规整的 JSON 文本。

示例:补全式生成(/api/generate)

curl -X POST http://localhost:11434/api/generate -H "Content-Type: application/json" -d '{"model":"llama3","prompt":"给出3条关于数据治理的金句","stream":false,"options":{"temperature":0.6}}'

请求体关键字段:

  • model:模型名称,如 llama3qwen2
  • prompt:纯文本提示词。
  • stream:是否流式返回(false 为整块返回)。
  • options:推理参数,如 temperaturenum_predictstop 等。

示例:对话式生成(/api/chat)

curl -X POST http://localhost:11434/api/chat -H "Content-Type: application/json" -d '{"model":"qwen2","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"把以下要点整理成政策解读提纲:数据主权、安全合规、本地化部署价值。"}],"stream":true}'
  • messages:与主流 Chat API 一致,支持 system/user/assistant 角色。
  • 流式stream=true 时,响应为多段增量块;客户端需读取并拼接。
  • 多模态:部分多模态模型支持图片输入(需按模型说明提供 image 字段或 base64 数据)。

参考实现:Python requests

import requests

payload = {
  "model": "llama3",
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "为《隐私合规白皮书》写一个一段式摘要"}
  ],
  "stream": False,
  "options": {"temperature": 0.5}
}
res = requests.post("http://localhost:11434/api/chat", json=payload, timeout=120)
res.raise_for_status()
print(res.json())

模型管理(命令概念)

  • 拉取模型ollama pull llama3ollama pull qwen2
  • 列出模型ollama list
  • 测试运行ollama run llama3(交互式)。
  • 服务监听:设置 OLLAMA_HOST=0.0.0.0:11434 对外提供 API(配合内网/反向代理与访问控制)。
请在受控的私网环境下暴露端口;生产环境建议放置在零信任网段或受反向代理保护,并启用访问鉴权。

自定义 Modelfile(原理)

通过 Modelfile 可以基于已有模型定制系统提示词、参数与模板,生成一个新命名的可复用模型镜像。

# 示例 Modelfile(概念)
FROM llama3
SYSTEM You are a domain expert assistant for enterprise data governance.
PARAMETER temperature 0.6
PARAMETER num_ctx 4096

构建后即可通过 model 指定该自定义模型,统一风格与输出质量。

性能与 GPU 建议

  • 上下文窗口num_ctx 越大越耗显存;根据场景权衡长度与吞吐。
  • 推理参数:控制 temperature/top_p/repeat_penalty/stop 以稳定输出风格。
  • 并发与保活:用 keep_alive 保持模型热身,减少冷启动延迟。
  • GPU 资源:优先使用 GPU;监控显存占用与负载,必要时分配多卡或降精度权重。

安全与合规注意事项

  • 网络边界:仅在可信网络开放;外网访问需网关鉴权与审计。
  • 数据最小化:提示词与业务数据避免包含敏感原文;必要时做脱敏/加密。
  • 审计与配额:记录调用日志(时间、调用方、耗时、返回大小);设置并发与速率上限。

与本平台的集成

  • 统一配置:在平台的模型配置处填入 Ollama 服务地址(如 http://localhost:11434)。
  • API 适配:按 /api/chat/api/generate 的 JSON 结构发起调用,遵循上文参数规范。
  • 多模型共存:可同时部署多个本地模型与云端模型,通过配置选择与路由。

故障排查(思路)

  • 无法连接:检查服务是否监听、端口与防火墙策略;确认 OLLAMA_HOST 设置。
  • 加载缓慢:首轮加载模型较慢属正常;开启保活或预热。
  • 显存不足:选择更小尺寸权重或降低 num_ctx;必要时升级显存。
  • 输出异常:适当降低 temperature,设置 stop,或启用 format: "json"
已模拟提交:数据已缓存到本地(等待后端 API 接入)