aitelier 0.1.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/dist/commands/add.d.ts +3 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +141 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/add.test.d.ts +2 -0
- package/dist/commands/add.test.d.ts.map +1 -0
- package/dist/commands/add.test.js +203 -0
- package/dist/commands/add.test.js.map +1 -0
- package/dist/commands/eval.d.ts +3 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/eval.js +505 -0
- package/dist/commands/eval.js.map +1 -0
- package/dist/commands/eval.test.d.ts +2 -0
- package/dist/commands/eval.test.d.ts.map +1 -0
- package/dist/commands/eval.test.js +804 -0
- package/dist/commands/eval.test.js.map +1 -0
- package/dist/commands/format.d.ts +3 -0
- package/dist/commands/format.d.ts.map +1 -0
- package/dist/commands/format.js +198 -0
- package/dist/commands/format.js.map +1 -0
- package/dist/commands/format.test.d.ts +2 -0
- package/dist/commands/format.test.d.ts.map +1 -0
- package/dist/commands/format.test.js +568 -0
- package/dist/commands/format.test.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +94 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/init.test.d.ts +2 -0
- package/dist/commands/init.test.d.ts.map +1 -0
- package/dist/commands/init.test.js +123 -0
- package/dist/commands/init.test.js.map +1 -0
- package/dist/commands/rate.d.ts +3 -0
- package/dist/commands/rate.d.ts.map +1 -0
- package/dist/commands/rate.js +209 -0
- package/dist/commands/rate.js.map +1 -0
- package/dist/commands/rate.test.d.ts +2 -0
- package/dist/commands/rate.test.d.ts.map +1 -0
- package/dist/commands/rate.test.js +393 -0
- package/dist/commands/rate.test.js.map +1 -0
- package/dist/commands/split.d.ts +3 -0
- package/dist/commands/split.d.ts.map +1 -0
- package/dist/commands/split.js +210 -0
- package/dist/commands/split.js.map +1 -0
- package/dist/commands/split.test.d.ts +2 -0
- package/dist/commands/split.test.d.ts.map +1 -0
- package/dist/commands/split.test.js +503 -0
- package/dist/commands/split.test.js.map +1 -0
- package/dist/commands/stats.d.ts +3 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +209 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/stats.test.d.ts +2 -0
- package/dist/commands/stats.test.d.ts.map +1 -0
- package/dist/commands/stats.test.js +476 -0
- package/dist/commands/stats.test.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +132 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/status.test.d.ts +2 -0
- package/dist/commands/status.test.d.ts.map +1 -0
- package/dist/commands/status.test.js +443 -0
- package/dist/commands/status.test.js.map +1 -0
- package/dist/commands/train.d.ts +3 -0
- package/dist/commands/train.d.ts.map +1 -0
- package/dist/commands/train.js +139 -0
- package/dist/commands/train.js.map +1 -0
- package/dist/commands/train.test.d.ts +2 -0
- package/dist/commands/train.test.d.ts.map +1 -0
- package/dist/commands/train.test.js +288 -0
- package/dist/commands/train.test.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/openai.d.ts +9 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +20 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/together.d.ts +11 -0
- package/dist/providers/together.d.ts.map +1 -0
- package/dist/providers/together.js +118 -0
- package/dist/providers/together.js.map +1 -0
- package/dist/providers/types.d.ts +28 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +2 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/storage/config.d.ts +24 -0
- package/dist/storage/config.d.ts.map +1 -0
- package/dist/storage/config.js +11 -0
- package/dist/storage/config.js.map +1 -0
- package/dist/storage/dataset.d.ts +14 -0
- package/dist/storage/dataset.d.ts.map +1 -0
- package/dist/storage/dataset.js +18 -0
- package/dist/storage/dataset.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { access } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { readExamples } from '../storage/dataset.js';
|
|
4
|
+
import { loadConfig } from '../storage/config.js';
|
|
5
|
+
const CONFIG_FILE = '.ftpipeline.json';
|
|
6
|
+
const EXAMPLES_FILE = 'data/examples.jsonl';
|
|
7
|
+
const TRAIN_FILE = 'data/train.jsonl';
|
|
8
|
+
const VAL_FILE = 'data/val.jsonl';
|
|
9
|
+
export function registerStats(program) {
|
|
10
|
+
program
|
|
11
|
+
.command('stats')
|
|
12
|
+
.description('Show dataset health overview')
|
|
13
|
+
.action(async () => {
|
|
14
|
+
try {
|
|
15
|
+
await statsCommand();
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async function statsCommand() {
|
|
24
|
+
const cwd = process.cwd();
|
|
25
|
+
// Check if project is initialized
|
|
26
|
+
try {
|
|
27
|
+
await access(join(cwd, CONFIG_FILE));
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw new Error('Project not initialized. Run `ft init` first to create .ftpipeline.json');
|
|
31
|
+
}
|
|
32
|
+
// Load config to get quality threshold
|
|
33
|
+
const config = await loadConfig(cwd);
|
|
34
|
+
// Load examples
|
|
35
|
+
const examplesPath = join(cwd, EXAMPLES_FILE);
|
|
36
|
+
let examples;
|
|
37
|
+
try {
|
|
38
|
+
examples = await readExamples(examplesPath);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error.code === 'ENOENT') {
|
|
42
|
+
console.log('No examples found. Add examples with `ft add` first.');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
// Check if file has any examples
|
|
48
|
+
if (examples.length === 0) {
|
|
49
|
+
console.log('No examples found. Add examples with `ft add` first.');
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// Calculate statistics
|
|
53
|
+
const stats = calculateStats(examples, config.qualityThreshold);
|
|
54
|
+
// Check for train/val files
|
|
55
|
+
try {
|
|
56
|
+
await access(join(cwd, TRAIN_FILE));
|
|
57
|
+
stats.hasTrainFile = true;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
stats.hasTrainFile = false;
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
await access(join(cwd, VAL_FILE));
|
|
64
|
+
stats.hasValFile = true;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
stats.hasValFile = false;
|
|
68
|
+
}
|
|
69
|
+
// Count examples with split assignments
|
|
70
|
+
stats.trainCount = examples.filter((e) => e.split === 'train').length;
|
|
71
|
+
stats.valCount = examples.filter((e) => e.split === 'val').length;
|
|
72
|
+
// Display statistics
|
|
73
|
+
displayStats(stats, config.qualityThreshold);
|
|
74
|
+
}
|
|
75
|
+
function calculateStats(examples, threshold) {
|
|
76
|
+
const stats = {
|
|
77
|
+
total: examples.length,
|
|
78
|
+
rated: 0,
|
|
79
|
+
unrated: 0,
|
|
80
|
+
ratingDistribution: new Map(),
|
|
81
|
+
aboveThreshold: 0,
|
|
82
|
+
trainCount: 0,
|
|
83
|
+
valCount: 0,
|
|
84
|
+
hasTrainFile: false,
|
|
85
|
+
hasValFile: false,
|
|
86
|
+
};
|
|
87
|
+
for (const example of examples) {
|
|
88
|
+
if (example.rating === null) {
|
|
89
|
+
stats.unrated++;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
stats.rated++;
|
|
93
|
+
const rating = example.rating;
|
|
94
|
+
stats.ratingDistribution.set(rating, (stats.ratingDistribution.get(rating) || 0) + 1);
|
|
95
|
+
if (rating >= threshold) {
|
|
96
|
+
stats.aboveThreshold++;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return stats;
|
|
101
|
+
}
|
|
102
|
+
function displayStats(stats, threshold) {
|
|
103
|
+
console.log('\n' + '═'.repeat(70));
|
|
104
|
+
console.log('Dataset Health Overview');
|
|
105
|
+
console.log('═'.repeat(70));
|
|
106
|
+
// Dataset size
|
|
107
|
+
console.log(`\nTotal examples: ${stats.total}`);
|
|
108
|
+
console.log(`Rated: ${stats.rated} (${percentage(stats.rated, stats.total)}%)`);
|
|
109
|
+
console.log(`Unrated: ${stats.unrated} (${percentage(stats.unrated, stats.total)}%)`);
|
|
110
|
+
// Rating distribution histogram
|
|
111
|
+
if (stats.rated > 0) {
|
|
112
|
+
console.log('\nRating Distribution:');
|
|
113
|
+
console.log('━'.repeat(70));
|
|
114
|
+
displayHistogram(stats.ratingDistribution, stats.rated);
|
|
115
|
+
}
|
|
116
|
+
// Quality threshold analysis
|
|
117
|
+
console.log('\nQuality Analysis:');
|
|
118
|
+
console.log('━'.repeat(70));
|
|
119
|
+
console.log(`Quality threshold: ${threshold}/10`);
|
|
120
|
+
console.log(`Examples ≥ ${threshold}: ${stats.aboveThreshold} (${percentage(stats.aboveThreshold, stats.total)}%)`);
|
|
121
|
+
// Train/val split status
|
|
122
|
+
console.log('\nTrain/Val Split:');
|
|
123
|
+
console.log('━'.repeat(70));
|
|
124
|
+
if (stats.trainCount > 0 || stats.valCount > 0) {
|
|
125
|
+
console.log(`Train: ${stats.trainCount} examples`);
|
|
126
|
+
console.log(`Val: ${stats.valCount} examples`);
|
|
127
|
+
if (stats.hasTrainFile) {
|
|
128
|
+
console.log('✓ train.jsonl exists');
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
console.log('✗ train.jsonl not found (run `ft format` to generate)');
|
|
132
|
+
}
|
|
133
|
+
if (stats.hasValFile) {
|
|
134
|
+
console.log('✓ val.jsonl exists');
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
console.log('✗ val.jsonl not found (run `ft format` to generate)');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
console.log('Not yet split (run `ft split` to assign train/val splits)');
|
|
142
|
+
}
|
|
143
|
+
// Readiness assessment
|
|
144
|
+
console.log('\nReadiness:');
|
|
145
|
+
console.log('━'.repeat(70));
|
|
146
|
+
assessReadiness(stats, threshold);
|
|
147
|
+
console.log('═'.repeat(70) + '\n');
|
|
148
|
+
}
|
|
149
|
+
function displayHistogram(distribution, total) {
|
|
150
|
+
// Display histogram for ratings 1-10
|
|
151
|
+
const maxBarLength = 40;
|
|
152
|
+
const maxCount = Math.max(...Array.from(distribution.values()));
|
|
153
|
+
for (let rating = 10; rating >= 1; rating--) {
|
|
154
|
+
const count = distribution.get(rating) || 0;
|
|
155
|
+
const barLength = maxCount > 0 ? Math.round((count / maxCount) * maxBarLength) : 0;
|
|
156
|
+
const bar = '█'.repeat(barLength);
|
|
157
|
+
const pct = percentage(count, total);
|
|
158
|
+
console.log(`${rating.toString().padStart(2)}/10 │${bar.padEnd(maxBarLength)} │ ${count.toString().padStart(3)} (${pct.toString().padStart(5)}%)`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function assessReadiness(stats, _threshold) {
|
|
162
|
+
const issues = [];
|
|
163
|
+
const recommendations = [];
|
|
164
|
+
// Check for unrated examples
|
|
165
|
+
if (stats.unrated > 0) {
|
|
166
|
+
issues.push(`${stats.unrated} unrated examples`);
|
|
167
|
+
recommendations.push('Run `ft rate` to rate all examples');
|
|
168
|
+
}
|
|
169
|
+
// Check for sufficient high-quality examples
|
|
170
|
+
if (stats.aboveThreshold < 20) {
|
|
171
|
+
issues.push(`Only ${stats.aboveThreshold} examples meet quality threshold (recommend 20+ for fine-tuning)`);
|
|
172
|
+
if (stats.rated < stats.total) {
|
|
173
|
+
recommendations.push('Rate more examples to identify high-quality data');
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
recommendations.push('Add more examples with `ft add` or lower quality threshold');
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// Check for train/val split
|
|
180
|
+
if (stats.trainCount === 0 && stats.valCount === 0) {
|
|
181
|
+
issues.push('No train/val split assigned');
|
|
182
|
+
recommendations.push('Run `ft split` to create train/val splits');
|
|
183
|
+
}
|
|
184
|
+
// Check for formatted files
|
|
185
|
+
if (!stats.hasTrainFile || !stats.hasValFile) {
|
|
186
|
+
issues.push('Training files not generated');
|
|
187
|
+
recommendations.push('Run `ft format` to generate train.jsonl and val.jsonl');
|
|
188
|
+
}
|
|
189
|
+
if (issues.length === 0) {
|
|
190
|
+
console.log('✓ Dataset is ready for training');
|
|
191
|
+
console.log(' Run `ft train` to start fine-tuning');
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
console.log('✗ Dataset not ready for training:');
|
|
195
|
+
for (const issue of issues) {
|
|
196
|
+
console.log(` • ${issue}`);
|
|
197
|
+
}
|
|
198
|
+
console.log('\nRecommended next steps:');
|
|
199
|
+
for (const rec of recommendations) {
|
|
200
|
+
console.log(` 1. ${rec}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function percentage(value, total) {
|
|
205
|
+
if (total === 0)
|
|
206
|
+
return 0;
|
|
207
|
+
return Math.round((value / total) * 100);
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.test.d.ts","sourceRoot":"","sources":["../../src/commands/stats.test.ts"],"names":[],"mappings":""}
|