Hermes Agent Wiki 非公式・日本語wiki

Ollama で Hermes をローカルで動かす — API 料金ゼロ

目次

何が問題か

クラウドの LLM API はトークン単位で課金されます。コーディングを集中的に進めれば、1 セッションで 5〜20 ドルかかることもあります。個人のプロジェクト、学習、プライバシーに配慮したい作業では、この金額が積み上がっていきます。しかも会話の内容は毎回、第三者へ送られています。

この手順で解決すること

Hermes Agent を、モデルの実行基盤に Ollama を使って、すべて自分のハードウェア上で動かします。API キーもサブスクリプションも要らず、データが端末の外へ出ることもありません。設定が済めば、OpenRouter や Anthropic を使うときとまったく同じように動きます。ターミナルのコマンド実行、ファイル編集、ウェブの閲覧、作業の委譲まで同じで、違うのはモデルが手元で動いている点だけです。

最後まで進めると、次の状態になります。

  • Ollama がオープンウェイトのモデルを 1 つ以上動かしている
  • Hermes がカスタムエンドポイントとして Ollama につながっている
  • ファイルを編集し、コマンドを実行し、ウェブを閲覧できるローカルのエージェントが動いている
  • 必要なら、自分のハードウェアだけで動く Telegram / Discord のボットも用意できる

必要なもの

構成要素 最低限 推奨
メモリ 8 GB(3B 級のモデル向け) 32 GB 以上(27B 以上のモデル向け)
ストレージ 空き 5 GB 30 GB 以上(複数のモデルを置く場合)
CPU 4 コア 8 コア以上(AMD EPYC、Ryzen、Intel Xeon など)
GPU 必須ではありません VRAM 8 GB 以上の NVIDIA GPU があると大幅に速くなります

ステップ 1: Ollama を入れる

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

動いていることを確認します。

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

ステップ 2: モデルを取得する

お使いのハードウェアに合わせて選んでください。

モデル ディスク使用量 必要なメモリ ツール呼び出し 向いている用途
gemma4:31b 約 20 GB 24 GB 以上 品質重視。ツール利用と推論に強い
gemma2:27b 約 16 GB 20 GB 以上 不可 会話向け。ツールは使えません
gemma2:9b 約 5 GB 8 GB 以上 不可 軽快な会話と質疑応答。ツールは呼べません
llama3.2:3b 約 2 GB 4 GB 以上 不可 軽い質問に手早く答えるだけの用途

選んだモデルを取得します。

ollama pull gemma4:31b

モデルが動くことを確認します。

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
  }'

モデルの返答が入った JSON が返ってくるはずです。

ステップ 3: Hermes を設定する

Hermes のセットアップウィザードを実行します。

hermes setup

プロバイダーを聞かれたら Custom Endpoint を選び、次のように入力します。

  • Base URL: http://localhost:11434/v1
  • API Key: 空のままにするか no-key と入力します(Ollama には不要です)
  • Model: gemma4:31b(または取得したモデル)

~/.hermes/config.yaml を直接書いてもかまいません。

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

ステップ 4: Hermes を使ってみる

hermes

これで完了です。完全にローカルで動くエージェントができました。さっそく試してみましょう。

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

You: Create a Python script that fetches the weather for Ho Chi Minh City

Hermes はターミナルのツールとファイル操作、そして手元のモデルを使って応えます。クラウドへの通信は発生しません。

ステップ 5: 用途に合ったモデルを選ぶ

どんな作業にもいちばん大きなモデルが要るわけではありません。実用的な目安を挙げます。

作業 推奨モデル 理由
ファイル編集、コード、ターミナルのコマンド gemma4:31b ツール呼び出しが安定して動く唯一のモデル
手早い質疑応答(ツール不要) gemma2:9b 会話向けの用途で応答が速い
軽い会話 llama3.2:3b いちばん速いものの、できることはかなり限られます

セッションの途中でモデルを切り替えるには次のようにします。

/model gemma2:9b

ステップ 6: 速度を詰める

Ollama のコンテキスト長を広げる

Ollama の既定のコンテキストは 2048 トークンです。ツールを使うエージェントの作業には、Hermes は最低でも 64,000 トークンを必要とします。

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

ollama create gemma4-64k -f /tmp/Modelfile

そのうえで、Hermes の設定のモデル名を gemma4-64k に変更します。

モデルを読み込んだままにする

Ollama は既定で、5 分間使われなかったモデルをメモリから解放します。常駐させるゲートウェイのボットでは、読み込んだままにしておきましょう。

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

Ollama の環境変数で全体に効かせることもできます。

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

GPU に処理を振る(使える場合)

NVIDIA の GPU があれば、Ollama は自動でレイヤーを GPU に振り分けます。確認はこちらです。

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

12 GB の GPU で 31B のモデルを動かすと部分的な振り分けになりますが(GPU に約 40 レイヤー、残りは CPU)、それでも十分な速度向上が得られます。

ステップ 7: ゲートウェイのボットとして動かす(任意)

コマンドラインで Hermes がローカルに動くようになったら、Telegram や Discord のボットとして公開できます。処理はすべて自分のハードウェアの中で完結したままです。

Telegram

  1. @BotFather でボットを作り、トークンを受け取ります
  2. ~/.hermes/config.yaml に次を追加します
model:
  default: "gemma4:31b"
  provider: "custom"
  base_url: "http://localhost:11434/v1"

platforms:
  telegram:
    enabled: true
    token: "YOUR_TELEGRAM_BOT_TOKEN"
  1. ゲートウェイを起動します
hermes gateway

これで Telegram からボットに話しかけると、手元のモデルが応答します。

Discord

  1. discord.com/developers で Discord アプリケーションを作ります
  2. 設定に次を追加します
platforms:
  discord:
    enabled: true
    token: "YOUR_DISCORD_BOT_TOKEN"
  1. 起動します: hermes gateway

ステップ 8: フォールバックを用意する(任意)

ローカルのモデルは、込み入った作業では力不足になることがあります。ローカルのモデルが失敗したときだけ動くクラウドのフォールバックを設定しておきましょう。

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

fallback_providers:
  - provider: openrouter
    model: anthropic/claude-sonnet-4

こうしておけば利用の 9 割は無料(ローカル)で済み、難しい作業のときだけ有料の API を使うことになります。

困ったときは

起動時に「Connection refused」と出る

Ollama が動いていません。起動してください。

sudo systemctl start ollama
# or
ollama serve

応答が遅い

  • モデルの大きさとメモリを見比べる: モデルが搭載メモリより多くを必要とすると、ディスクへのスワップが発生します。小さいモデルにするか、メモリを増設してください。
  • ollama ps を確認する: GPU に振り分けられたレイヤーがなければ、処理は CPU 頼みです。CPU だけのサーバーではこれが普通の状態です。
  • コンテキストを減らす: 会話が長くなるほど推論は遅くなります。こまめに /compress を使うか、設定で圧縮のしきい値を下げてください。

最初の応答が遅い(プリフィル)

Hermes は API 呼び出しのたびに、会話の内容の前に決まった中身を送ります。システムプロンプトと、有効になっているすべてのツールのスキーマです。CPU だけ、あるいは VRAM の少ない構成では、この入力の処理(*プリフィル* の段階)が最初のターンの大半を占めます。モデルがプロンプトを読み込んでいる数分間は何も出力されず、そのあと通常の速度で生成が始まります。これは想定どおりの挙動で、固まっているわけではありません。Mac でローカル LLM を動かす手順 にも同じ現象の説明があり(大きなコンテキストのプリフィル中、ローカルのモデルは数分間まったく出力しないことがあります)、Hermes はローカルのエンドポイントに対してストリームの読み取りタイムアウトを 120 秒から 1800 秒へ自動で引き上げます(HERMES_STREAM_READ_TIMEOUT)。

効果があるのは次の対処です。

  • モデルを読み込んだままにする — Ollama は 5 分間使われなかったモデルを解放するため、次のプリフィルの前に読み込み直しが丸ごと入ります。OLLAMA_KEEP_ALIVE=24h を設定してください(ステップ 6 を参照)。
  • API のタイムアウトを延ばす~/.hermes/.envHERMES_API_TIMEOUT=1800 を設定します(必要なもの を参照)。
  • 決まった中身を測って削るhermes prompt-size を実行するとシステムプロンプトとツールのスキーマの内訳がバイト単位で分かります。そのうえで hermes tools で使っていないツールセットを無効にし、hermes skills で不要なスキルを削除してください。
  • GPU に処理を振る — 部分的な振り分けでも十分な速度向上が得られます(ステップ 6 を参照)。

モデルがツール呼び出しどおりに動かない

ツール呼び出しに対応していないモデルは、構造化された関数呼び出しではなく、ただのテキストを返します。対処は次のとおりです。

  • ツール呼び出しに対応したモデルを使う — 上に挙げたモデルの中では、安定してツールを呼べるのは gemma4:31b だけです。
  • Hermes には自動修復があります — 形式の崩れたツール呼び出しを検出し、自動で直そうとします。
  • フォールバックを設定する — ローカルのモデルが 3 回失敗すると、Hermes はクラウドのプロバイダーへ切り替えます。

ツールを実際に実行せず、返答の中に {"name": "web_search", ...} のような生の JSON が出てくる場合、原因はたいていモデルではなく*サーバー*側です。ツール呼び出しが有効になっていないか、ツール呼び出しの形式が解釈されていません。ツール呼び出しが実行されずテキストとして出てくる にある、サーバーごとの対処表を確認してください(llama.cpp には --jinja、vLLM には --enable-auto-tool-choice --tool-call-parser hermes が必要、といった具合です)。

コンテキスト長のエラーが出る

Ollama の既定のコンテキスト(2048 トークン)は、エージェントの作業には小さすぎます。広げ方は ステップ 6 を参照してください。

費用の比較

一般的なコーディングのセッション(入力 10 万トークン、出力 2 万トークン程度)を基準に、ローカルで動かすとクラウドの API に比べてどれだけ節約できるかを示します。

プロバイダー 1 セッションあたり 月額(毎日使った場合)
Anthropic Claude Sonnet 約 0.80 ドル 約 24 ドル
OpenRouter(GPT-4o) 約 0.60 ドル 約 18 ドル
Ollama(ローカル) 0.00 ドル 0.00 ドル

かかるのは電気代だけで、ハードウェアにもよりますが 1 セッションあたり 0.01〜0.05 ドル程度です。

ローカルでもうまくいくこと

  • ファイル編集とコード生成 — 9B 以上のモデルなら十分にこなせます
  • ターミナルのコマンド — Hermes がコマンドを組み立てて実行し、出力を読むので、モデルによらず動きます
  • ウェブの閲覧 — 取得はブラウザのツールが行い、モデルは結果を読み解くだけです
  • cron や定期実行 — クラウド構成とまったく同じように動きます
  • 複数プラットフォームのゲートウェイ — Telegram、Discord、Slack のいずれもローカルのモデルで動きます

クラウドのモデルのほうが得意なこと

  • かなり込み入った多段の推論 — 70B 以上のモデルや、Claude Opus のようなクラウドのモデルのほうが目に見えて優れています
  • 長いコンテキスト — クラウドのモデルは 10 万〜100 万トークンに対応しますが、ローカルの実行環境は設定しないかぎり Hermes が求める最低 64K を下回る既定値のことがよくあります
  • 長い応答の生成速度 — 長文の生成では、CPU だけのローカル環境よりクラウドでの推論のほうが速くなります

いちばん割のいい使い方は、日常の作業はローカルで済ませ、難しいものだけクラウドのフォールバックに任せることです。