n8nのAI Agentノードを使うと、入力内容に応じてAIが接続済みツールを選び、情報取得や外部処理を実行できます。ただし、送信・更新・削除まで無条件に任せるのではなく、ツールの引数検証、人間承認、回数上限、失敗時の停止を同時に設計することが重要です。
この記事では、問い合わせを分類し、承認後にタスク作成ツールを呼ぶ最小AIエージェントを例に、モデル・Tool・Memory・Human in the Loopの接続方法を解説します。
情報確認日:2026年7月18日(日本時間)
結論:判断だけをAgentに任せ、副作用は承認後に実行する
- Triggerから利用者の依頼を受け取る
- AI Agentが目的と必要なToolを判断する
- Toolの引数をschemaで検証する
- タスク作成の直前に人間が内容を確認する
- 承認時だけ実行し、結果と判断をlogへ残す
Chat Trigger
↓
AI Agent ─ Chat Model
├─ Memory(必要な会話だけ)
└─ create_task Tool
↓
Human Review
├─ approve → 外部サービスへ作成
└─ reject → 実行せず終了
n8nのAIエージェントで作る完成形
現行のn8n公式ドキュメントでは、AI AgentノードはTools Agentとして動作し、少なくとも1つのTool sub-nodeを接続します。今回の完成条件は次のとおりです。
- 自然言語からタスク名・期限・担当候補を整理する
- 必須情報がなければ質問して止まる
- AIはToolを選べるが、送信は承認前に行わない
- 却下時は外部状態を変更しない
- 1回の入力でTool呼び出しを最大1回に制限する
通常のワークフローで十分なケース
入力と処理が常に同じなら、AI Agentを使わずIF・Switch・通常nodeを組み合わせる方が再現性と費用を管理しやすくなります。Agentが向くのは、入力ごとに必要なToolや順序を判断する必要がある場合です。
AI Agentノードを設定する
モデルとsystem messageを指定する
AI Agentへ対応するChat Modelを接続し、役割と停止条件を明確にします。モデル名や認証方法はproviderとn8n versionにより異なるため、利用画面の対応nodeを確認してください。
役割:
利用者の依頼からタスク作成案を整理する。
ルール:
- 入力にない担当者や期限を作らない
- title、due_date、assignee、reasonを整理する
- due_dateが不明なら質問する
- create_taskは1回だけ候補にする
- 実行前に人間レビューが必要であることを伝える
- Toolエラー時は再送を繰り返さず停止する
入力と終了条件を決める
| 項目 | 設計例 |
|---|---|
| 入力 | 依頼本文、利用者ID、session ID |
| 成功 | 承認済みタスクIDを返す |
| 情報不足 | 不足項目を1回質問する |
| 拒否 | 外部処理なしで終了する |
| 失敗 | error codeを記録し、人へ通知する |
外部ツールを1つ接続する
最初から複数Toolを接続せず、書き込み先を1つに限定します。Tool名とdescriptionは、AIが使う条件を判断できる具体性が必要です。
{
"tool": "create_task",
"description": "承認済みの業務タスクを1件作成する。情報検索や更新には使わない。",
"input": {
"title": "string, 1〜80文字",
"due_date": "YYYY-MM-DD",
"assignee_id": "許可済みID",
"reason": "入力に基づく作成理由"
},
"limits": {
"max_calls_per_execution": 1,
"requires_human_review": true
}
}
引数を実行前に検証する
- titleが空でないか
- 期限が有効な日付か
- 担当者IDが許可リストにあるか
- 対象workspaceが固定されているか
- 同じrequest IDが実行済みでないか
AIの自然言語出力をそのまま外部APIへ渡さず、Edit Fields、IF、Code、sub-workflowなどで検証します。Tool Callingの基本はTool Callingとはも参照してください。
メモリと人間の承認を追加する
保存する会話と保存しない情報を分ける
Memoryは会話継続に必要な場合だけ接続します。API key、個人情報、決済情報、不要な全文を保存しないようにします。session IDを利用者間で共有しないことも重要です。
送信・更新の直前で承認を求める
n8nにはAI Tool呼び出しを人がレビューする公式機能があります。承認画面には、操作名、対象、引数、理由、影響、期限を表示します。
| 選択 | 結果 |
|---|---|
| Approve | 検証済み引数で1回だけ実行 |
| Reject | 外部状態を変更せず終了 |
| Timeout | 安全側で拒否として停止 |
| Edit | 別の明示的な修正経路で再確認 |
最小ワークフロー設計JSON
次はレビュー用の構成表現です。n8nへそのままimportするexport JSONではありません。
{
"workflow": "approved-task-agent",
"nodes": [
{"id": "trigger", "role": "Chat Trigger"},
{"id": "agent", "role": "AI Agent", "maxToolCalls": 1},
{"id": "model", "role": "Chat Model"},
{"id": "memory", "role": "Optional Memory", "retention": "minimum"},
{"id": "tool", "role": "create_task Tool"},
{"id": "review", "role": "Human Review"},
{"id": "log", "role": "Execution Log"}
],
"policy": {
"writeRequiresApproval": true,
"timeoutAction": "reject",
"retryOnWrite": false
}
}
誤実行・ループ・失敗をテストする
case,expected,actual,result
期限なし,質問して停止,質問して停止,pass
許可外担当者,Toolを呼ばない,Toolを呼ばない,pass
承認拒否,外部作成0件,外部作成0件,pass
承認timeout,安全側で停止,安全側で停止,pass
API 500,再送せず通知,再送せず通知,pass
同じrequest ID,二重作成しない,二重作成しない,pass
正常系だけでなく、曖昧な入力、prompt injection、Tool timeout、外部API失敗、同じrequestの再実行をテストします。実行回数、token、API費用にも上限を設けます。
よくある質問
AI AgentにToolは必須ですか?
現行の公式AI Agent nodeでは、少なくとも1つのTool sub-nodeを接続します。単に文章を生成するだけなら、通常のLLM chainやmodel nodeを検討します。
メモリは必ず必要ですか?
必要ありません。1回で完結する処理では保存しない方が管理しやすい場合があります。会話継続に必要な情報だけを保存します。
承認を入れれば安全ですか?
承認だけでは十分ではありません。引数検証、権限、回数上限、二重実行防止、監査logを組み合わせます。基礎はAIエージェントとはも参考になります。
まとめ
n8nでAIエージェントを作るときは、Trigger、AI Agent、Chat Model、1つのToolから始めます。Toolの説明とschemaを具体化し、送信・更新・削除は人間承認後だけ実行してください。
情報不足、拒否、timeout、API失敗、再実行をテストし、実行logから自動化範囲を段階的に広げるのが安全です。引数設計はFunction Callingの基礎も参考になります。