@modular-prompt/experiment 0.4.38 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -60,16 +60,76 @@ const module: PromptModule<{ query: string }> = {
60
60
  export default module;
61
61
  ```
62
62
 
63
- ### 3. 実行
63
+ ### 3. 段階的な検証と実行
64
+
65
+ experiment 設定は、次の順で段階的に確認するのがおすすめです。
66
+
67
+ 1. **`format`** — LLM/API キー不要。コンパイル済みプロンプトの中身を確認(§4)
68
+ 2. **`--dry-run`** — 実行計画(モデル・モジュール・テストケースの組み合わせ)を確認
69
+ 3. **本番実行** — 実際に LLM を呼び出して実験
70
+
71
+ ```bash
72
+ npx modular-experiment format experiment.yaml # 1. プロンプト確認
73
+ npx modular-experiment experiment.yaml --dry-run # 2. 実行計画確認
74
+ npx modular-experiment experiment.yaml # 3. 本番実行
75
+ npx modular-experiment experiment.yaml --evaluate # 評価付き
76
+ npx modular-experiment experiment.yaml --repeat 10 # 複数回実行
77
+ ```
78
+
79
+ ### 4. プロンプト整形(LLM 呼び出しなし)
80
+
81
+ experiment 設定からコンパイル済みプロンプトを整形出力する。API キーやモデル起動は不要。
64
82
 
65
83
  ```bash
66
- npx modular-experiment experiment.yaml --dry-run # 確認
67
- npx modular-experiment experiment.yaml # 実行
68
- npx modular-experiment experiment.yaml --evaluate # 評価付き
69
- npx modular-experiment experiment.yaml --repeat 10 # 複数回実行
84
+ # デフォルト(completion 形式)
85
+ npx modular-experiment format experiment.yaml
86
+
87
+ # テストケース・モジュールでフィルター
88
+ npx modular-experiment format experiment.yaml --test-case "基本テスト" --modules my-module
89
+
90
+ # 出力形式の切り替え
91
+ npx modular-experiment format experiment.yaml --format messages # ChatMessage[] を JSON 出力
92
+ npx modular-experiment format experiment.yaml --format compiled # CompiledPrompt を JSON 出力
93
+
94
+ # ファイル出力
95
+ npx modular-experiment format experiment.yaml --output prompts.txt --verbose
96
+ ```
97
+
98
+ #### format サブコマンドのオプション
99
+
100
+ | オプション | 説明 | デフォルト |
101
+ |-----------|------|-----------|
102
+ | `<config>` | 設定ファイルパス(YAML / TypeScript) | (必須) |
103
+ | `--test-case <name>` | テストケース名フィルター | all |
104
+ | `--modules <names>` | カンマ区切りのモジュール名 | all |
105
+ | `--format <type>` | 出力形式: `completion`, `messages`, `compiled` | completion |
106
+ | `--output <path>` | 出力先ファイル(未指定時は stdout) | stdout |
107
+ | `--verbose` | 詳細ログ出力 | false |
108
+
109
+ **completion 出力例:**
110
+
111
+ ```
112
+ === my-module / 基本テスト ===
113
+ # Instructions
114
+ ...
70
115
  ```
71
116
 
72
- #### CLIオプション
117
+ **messages / compiled:** JSON 形式(複数の testCase × module は配列)
118
+
119
+ #### 出力の挙動
120
+
121
+ `format` 実行時、メタ情報バナー(`Prompt Format` ヘッダー等)は **stderr ではなく stdout** に出力されます。
122
+
123
+ - **stdout 出力時**(`--output` 未指定): バナーとプロンプト本文が stdout に混在します。パイプで後段に渡す場合はバナーが混入する点に注意してください
124
+ - **`--output` 指定時**: プロンプト本文のみファイルに書き出し、バナーと完了メッセージは stdout に残ります
125
+ - パイプでクリーンなプロンプトだけ欲しい場合は `--output` を使ってください
126
+
127
+ #### 注意事項
128
+
129
+ - **フィルター競合**: CLI の `--modules` と設定ファイル内の `testCase.modules` が矛盾すると、エラーなく**空出力**になることがあります(実験 runner と同様)。意図した組み合わせになっているか確認してください
130
+ - **開発用ショートカット**: リポジトリルートの `pnpm run experiment` / `scripts/experiment.mjs` は `run-comparison.js` を直叩きするため **`format` サブコマンド非対応**です。`format` を使う正本は package bin 経由の `npx modular-experiment format <config>`
131
+
132
+ #### CLIオプション(実験実行)
73
133
 
74
134
  | オプション | 説明 | デフォルト |
75
135
  |-----------|------|-----------|
@@ -0,0 +1,14 @@
1
+ /**
2
+ * CLI argument parsing for format subcommand
3
+ */
4
+ import type { PromptFormatType } from '../prompt-formatter.js';
5
+ export interface FormatCommandOptions {
6
+ configPath: string;
7
+ testCaseFilter?: string;
8
+ moduleFilter?: string[];
9
+ formatType: PromptFormatType;
10
+ outputFile?: string;
11
+ verbose?: boolean;
12
+ }
13
+ export declare function parseFormatArgs(argv?: string[]): FormatCommandOptions;
14
+ //# sourceMappingURL=format-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-args.d.ts","sourceRoot":"","sources":["../../src/cli/format-args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,oBAAoB,CAgCnF"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * CLI argument parsing for format subcommand
3
+ */
4
+ import { Command } from 'commander';
5
+ import { resolve } from 'path';
6
+ const VALID_FORMAT_TYPES = ['completion', 'messages', 'compiled'];
7
+ export function parseFormatArgs(argv = process.argv) {
8
+ const program = new Command();
9
+ program
10
+ .name('modular-experiment format')
11
+ .description('Format compiled prompts without LLM execution')
12
+ .argument('<config>', 'Config file path (YAML, TypeScript, or JavaScript)')
13
+ .option('--test-case <name>', 'Test case name filter')
14
+ .option('--modules <names>', 'Comma-separated module names (default: all)')
15
+ .option('--format <type>', 'Output format: completion, messages, compiled', 'completion')
16
+ .option('--output <path>', 'Output file path (default: stdout)')
17
+ .option('--verbose', 'Enable verbose output', false)
18
+ .parse(argv);
19
+ const config = program.args[0];
20
+ const options = program.opts();
21
+ const formatType = options.format;
22
+ if (!VALID_FORMAT_TYPES.includes(formatType)) {
23
+ console.error(`❌ Invalid format type: ${options.format}`);
24
+ console.error(` Valid values: ${VALID_FORMAT_TYPES.join(', ')}`);
25
+ process.exit(1);
26
+ }
27
+ return {
28
+ configPath: resolve(process.cwd(), config),
29
+ testCaseFilter: options.testCase,
30
+ moduleFilter: options.modules?.split(',').map((s) => s.trim()),
31
+ formatType,
32
+ outputFile: options.output,
33
+ verbose: options.verbose,
34
+ };
35
+ }
36
+ //# sourceMappingURL=format-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-args.js","sourceRoot":"","sources":["../../src/cli/format-args.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAY/B,MAAM,kBAAkB,GAAuB,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAEtF,MAAM,UAAU,eAAe,CAAC,OAAiB,OAAO,CAAC,IAAI;IAC3D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,2BAA2B,CAAC;SACjC,WAAW,CAAC,+CAA+C,CAAC;SAC5D,QAAQ,CAAC,UAAU,EAAE,oDAAoD,CAAC;SAC1E,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;SACrD,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,+CAA+C,EAAE,YAAY,CAAC;SACxF,MAAM,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;SAC/D,MAAM,CAAC,WAAW,EAAE,uBAAuB,EAAE,KAAK,CAAC;SACnD,KAAK,CAAC,IAAI,CAAC,CAAC;IAEf,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,MAA0B,CAAC;IAEtD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,oBAAoB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC;QAC1C,cAAc,EAAE,OAAO,CAAC,QAAQ;QAChC,YAAY,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtE,UAAU;QACV,UAAU,EAAE,OAAO,CAAC,MAAM;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * modular-experiment CLI entry point
4
+ *
5
+ * Usage:
6
+ * modular-experiment <config> [options] Run experiment
7
+ * modular-experiment format <config> [options] Format prompts without LLM
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * modular-experiment CLI entry point
4
+ *
5
+ * Usage:
6
+ * modular-experiment <config> [options] Run experiment
7
+ * modular-experiment format <config> [options] Format prompts without LLM
8
+ */
9
+ import { parseFormatArgs } from './format-args.js';
10
+ import { runFormatCommand } from '../format-command.js';
11
+ async function main() {
12
+ if (process.argv[2] === 'format') {
13
+ const options = parseFormatArgs(['node', 'modular-experiment', ...process.argv.slice(3)]);
14
+ await runFormatCommand(options);
15
+ return;
16
+ }
17
+ await import('../run-comparison.js');
18
+ }
19
+ main().catch((error) => {
20
+ console.error('❌ Command failed:', error instanceof Error ? error.message : String(error));
21
+ if (error instanceof Error && error.stack) {
22
+ console.error(error.stack);
23
+ }
24
+ process.exit(1);
25
+ });
26
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,KAAK,UAAU,IAAI;IACjB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACvC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3F,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Format subcommand: compile and format prompts without LLM execution
3
+ */
4
+ import type { FormatCommandOptions } from './cli/format-args.js';
5
+ export declare function runFormatCommand(options: FormatCommandOptions): Promise<void>;
6
+ //# sourceMappingURL=format-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-command.d.ts","sourceRoot":"","sources":["../src/format-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAKjE,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DnF"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Format subcommand: compile and format prompts without LLM execution
3
+ */
4
+ import { writeFile, mkdir } from 'fs/promises';
5
+ import { dirname } from 'path';
6
+ import { Logger } from '@modular-prompt/utils';
7
+ import { loadExperimentConfig } from './config/loader.js';
8
+ import { loadModules } from './config/dynamic-loader.js';
9
+ import { buildFormatPlan, renderFormattedOutput } from './prompt-formatter.js';
10
+ import { logger as baseLogger } from './logger.js';
11
+ const logger = baseLogger.context('format');
12
+ export async function runFormatCommand(options) {
13
+ Logger.configure({
14
+ level: options.verbose ? 'debug' : 'info',
15
+ accumulateLevel: 'debug',
16
+ isMcpMode: false,
17
+ accumulate: false,
18
+ maxEntries: 1000,
19
+ });
20
+ console.log('='.repeat(80));
21
+ console.log('Prompt Format');
22
+ console.log('='.repeat(80));
23
+ console.log(`Config: ${options.configPath}`);
24
+ console.log(`Test case filter: ${options.testCaseFilter || 'all'}`);
25
+ console.log(`Modules: ${options.moduleFilter?.join(', ') || 'all'}`);
26
+ console.log(`Format: ${options.formatType}`);
27
+ if (options.outputFile) {
28
+ console.log(`Output: ${options.outputFile}`);
29
+ }
30
+ console.log('='.repeat(80));
31
+ console.log();
32
+ const { modules: configModules, testCases: configTestCases, configDir, } = await loadExperimentConfig(options.configPath);
33
+ const testCases = options.testCaseFilter
34
+ ? configTestCases.filter(tc => tc.name === options.testCaseFilter)
35
+ : configTestCases;
36
+ if (testCases.length === 0) {
37
+ console.error(`❌ No test cases found${options.testCaseFilter ? ` matching: ${options.testCaseFilter}` : ''}`);
38
+ process.exit(1);
39
+ }
40
+ const allModules = await loadModules(configModules, configDir);
41
+ const modules = options.moduleFilter
42
+ ? allModules.filter(m => options.moduleFilter.includes(m.name))
43
+ : allModules;
44
+ if (modules.length === 0) {
45
+ console.error('❌ No modules found');
46
+ process.exit(1);
47
+ }
48
+ logger.verbose(`Formatting ${testCases.length} test case(s) × ${modules.length} module(s)`);
49
+ const items = buildFormatPlan(modules, testCases);
50
+ const output = renderFormattedOutput(items, options.formatType);
51
+ if (options.outputFile) {
52
+ await mkdir(dirname(options.outputFile), { recursive: true });
53
+ await writeFile(options.outputFile, output);
54
+ console.log(`📄 Formatted prompts written: ${options.outputFile}`);
55
+ }
56
+ else {
57
+ process.stdout.write(output);
58
+ if (!output.endsWith('\n')) {
59
+ process.stdout.write('\n');
60
+ }
61
+ }
62
+ }
63
+ //# sourceMappingURL=format-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-command.js","sourceRoot":"","sources":["../src/format-command.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,5 +10,6 @@ export { baseEvaluationModule } from './base-evaluation-module.js';
10
10
  export { DriverManager } from './runner/driver-manager.js';
11
11
  export { ExperimentRunner } from './runner/experiment.js';
12
12
  export { EvaluatorRunner } from './runner/evaluator.js';
13
+ export { compileModulePrompt, formatCompiledPrompt, buildFormatPlan, renderFormattedOutput, type PromptFormatType, type FormattedPromptItem, } from './prompt-formatter.js';
13
14
  export { StatisticsReporter } from './reporter/statistics.js';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,GACzB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ export { baseEvaluationModule } from './base-evaluation-module.js';
14
14
  export { DriverManager } from './runner/driver-manager.js';
15
15
  export { ExperimentRunner } from './runner/experiment.js';
16
16
  export { EvaluatorRunner } from './runner/evaluator.js';
17
+ export { compileModulePrompt, formatCompiledPrompt, buildFormatPlan, renderFormattedOutput, } from './prompt-formatter.js';
17
18
  // Reporters
18
19
  export { StatisticsReporter } from './reporter/statistics.js';
19
20
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,wBAAwB;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEzE,aAAa;AACb,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,YAAY;AACZ,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,wBAAwB;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEzE,aAAa;AACb,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,qBAAqB,GAGtB,MAAM,uBAAuB,CAAC;AAE/B,YAAY;AACZ,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Shared compile and format utilities for experiment runner and format CLI
3
+ */
4
+ import { type CompiledPrompt } from '@modular-prompt/core';
5
+ import type { ModuleDefinition, TestCase } from './types.js';
6
+ export type PromptFormatType = 'completion' | 'messages' | 'compiled';
7
+ export interface FormattedPromptItem {
8
+ testCaseName: string;
9
+ testCaseDescription?: string;
10
+ moduleName: string;
11
+ compiled: CompiledPrompt;
12
+ }
13
+ /**
14
+ * Compile a prompt module with test case input
15
+ */
16
+ export declare function compileModulePrompt(module: ModuleDefinition['module'], input: unknown): CompiledPrompt;
17
+ /**
18
+ * Format a compiled prompt to the requested output type
19
+ */
20
+ export declare function formatCompiledPrompt(compiled: CompiledPrompt, formatType: PromptFormatType): string;
21
+ /**
22
+ * Build format plan: expand testCase × module combinations (no model dimension)
23
+ */
24
+ export declare function buildFormatPlan(modules: ModuleDefinition[], testCases: TestCase[]): FormattedPromptItem[];
25
+ /**
26
+ * Render formatted output for all plan items
27
+ */
28
+ export declare function renderFormattedOutput(items: FormattedPromptItem[], formatType: PromptFormatType): string;
29
+ //# sourceMappingURL=prompt-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-formatter.d.ts","sourceRoot":"","sources":["../src/prompt-formatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAClC,KAAK,EAAE,OAAO,GACb,cAAc,CAEhB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,gBAAgB,GAC3B,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,QAAQ,EAAE,GACpB,mBAAmB,EAAE,CAmBvB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,mBAAmB,EAAE,EAC5B,UAAU,EAAE,gBAAgB,GAC3B,MAAM,CAkCR"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Shared compile and format utilities for experiment runner and format CLI
3
+ */
4
+ import { compile } from '@modular-prompt/core';
5
+ import { formatCompletionPrompt, formatPromptAsMessages } from '@modular-prompt/driver';
6
+ /**
7
+ * Compile a prompt module with test case input
8
+ */
9
+ export function compileModulePrompt(module, input) {
10
+ return compile(module, input);
11
+ }
12
+ /**
13
+ * Format a compiled prompt to the requested output type
14
+ */
15
+ export function formatCompiledPrompt(compiled, formatType) {
16
+ switch (formatType) {
17
+ case 'completion':
18
+ return formatCompletionPrompt(compiled);
19
+ case 'messages':
20
+ return JSON.stringify(formatPromptAsMessages(compiled), null, 2);
21
+ case 'compiled':
22
+ return JSON.stringify(compiled, null, 2);
23
+ }
24
+ }
25
+ /**
26
+ * Build format plan: expand testCase × module combinations (no model dimension)
27
+ */
28
+ export function buildFormatPlan(modules, testCases) {
29
+ const items = [];
30
+ for (const testCase of testCases) {
31
+ const modulesToFormat = testCase.modules
32
+ ? modules.filter(m => testCase.modules.includes(m.name))
33
+ : modules;
34
+ for (const module of modulesToFormat) {
35
+ items.push({
36
+ testCaseName: testCase.name,
37
+ testCaseDescription: testCase.description,
38
+ moduleName: module.name,
39
+ compiled: compileModulePrompt(module.module, testCase.input),
40
+ });
41
+ }
42
+ }
43
+ return items;
44
+ }
45
+ /**
46
+ * Render formatted output for all plan items
47
+ */
48
+ export function renderFormattedOutput(items, formatType) {
49
+ if (items.length === 0) {
50
+ return '';
51
+ }
52
+ if (formatType === 'completion') {
53
+ return items.map(item => {
54
+ const header = `=== ${item.moduleName} / ${item.testCaseName} ===`;
55
+ const body = formatCompletionPrompt(item.compiled);
56
+ return `${header}\n${body}`;
57
+ }).join('\n\n');
58
+ }
59
+ if (formatType === 'messages') {
60
+ return JSON.stringify(items.map(item => ({
61
+ testCase: item.testCaseName,
62
+ module: item.moduleName,
63
+ messages: formatPromptAsMessages(item.compiled),
64
+ })), null, 2);
65
+ }
66
+ return JSON.stringify(items.map(item => ({
67
+ testCase: item.testCaseName,
68
+ module: item.moduleName,
69
+ compiled: item.compiled,
70
+ })), null, 2);
71
+ }
72
+ //# sourceMappingURL=prompt-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-formatter.js","sourceRoot":"","sources":["../src/prompt-formatter.ts"],"names":[],"mappings":"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"}
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"experiment.d.ts","sourceRoot":"","sources":["../../src/runner/experiment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAe,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAMhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAA4E,MAAM,aAAa,CAAC;AACpJ,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAiCnE,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,cAAc,CAAC;gBAPf,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,QAAQ,EAAE,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,eAAe,EAAE,YAAA,EAC9B,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,YAAA;IAG5D;;;;OAIG;IACG,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAmBlC;;OAEG;IACH,OAAO,CAAC,aAAa;IA0DrB;;OAEG;YACW,WAAW;IA6GzB;;OAEG;YACW,aAAa;IAmF3B;;OAEG;YACW,kBAAkB;CA2BjC"}
1
+ {"version":3,"file":"experiment.d.ts","sourceRoot":"","sources":["../../src/runner/experiment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAe,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAMhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAA4E,MAAM,aAAa,CAAC;AACpJ,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAiCnE,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,cAAc,CAAC;gBAPf,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,SAAS,EAAE,QAAQ,EAAE,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,eAAe,EAAE,YAAA,EAC9B,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,YAAA;IAG5D;;;;OAIG;IACG,GAAG,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAmBlC;;OAEG;IACH,OAAO,CAAC,aAAa;IA0DrB;;OAEG;YACW,WAAW;IA6GzB;;OAEG;YACW,aAAa;IAmF3B;;OAEG;YACW,kBAAkB;CA2BjC"}
@@ -1,8 +1,7 @@
1
1
  /**
2
2
  * Experiment runner - orchestrates the entire experiment
3
3
  */
4
- import { compile } from '@modular-prompt/core';
5
- import { formatCompletionPrompt } from '@modular-prompt/driver';
4
+ import { compileModulePrompt, formatCompiledPrompt } from '../prompt-formatter.js';
6
5
  import { defaultProcess, streamProcess, concatProcess, dialogueProcess, summarizeProcess, agenticProcess } from '@modular-prompt/process';
7
6
  import { EvaluatorRunner } from './evaluator.js';
8
7
  import { logger as baseLogger } from '../logger.js';
@@ -99,8 +98,8 @@ export class ExperimentRunner {
99
98
  ? this.modules.filter(m => testCase.modules.includes(m.name))
100
99
  : this.modules;
101
100
  for (const module of modulesToTest) {
102
- const compiled = compile(module.module, testCase.input);
103
- const prompt = formatCompletionPrompt(compiled);
101
+ const compiled = compileModulePrompt(module.module, testCase.input);
102
+ const prompt = formatCompiledPrompt(compiled, 'completion');
104
103
  plan.push({
105
104
  order: order++,
106
105
  testCase,
@@ -1 +1 @@
1
- {"version":3,"file":"experiment.js","sourceRoot":"","sources":["../../src/runner/experiment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"experiment.js","sourceRoot":"","sources":["../../src/runner/experiment.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modular-prompt/experiment",
3
- "version": "0.4.38",
3
+ "version": "0.5.0",
4
4
  "description": "Experiment framework for comparing and evaluating prompt modules",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,7 +12,7 @@
12
12
  }
13
13
  },
14
14
  "bin": {
15
- "modular-experiment": "./dist/run-comparison.js"
15
+ "modular-experiment": "./dist/cli/main.js"
16
16
  },
17
17
  "files": [
18
18
  "dist",
@@ -25,9 +25,9 @@
25
25
  "jiti": "2.6.1",
26
26
  "yaml": "2.8.2",
27
27
  "zod": "3.25.76",
28
+ "@modular-prompt/driver": "0.15.0",
29
+ "@modular-prompt/process": "0.5.8",
28
30
  "@modular-prompt/core": "0.3.0",
29
- "@modular-prompt/driver": "0.13.5",
30
- "@modular-prompt/process": "0.5.6",
31
31
  "@modular-prompt/utils": "0.3.5"
32
32
  },
33
33
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: experiment
3
- description: modular-promptの実験フレームワーク(@modular-prompt/experiment)の使い方ガイド。プロンプトモジュールの比較・評価実験の設定、実行、評価器の定義を参照する。
3
+ description: modular-promptの実験フレームワーク(@modular-prompt/experiment)の使い方ガイド。プロンプトモジュールの比較・評価実験の設定、実行、評価器の定義、およびプロンプト整形コマンド(`format`)を参照する。
4
4
  ---
5
5
 
6
6
  # 実験フレームワーク使い方ガイド
@@ -19,10 +19,13 @@ description: modular-promptの実験フレームワーク(@modular-prompt/expe
19
19
  ## CLI
20
20
 
21
21
  ```bash
22
- # 設定検証・実行計画表示(まずこれで確認)
22
+ # 1. プロンプト確認(LLM 不要)
23
+ npx modular-experiment format config.yaml
24
+
25
+ # 2. 設定検証・実行計画表示
23
26
  npx modular-experiment config.yaml --dry-run
24
27
 
25
- # 実験実行
28
+ # 3. 実験実行
26
29
  npx modular-experiment config.yaml
27
30
 
28
31
  # 評価付き実行
@@ -53,6 +56,74 @@ npx modular-experiment config.yaml --log-file experiment.jsonl --verbose
53
56
  | `--log-file <path>` | JSONLログファイルパス |
54
57
  | `--verbose` | 詳細な内部操作を表示 |
55
58
 
59
+ ### 段階的な検証フロー
60
+
61
+ experiment 設定は、次の順で段階的に確認するのがおすすめです。
62
+
63
+ 1. **`format`** — LLM/API キー不要。コンパイル済みプロンプトの中身を確認
64
+ 2. **`<config> --dry-run`** — 実行計画(モデル・モジュール・テストケースの組み合わせ)を確認
65
+ 3. **本番実行** — 実際に LLM を呼び出して実験
66
+
67
+ ### 既存コマンドとの使い分け
68
+
69
+ | コマンド | 用途 |
70
+ |---------|------|
71
+ | `modular-experiment format <config>` | プロンプト文字列の確認・デバッグ(LLM 不要) |
72
+ | `modular-experiment <config> --dry-run` | 実験実行計画の確認(モデル情報含む) |
73
+ | `modular-experiment <config>` | 実験の本番実行 |
74
+
75
+ ### 出力の挙動
76
+
77
+ `format` 実行時、メタ情報バナー(`Prompt Format` ヘッダー等)は **stderr ではなく stdout** に出力されます。
78
+
79
+ - **stdout 出力時**(`--output` 未指定): バナーとプロンプト本文が stdout に混在します。パイプで後段に渡す場合はバナーが混入する点に注意してください
80
+ - **`--output` 指定時**: プロンプト本文のみファイルに書き出し、バナーと完了メッセージは stdout に残ります
81
+ - パイプでクリーンなプロンプトだけ欲しい場合は `--output` を使ってください
82
+
83
+ ### 注意事項
84
+
85
+ - **フィルター競合**: CLI の `--modules` と設定ファイル内の `testCase.modules` が矛盾すると、エラーなく**空出力**になることがあります(実験 runner と同様)。意図した組み合わせになっているか確認してください
86
+ - **開発用ショートカット**: リポジトリルートの `pnpm run experiment` / `scripts/experiment.mjs` は `run-comparison.js` を直叩きするため **`format` サブコマンド非対応**です。`format` を使う正本は package bin 経由の `npx modular-experiment format <config>`
87
+
88
+ ## プロンプト整形コマンド(`format`)
89
+
90
+ **ステータス: 実装済み**
91
+
92
+ LLM/API キーなしで experiment 設定からコンパイル済みプロンプトを整形出力する CLI サブコマンド。
93
+
94
+ ```bash
95
+ # デフォルト(completion 形式)
96
+ npx modular-experiment format config.yaml
97
+
98
+ # フィルター
99
+ npx modular-experiment format config.yaml --test-case "基本テスト" --modules baseline,optimized
100
+
101
+ # 出力形式
102
+ npx modular-experiment format config.yaml --format messages # ChatMessage[] JSON
103
+ npx modular-experiment format config.yaml --format compiled # CompiledPrompt JSON
104
+
105
+ # ファイル出力
106
+ npx modular-experiment format config.yaml --output prompts.txt --verbose
107
+ ```
108
+
109
+ ### CLI オプション
110
+
111
+ | オプション | 説明 |
112
+ |-----------|------|
113
+ | `<config>` | 設定ファイルパス(YAML or TypeScript) |
114
+ | `--test-case <name>` | テストケース名フィルター |
115
+ | `--modules <names>` | カンマ区切りモジュール名フィルター |
116
+ | `--format <type>` | 出力形式: `completion`(デフォルト), `messages`, `compiled` |
117
+ | `--output <path>` | 出力先ファイル(未指定時は stdout) |
118
+ | `--verbose` | 詳細ログ |
119
+
120
+ ### 処理フロー
121
+
122
+ 1. `loadExperimentConfig` で設定読み込み
123
+ 2. `loadModules` でモジュールロード
124
+ 3. 各 `testCase × module` について `compile` → `formatCompletionPrompt` / `formatPromptAsMessages`
125
+ 4. **ドライバー作成・LLM 呼び出しは行わない**
126
+
56
127
  ## 設定ファイル(YAML)
57
128
 
58
129
  ```yaml