Chuyển tới nội dung chính

Chạy Hermes cục bộ với Ollama — Chi phí API bằng 0

Vấn đề

API LLM của đám mây tính phí trên mỗi mã thông báo. Một phiên mã hóa nặng có thể tốn từ 5–20 USD. Đối với các dự án cá nhân, học tập hoặc công việc nhạy cảm về quyền riêng tư, điều đó sẽ tăng lên — và bạn đang gửi mọi cuộc trò chuyện cho bên thứ ba.

Hướng dẫn này giải quyết được vấn đề gì

Bạn sẽ thiết lập Hermes Agent chạy hoàn toàn trên phần cứng của riêng mình, sử dụng Ollama làm chương trình phụ trợ mẫu. Không có khóa API, không đăng ký, không có dữ liệu rời khỏi máy của bạn. Sau khi được định cấu hình, Hermes hoạt động chính xác như với OpenRouter hoặc Anthropic — lệnh đầu cuối, chỉnh sửa tệp, duyệt web, ủy quyền — nhưng mô hình chạy cục bộ.

Cuối cùng, bạn sẽ có:

  • Ollama phục vụ một hoặc nhiều mẫu xe có trọng lượng mở
  • Hermes kết nối với Ollama dưới dạng điểm cuối tùy chỉnh
  • Một tác nhân cục bộ đang hoạt động có thể chỉnh sửa tệp, chạy lệnh và duyệt web
  • Tùy chọn: bot Telegram/Discord được hỗ trợ hoàn toàn bằng phần cứng của riêng bạn

Thứ bạn cần

ComponentMinimumRecommended
RAM8 GB (for 3B models)32+ GB (for 27B+ models)
Storage5 GB free30+ GB (for multiple models)
CPU4 cores8+ cores (AMD EPYC, Ryzen, Intel Xeon)
GPUNot requiredNVIDIA GPU with 8+ GB VRAM speeds things up significantly
Chỉ CPU hoạt động nhưng có thể phản hồi chậm hơn

Ollama chạy trên các máy chủ chỉ có CPU. Mô hình 9B trên CPU 8 nhân hiện đại cho ~ 10 mã thông báo/giây. Mô hình 31B trên CPU chậm hơn (~2–5 mã thông báo/giây) — mỗi phản hồi mất 30–120 giây nhưng vẫn hoạt động. GPU cải thiện đáng kể điều này. Đối với các thiết lập chỉ dành cho CPU, hãy mở rộng thời gian chờ API thông qua env var (đó không phải là khóa config.yaml):

# ~/.hermes/.env
HERMES_API_TIMEOUT=1800 # 30 phút — dành cho các mô hình cục bộ chậm

Bước 1: Cài đặt Ollama

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

Xác minh nó đang chạy:

ollama --version
curl http://localhost:11434/api/tags # Should return {"models":[]}

Bước 2: Kéo mô hình

Chọn dựa trên phần cứng của bạn:

ModelSize on DiskRAM NeededTool CallingBest For
gemma4:31b~20 GB24+ GBYesBest quality — strong tool use and reasoning
gemma2:27b~16 GB20+ GBNoConversational tasks, no tool use
gemma2:9b~5 GB8+ GBNoFast chat, Q&A — cannot call tools
llama3.2:3b~2 GB4+ GBNoLightweight quick answers only

:::cảnh báo Vấn đề gọi công cụ Hermes là một trợ lý agent — nó chỉnh sửa tệp, chạy lệnh và duyệt web thông qua lệnh gọi công cụ. Các mô hình không có hỗ trợ cuộc gọi công cụ chỉ có thể trò chuyện; họ không thể hành động. Để có trải nghiệm Hermes đầy đủ, hãy sử dụng mô hình hỗ trợ các công cụ (như gemma4:31b). :::

Kéo mô hình bạn đã chọn:

ollama pull gemma4:31b

:::thông tin Nhiều mô hình Bạn có thể kéo một số mẫu và chuyển đổi giữa chúng bên trong Hermes bằng /model. Ollama tải mô hình đang hoạt động vào bộ nhớ theo yêu cầu và tự động tải các mô hình không hoạt động. :::

Xác minh mô hình hoạt động:

curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gemma4:31b",
"messages": [{"role": "user", "content": "Say hello"}],
"max_tokens": 50
}'

Bạn sẽ thấy phản hồi JSON cùng với câu trả lời của mô hình.

Bước 3: Cấu hình Hermes

Chạy trình hướng dẫn thiết lập Hermes:

hermes setup

Khi được nhắc về nhà cung cấp, hãy chọn Điểm cuối tùy chỉnh và nhập:

  • URL cơ sở: http://localhost:11434/v1
  • Khóa API: Để trống hoặc gõ no-key (Ollama không cần)
  • Mẫu: gemma4:31b (hoặc bất kỳ mẫu nào bạn lấy)

Ngoài ra, hãy chỉnh sửa trực tiếp ~/.hermes/config.yaml:

model:
default: "gemma4:31b"
provider: "custom"
base_url: "http://localhost:11434/v1"

Bước 4: Bắt đầu sử dụng Hermes

hermes

Thế thôi. Bây giờ bạn đang điều hành một đại lý hoàn toàn ở địa phương. Hãy thử nó:

You: List all Python files in this directory and count the lines of code in each

You: Read the README.md and summarize what this project does

Bạn: Tạo tập lệnh Python lấy thông tin thời tiết của Thành phố Hồ Chí Minh

Hermes sẽ sử dụng công cụ đầu cuối, thao tác tệp và mô hình cục bộ của bạn - không có cuộc gọi trên đám mây.

Bước 5: Chọn Model Phù hợp cho Nhiệm vụ của Bạn

Không phải mọi nhiệm vụ đều cần mô hình lớn nhất. Đây là một hướng dẫn thực tế:

TaskRecommended ModelWhy
File edits, code, terminal commandsgemma4:31bOnly model with reliable tool calling
Quick Q&A (no tool use needed)gemma2:9bFast responses for conversational tasks
Lightweight chatllama3.2:3bFastest, but very limited capabilities

:::lưu ý Đối với công việc tác nhân đầy đủ (chỉnh sửa tệp, chạy lệnh, duyệt), gemma4:31b hiện là tùy chọn cục bộ tốt nhất có hỗ trợ lệnh gọi công cụ. Kiểm tra thư viện mô hình của Ollama để biết các mô hình mới hơn — hỗ trợ gọi công cụ đang mở rộng nhanh chóng. :::

Chuyển đổi mô hình nhanh chóng trong một phiên:

/model gemma2:9b

Bước 6: Tối ưu hóa tốc độ

Tăng cửa sổ ngữ cảnh của Ollama

Theo mặc định, Ollama sử dụng bối cảnh 2048 mã thông báo. Đối với công việc đại lý (gọi công cụ, hội thoại dài), bạn cần thêm:

# Create a Modelfile that extends context
cat > /tmp/Modelfile << 'EOF'
FROM gemma4:31b
PARAMETER num_ctx 16384
EOF

ollama tạo gemma4-16k -f /tmp/Modelfile

Sau đó cập nhật cấu hình Hermes của bạn để sử dụng gemma4-16k làm tên mẫu.

Giữ mô hình được tải

Theo mặc định, Ollama sẽ tải các mô hình sau 5 phút không hoạt động. Đối với bot cổng liên tục, hãy luôn tải nó:

# Set keep-alive to 24 hours
curl http://localhost:11434/api/generate \
-d '{"model": "gemma4:31b", "keep_alive": "24h"}'

Hoặc đặt nó trên toàn cầu trong môi trường của Ollama:

# /etc/systemd/system/ollama.service.d/override.conf
[Service]
Environment="OLLAMA_KEEP_ALIVE=24h"

Sử dụng tính năng Giảm tải GPU (Nếu có)

Nếu bạn có GPU NVIDIA, Ollama sẽ tự động giảm tải các lớp cho GPU đó. Kiểm tra với:

ollama ps   # Shows which model is loaded and how many GPU layers

Đối với kiểu máy 31B trên GPU 12 GB, bạn sẽ được giảm tải một phần (~40 lớp trên GPU, phần còn lại trên CPU), điều này vẫn giúp tăng tốc đáng kể.

Bước 7: Chạy dưới dạng Gateway Bot (Tùy chọn)

Sau khi Hermes hoạt động cục bộ trong CLI, bạn có thể hiển thị nó dưới dạng bot Telegram hoặc Discord - vẫn chạy hoàn toàn trên phần cứng của bạn.

###Telegram

  1. Tạo bot qua @BotFather và nhận mã thông báo
  2. Thêm vào ~/.hermes/config.yaml của bạn:
model:
default: "gemma4:31b"
provider: "custom"
base_url: "http://localhost:11434/v1"

nền tảng:
điện tín:
đã bật: đúng
mã thông báo: "YOUR_TELEGRAM_BOT_TOKEN"
  1. Khởi động cổng:
hermes gateway

Bây giờ hãy nhắn tin cho bot của bạn trên Telegram - nó sẽ phản hồi bằng mô hình địa phương của bạn.

Bất hòa

  1. Tạo ứng dụng Discord tại discord.com/developers
  2. Thêm vào cấu hình:
platforms:
discord:
enabled: true
token: "YOUR_DISCORD_BOT_TOKEN"
  1. Bắt đầu: ``cổng Hermes`

Bước 8: Thiết lập dự phòng (Tùy chọn)

Các mô hình địa phương có thể gặp khó khăn với các nhiệm vụ phức tạp. Thiết lập dự phòng đám mây chỉ kích hoạt khi mô hình cục bộ bị lỗi:

model:
default: "gemma4:31b"
provider: "custom"
base_url: "http://localhost:11434/v1"

fallback_providers:
- nhà cung cấp: openrouter
mô hình: nhân loại/claude-sonnet-4

Bằng cách này, 90% mức sử dụng của bạn là miễn phí (cục bộ) và chỉ những tác vụ khó mới sử dụng được API trả phí.

Khắc phục sự cố

"Kết nối bị từ chối" khi khởi động

Ollama không chạy. Bắt đầu nó:

sudo systemctl start ollama
# or
ollama serve

Phản hồi chậm

  • Kiểm tra kích thước model so với RAM: Nếu model của bạn cần nhiều RAM hơn mức khả dụng, nó sẽ chuyển sang ổ đĩa. Sử dụng model nhỏ hơn hoặc thêm RAM.
  • Kiểm tra ollama ps: Nếu không có lớp GPU nào được giảm tải, phản hồi sẽ bị ràng buộc bởi CPU. Điều này là bình thường đối với các máy chủ chỉ có CPU.
  • Giảm ngữ cảnh: Các cuộc hội thoại lớn làm chậm quá trình suy luận. Sử dụng /compress thường xuyên hoặc đặt ngưỡng nén thấp hơn trong config.

Model không tuân theo lệnh gọi của công cụ

Các mô hình nhỏ hơn (3B, 7B) đôi khi bỏ qua các lệnh gọi công cụ và tạo ra văn bản thuần túy thay vì các lệnh gọi hàm có cấu trúc. Giải pháp:

  • Sử dụng mô hình lớn hơngemma4:31b hoặc gemma2:27b xử lý lệnh gọi công cụ tốt hơn nhiều so với mô hình 3B/7B.
  • Hermes có tính năng tự động sửa chữa — nó phát hiện các lệnh gọi công cụ không đúng định dạng và cố gắng tự động sửa chúng.
  • Thiết lập dự phòng — nếu mô hình cục bộ thất bại 3 lần, Hermes sẽ quay trở lại nhà cung cấp đám mây.

Lỗi cửa sổ ngữ cảnh

Bối cảnh Ollama mặc định (2048 mã thông báo) quá nhỏ cho công việc tác nhân. Xem Bước 6 để tăng tốc độ.

So sánh chi phí

Đây là những gì chạy lưu cục bộ so với API đám mây, dựa trên phiên mã hóa thông thường (đầu vào ~ 100K mã thông báo, đầu ra ~ 20K mã thông báo):

ProviderCost per SessionMonthly (daily use)
Anthropic Claude Sonnet~$0.80~$24
OpenRouter (GPT-4o)~$0.60~$18
Ollama (local)$0.00$0.00

Chi phí duy nhất của bạn là điện - khoảng 0,01–0,05 USD mỗi phiên tùy thuộc vào phần cứng.

Điều gì hoạt động tốt ở địa phương

  • Chỉnh sửa tệp và tạo mã — các mẫu 9B+ xử lý tốt việc này
  • Lệnh đầu cuối — Hermes gói lệnh, chạy nó, đọc đầu ra bất kể kiểu máy
  • Duyệt web — công cụ trình duyệt thực hiện việc tìm nạp; mô hình chỉ diễn giải kết quả
  • Cron jobs và tác vụ theo lịch — hoạt động giống hệt với thiết lập trên đám mây
  • Cổng đa nền tảng — Telegram, Discord, Slack đều hoạt động với các mô hình địa phương

Điều gì tốt hơn với Mô hình đám mây

  • Lý luận nhiều bước rất phức tạp — 70B+ hoặc các mô hình đám mây như Claude Opus tốt hơn đáng kể
  • Cửa sổ ngữ cảnh dài — mô hình đám mây cung cấp 100K–1M token; các mô hình cục bộ thường là 8K–32K
  • Tốc độ phản hồi lớn — suy luận trên đám mây nhanh hơn so với suy luận cục bộ chỉ dành cho CPU trong nhiều thế hệ

Điểm thú vị: sử dụng cục bộ cho các tác vụ hàng ngày, thiết lập dự phòng đám mây cho những nội dung khó.