4.1 CLI 高级用法


4.1 CLI 高级用法

本节摘要ollama run 远不止一问一答。会话内的斜杠命令、参数覆盖、多模态文件输入,配合 ollama ps / show / cp / serve 这些管理命令与管道化组合,足以让终端覆盖日常九成的使用场景。本节把这些能力按"会话内—会话外—脚本化"三层梳理成可直接照抄的命令谱。

会话内:被大多数人漏掉的斜杠命令

进入 ollama run qwen2.5:7b 的交互界面后,先键入 /? 看一眼全部命令。最实用的四个:

  • /show info:当前模型的参数规模、量化类型、上下文窗口一屏列出;
  • /set system "...":临时替换系统提示词,试验人设不必要重建模型;
  • /clear:清空当前上下文。连续问多个互不相关的问题前敲一下,既省内存又避免上一题干扰下一题;
  • /save newname:把当前这套"模型+你调过的参数+系统提示词"另存为新模型,相当于会话内速成版 Modelfile。
>>> /set system 你是严格的中文技术编辑,只指出问题不重写全文 >>> /show parameters >>> /clear >>> /bye

/save 和第 3.2 节的 Modelfile 流程互为补充:前者捕捉"调到顺手的那一晚",后者适合从规格出发的正向构建。

会话外:一次性调用与参数覆盖

ollama run 支持把提示词放在命令行直接返回,适合脚本与管线:

# 单次问答,输出完即退(交互历史不保留) ollama run qwen2.5:7b "把这段日志里的 IP 提取成 CSV:$(cat access.log)" # 常用运行时开关 ollama run llama3.1:8b --verbose "解释Raft选举" # 末尾打印速度统计 ollama run llama3.1:8b --numctx 8192 "长文摘要:..." # 本次扩上下文 ollama run llama3.1:8b --temp 0.2 "42*38=??" # 事实题压随机性 ollama run llava "这张图里有什么 ./photo.jpg" # 多模态输入(见6.3)

--verbose 输出的 eval rate(tokens/s)是判断"这台机器跑这个模型到底顺不顺"的第一手数据,第 5 章的诊断流程就从这里起步。注意每次 ollama run 的新进程调用仍然是发给常驻 server 的请求,因此模型加载一次后,脚本反复调用不会反复付加载成本(只要间隔不超过 keep_alive)。

状态与检视类命令

ollama ps # 当前驻留的模型、显存/内存占用、还有多久被卸载 ollama list # 本机全部模型与磁盘占用 ollama show llama3.1:8b # 结构信息 ollama show llama3.1:8b --modelfile # 反向导出配方 ollama cp llama3.1:8b demo/base # 建别名(不复制blob) ollama rm demo/base # 删标签

ollama ps 的 SIZE 列随对话增长变大是正常现象——增长的是 KV 缓存;如果它逼近你的显存上限,就该 /clear 或结束会话了。

脚本化:CLI 在管线里的三种典型接法

接法一:批处理文件问答。 用循环把待处理清单逐条喂给模型,适合翻译、分类、打标签这类离线任务:

while IFS= read -r f; do ollama run qwen2.5:7b "为以下 commit message 写一行中文变更说明:$(git log -1 --format=%s "$f")" \ >> CHANGELOG_ZH.md done < files.txt

接法二:与 Unix 管道组合。 CLI 读 stdin、写 stdout,天然可以嵌进管道:

echo "生成五个负载测试场景名" | ollama run qwen2.5:7b | tr ',' '\n' | nl

接法三:多模型流水线。 用两个模型接力,一个负责提取,一个负责改写:

ollama run llama3.1:8b "从下面邮件中提取行动项,逐行列出:$(cat mail.eml)" \ | ollama run qwen2.5:14b "把每条行动项改写为 Jira 任务标题,格式:[优先级] 标题"

服务与远程:serve 及其环境变量

桌面安装版会在后台自动起服务;Linux 服务器上则手动 ollama serve(或交给 systemd)。环境变量在服务启动时生效,三个最常用:

# 监听所有网卡,允许局域网访问 OLLAMA_HOST=0.0.0.0 ollama serve # 指向另一台机器上的服务,本机 CLI 变成远程客户端 OLLAMA_HOST=192.168.1.20:11434 ollama run llama3.1:8b "hi" # 修改模型存储位置 OLLAMA_MODELS=/data/ollama ollama serve

排查 CLI 问题时分两步:ollama --version 确认客户端版本,curl localhost:11434 确认服务在岗;两者都正常而命令报错时,问题多半出在模型名拼错或磁盘空间不足。

还有一个不起眼但很实用的细节:CLI 的退出码。脚本里判断生成是否成功,不要解析文本,而要检查退出码——模型不存在、服务未启动、请求超时,各自有不同的非零退出。配合 set -e 或显式的 if ! ollama run ...; then 分支,就能把 CLI 稳妥地嵌进 CI 与定时任务。批处理脚本还应注意限速:连续快速调用会堆满服务队列(OLLAMA_MAX_QUEUE,见 5.3),批与批之间加短暂 sleep 或按 5.2 的探测结果控制并发,比盲目加速更稳。调试管道类脚本时还有个技巧:在管道中间插一段 tee debug.log,把模型中间产物落盘,出错时不必从头重跑整个链条,直接从断点文件继续排查。

CLI 的能力边界也在这里:没有并发编排、没有结构化输出保证、会话管理全靠调用方。一旦你的程序需要把模型嵌入业务流,就该转投 REST API——下一节给出全部端点的逐一讲解。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U