ローカルLLMでTool Callを安定させるHermes Adapter設計メモ
Posted: | Tags: ai, codex, hermes, local-llm, tool-calling
なぜこのアプローチを試しているのか
- ローカルLLM、日本語は結構返してくれるようになった
- tool searchの段階で結構あやしい
- ローカルLLMの性能に期待せずに、途中でインターセプトしてcodexなどから使えないか?と考えた
- 2026年時点ではまだうまくできてない(かなりのユースケースに対応するコードが必要そう)
ローカルLLMでTool Callを安定させるHermes Adapter設計メモ
小型のローカル LLM を coding agent や terminal helper に使う場合、通常の chat 品質よりも tool call の安定性が先に問題になる。
特に 8B 級の model では、次のような失敗が起きやすい。
- tool call すべき場面で自然文のコマンド例を返す
- tool name や arguments の JSON が崩れる
- tool 数が多すぎて選択を誤る
- tool output に混じった環境 warning を実行結果と誤解する
- 「実行しないで」と言われたのに実行系 tool を選びかける
このメモは、Hermes 3 Llama 3.1 8B Q5_K_M を例に、ローカル LLM と Codex CLI の間に小さい adapter を置いて tool call を安定させる設計をまとめる。
基本構成
想定した流れは次のようになる。
flowchart LR
CLI[Codex CLI] --> Proxy[OpenAI-compatible proxy]
Proxy --> Adapter[Hermes tool adapter]
Adapter --> Llama[llama-server]
Llama --> Model[Hermes 3 Llama 3.1 8B GGUF]
Adapter --> InternalTools[adapter internal read-only tools]
InternalTools --> Fetch[fetch_url]
InternalTools --> Search[search_web]
InternalTools --> Research[optional research helper]
CLI --> ToolExecutor[Codex tool executor]
ToolExecutor --> Shell[exec_command / write_stdin]
役割を分けると、
Read more...