Hermes + Ollama:三步在自己电脑上跑起大模型

从安装Ollama到拉取Hermes模型再到开始对话,手把手教你最简单的本地大模型部署方案。全程命令行操作,十分钟搞定。

目录

  1. 为什么选 Ollama + Hermes 这个组合
  2. 第一步:安装 Ollama
    1. macOS
    2. Linux
    3. Windows
    4. 验证安装
  3. 第二步:拉取 Hermes 模型
  4. 第三步:开始对话
    1. 通过 API 调用
    2. 试试 Hermes 的 Function Calling
  5. 性能调优小技巧
    1. 控制上下文长度
    2. GPU 层数控制
    3. 多模型并存
  6. 远程访问配置
    1. Linux
    2. macOS
    3. Windows
  7. 使用 Modelfile 定制模型行为
    1. 创建一个中文助手
    2. 创建一个代码专家
    3. 列出自定义模型
  8. 批量处理和脚本集成
    1. Shell 脚本示例
    2. Python 批量处理
  9. 常见问题排查
  10. 接下来可以做什么

我记得第一次想在自己电脑上跑大模型的时候,光是看那些 CUDA 版本、PyTorch 编译、模型格式转换的教程就头大了。折腾了大半天,最后还是报错退出。

后来发现了 Ollama 这个工具,说实话有点后悔没早点用——整个流程简单到离谱,三条命令就能把 Hermes 模型跑起来。今天就把这个方案分享出来,让大家少走弯路。

为什么选 Ollama + Hermes 这个组合

先说 Ollama。它本质上是一个大模型的运行时管理器,类似于 Docker 之于容器。你不需要关心底层的 GGUF 格式、量化参数这些细节,Ollama 帮你把这些全包了。一条 pull 命令下载模型,一条 run 命令就能对话。

再说 Hermes。Nous Research 出品的 Hermes 系列一直是开源模型里 function calling 和 structured output 做得最好的之一。特别是 Hermes 3 系列,在工具调用、角色扮演、指令遵循这几个维度上表现相当能打。如果你想在本地搞 AI Agent 相关的开发,Hermes 几乎是绕不过去的选择。

这俩搭在一起,就是”最低门槛 + 最强功能”的组合。

第一步:安装 Ollama

macOS

直接去官网下载,或者用 Homebrew:

1
brew install ollama

安装完之后启动服务:

1
ollama serve

终端会显示类似 Listening on 127.0.0.1:11434 的输出,说明服务已经跑起来了。

Linux

一行搞定:

1
curl -fsSL https://ollama.com/install.sh | sh

脚本会自动检测你的 GPU 驱动,如果有 NVIDIA 显卡且装了驱动,会自动启用 GPU 加速。装完之后 Ollama 会作为 systemd 服务自动运行。

检查一下状态:

1
systemctl status ollama

Windows

Ollama 官网 下载 Windows 安装包,双击安装。装完后 Ollama 会在系统托盘运行。

验证安装

不管哪个平台,装完之后跑一下:

1
ollama --version

能看到版本号就算成功。再试试 API 是否通:

1
curl http://localhost:11434/api/tags

返回一个 JSON(哪怕是空的模型列表),就说明 Ollama 服务正常运行。

第二步:拉取 Hermes 模型

Ollama 的模型库里已经收录了 Hermes 系列。直接 pull 就行:

1
2
3
4
5
# 拉取 Hermes 3 8B(推荐入门)
ollama pull hermes3:8b

# 如果显存够大(24GB+),可以试试更大的版本
ollama pull hermes3:70b

8B 版本大概 4.7GB,普通家用电脑都能跑。下载速度取决于你的网络,国内的话可能需要点耐心。

拉取完成后确认一下:

1
ollama list

输出类似:

1
2
NAME           ID              SIZE    MODIFIED
hermes3:8b a1b2c3d4e5f6 4.7 GB 2 minutes ago

这里多说一句关于量化的事。Ollama 默认拉取的是 Q4_K_M 量化版本,这是在质量和大小之间的一个平衡点。对于大部分使用场景来说已经够用了。如果你对质量有更高要求,可以指定更高精度的量化:

1
2
3
4
5
# Q5 量化,质量更高,体积更大
ollama pull hermes3:8b-q5_K_M

# Q8 量化,接近原始精度
ollama pull hermes3:8b-q8_0

但说实话,Q4_K_M 和 Q8 在日常对话中的差异,大部分人感知不到。

第三步:开始对话

最直接的方式:

1
ollama run hermes3:8b

进入交互模式后,直接打字就能聊:

1
>>> 帮我写一个 Python 的快速排序

模型会流式输出回答。按 Ctrl+D 退出对话。

通过 API 调用

如果你想在代码里调用,Ollama 提供了兼容 OpenAI 格式的 API:

1
2
3
4
5
6
7
8
9
10
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "hermes3:8b",
"messages": [
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "解释一下什么是 RAG?"}
],
"temperature": 0.7
}'

Python 代码也很简单:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from openai import OpenAI

client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama" # Ollama 不需要真实 key,随便填
)

response = client.chat.completions.create(
model="hermes3:8b",
messages=[
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "用三句话解释量子计算"}
]
)

print(response.choices[0].message.content)

注意这里用的是 OpenAI 的 Python SDK,但 base_url 指向本地的 Ollama。这意味着你之前写的所有兼容 OpenAI API 的代码,改一下地址就能切到本地模型,迁移成本极低。

试试 Hermes 的 Function Calling

Hermes 模型最拿手的就是 function calling。来个实际例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import json
from openai import OpenAI

client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama"
)

tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "城市名称"
}
},
"required": ["city"]
}
}
}
]

response = client.chat.completions.create(
model="hermes3:8b",
messages=[
{"role": "user", "content": "北京今天天气怎么样?"}
],
tools=tools,
tool_choice="auto"
)

message = response.choices[0].message
if message.tool_calls:
for call in message.tool_calls:
print(f"调用函数: {call.function.name}")
print(f"参数: {call.function.arguments}")

跑起来你会看到模型正确地识别出了需要调用 get_weather 函数,并提取了”北京”作为参数。这个能力在搭建 AI Agent 的时候特别重要。

性能调优小技巧

控制上下文长度

默认的上下文窗口是 2048 tokens,对于长对话可能不够。可以通过 Modelfile 调整:

1
2
3
4
5
6
7
8
9
10
# 创建自定义 Modelfile
cat > Modelfile << 'EOF'
FROM hermes3:8b
PARAMETER num_ctx 8192
PARAMETER temperature 0.7
PARAMETER top_p 0.9
EOF

# 基于这个配置创建新模型
ollama create hermes3-custom -f Modelfile

之后用 ollama run hermes3-custom 就是带自定义参数的版本了。

GPU 层数控制

如果你的显存不够把整个模型放进去,可以控制有多少层跑在 GPU 上:

1
2
# 只把前20层放到 GPU
OLLAMA_NUM_GPU=20 ollama run hermes3:8b

剩余层会跑在 CPU 上,速度会慢一些但至少不会 OOM。

多模型并存

Ollama 支持同时加载多个模型。你可以同时拉取几个不同的模型做对比:

1
2
3
ollama pull hermes3:8b
ollama pull llama3.1:8b
ollama pull qwen2.5:7b

然后分别跑,看看哪个更适合你的场景。Ollama 会自动管理显存,不用的模型会被卸载。

远程访问配置

默认情况下 Ollama 只监听 127.0.0.1,也就是只能本机访问。如果你想在局域网的其他机器上调用(比如在服务器上跑模型,笔记本上写代码),需要修改监听地址。

Linux

编辑 systemd 服务配置:

1
sudo systemctl edit ollama

添加环境变量:

1
2
[Service]
Environment="OLLAMA_HOST=0.0.0.0"

重启服务:

1
2
sudo systemctl daemon-reload
sudo systemctl restart ollama

macOS

设置环境变量后启动:

1
OLLAMA_HOST=0.0.0.0 ollama serve

或者写进 shell 配置文件里持久化。

Windows

在系统环境变量里添加 OLLAMA_HOST,值设为 0.0.0.0。然后重启 Ollama。

设置完之后,局域网内其他机器就可以通过 http://服务器IP:11434 来访问 Ollama API 了。注意安全问题——如果服务器有公网 IP,记得配防火墙限制访问。

使用 Modelfile 定制模型行为

Modelfile 是 Ollama 的一个强大功能,类似于 Dockerfile,让你基于已有模型创建自定义版本。

创建一个中文助手

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cat > ChineseAssistant << 'EOF'
FROM hermes3:8b

# 系统提示词
SYSTEM """你是一个专业的中文技术助手。所有回答必须使用中文。你的回答特点:
1. 技术准确,不含糊
2. 举例说明,方便理解
3. 有代码时给完整可运行的示例
4. 承认不确定的事情"""

# 参数调整
PARAMETER temperature 0.5
PARAMETER num_ctx 8192
PARAMETER top_p 0.9
PARAMETER repeat_penalty 1.1
EOF

ollama create chinese-assistant -f ChineseAssistant

之后直接用 ollama run chinese-assistant 就能启动这个定制版本。

创建一个代码专家

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cat > CodeExpert << 'EOF'
FROM hermes3:8b

SYSTEM """你是一个资深的全栈工程师。用户会向你咨询编程问题,你需要:
1. 先理解问题的本质
2. 给出简洁的解释
3. 提供完整可运行的代码
4. 指出可能的陷阱和最佳实践
不要写过多的废话,重点放在代码和技术细节上。"""

PARAMETER temperature 0.2
PARAMETER num_ctx 8192
PARAMETER stop "<|end|>"
EOF

ollama create code-expert -f CodeExpert

列出自定义模型

1
ollama list

自定义模型和原始模型会一起显示在列表里。删除自定义模型用 ollama rm model-name

批量处理和脚本集成

Ollama 不只是交互式聊天工具,用在脚本里也很方便。

Shell 脚本示例

批量翻译文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
# translate.sh - 用 Hermes 批量翻译 Markdown 文件

for file in ./docs/*.md; do
echo "翻译: $file"
content=$(cat "$file")

curl -s http://localhost:11434/api/generate \
-d "{
\"model\": \"hermes3:8b\",
\"prompt\": \"将以下内容翻译成英文,保留 Markdown 格式:\n\n$content\",
\"stream\": false
}" | python3 -c "import sys,json; print(json.load(sys.stdin)['response'])" \
> "${file%.md}_en.md"

echo "完成: ${file%.md}_en.md"
done

Python 批量处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from openai import OpenAI
import os

client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama"
)

def summarize_file(filepath):
with open(filepath, "r") as f:
content = f.read()

response = client.chat.completions.create(
model="hermes3:8b",
messages=[
{"role": "system", "content": "用100字以内总结以下内容的要点。"},
{"role": "user", "content": content}
],
temperature=0.3
)
return response.choices[0].message.content

# 批量处理目录下的所有文本文件
for filename in os.listdir("./reports"):
if filename.endswith(".txt"):
summary = summarize_file(f"./reports/{filename}")
print(f"{filename}: {summary}\n")

这种用法在日常工作中非常实用——文档摘要、代码注释生成、数据清洗、日志分析都可以用本地模型来做,不用担心数据泄露。

常见问题排查

Q: 下载模型特别慢怎么办?

国内网络环境你懂的。可以设置代理:

1
2
export HTTPS_PROXY=http://your-proxy:port
ollama pull hermes3:8b

或者考虑用一些镜像源,这个在 cocoloop 社区里有人分享过加速方案。

Q: 运行时报 out of memory?

8B 模型至少需要 8GB 内存(CPU 推理)或 6GB 显存(GPU 推理)。如果实在不够,试试更小的量化版本。

Q: API 调用返回 404?

检查 Ollama 服务是否在运行。另外注意 v1 前缀,完整地址是 http://localhost:11434/v1/chat/completions

Q: 中文回答质量不太好?

试试在 system prompt 里明确指定”请用中文回答”。Hermes 3 的中文能力还是不错的,但有时候需要你引导一下。

接下来可以做什么

本地模型跑起来之后,玩法就多了:

在 cocoloop 社区也有不少人在分享自己的本地部署经验,遇到问题可以去交流。

Ollama + Hermes 这个组合确实是目前上手最快的本地大模型方案。三条命令,十分钟,你就拥有了一个完全在本地运行的、支持 function calling 的强力模型。数据完全不出本机,隐私和安全都有保障。赶紧试试吧。

参与讨论

对这篇文章有疑问或想法?cocoloop 社区有不少开发者在讨论 Hermes 相关话题,欢迎加入交流。

前往 cocoloop 社区 →