📌 新手提示:本文结尾提供了一键部署脚本(Windows / macOS / Linux 通用),自动安装 Ollama 并引导你运行第一个模型,不想手动操作的同学直接拉到文末运行。
前言
这几年"大模型"(能对话、能写代码的人工智能模型,像 ChatGPT、DeepSeek 背后的大脑)都是云端服务——你的问题发到别人服务器上,算完再传回来。好处是效果强,坏处是你得注册、充值、排队,还有隐私顾虑:所有对话都经过第三方。
Ollama 是另一条路:它把开源大模型装到你自己的电脑上,本地运行,不联网、不花钱、数据不出门。它的定位可以这么理解:
云端模型像"点外卖",本地模型像"自己家做饭"——外卖(云端)省事但付钱、排队;做饭(本地)要一次投入食材和设备(下载模型、占内存),但之后无限吃、私密、断网也能吃。
本教程面向零基础读者,走完五步:
- 明白 Ollama 是什么
- 在自己的电脑上装好它
- 跑起人生第一个本地大模型
- 学会用代码调用它(本地 API)
- 弄清"本地 vs 云端"怎么选
官方文档:https://docs.ollama.com/;模型库列表:https://ollama.com/search。
一、Ollama 是什么
一句话:Ollama 是一个"大模型运行工具"——装好后,你在命令行输入一条命令,它就从官方模型库下载一个开源模型到本地(几 GB 到几十 GB),然后在你的电脑上把它跑起来,你就能像和 ChatGPT 聊天一样和它对话。
几个关键事实:
- 开源免费:Ollama 本身是开源项目,模型也大多是开源模型(如 Qwen、DeepSeek、Llama、Gemma、GPT-OSS 等系列)
- 离线可用:模型下载完成后完全本地运行,不需要网络(断网也能聊)
- 有 API:暴露一个本地接口(默认端口 11434),你可以用普通 HTTP 请求或 OpenAI 兼容的 SDK 调用它——也就是说,你在云端 API 写过的调用代码,改一行地址就能指向本地模型
- 跨平台:macOS / Windows / Linux / WSL2 / Docker 都支持
二、安装 Ollama(三平台)
打开终端(macOS"终端"、Linux"终端"、Windows 建议 WSL,即 Windows 自带的 Linux 子系统),按你的系统执行一行命令:
macOS 与 Linux:
curl -fsSL https://ollama.com/install.sh | sh
解释一下这条命令:
curl从官网下载安装脚本,-fsSL是参数(静默、跟随跳转、出错即停),| sh表示把下载的脚本直接交给 shell 执行。想先看看脚本内容再执行的话,把| sh去掉只跑前半段即可——脚本完全公开,欢迎审查。
Windows(PowerShell):
irm https://ollama.com/install.ps1 | iex
**Windows 用 WSL:**在 WSL 的 Ubuntu 里执行上面的 Linux 命令即可,Windows 端可直接访问 http://localhost:11434(Ollama 默认监听本机端口)。
装完验证:
ollama --version
看到版本号就成功了。
国内用户若官网下载慢:Linux/macOS 可手动从 GitHub Releases 下载压缩包(见文末脚本,脚本内置了国内镜像回退);Windows 可下载 OllamaSetup.exe 安装包。
三、跑起第一个本地模型
装好后,运行你人生中第一个本地大模型(Ollama 官方示例用 gemma4——Gemma 是 Google 的开源模型系列):
ollama run gemma4
第一次运行会先自动下载模型(几个 GB,取决于模型大小,耐心等),下载完就进入聊天界面——直接打字回车,就能和它对话了!
>>> 你好,简单介绍一下你自己
<<< 你好!我是 Gemma,一个由 Google 开发的开源语言模型……
退出聊天输入:
/bye
想换模型怎么办?模型库里还有成百上千个开源模型(DeepSeek、Qwen 千问、Llama、GPT-OSS 等都有)。去 https://ollama.com/search 搜索模型名,然后用同样的命令格式运行即可:
ollama run deepseek-r1 # 举例:DeepSeek 推理模型
ollama run qwen3 # 举例:阿里千问
💡 模型名右侧标注了参数量大小(如 7b = 70 亿参数、8b、70b),参数越多越聪明、占用内存越大。入门建议从 7b~8b 档开始,你的电脑跑得动再说。
四、常用命令速查
| 命令 | 作用 |
|---|---|
ollama run <模型名> | 下载并进入聊天(等价于"下载 + 运行") |
ollama pull <模型名> | 只下载不运行 |
ollama list | 查看本地已有哪些模型 |
ollama ps | 查看当前正在运行的模型 |
ollama rm <模型名> | 删除本地模型(释放磁盘) |
/bye | 退出聊天界面 |
模型列表页:https://ollama.com/search。
五、用代码调用本地模型(本地 API)
Ollama 不只是个聊天窗口——它启动了本地 API(应用程序编程接口,程序调用通道),默认地址 http://localhost:11434。你的任何程序都能调用它。
方法一:最原始的 curl
用 curl(命令行 HTTP 工具,macOS/Linux/WSL 自带)直接发请求:
curl http://localhost:11434/api/chat -d '{
"model": "gemma4",
"messages": [{"role": "user", "content": "Why is the sky blue?"}],
"stream": false
}'
方法二:Python 官方包
pip install ollama
from ollama import chat
response = chat(model='gemma4', messages=[{'role': 'user', 'content': '为什么天是蓝的?'}])
print(response.message.content)
方法三:OpenAI 兼容端点(重点!)
Ollama 提供 OpenAI 兼容的 /v1 端点,这意味着:你以前为 OpenAI / DeepSeek 写过的所有调用代码,只需要把 base_url 改成本地地址,就能直接调用本地模型:
from openai import OpenAI
client = OpenAI(
base_url='http://localhost:11434/v1/',
api_key='ollama', # 本地服务不校验 Key,任意值即可(官方文档注明 "required but ignored")
)
chat_completion = client.chat.completions.create(
messages=[{'role': 'user', 'content': '我这是在调用本地模型!'}],
model='gemma4', # 换成你本地已下载的模型名
)
print(chat_completion.choices[0].message.content)
也就是说,OpenAI 兼容生态(LangChain、各种 AI 框架、OpenCode 等工具)通通能指向你的本地模型——写一次代码,云端/本地随意切换。
六、进阶:模型存哪 & 端口怎么改
- 模型默认存储位置:Ollama 会把模型文件存到用户目录下的
.ollama/models(macOS/Linux 在~/.ollama/models)。想换盘存(比如存到 D 盘/移动硬盘),设置环境变量OLLAMA_MODELS=/你的/路径即可(环境变量是操作系统级的配置值,“存钥匙的口袋”,设置后重启 Ollama 生效) - 默认端口 11434:想改监听地址,设置
OLLAMA_HOST=0.0.0.0:11434——注意0.0.0.0表示局域网可访问,你的电脑就变成了"局域网内的 AI 服务器",家里其他设备也能连。只在信任的局域网这么做,暴露到公网有安全风险 - 详细配置见官方文档:https://docs.ollama.com/
七、本地模型 vs 云端 API:怎么选?
| 维度 | 本地 Ollama | 云端 API |
|---|---|---|
| 费用 | 免费(只花电费,占电脑内存/磁盘) | 按 token 计费(token 是模型处理文本的最小单位) |
| 隐私 | ✅ 数据不出门 | ❌ 对话经过服务商 |
| 断网 | ✅ 可用 | ❌ 不可用 |
| 模型效果 | 看你机器配置,入门级(7b~8b)与云端旗舰有差距 | 旗舰模型(Claude、GPT、DeepSeek 顶配)效果最好 |
| 门槛 | 要下载几 GB 模型、要有 8GB+ 内存 | 注册 + 充值 + Key 即可 |
建议:日常闲聊、隐私数据、离线场景 → 本地模型;追求最强效果、要做批量生产级应用 → 云端 API。
如果本地跑不动大参数模型、又想要旗舰模型效果,国内最省事的做法是接 API 中转站——一把 Key 同时调用 Claude / GPT / DeepSeek / GLM 等主流模型,按 token 精确计费、国内直连。比如云间 API 中转站(https://cloudzone-api.cyou/):香港节点低延迟,最低官方定价 0.05 倍起,而且它也是 OpenAI 兼容格式——上面第三节的代码把 base_url 换成它的地址,就能从"本地模型"无缝切到"云端最强模型"。两篇文章读下来你会发现:换 base_url 是 AI 世界里最万能的技能。
尾声
到这你已经把 AI"搬回了家":Ollama 装好、模型跑起来、代码能调用、知道了和云端的取舍。Ollama 官方还支持一键连接 Claude Code、OpenCode 等终端 AI 工具(ollama launch claude),感兴趣的可以去官方文档探索。
不想手动操作的话,直接跑文末一键脚本,剩下的交给脚本:自动检测网络、下载安装 Ollama、引导你运行第一个模型。
最后提醒一条安全底线:本地能跑≠本地永远更好。生产环境、重要业务还是建议用云端 API(效果稳定、有团队维护),需要对比的话,去云间 API(https://cloudzone-api.cyou/)注册一个账号,和你的本地模型同时测一测,谁好用谁,检测成本几乎为零。
附:一键部署脚本
不方便下载的同学可以直接复制下方完整源码,新建文本文档粘贴后改后缀为 .sh(macOS/Linux/WSL)或 .ps1(Windows)运行。也可以下载现成文件:
- 下载
install-ollama.sh(macOS / Linux / WSL):https://cleanresolver.com/scripts/install-ollama.sh - 下载
install-ollama.ps1(Windows):https://cleanresolver.com/scripts/install-ollama.ps1
macOS / Linux / WSL(.sh)
#!/usr/bin/env bash
set -u
# ============================================================
# Ollama 本地部署大模型 一键脚本(macOS / Linux / WSL)
# 公开源码,欢迎审查 —— 不放心可先复制给 AI 判断
# 依赖:本脚本仅安装 Ollama 本身,模型需另行 ollama run
# ============================================================
GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; CYAN='\033[0;36m'; NC='\033[0m'
info() { echo -e "${GREEN}[INFO]${NC} $1"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
error() { echo -e "${RED}[ERROR]${NC} $1"; }
step() { echo -e "${CYAN}[STEP]${NC} $1"; }
detect_network() {
step "检测网络环境(国内 / 国外)..."
if curl -fsI --max-time 5 "https://claude.ai" >/dev/null 2>&1; then
info "可直连 claude.ai,判定为海外网络"
echo "overseas"
else
warn "无法直连 claude.ai,判定为国内网络环境(将自动切换国内镜像)"
echo "domestic"
fi
}
install_official() {
# 官方安装脚本
step "使用官方安装脚本安装 Ollama..."
if curl -fsSL --max-time 60 https://ollama.com/install.sh | sh; then
info "官方脚本安装成功"
return 0
fi
warn "官方脚本安装失败,回退备用方案(手动下载二进制)..."
return 1
}
install_binary() {
local net="$1"
step "备用方案:从 GitHub Releases 下载 Ollama 二进制..."
local sys="$(uname -s)"
local asset=""
case "$sys" in
Darwin) asset="Ollama-darwin.zip" ;;
Linux) asset="ollama-linux-amd64.tgz" ;;
*)
error "未知系统 $sys,请手动到 https://ollama.com/download 下载安装包"
return 1
;;
esac
local base_url="https://github.com/ollama/ollama/releases/latest/download/$asset"
if [ "$net" = "domestic" ]; then
base_url="https://ghfast.top/https://github.com/ollama/ollama/releases/latest/download/$asset"
fi
local tmp="/tmp/ollama-dl"
mkdir -p "$tmp"
if curl -fsSL --max-time 300 "$base_url" -o "$tmp/$asset"; then
info "下载成功($asset)"
else
warn "主源失败,回退备用源(ghfast.top 镜像)..."
base_url="https://ghfast.top/https://github.com/ollama/ollama/releases/latest/download/$asset"
if ! curl -fsSL --max-time 300 "$base_url" -o "$tmp/$asset"; then
error "二进制下载失败。请手动访问 https://ollama.com/download 下载安装"
return 1
fi
fi
local dest="$HOME/ollama"
mkdir -p "$dest"
case "$asset" in
*.zip)
if command -v unzip >/dev/null 2>&1; then
unzip -qo "$tmp/$asset" -d "$dest" || { error "解压失败"; return 1; }
else
ditto -x -k "$tmp/$asset" "$dest" 2>/dev/null || { error "解压失败(需要 unzip 或 ditto)"; return 1; }
fi
;;
*.tgz)
tar -xzf "$tmp/$asset" -C "$dest" || { error "解压失败"; return 1; }
;;
esac
# 加入 PATH(当前会话立即生效,永久写入 ~/.bashrc / ~/.zshrc;原因:ollama 需要能找到)
local bin_dir="$dest/bin"
export PATH="$PATH:$bin_dir"
local rc="$HOME/.bashrc"
[ "$SHELL" = "/bin/zsh" ] && rc="$HOME/.zshrc"
if grep -qF "$bin_dir" "$rc" 2>/dev/null; then
:
else
echo "" >> "$rc"
echo "# Ollama - 由一键脚本写入" >> "$rc"
echo "export PATH=\"\$PATH:$bin_dir\"" >> "$rc"
fi
info "已安装到 $dest,执行 ollama 前请先运行:source $rc(或新开终端)"
return 0
}
main() {
echo "============================================"
echo " Ollama 本地部署大模型 一键脚本"
echo " 适用于 macOS / Linux / WSL"
echo "============================================"
echo ""
local NET
NET=$(detect_network)
if command -v ollama >/dev/null 2>&1; then
info "检测到 Ollama 已安装:$(ollama --version 2>&1)"
else
if ! install_official; then
if ! install_binary "$NET"; then
error "安装失败,脚本终止。请手动到 https://ollama.com/download 安装后重跑。"
exit 1
fi
fi
if ! command -v ollama >/dev/null 2>&1; then
# 备用二进制安装时可能未在 PATH;定位提示
if [ -x "$HOME/ollama/bin/ollama" ]; then
export PATH="$PATH:$HOME/ollama/bin"
fi
fi
fi
if command -v ollama >/dev/null 2>&1; then
info "Ollama 安装完成:$(ollama --version 2>&1)"
else
error "未能在当前会话找到 ollama 命令。请 source ~/.bashrc(或 ~/.zshrc)后重试,或手动安装。"
exit 1
fi
echo ""
echo "============================================"
info "全部完成!现在运行你的第一个本地模型:"
echo " ollama run gemma4"
echo "(首次运行自动下载模型,约数 GB,请耐心等待)"
echo "退出聊天:输入 /bye"
echo "============================================"
}
main "$@"
Windows(.ps1)
Windows 运行 .ps1 若提示执行策略限制:打开 PowerShell 输入
Set-ExecutionPolicy -Scope Process Bypass后回车,再运行脚本。-Scope Process仅对当前窗口生效,关掉即恢复,不会改动系统全局策略(系统默认限制来自安全设计,不要为了省事永久 Bypass)。
# ============================================================
# Ollama 本地部署大模型 一键脚本(Windows PowerShell)
# 公开源码,欢迎审查 -- 不放心可先复制给 AI 判断
# 依赖:本脚本仅安装 Ollama 本身,模型需另行 ollama run
# ============================================================
$ErrorActionPreference = "Stop"
function Write-Info { Write-Host "[INFO] $args" -ForegroundColor Green }
function Write-Warn { Write-Host "[WARN] $args" -ForegroundColor Yellow }
function Write-Err { Write-Host "[ERROR] $args" -ForegroundColor Red }
function Write-Step { Write-Host "[STEP] $args" -ForegroundColor Cyan }
function Detect-Network {
Write-Step "检测网络环境(国内 / 国外)..."
try {
$null = Invoke-WebRequest -Uri "https://claude.ai" -Method Head -TimeoutSec 5 -UseBasicParsing
Write-Info "可直连 claude.ai,判定为海外网络"
return "overseas"
} catch {
Write-Warn "无法直连 claude.ai,判定为国内网络环境(将自动切换国内镜像)"
return "domestic"
}
}
function Install-Official {
Write-Step "使用官方安装脚本安装 Ollama..."
try {
iex (irm https://ollama.com/install.ps1)
Write-Info "官方脚本安装成功"
return $true
} catch {
Write-Warn "官方脚本安装失败:$_"
return $false
}
}
function Install-Manual {
param([string]$Net)
Write-Step "备用方案:引导手动安装 OllamaSetup.exe ..."
$exeUrl = if ($Net -eq "domestic") {
"https://ghfast.top/https://github.com/ollama/ollama/releases/latest/download/OllamaSetup.exe"
} else {
"https://github.com/ollama/ollama/releases/latest/download/OllamaSetup.exe"
}
$out = Join-Path $env:TEMP "OllamaSetup.exe"
try {
Invoke-WebRequest -Uri $exeUrl -OutFile $out -TimeoutSec 300 -UseBasicParsing
Write-Info "安装包已下载到 $out"
Write-Host "正在启动安装程序,请在弹出的窗口中完成安装(默认选项即可)。"
Start-Process $out
} catch {
Write-Warn "自动下载失败:$_"
$alt = if ($Net -eq "domestic") {
"https://ghfast.top/https://github.com/ollama/ollama/releases/latest/download/OllamaSetup.exe"
} else {
"https://ollama.com/download"
}
Write-Err "请手动下载安装包:$alt (或官网 https://ollama.com/download)"
}
Write-Host ""
Write-Host "安装完成后回到本窗口,按回车继续验证..."
$null = Read-Host
}
Write-Host "============================================"
Write-Host " Ollama 本地部署大模型 一键脚本"
Write-Host " 适用于 Windows(PowerShell)"
Write-Host "============================================"
Write-Host ""
$net = Detect-Network
if (Get-Command ollama -ErrorAction SilentlyContinue) {
$ver = (ollama --version 2>&1 | Out-String).Trim()
Write-Info "检测到 Ollama 已安装:$ver"
} else {
if (-not (Install-Official)) {
Install-Manual -Net $net
}
}
if (-not (Get-Command ollama -ErrorAction SilentlyContinue)) {
Write-Err "未找到 ollama 命令。若已完成安装,请新开一个 PowerShell 窗口再运行本脚本,或手动输入 ollama --version 验证。"
exit 1
}
Write-Host ""
Write-Host "============================================"
Write-Info "全部完成!现在运行你的第一个本地模型:"
Write-Host " ollama run gemma4"
Write-Host "(首次运行自动下载模型,约数 GB,请耐心等待)"
Write-Host "退出聊天:输入 /bye"
Write-Host "============================================"
请完成验证后查看评论区