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クラスを使用します。
📖 まとめ
- 70以上の組み込みツールがファイルシステム、Web、コード、ビジョン、音声、データをカバー
- セキュリティティア:読み取り専用は自動、書き込みは確認、危険は必ず確認
- カスタムツール:APIツールはYAML、複雑なロジックはPythonクラス
- ツールセット:特定シナリオ向けの事前設定ツール組み合わせ
📝 練習問題
- 基本(⭐): ファイルシステムとコード実行ツールを使用し、ツール呼び出しプロセスを観察してください。
- 中級(⭐⭐): 自分のAPI(例:GitHub API)に接続するカスタムYAMLツールを開発してください。
- 上級(⭐⭐⭐): 日常業務シナリオ向けの完全なツールセット(5ツール以上)を作成してください。