中級向け

n8n AI Agentノードの使い方

ツールを呼びながら考えるノードです。ツールを呼ぶたびに履歴ごと送り直すので費用は反復回数より速く増え、上限に当たると途中経過は返ってきません。実際にループさせて、1回ごとのトークン数を測りました。

動作確認: — n8n 2.36.8 / AI Agent v3.1 / Anthropic Chat Model v1.5 / Claude Haiku 4.5

AI Agent は、LLMにツールを持たせて「呼ぶ→結果を読む→また呼ぶ」を繰り返させるノードです。 LLM本体は下にぶら下げるチャットモデルで、AI Agent はその往復を回す役です。 モデル側の設定は Anthropic Chat Model の記事 にまとめました。

この記事は往復を回す側の話です。わざと終わらないツールを作ってループさせ、 1回ごとに何が送られ、いくらかかり、上限に当たると何が残るかを測りました。

結論を先に書きます。

  • ツールを呼ぶたびにそれまでの履歴を全部送り直すので、費用は反復回数より速く増える
  • 上限は既定で10回。当たると途中経過は返ってこない
  • System Message は、追加しない限り何も送られない
  • AI Agent 自身が出す集計は最後の1回分だけで、費用の確認には使えない

5回実行して、消費は約2.5セントでした。モデルはすべて Claude Haiku 4.5 です。

置いた直後の状態

AI Agent を置くと、下に3つの差し込み口が出ます。

差し込み口 役割
Chat Model(必須) 実際に考えるLLM
Memory 過去の会話を覚えさせる
Tool エージェントが呼べる道具。n8n のノードやコードをつなぐ
n8nで新しく置いたAI Agentノードの設定画面。Source for Prompt は Connected Chat Trigger Node、Options の下には Add Option ボタンだけがあり、項目は1つも入っていない。下部に Chat Model、Memory、Tool の差し込み口が並ぶ
置いた直後の Options は空。ここが後で効いてくる

Options が空であることを覚えておいてください。

検証のしかた

何度呼んでも NOT DONE. Call check_status again. と返すだけのツールを Code Tool で作り、AI Agent にこう指示しました。

Call the check_status tool repeatedly until it returns DONE.
Do not stop or answer before it returns DONE.

ツールは絶対に DONE を返さないので、エージェントは上限まで呼び続けます。 1回ごとの送信内容とトークン数は、AI Agent ではなく下にぶら下がった Chat Model の 実行記録に1回ずつ残ります。

ツールを1つつなぐだけで、毎回578トークン乗る

まず、同じプロンプトをツールあり・なしで送った1回目の入力トークンです。

状態 入力トークン
ツールなし 31
ツール1つ(check_status) 609

ツールを1つつないだだけで、1回あたり578トークン増えました。 ツールの説明文に加えて、ツールを使わせるための指示が毎回送られるためです。 Anthropic の料金ページでは、 Claude Haiku 4.5 のツール用の指示だけで496トークンとされています。

この578トークンは呼び出しのたびに乗ります。 10回呼べば10回分です。

ツールを呼ぶたびに、履歴ごと送り直す

上限まで回したときの、1回ごとの入力トークンです。

反復 1 2 3 4 5 6 7 8 9 10
入力 609 731 851 969 1,089 1,208 1,329 1,450 1,570 1,688

毎回約120トークンずつ増えています。 実行データを開くと理由が分かります。 2回目に送られたのは、1回目の指示に「AIがツールを呼んだ」「ツールがこう返した」を 付け足したもの。3回目はさらにもう1往復分が付きます。会話を毎回最初から全部送っているわけです。

10回の入力を合計すると11,494トークン。1回目の約19倍です。 10回呼んだら10倍、ではありません。

ループ上限は10回。当たるとエラーで止まる

Options に何も入れていない状態では、10回でエラーになって止まりました。

Max iterations (10) reached.
The agent could not complete the task within the allowed number of iterations.

Max Iterations を追加して3にすると、3回で同じエラーが出ます。上限そのものは定義どおりに効きます。

n8nのAI AgentノードでAdd Optionを押して開いた一覧。System Message、Max Iterations、Return Intermediate Steps、Automatically Passthrough Binary Images、Automatically Passthrough Binary PDFs、Tracing Metadata、Auto-save highlighted data、Enable Streaming、Batch Processing が並んでいる
Max Iterations も Return Intermediate Steps も、Add Option から追加する

10回目まで13秒でした。止まるまでの費用は、上の11,494トークン分を払い済みです。

上限に当たると、途中経過は返ってこない

ここがいちばん困る点です。

上限に当たっても後続に流したいので、Settings の On Error を Continue にし、 さらに Options に Return Intermediate Steps(途中経過を出力に含める)を入れて実行しました。

n8nのAI Agentノードの実行結果画面。出力欄に Execution will continue even if the node fails と表示され、1 item の中身は error フィールドだけで、Max iterations (3) reached. The agent could not complete the task within the allowed number of iterations. と書かれている。上部の実行状態は緑のチェックで成功を示している
緑のチェック(成功)が付いているのに、出力は error の1行だけ
状況 出力
上限に当たった { "error": "Max iterations (3) reached..." } だけ
対照:ツールが DONE を返して正常に終わった output と intermediateSteps の両方

Return Intermediate Steps は、正常に終わったときしか効きません。 上限に当たったときは、何回ツールを呼んで何が返ってきたのかが出力に含まれず、 後続のノードからは追えません。

System Message は、追加しないと何も送られない

ノード定義には、System Message の既定値として You are a helpful assistant と書かれています。 ところがOptions が空のまま実行すると、送られたのはこれだけでした。

Human: Call the check_status tool repeatedly until it returns DONE. ...

System: の行がありません。Add Option で System Message を追加すると、 欄に You are a helpful assistant が入ります。

n8nのAI Agentノードの設定画面。Add Option から System Message を追加した直後で、欄に You are a helpful assistant という文が入っている
Add Option で追加した瞬間に既定の文が入る。追加しなければ何も送られない

この状態で送ると System: You are a helpful assistant が先頭に付き、入力は609→615トークンになりました。

定義の「既定値」は、項目を追加したときに欄へ入る値であって、 項目が無いときに使われる値ではありませんでした。 HTTP Request の Timeout、 Anthropic Chat Model の Max Tokens に続いて、同じ構造の3例目です。

AI Agent の集計は、最後の1回分しか数えていない

AI Agent の実行データには、トークン数や反復回数の集計も入っています。 ところが数字が合いませんでした。

ツールが DONE を返して2回で終わった実行です。

AI Agent の集計 Chat Model の実測(2回分の合計)
入力トークン 729 1,344(615 + 729)
出力トークン 18 91(73 + 18)

AI Agent の集計は、2回目の呼び出しの値そのものです。1回目が抜けています。 反復回数の欄は、どの実行でも 0 でした。上限まで回ってエラーになった実行では、 トークンの集計自体が出ていません。

費用を確かめたいときは、Chat Model 側の記録を1回ずつ足す必要があります。

ツールが無いと、呼んだふりをして成功する

対照のためにツールを外して同じ指示を送ったところ、モデルはこう返しました。

I'll call the check_status tool repeatedly until it returns DONE.

<check_status>
</check_status>

ツールを呼んだつもりの文字列を本文に書いて終わり、実行は成功扱いです。 ツールの差し込み忘れや、ツール名の打ち間違いがあっても、エラーにはなりません。 これは1回だけの観察なので、いつも同じになるとは限りません。

検証にいくらかかったか

実行 呼び出し回数 入力 出力
上限10回まで 10 11,494 881
上限3回(System Message あり) 3 2,206 224
上限3回(Continue + 途中経過) 3 — —
正常終了 2 1,344 91
ツールなし 1 31 30

3行目はトークン数を記録から読んでいません。2行目とほぼ同じ構成なので、合計は約2.5セントです。

費用のほとんどは、上限まで回した1回でした。ツール1行の返答でこれなので、 実際のツールではもっと膨らみます。

確認していないこと

  • Claude Haiku 4.5 でしか測っていません。 他のモデルでは増え方の数字が変わります
  • ツールが大きな応答を返す場合は測っていません。 1往復120トークンは、ツールが1行しか返さないときの値です
  • Memory はつないでいません。 会話をまたぐと、履歴の送り直しがどうなるかは未確認です
  • Enable Streaming(既定でオン)は確かめていません。 Chat Trigger から使うときの挙動で、今回の手動実行では関係しません
  • n8n のソースは読んでいません。なぜ上限到達時に途中経過が落ちるのかは分かりません

次に読む

モデル側の設定と、設定しても効かない項目は n8n で Claude を使う:Anthropic Chat Model の設定と、効かない項目 にまとめています。

On Error の Continue と Stop の違い、エラー出力の使い方は エラーが起きたとき、後続ノードには何が届くのか に書きました。

同じ仕事を、手順を組んだ版と AI Agent に任せた版で比べた結果は AI Agentに任せるか、手順を組むか にまとめました。

次に読む