ツール
入力
結果
結果はここに表示されます。実際のアプリケーションのプロンプトはテンプレートです。システムメッセージのあちこちに {{product.name}} や {{history}} があり、リクエスト時にコードが値を埋めます。回答がおかしかったとき、まず知りたいのはモデルが実際に何を受け取ったかです。テンプレートを貼り付け、変数欄に JSON オブジェクトで値を入れると、このツールは promptfoo(promptfoo/promptfoo、MIT)や Mustache 系のあらゆるエンジンと同じようにプロンプトを展開し、埋められなかった変数を一覧にし、結果のトークン数を数えます。本番環境に出す前にテンプレートを試せます。
動作のしくみ
- {{ name }} や、{{ user.name }}、{{ items.0 }} のようなドット区切りのパスを埋めます。波括弧の内側の空白はあってもなくてもかまいません。
- 文字列はそのまま挿入され、単純な値のリストは 1 項目 1 行になり、オブジェクトやオブジェクトのリストはインデント付きの JSON として挿入されます。null は空文字列になります。
- 値のない変数はそのまま残して統計欄に名前を表示し、テンプレートで一度も使われなかった JSON のトップレベルのキーも同様に表示します。
- Jinja や Nunjucks のロジック、つまり {% if %}、{% for %}、{{ name | upper }} のようなフィルターは「実行されない」ものとして一覧にし、手を加えずに残すので、出力が推測になることはありません。
データの行き先
どこにも行きません。このツールは完全にブラウザ内で動作します。貼り付けたテキストはページが処理し、サーバーに送信されることも、ログに記録されることもありません。
このツールは無料で登録不要です。結果は開いているページの中にだけあり、どこにも保存されません。
必要なポイント
このツールは無料です。ログインもポイントも必要ありません。
よくある質問
- どのテンプレート構文に対応していますか?
- どのエンジンでも共通の部分、つまりドット区切りのパスを含む二重波括弧の変数です。Mustache、Handlebars、promptfoo、LangChain の mustache 形式、そして単純な Jinja2 や Nunjucks のテンプレートがこれに当てはまります。ループ、条件分岐、フィルター、インクルードは実行しませんが、一覧で報告するので、テンプレートのどの部分に本物のエンジンが必要か分かります。
- 過去のメッセージや検索結果のリストはどう渡せばよいですか?
- 変数に JSON 配列を渡してください。文字列の配列は 1 項目 1 行で書き出されるので、チケットのタイトルや検索で取得した文章の一覧に向いています。オブジェクトの配列は整形された JSON で書き出され、モデルも確実に読み取れます。番号付きリストにしたい場合は、文字列に自分で番号を付けてください。
- 足りない変数を空にせず、出力に残すのはなぜですか?
- 空欄は目に見えないからです。モデルが「Sign off as .」を受け取っても誰も気づきません。{{agent_name}} が残っていれば、プレビューでもモデルの回答でもすぐに分かり、統計欄にも名前が表示されます。本当に空にしたい場合は、その変数に空文字列を設定してください。
背後にあるオープンソース
このツールは外部ライブラリを同梱しない独自実装です。promptfoo/promptfoo(MIT)はコードとして同じ仕事をします。自分のプログラムで同じことをしたいなら、Web ページを呼ぶのではなくそちらから始めてください。
promptfoo/promptfoo別の呼び方
- プロンプト テンプレート
- プロンプト 変数 埋め込み
- プロンプトエンジニアリング ツール
- mustache テンプレート
- jinja プロンプト
- prompt template