SuperAPI AI 工具集

ollama

智能体与模型

查看项目

更新于 10-15 11:30

技能介绍

用途

Ollama 用于在本地运行大语言模型,面向需要模型管理、本地 API 调用和程序集成的场景。资料中描述的工作方式包括命令行交互、一次性生成以及通过 HTTP 接口调用。

安装与启动

  • macOS:brew install ollama
  • Linux:curl -fsSL https://ollama.com/install.sh | sh
  • Windows:从 https://ollama.com/download/windows 下载

启动服务:ollama serve。服务默认监听 http://localhost:11434,可通过设置 OLLAMA_HOST 更改绑定地址。

模型拉取与运行

  • ollama pull llama3:仅下载,不运行
  • ollama run llama3:运行,缺失时自动拉取
  • ollama list:列出已下载模型

交互式聊天会打开 REPL,输入 /bye 退出。一次性生成可通过管道输入:

echo "Explain quicksort in two sentences" | ollama run llama3
cat main.py | ollama run codellama "Review this code for bugs"

REST API

生成(completion)接口 /api/generate、多轮对话接口 /api/chat、嵌入接口 /api/embed 均通过 curl 举例说明。默认 stream 为 true,返回按行分隔的 JSON 数据块;设为 false 可一次性获得完整响应。

模型管理

  • ollama show llama3:查看模型详情(参数、模板、许可证)
  • ollama cp llama3 my-llama3:复制/创建别名
  • ollama rm my-llama3:删除模型
  • ollama ps:列出当前已加载/运行的模型,显示显存占用、量化级别和卸载时间

Modelfile 与自定义模型

Modelfile 以 FROM 指定基础模型,可配置 SYSTEM 系统提示词和多个 PARAMETER。资料列出的关键参数包括:temperature(随机性,0.0 确定性,1.0+ 更发散)、num_ctx(上下文窗口 token 数,越大占用显存越多)、top_p(核采样阈值)、top_k(限制 token 选择池)、repeat_penalty(重复 token 惩罚)、stop(停止序列)、num_gpu(卸载到 GPU 的层数,0 为纯 CPU)。

创建与运行自定义模型:

ollama create my-coder -f ./Modelfile
ollama run my-coder

更新时编辑 Modelfile 后以相同名称再次运行 ollama create。

GPU 与 CPU 配置

Ollama 自动检测 NVIDIA(CUDA)、AMD(ROCm)和 Apple Silicon(Metal)GPU。ollama ps 的 PROCESSOR 列显示 gpu 或 cpu。强制纯 CPU 可用 CUDA_VISIBLE_DEVICES="" ollama serve(单次会话)或 OLLAMA_NUM_GPU=0 ollama serve(服务级);也可在 Modelfile 中用 PARAMETER num_gpu 0 强制 CPU,PARAMETER num_gpu 999 卸载全部层至 GPU(默认)。多 GPU 可设置 CUDA_VISIBLE_DEVICES=0,1。

常用模型

资料列出的模型与适用场景包括:llama3(8B,4.7 GB,通用聊天、推理、指令遵循)、llama3:70b(40 GB,显存充足时质量更高)、codellama(7B,3.8 GB,代码生成、补全、填充)、mistral(7B,4.1 GB,快速通用、结构化输出)、phi3(3.8B,2.2 GB,体量小、质量相对较好)、gemma2(9B,5.4 GB,推理与多语言较强)、deepseek-coder-v2(16B,8.9 GB,代码生成、多语言)、nomic-embed-text(274 MB,用于 RAG 的文本嵌入)、llava(7B,4.7 GB,多模态图像理解)。资料提到 8 GB 内存等受限硬件可使用 phi3 或带 q4 量化的 llama3。

嵌入与 RAG

可使用 nomic-embed-text(768 维)或 mxbai-embed-large(1024 维)。/api/embed 支持单条或数组输入,响应包含浮点向量数组的 embeddings 字段,可存入 ChromaDB、pgvector、Qdrant、FAISS 等向量数据库进行相似度检索。

程序集成

  • Python:使用 requests 直接调用 HTTP 接口,或安装 ollama 包使用 ollama.chat、ollama.embed,并支持流式输出。
  • JavaScript:使用 fetch 调用接口,或安装 ollama 包使用 Ollama 类与 chat 方法。
  • LangChain:Python 使用 langchain-ollama 中的 ChatOllama 与 OllamaEmbeddings;JavaScript 使用 @langchain/ollama 的 ChatOllama。
  • 多模态:使用 llava 或 llava-llama3,在 /api/chat 消息中通过 images 传入 Base64 图像数据,Python 示例使用 base64 编码本地文件。

性能调优

资料给出的手段包括:按工作负载选择最小 num_ctx(默认 4096,32768 适合长文档但更占显存);模型超出显存时用 num_gpu 20 部分卸载;num_batch(默认 512)用于提升提示处理速度;通过请求中的 keep_alive 控制模型驻留时间(如 "30m"),设为 0 立即卸载,-1 无限期保持。服务级环境变量包括 OLLAMA_MAX_LOADED_MODELS(默认 1)、OLLAMA_NUM_PARALLEL、OLLAMA_FLASH_ATTENTION=1(降低内存占用)。

服务化运行

  • macOS(Homebrew):brew services start ollama
  • Linux(systemd,安装脚本自动创建):sudo systemctl enable --now ollama,日志用 sudo journalctl -u ollama -f;可用 sudo systemctl edit ollama 添加 OLLAMA_HOST、OLLAMA_NUM_PARALLEL 等环境变量,然后 sudo systemctl daemon-reload && sudo systemctl restart ollama
  • Docker:docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama,进入容器运行 ollama run llama3;使用 NVIDIA GPU 时在运行命令中加入 --gpus=all

限制

资料未提供模型性能基准、价格或收费信息、具体硬件兼容性列表以及安全与权限方面的说明。上述安装命令与代码均按资料原文保留。