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 格式:
# 聊天
POST /api/chat
支持多轮,会记住上下文
# 列出 / 拉取模型
GET /api/tags
只会列出本地模型
POST /api/pull
# 使用 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