n8nでAIエージェントのプロンプトA/Bテストを自動化|Supabase×OpenAI活用術
n8n の公式サイトのテンプレート集で公開されているテンプレート(作成者: Chris Carr)「Split test different agent prompts with Supabase and OpenAI」を使うと、AI エージェントとのチャットを、2 つのプロンプトのどちらかにランダムに振り分けられます。 振り分けは会話(セッション)ごとで、同じ会話の中では同じプロンプトが使われ続けます。ただし、テンプレートがするのは振り分けまでで、どちらのプロンプトが良いかは測りません。測るには、会話の結果を記録する仕組みを足すか、n8n の Evaluations(評価)の機能を使います。
この記事は 2026年10月に、n8n の公式サイトで公開されているテンプレートと、n8n の公式ドキュメントをもとに全面的に書き直しました。以前の版にあった、テンプレートに無い構成(2 つのプロンプトを並べて実行し、採点して保存する仕組み)、古いノード名、出典の無い効果の数字は削除しています。
プロンプトの A/B テストとは
同じ用途に 2 つのプロンプトを用意し、利用者をランダムに 2 つに分けて、どちらが目的に合った結果を出すかを比べる方法です。n8n のテンプレートでは、今のプロンプトを「ベースライン(baseline)」、試したいプロンプトを「代替(alternative)」と呼びます。
AI の返答は、同じ入力でも毎回少しずつ変わります。そのため、数回試して「良さそう」と決めるのではなく、多くの会話で比べるのが A/B テストの考え方です。
テンプレートの仕組み
テンプレート(n8n.io/workflows/2992)は、次の順に動きます。
| 順 | ノード | すること |
|---|---|---|
| 1 | When chat message received(Chat Trigger) | チャットのメッセージを受け取る。会話ごとにセッション ID が付く |
| 2 | Define Path Values(Set) | ベースラインと代替の 2 つのプロンプトを決めておく |
| 3 | Check If Session Exists(Supabase) | split_test_sessions テーブルに、この会話のセッション ID があるかを調べる |
| 4 | If Session Does Exist(If) | あれば 6 へ、無ければ 5 へ進む |
| 5 | Assign Path To Session(Supabase) | セッション ID と、代替を使うかどうか(show_alternative)を書き込む。show_alternative は Math.random() < 0.5 で決まるので、半々の確率になる |
| 6 | Get Correct Prompt(Set) | show_alternative が true なら代替、false ならベースラインのプロンプトを選ぶ |
| 7 | AI Agent | 選んだプロンプトをシステムメッセージとして使い、返答を作る。言語モデルは OpenAI Chat Model、会話の履歴は Postgres Chat Memory に保存する |
一度割り当てが決まった会話は、2 通目以降も 3 → 4 → 6 と進むので、同じプロンプトが使われ続けます。
テンプレートがしないこと
- 同じ入力を、2 つのプロンプトの両方で実行して比べる
- 返答を採点する、指標を計算する
- 結果を集計する(保存されるのは、セッションと割り当て、会話の履歴だけです)
テンプレートの説明でも、次のステップとして「2 つのプロンプトの効果を測る方法を足す」「temperature など、ほかの設定を比べるように変える」が挙げられています。
使い方
テンプレートの Setup の手順に沿って準備します。
1. Supabase にテーブルを作る
Supabase に split_test_sessions というテーブルを作り、次の 2 つの列を用意します。
| 列 | 型 | 中身 |
|---|---|---|
session_id |
text | チャットのセッション ID |
show_alternative |
bool | 代替のプロンプトを使うかどうか |
2. 資格情報を登録する
テンプレートが使う資格情報は、Supabase・OpenAI・PostgreSQL の 3 つです。
- Supabase:Host と Secret Key を登録します(OAuth2 でもつなげます)。Host には、Supabase のダッシュボードの「Integrations」→「Data API」にある Project URL を、末尾の
/rest/v1を除いて入れます - OpenAI:AI Agent につながっている OpenAI Chat Model が使います
- PostgreSQL:会話の履歴を保存する Postgres Chat Memory が使います。履歴のテーブル(テンプレートでは
n8n_split_test_chat_histories)は、無ければ自動で作られます
3. 2 つのプロンプトを書き換える
Define Path Values ノードの baseline_value(ベースライン)と alternative_value(代替)に、比べたいプロンプトを入れます。初期値は、動きを確かめるための短い文(犬の名前だけが違う 2 つの文)です。
4. 有効にして、n8n のチャットで試す
ワークフローを有効にし、n8n に組み込まれたチャットからメッセージを送ります。新しい会話を何度か始めると、会話によって違うプロンプトが使われることを確かめられます。
社外の人に使ってもらうときは、Chat Trigger の「Make Chat Publicly Available」を有効にし、n8n が用意するチャット画面(Hosted Chat)か、自分のサイトに埋め込むチャット(Embedded Chat)を選びます。
モデルについて
テンプレートの初期設定のモデルは gpt-4o-mini です。OpenAI Chat Model ノードで、ほかのモデルに変えられます。OpenAI のモデルは順に提供が終わる(たとえば gpt-4 は 2026年10月23日に API での提供が終わります)ので、使うモデルが OpenAI の廃止予定の一覧に載っていないかを確かめておきましょう。テンプレートのメモにあるとおり、このノードを差し替えれば OpenAI 以外のモデルも使えます。
効果を測るには
ここからは、テンプレートに自分で足す部分です。
測り方の考え方(一般的な A/B テストの進め方)
次は n8n の機能ではなく、A/B テスト一般の考え方です。
- 比べる指標を先に 1 つ決める:たとえば「会話の中で問い合わせが解決したか」「利用者が『役に立った』を押したか」「担当者への引き継ぎが起きたか」など、用途の目的に合うもの
- 割り当てはランダムのままにする:テンプレートは会話ごとに半々で割り当てます。人が選ぶと、偏りが入ります
- テストの途中でプロンプトを変えない:変えると、どちらの結果か分からなくなります
- 十分な数が集まるまで決めない:会話が少ないうちの差は、偶然のことがあります。差が偶然でないかは、統計の検定で確かめます
- 品質と一緒に、費用と速さも見る:返答の長さや使ったトークン、応答にかかる時間も比べると、採用の判断がしやすくなります
方法 1:本番の会話の結果を記録する
実際の利用者の会話で比べる方法です。会話ごとの結果(解決したか、評価ボタンが押されたかなど)を、割り当てと一緒に記録するように作り足します。たとえば split_test_sessions に結果の列を足し、ワークフローや別の仕組みから書き込みます。
集計は、Supabase の SQL エディターなどで行えます。結果の列を resolved(bool)とした場合の例です。
-- 結果の列 resolved は、自分で足した列の例
SELECT
show_alternative,
COUNT(*) AS sessions,
AVG(CASE WHEN resolved THEN 1 ELSE 0 END) AS resolved_rate
FROM split_test_sessions
WHERE resolved IS NOT NULL
GROUP BY show_alternative;
方法 2:n8n の Evaluations で、同じテストケースを流して比べる
公開する前に、決まったテストケースで 2 つのプロンプトを比べる方法です。n8n には 1.95.0 から、AI のワークフローを評価する Evaluations の機能があり、公式ドキュメントでも「モデルやプロンプトを変えたときの性能の比較」が用途に挙げられています。
- テストケースを用意する:n8n のデータテーブルか Google スプレッドシートに、入力と、必要なら期待する答えを並べます
- Evaluation Trigger をつなぐ:テストケースを 1 行ずつワークフローに流します。Chat Trigger と並べて使うときは、2 つのトリガーからの流れをつなぎ合わせます
- 出力を書き戻す:Evaluation ノードの「Set Outputs」で、AI の返答をテストケースの表に書き戻します。ここまでが「ライト評価」で、返答を並べて目で比べられます
- 指標を付ける:Evaluation ノードの「Set Metrics」で指標を計算します(下の表)
- 実行して比べる:ワークフローの「Evaluations」タブで「Run Test」を押すと、指標ごとの集計が表示されます。ベースラインで実行したあと、代替のプロンプトに替えてもう一度実行し、結果を比べます
| 指標 | 中身 |
|---|---|
| Correctness(AI が判定) | 返答の意味が、期待する答えと合っているか(1〜5) |
| Helpfulness(AI が判定) | 返答が質問に答えているか(1〜5) |
| String Similarity | 期待する答えと、文字の単位でどれだけ近いか(0〜1) |
| Categorization | 期待する答えと完全に一致するか(1 か 0) |
| Tools Used | ツールを使ったか(0〜1) |
| Custom Metrics | ワークフローの中で計算した、自分の指標 |
AI に判定させる指標は、そのぶん時間と費用がかかります。Evaluation ノードの「Check If Evaluating」で、評価のときだけ指標を計算するように分けられます。
使えるプランにも違いがあります(2026年10月時点の公式ドキュメントによる)。
- ライト評価:n8n Cloud はすべてのプラン、セルフホストは Registered Community・Business・Enterprise
- 指標を使う評価:n8n Cloud は Pro・Enterprise、セルフホストは Enterprise(Registered Community と Starter でも、1 つのワークフローなら使える)
使う前に確かめたいこと
- 会話の内容が外部のサービスに送られ、保存される:利用者のメッセージは OpenAI に送られ、会話の履歴は PostgreSQL に残ります。個人の情報や社外秘の内容を扱うなら、社内の情報の取り扱いのルールで確かめます
- 比べられるのは 2 つまで:割り当ては真偽値の列(
show_alternative)なので、3 つ以上を比べるには作り変えが要ります - 振り分けは会話の単位:同じ人でも、新しい会話を始めると別のプロンプトになることがあります
よくある質問
このテンプレートだけで、どちらのプロンプトが良いか分かりますか?
分かりません。テンプレートがするのは、会話ごとに 2 つのプロンプトのどちらかを割り当てるところまでです。効果を比べるには、会話の結果を記録する仕組みを足すか、Evaluations を使います。
同じ質問を A と B の両方に投げて比べたいです
n8n の Evaluations を使います。同じテストケースを、ベースラインと代替のプロンプトでそれぞれ流し、指標の集計を比べます。
OpenAI 以外のモデルでも使えますか?
使えます。テンプレートのメモにあるとおり、OpenAI Chat Model のノードを、ほかの言語モデルのノードに差し替えます。
記事でよく見る「Function ノード」はどこにありますか?
Function ノードは、n8n 0.198.0(2022年10月)で Code ノードに置き換えられました。今は Code ノードを使います。
まとめ
- テンプレート 2992 は、AI エージェントとのチャットを、会話ごとに 2 つのプロンプトのどちらかへランダムに振り分ける
- 必要なのは、Supabase の
split_test_sessionsテーブルと、Supabase・OpenAI・PostgreSQL の資格情報 - テンプレートは効果を測らない。本番の会話の結果を記録するか、Evaluations で同じテストケースを流して比べる
- 指標は先に 1 つ決め、十分な数が集まってから判断する
エンハンスドでは、n8n などを使って AI を業務の流れに組み込む支援を行っています(AI × ハイパーオートメーション)。
あわせて読みたい
参考資料
- Split test different agent prompts with Supabase and OpenAI(n8n のテンプレート)
- Understand why to test(n8n Docs)
- Run quick evaluations(n8n Docs)
- Use metrics to measure quality(n8n Docs)
- Chat Trigger(n8n Docs)
- Postgres Chat Memory(n8n Docs)
- Supabase credentials(n8n Docs)
- Release notes 1.x(n8n Docs・n8n@1.95.0 で Evaluations を導入)
- Release notes 0.x(n8n Docs・n8n@0.198.0 で Code ノードを導入)
- Deprecations(OpenAI)
この記事に関わるエンハンスドの事業
AI活用・無料相談
その業務、AIを使えばもっと効率化できます
メール対応や書類作成、データ入力、レポート集計。毎日の定型業務は、AIと自動化の組み合わせで大きく減らせます。エンハンスドが、貴社に合った進め方をご提案します。
- 業務の棚卸しと無料診断
- AI活用と自動化の具体プランのご提案
- 導入から社内定着まで専門チームが伴走
ご相談は何度でも無料です。まずはお気軽にお問い合わせください。

