Ollama 是一个开源的本地大语言模型框架,为本地部署 LLM 而设计

可以在 Docker 中运行,提供 CLI(命令行工具)以及 PythonSDK

# 基本操作

# 模型管理

ollama pull <model-name>
ollama run <model-name>
//之后就可以直接交互,使用/bye或者`Ctrl+D`退出
ollama status <model-name>
//查看模型状态
ollama list
ollama rm <model-name>
ollama create <custom-model-name> -f <Modelfile>
//创建自定义模型,基于现有模型
ollama cp <source-model-name> <new-model-name>
//复制一个模型
ollama push <model-name>
//推送到模型库
ollama show <model-name>
//查看详细信息
ollama deps <model-name>
//查看依赖关系
ollama config <model-name>

# 服务管理

ollama serve
//后台运行
ollama stop
ollama restart

# 导入导出

ollama export <model-name> <output-file>
//导出为文件,可以使是xxx.tar
ollama import <input-file>
//导入,上述tar文件无需解压

# 其他

ollama version
ollama update
ollama logs
ollama clean
//清理缓存

# 系统信息

ollama system
//查看ollama系统信息,但是在win上似乎没有这个?
ollama resources <model-name>
//查看模型的资源使用情况
ollama perf <model-name>
//查看性能指标
ollama history <model-name>

# 基本概念

模型,任务,推理,微调。

任务包括对话生成,文本生成,感情分析,文本摘要,翻译等等

可以使用 CLI 加载不同模型执行特定任务。

微调需要准备特定领域的数据进行进一步训练,需要选择适合微调的预训练模型,数据格式通常是文本文件或者 JSON 格式

# 交互

可以使用管道符或者直接传递参数进行单次交互:

echo "xxx" | ollama run <model-name>
ollama run <model-name> "xxx"

可以只用重定向符将文件传递给模型:

ollama run <model-name> < input.txt

自定义提示词:

//写一个Modelfile
From <model-name>
SYSTEM "xxxxxxx"
//使用
ollama create <model-name> -f ./Modelfile

# API 交互

使用 ollama serve ,会自动运行在 localhost:11434

# API 端点

# 生成文本

POST /api/generate

发送提示词,并获取生成文本,是 JSON 格式:

1753944324972

# 聊天

POST /api/chat

支持多轮,会记住上下文

1753944394192

# 列出 / 拉取模型

GET /api/tags

只会列出本地模型

1753944529056

POST /api/pull

1753944583703

# 使用 Python 交互

import requests
response = requests.post(
    "http://localhost:11434/api/generate",
    json={
        "model": "deepseek-coder",
        "prompt": "你好,你能帮我写一段代码吗?",
        "stream": False
    }
)
print(response.json())

多轮对话:

response = requests.post(
    "http://localhost:11434/api/chat",
    json={
        "model": "deepseek-coder",
        "messages": [
            {
                "role": "user",
                "content": "你好"
            }
        ],
        "stream": False
    }
)
print(response.json())

也可以使用 javascript