Hermes Agent: ツールとツールセット

最終更新:2026-08-31

ツールシステムはHermesの「手」です。脳(LLM)だけでは不十分で、実際の作業を行うには手(ツール)が必要です。70以上の組み込みツールでファイルの読み書き、Web検索、コード実行、画像理解が可能です。

💡 ヒント: Hermesのツールシステムは拡張可能です。70以上の組み込みツールがすぐに使え、カスタムツールも開発できます。すべてのツールは安全のためサンドボックスで実行されます。

📋 前提知識: 第7課 スキルシステム

1. 学ぶ内容

# 内容
70以上の組み込みツールカテゴリ
コアツールの使い方
ツールの権限とセキュリティ
カスタムツール開発
ツールセット管理

2. ストーリー

(1) 課題:AIは話すだけで行動できない

BobはChatGPTに「今日の天気を調べて」と聞く——AIは「インターネットにアクセスできません」と言う。「このコードを実行して」と頼む——それもできない。

(2) 解決策:70以上のツールでエージェントが実際に作業

BASH
me: Check Beijing's weather today
Agent: [web_search] [web_scrape]
       Beijing today: Sunny, 26°C, air quality excellent

me: Run this Python code
Agent: [code_python]
       Code executed successfully, output: Hello World

3. 組み込みツールカテゴリ

カテゴリ ツール
ファイルシステム fs_read, fs_write, fs_list, fs_search, fs_move, fs_delete 10以上
Web web_search, web_scrape, web_download, web_api 8以上
コード実行 code_python, code_shell, code_node 5以上
ビジョン vision_analyze, vision_ocr, vision_screenshot 5以上
音声 voice_tts, voice_stt 4以上
データ db_query, json_parse, csv_process 10以上
コミュニケーション email_send, msg_send 8以上
システム sys_info, process_run 5以上

4. コアツール

(1) ファイルシステム

BASH
me: Read src/main.py
Agent: [fs_read("src/main.py")]
       ```python
       from fastapi import FastAPI
       app = FastAPI()
       ```

me: Find files using deprecated APIs
Agent: [fs_search("deprecated", path="src/", type="py")]
       Found 3 files...

(2) コード実行

BASH
me: Calculate Fibonacci(20)
Agent: [code_python]
       ```python
       def fibonacci(n):
           if n <= 1: return n
           return fibonacci(n-1) + fibonacci(n-2)
       print(fibonacci(20))
       ```
       Result: 6765

(3) ビジョン

BASH
me: [Upload screenshot] What's wrong with this page?
Agent: [vision_analyze]
       1. Nav text truncated
       2. Button contrast insufficient (WCAG AA fail)
       3. Mobile layout broken

5. ツールセキュリティ

レベル ツール 確認
読み取り専用 fs_read, web_search ❌ 自動実行
書き込み fs_write, email_send ✅ 確認必要
危険 fs_delete, code_shell ✅ 確認必須
YAML
tools:
  sandbox: true
  code_execution:
    max_time: 30
    max_memory: "512MB"
    network_access: false
  filesystem:
    allowed_paths: ["~/projects"]
    denied_paths: ["~/.ssh"]
    allow_delete: false

6. カスタムツール開発

(1) YAMLツール定義

YAML
name: "jira_search"
description: "Search Jira issues"
category: "communication"
parameters:
  - name: "query"
    type: "string"
    required: true
execution:
  type: "api"
  method: "GET"
  url: "${JIRA_URL}/rest/api/2/search"
  headers:
    Authorization: "Bearer ${JIRA_TOKEN}"

(2) Pythonツール

PYTHON
from hermes import Tool, ToolResult

class CustomMetricsTool(Tool):
    name = "custom_metrics"
    description = "Get project custom metrics"
    
    parameters = {
        "metric": {"type": "str", "required": True},
        "time_range": {"type": "str", "default": "7d"}
    }
    
    def execute(self, metric: str, time_range: str = "7d") -> ToolResult:
        data = self.fetch_metric(metric, time_range)
        return ToolResult(success=True, data=data)

7. ツールセット

YAML
toolsets:
  frontend-dev:
    tools: [fs_read, fs_write, code_node, code_shell, web_search, vision_analyze]
    config:
      fs_write.allowed_extensions: [".ts", ".tsx", ".css", ".html"]
BASH
hermes chat --toolset frontend-dev
/toolset data-analysis

❓ よくある質問

Q ツール呼び出しのレイテンシは?
A ファイルシステムとコード実行は1秒未満、Webはネットワーク依存で2-10秒、ビジョンは3-8秒です。
Q コード実行は安全ですか?
A デフォルトでDockerサンドボックスを使用し、ネットワークとファイルシステムの制限付き。セキュリティレベルは設定可能です。
Q カスタムツールの開発は難しいですか?
A シンプルなAPI呼び出しはYAMLだけで定義可能。複雑なロジックにはPython Toolクラスを使用します。

📖 まとめ


📝 練習問題

  1. 基本(⭐): ファイルシステムとコード実行ツールを使用し、ツール呼び出しプロセスを観察してください。
  2. 中級(⭐⭐): 自分のAPI(例:GitHub API)に接続するカスタムYAMLツールを開発してください。
  3. 上級(⭐⭐⭐): 日常業務シナリオ向けの完全なツールセット(5ツール以上)を作成してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%