Tag: Hermes

ローカルLLMでTool Callを安定させるHermes Adapter設計メモ

なぜこのアプローチを試しているのか

  • ローカル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...