tryaii-dre 0.2.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/LICENSE +190 -0
- package/README.md +234 -0
- package/dist/banner.d.ts +24 -0
- package/dist/banner.d.ts.map +1 -0
- package/dist/banner.js +125 -0
- package/dist/banner.js.map +1 -0
- package/dist/benchmarks/index.d.ts +4 -0
- package/dist/benchmarks/index.d.ts.map +1 -0
- package/dist/benchmarks/index.js +3 -0
- package/dist/benchmarks/index.js.map +1 -0
- package/dist/benchmarks/registry.d.ts +69 -0
- package/dist/benchmarks/registry.d.ts.map +1 -0
- package/dist/benchmarks/registry.js +128 -0
- package/dist/benchmarks/registry.js.map +1 -0
- package/dist/benchmarks/standard.d.ts +6 -0
- package/dist/benchmarks/standard.d.ts.map +1 -0
- package/dist/benchmarks/standard.js +115 -0
- package/dist/benchmarks/standard.js.map +1 -0
- package/dist/budget.d.ts +65 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +344 -0
- package/dist/budget.js.map +1 -0
- package/dist/cache/index.d.ts +27 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +63 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/centroids/data/centroids_all-MiniLM-L6-v2.json +1 -0
- package/dist/centroids/data/trainingQueries.json +246 -0
- package/dist/centroids/generator.d.ts +63 -0
- package/dist/centroids/generator.d.ts.map +1 -0
- package/dist/centroids/generator.js +120 -0
- package/dist/centroids/generator.js.map +1 -0
- package/dist/centroids/index.d.ts +3 -0
- package/dist/centroids/index.d.ts.map +1 -0
- package/dist/centroids/index.js +3 -0
- package/dist/centroids/index.js.map +1 -0
- package/dist/centroids/loader.d.ts +87 -0
- package/dist/centroids/loader.d.ts.map +1 -0
- package/dist/centroids/loader.js +236 -0
- package/dist/centroids/loader.js.map +1 -0
- package/dist/classifiers/base.d.ts +56 -0
- package/dist/classifiers/base.d.ts.map +1 -0
- package/dist/classifiers/base.js +42 -0
- package/dist/classifiers/base.js.map +1 -0
- package/dist/classifiers/embedding.d.ts +68 -0
- package/dist/classifiers/embedding.d.ts.map +1 -0
- package/dist/classifiers/embedding.js +0 -0
- package/dist/classifiers/embedding.js.map +1 -0
- package/dist/classifiers/hybrid.d.ts +31 -0
- package/dist/classifiers/hybrid.d.ts.map +1 -0
- package/dist/classifiers/hybrid.js +61 -0
- package/dist/classifiers/hybrid.js.map +1 -0
- package/dist/classifiers/index.d.ts +4 -0
- package/dist/classifiers/index.d.ts.map +1 -0
- package/dist/classifiers/index.js +3 -0
- package/dist/classifiers/index.js.map +1 -0
- package/dist/classifiers/keyword.d.ts +29 -0
- package/dist/classifiers/keyword.d.ts.map +1 -0
- package/dist/classifiers/keyword.js +264 -0
- package/dist/classifiers/keyword.js.map +1 -0
- package/dist/cli.d.ts +15 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +597 -0
- package/dist/cli.js.map +1 -0
- package/dist/client-types.d.ts +101 -0
- package/dist/client-types.d.ts.map +1 -0
- package/dist/client-types.js +5 -0
- package/dist/client-types.js.map +1 -0
- package/dist/client.d.ts +50 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +279 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +45 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +37 -0
- package/dist/config.js.map +1 -0
- package/dist/dashboard/index.d.ts +48 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +166 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/embeddings/base.d.ts +66 -0
- package/dist/embeddings/base.d.ts.map +1 -0
- package/dist/embeddings/base.js +77 -0
- package/dist/embeddings/base.js.map +1 -0
- package/dist/embeddings/index.d.ts +3 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +3 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/local.d.ts +42 -0
- package/dist/embeddings/local.d.ts.map +1 -0
- package/dist/embeddings/local.js +89 -0
- package/dist/embeddings/local.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/index.d.ts +3 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +2 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/openrouter.d.ts +84 -0
- package/dist/integrations/openrouter.d.ts.map +1 -0
- package/dist/integrations/openrouter.js +253 -0
- package/dist/integrations/openrouter.js.map +1 -0
- package/dist/registry/index.d.ts +2 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +2 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/models.d.ts +76 -0
- package/dist/registry/models.d.ts.map +1 -0
- package/dist/registry/models.js +170 -0
- package/dist/registry/models.js.map +1 -0
- package/dist/registry/presets/defaultModels.json +435 -0
- package/dist/router.d.ts +178 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +259 -0
- package/dist/router.js.map +1 -0
- package/dist/scoring/benchmarks.d.ts +35 -0
- package/dist/scoring/benchmarks.d.ts.map +1 -0
- package/dist/scoring/benchmarks.js +68 -0
- package/dist/scoring/benchmarks.js.map +1 -0
- package/dist/scoring/engine.d.ts +43 -0
- package/dist/scoring/engine.d.ts.map +1 -0
- package/dist/scoring/engine.js +267 -0
- package/dist/scoring/engine.js.map +1 -0
- package/dist/scoring/index.d.ts +6 -0
- package/dist/scoring/index.d.ts.map +1 -0
- package/dist/scoring/index.js +4 -0
- package/dist/scoring/index.js.map +1 -0
- package/dist/scoring/priorities.d.ts +41 -0
- package/dist/scoring/priorities.d.ts.map +1 -0
- package/dist/scoring/priorities.js +49 -0
- package/dist/scoring/priorities.js.map +1 -0
- package/dist/types.d.ts +47 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/cosine.d.ts +10 -0
- package/dist/utils/cosine.d.ts.map +1 -0
- package/dist/utils/cosine.js +18 -0
- package/dist/utils/cosine.js.map +1 -0
- package/dist/utils/math.d.ts +18 -0
- package/dist/utils/math.d.ts.map +1 -0
- package/dist/utils/math.js +54 -0
- package/dist/utils/math.js.map +1 -0
- package/package.json +65 -0
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding.js","sourceRoot":"","sources":["../../src/classifiers/embedding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hybrid classifier -- combines embedding and keyword classifiers.
|
|
3
|
+
*
|
|
4
|
+
* Uses the embedding classifier as primary, with automatic fallback
|
|
5
|
+
* to the keyword classifier when confidence is too low or when the
|
|
6
|
+
* embedding provider is unavailable.
|
|
7
|
+
*/
|
|
8
|
+
import { BaseClassifier, ClassificationResult } from './base.js';
|
|
9
|
+
import type { EmbeddingClassifier } from './embedding.js';
|
|
10
|
+
import { KeywordClassifier } from './keyword.js';
|
|
11
|
+
/**
|
|
12
|
+
* Hybrid classifier with automatic fallback.
|
|
13
|
+
*
|
|
14
|
+
* Strategy:
|
|
15
|
+
* 1. Try embedding classifier first (semantic understanding)
|
|
16
|
+
* 2. If confidence < threshold -> fall back to keyword classifier
|
|
17
|
+
* 3. If embedding classifier fails -> fall back to keyword classifier
|
|
18
|
+
* 4. Merge results: embedding scores are primary, keyword fills gaps
|
|
19
|
+
*
|
|
20
|
+
* This ensures the router always returns useful results, even without
|
|
21
|
+
* an embedding model (e.g., in CI environments or on first run).
|
|
22
|
+
*/
|
|
23
|
+
export declare class HybridClassifier extends BaseClassifier {
|
|
24
|
+
private _embedding;
|
|
25
|
+
private _keyword;
|
|
26
|
+
private _threshold;
|
|
27
|
+
constructor(embeddingClassifier?: EmbeddingClassifier | null, keywordClassifier?: KeywordClassifier, confidenceThreshold?: number);
|
|
28
|
+
classify(prompt: string): ClassificationResult;
|
|
29
|
+
isReady(): boolean;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=hybrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hybrid.d.ts","sourceRoot":"","sources":["../../src/classifiers/hybrid.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,UAAU,CAAS;gBAGzB,mBAAmB,GAAE,mBAAmB,GAAG,IAAW,EACtD,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,mBAAmB,SAAO;IAQ5B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB;IA8B9C,OAAO,IAAI,OAAO;CAInB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hybrid classifier -- combines embedding and keyword classifiers.
|
|
3
|
+
*
|
|
4
|
+
* Uses the embedding classifier as primary, with automatic fallback
|
|
5
|
+
* to the keyword classifier when confidence is too low or when the
|
|
6
|
+
* embedding provider is unavailable.
|
|
7
|
+
*/
|
|
8
|
+
import { BaseClassifier } from './base.js';
|
|
9
|
+
import { KeywordClassifier } from './keyword.js';
|
|
10
|
+
/**
|
|
11
|
+
* Hybrid classifier with automatic fallback.
|
|
12
|
+
*
|
|
13
|
+
* Strategy:
|
|
14
|
+
* 1. Try embedding classifier first (semantic understanding)
|
|
15
|
+
* 2. If confidence < threshold -> fall back to keyword classifier
|
|
16
|
+
* 3. If embedding classifier fails -> fall back to keyword classifier
|
|
17
|
+
* 4. Merge results: embedding scores are primary, keyword fills gaps
|
|
18
|
+
*
|
|
19
|
+
* This ensures the router always returns useful results, even without
|
|
20
|
+
* an embedding model (e.g., in CI environments or on first run).
|
|
21
|
+
*/
|
|
22
|
+
export class HybridClassifier extends BaseClassifier {
|
|
23
|
+
constructor(embeddingClassifier = null, keywordClassifier, confidenceThreshold = 0.05) {
|
|
24
|
+
super();
|
|
25
|
+
this._embedding = embeddingClassifier;
|
|
26
|
+
this._keyword = keywordClassifier ?? new KeywordClassifier();
|
|
27
|
+
this._threshold = confidenceThreshold;
|
|
28
|
+
}
|
|
29
|
+
classify(prompt) {
|
|
30
|
+
const start = performance.now();
|
|
31
|
+
// Try embedding classifier first
|
|
32
|
+
if (this._embedding !== null) {
|
|
33
|
+
try {
|
|
34
|
+
const result = this._embedding.classify(prompt);
|
|
35
|
+
if (result.confidence >= this._threshold) {
|
|
36
|
+
return {
|
|
37
|
+
...result,
|
|
38
|
+
classifierUsed: 'hybrid(embedding)',
|
|
39
|
+
processingTimeMs: performance.now() - start,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Low confidence -- fall through to keyword
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Embedding classifier failed -- fall through to keyword
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Fallback to keyword classifier
|
|
49
|
+
const result = this._keyword.classify(prompt);
|
|
50
|
+
return {
|
|
51
|
+
...result,
|
|
52
|
+
classifierUsed: 'hybrid(keyword_fallback)',
|
|
53
|
+
processingTimeMs: performance.now() - start,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
isReady() {
|
|
57
|
+
// Always ready because keyword classifier needs no setup
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=hybrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hybrid.js","sourceRoot":"","sources":["../../src/classifiers/hybrid.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAwB,MAAM,WAAW,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,gBAAiB,SAAQ,cAAc;IAKlD,YACE,sBAAkD,IAAI,EACtD,iBAAqC,EACrC,mBAAmB,GAAG,IAAI;QAE1B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,iBAAiB,IAAI,IAAI,iBAAiB,EAAE,CAAC;QAC7D,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC;IACxC,CAAC;IAED,QAAQ,CAAC,MAAc;QACrB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAEhC,iCAAiC;QACjC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAEhD,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACzC,OAAO;wBACL,GAAG,MAAM;wBACT,cAAc,EAAE,mBAAmB;wBACnC,gBAAgB,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK;qBAC5C,CAAC;gBACJ,CAAC;gBACD,4CAA4C;YAC9C,CAAC;YAAC,MAAM,CAAC;gBACP,yDAAyD;YAC3D,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO;YACL,GAAG,MAAM;YACT,cAAc,EAAE,0BAA0B;YAC1C,gBAAgB,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK;SAC5C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,yDAAyD;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/classifiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACrF,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/classifiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAErF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyword-based hierarchical classifier.
|
|
3
|
+
*
|
|
4
|
+
* Uses pattern matching with confidence scoring as a fast fallback
|
|
5
|
+
* when embedding classification is unavailable or low-confidence.
|
|
6
|
+
* No external dependencies -- works offline with zero setup.
|
|
7
|
+
*/
|
|
8
|
+
import { BaseClassifier, ClassificationResult } from './base.js';
|
|
9
|
+
/** Broad category -> keyword patterns. */
|
|
10
|
+
export declare const BROAD_PATTERNS: Record<string, string[]>;
|
|
11
|
+
/** Subcategory patterns nested under broad categories. */
|
|
12
|
+
export declare const SUBCATEGORY_PATTERNS: Record<string, Record<string, string[]>>;
|
|
13
|
+
/** Map categories -> benchmark names for score output. */
|
|
14
|
+
export declare const CATEGORY_TO_BENCHMARKS: Record<string, string[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Fast keyword-based classifier using hierarchical pattern matching.
|
|
17
|
+
*
|
|
18
|
+
* Two-stage classification:
|
|
19
|
+
* 1. Broad category (TECHNICAL, CREATIVE, BUSINESS, EDUCATIONAL, CONVERSATIONAL)
|
|
20
|
+
* 2. Subcategory refinement (CODE_TECHNICAL, WRITING_LITERARY, etc.)
|
|
21
|
+
*
|
|
22
|
+
* Output is mapped to benchmark similarity scores for compatibility
|
|
23
|
+
* with the ScoringEngine.
|
|
24
|
+
*/
|
|
25
|
+
export declare class KeywordClassifier extends BaseClassifier {
|
|
26
|
+
classify(prompt: string): ClassificationResult;
|
|
27
|
+
isReady(): boolean;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=keyword.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyword.d.ts","sourceRoot":"","sources":["../../src/classifiers/keyword.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjE,0CAA0C;AAC1C,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAwCnD,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAsFzE,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAuB3D,CAAC;AAiCF;;;;;;;;;GASG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IACnD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB;IAqE9C,OAAO,IAAI,OAAO;CAGnB"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyword-based hierarchical classifier.
|
|
3
|
+
*
|
|
4
|
+
* Uses pattern matching with confidence scoring as a fast fallback
|
|
5
|
+
* when embedding classification is unavailable or low-confidence.
|
|
6
|
+
* No external dependencies -- works offline with zero setup.
|
|
7
|
+
*/
|
|
8
|
+
import { BaseClassifier } from './base.js';
|
|
9
|
+
/** Broad category -> keyword patterns. */
|
|
10
|
+
export const BROAD_PATTERNS = {
|
|
11
|
+
TECHNICAL: [
|
|
12
|
+
'code', 'programming', 'algorithm', 'debug', 'api', 'database', 'sql',
|
|
13
|
+
'python', 'javascript', 'react', 'node', 'function', 'class', 'method',
|
|
14
|
+
'variable', 'loop', 'array', 'object', 'math', 'calculate', 'formula',
|
|
15
|
+
'equation', 'statistics', 'data analysis', 'machine learning', 'ai',
|
|
16
|
+
'model', 'neural network', 'regression', 'classification', 'clustering',
|
|
17
|
+
'dataset', 'deploy', 'docker', 'kubernetes', 'terraform', 'ci/cd',
|
|
18
|
+
],
|
|
19
|
+
CREATIVE: [
|
|
20
|
+
'story', 'write', 'creative', 'poem', 'poetry', 'narrative', 'character',
|
|
21
|
+
'plot', 'dialogue', 'design', 'color', 'layout', 'visual', 'aesthetic',
|
|
22
|
+
'brand', 'logo', 'artwork', 'graphic', 'brainstorm', 'idea', 'innovate',
|
|
23
|
+
'concept', 'inspiration', 'imagine', 'invent', 'original', 'music',
|
|
24
|
+
'song', 'melody', 'rhythm', 'video', 'film', 'script', 'performance', 'art',
|
|
25
|
+
],
|
|
26
|
+
BUSINESS: [
|
|
27
|
+
'business', 'strategy', 'plan', 'market', 'revenue', 'profit', 'growth',
|
|
28
|
+
'competition', 'budget', 'financial', 'investment', 'roi', 'cost',
|
|
29
|
+
'expense', 'accounting', 'finance', 'legal', 'contract', 'compliance',
|
|
30
|
+
'regulation', 'policy', 'law', 'terms', 'agreement', 'email',
|
|
31
|
+
'presentation', 'meeting', 'proposal', 'report', 'communication',
|
|
32
|
+
'professional', 'management', 'team', 'leadership', 'operations',
|
|
33
|
+
'process', 'workflow', 'organization', 'summarize', 'summary',
|
|
34
|
+
'memo', 'stakeholder', 'client', 'invoice', 'quarterly',
|
|
35
|
+
],
|
|
36
|
+
EDUCATIONAL: [
|
|
37
|
+
'explain', 'teach', 'learn', 'education', 'instruction', 'lesson',
|
|
38
|
+
'concept', 'understand', 'homework', 'assignment', 'study', 'exam',
|
|
39
|
+
'test', 'quiz', 'grade', 'student', 'school', 'research', 'paper',
|
|
40
|
+
'thesis', 'academic', 'scholar', 'methodology', 'analysis', 'review',
|
|
41
|
+
],
|
|
42
|
+
CONVERSATIONAL: [
|
|
43
|
+
'advice', 'help', 'recommend', 'suggest', 'opinion', 'think', 'feel',
|
|
44
|
+
'personal', 'life', 'relationship', 'friend', 'family', 'decision',
|
|
45
|
+
'choice', 'problem', 'solution', 'guidance', 'what', 'how', 'why',
|
|
46
|
+
'when', 'where', 'tell me', 'can you', 'please', 'would you',
|
|
47
|
+
'could you', 'best', 'better', 'good', 'bad', 'should', 'need',
|
|
48
|
+
'want', 'like', 'love', 'hate', 'prefer',
|
|
49
|
+
],
|
|
50
|
+
};
|
|
51
|
+
/** Subcategory patterns nested under broad categories. */
|
|
52
|
+
export const SUBCATEGORY_PATTERNS = {
|
|
53
|
+
TECHNICAL: {
|
|
54
|
+
CODE_TECHNICAL: [
|
|
55
|
+
'code', 'programming', 'debug', 'api', 'function', 'class', 'method',
|
|
56
|
+
'variable', 'algorithm', 'data structure', 'framework', 'library',
|
|
57
|
+
'repository', 'git', 'deploy',
|
|
58
|
+
],
|
|
59
|
+
MATHEMATICAL_SCIENTIFIC: [
|
|
60
|
+
'math', 'calculate', 'formula', 'equation', 'statistics', 'probability',
|
|
61
|
+
'theorem', 'physics', 'chemistry', 'biology', 'science', 'research',
|
|
62
|
+
'hypothesis', 'experiment',
|
|
63
|
+
],
|
|
64
|
+
DATA_SCIENCE: [
|
|
65
|
+
'data', 'dataset', 'analysis', 'machine learning', 'ai', 'model',
|
|
66
|
+
'neural network', 'regression', 'classification', 'clustering',
|
|
67
|
+
'visualization', 'pandas', 'numpy',
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
CREATIVE: {
|
|
71
|
+
WRITING_LITERARY: [
|
|
72
|
+
'story', 'write', 'novel', 'poem', 'poetry', 'narrative', 'character',
|
|
73
|
+
'plot', 'dialogue', 'fiction', 'non-fiction', 'essay', 'article',
|
|
74
|
+
'blog', 'content',
|
|
75
|
+
],
|
|
76
|
+
VISUAL_DESIGN: [
|
|
77
|
+
'design', 'color', 'layout', 'visual', 'aesthetic', 'brand', 'logo',
|
|
78
|
+
'ui', 'ux', 'graphic', 'typography', 'illustration', 'image', 'photo',
|
|
79
|
+
'artwork',
|
|
80
|
+
],
|
|
81
|
+
CREATIVE_IDEATION: [
|
|
82
|
+
'brainstorm', 'idea', 'innovate', 'concept', 'inspiration', 'imagine',
|
|
83
|
+
'invent', 'original', 'creative thinking', 'solution', 'alternative',
|
|
84
|
+
'possibility',
|
|
85
|
+
],
|
|
86
|
+
MEDIA_ARTS: [
|
|
87
|
+
'music', 'song', 'melody', 'rhythm', 'video', 'film', 'script',
|
|
88
|
+
'performance', 'theater', 'dance', 'photography', 'animation',
|
|
89
|
+
'multimedia',
|
|
90
|
+
],
|
|
91
|
+
},
|
|
92
|
+
BUSINESS: {
|
|
93
|
+
STRATEGY_PLANNING: [
|
|
94
|
+
'strategy', 'plan', 'business plan', 'roadmap', 'goal', 'objective',
|
|
95
|
+
'vision', 'mission', 'competitive', 'market analysis', 'swot',
|
|
96
|
+
'growth', 'expansion',
|
|
97
|
+
],
|
|
98
|
+
FINANCIAL_ANALYSIS: [
|
|
99
|
+
'financial', 'budget', 'investment', 'roi', 'revenue', 'profit',
|
|
100
|
+
'cost', 'expense', 'cash flow', 'forecast', 'valuation', 'accounting',
|
|
101
|
+
'finance', 'pricing',
|
|
102
|
+
],
|
|
103
|
+
LEGAL_COMPLIANCE: [
|
|
104
|
+
'legal', 'law', 'contract', 'agreement', 'compliance', 'regulation',
|
|
105
|
+
'policy', 'terms', 'conditions', 'intellectual property', 'patent',
|
|
106
|
+
'copyright', 'gdpr',
|
|
107
|
+
],
|
|
108
|
+
PROFESSIONAL_COMMUNICATION: [
|
|
109
|
+
'email', 'presentation', 'meeting', 'proposal', 'report', 'memo',
|
|
110
|
+
'letter', 'communication', 'professional', 'corporate', 'client',
|
|
111
|
+
'stakeholder', 'summarize', 'summary', 'brief', 'digest',
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
EDUCATIONAL: {
|
|
115
|
+
ACADEMIC_INSTRUCTION: [
|
|
116
|
+
'explain', 'teach', 'lesson', 'instruction', 'lecture', 'tutorial',
|
|
117
|
+
'concept', 'theory', 'understand',
|
|
118
|
+
],
|
|
119
|
+
STUDY_ASSISTANCE: [
|
|
120
|
+
'homework', 'assignment', 'study', 'exam', 'test', 'quiz', 'grade',
|
|
121
|
+
'student', 'school',
|
|
122
|
+
],
|
|
123
|
+
RESEARCH_METHODOLOGY: [
|
|
124
|
+
'research', 'paper', 'thesis', 'academic', 'scholar', 'methodology',
|
|
125
|
+
'analysis', 'review', 'peer review', 'citation',
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
CONVERSATIONAL: {
|
|
129
|
+
PERSONAL_ADVICE: [
|
|
130
|
+
'advice', 'personal', 'life', 'relationship', 'friend', 'family',
|
|
131
|
+
'decision', 'guidance', 'feel', 'emotion',
|
|
132
|
+
],
|
|
133
|
+
RECOMMENDATIONS: [
|
|
134
|
+
'recommend', 'suggest', 'best', 'better', 'compare', 'which',
|
|
135
|
+
'should i', 'top', 'review', 'rating',
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
/** Map categories -> benchmark names for score output. */
|
|
140
|
+
export const CATEGORY_TO_BENCHMARKS = {
|
|
141
|
+
CODE_TECHNICAL: ['HumanEval', 'SWE-bench'],
|
|
142
|
+
MATHEMATICAL_SCIENTIFIC: ['GSM8K', 'DROP', 'ARC'],
|
|
143
|
+
DATA_SCIENCE: ['HumanEval', 'SWE-bench', 'DROP'],
|
|
144
|
+
WRITING_LITERARY: ['MT-Bench', 'Chatbot Arena (LMSys)'],
|
|
145
|
+
VISUAL_DESIGN: ['MT-Bench'],
|
|
146
|
+
CREATIVE_IDEATION: ['MT-Bench', 'Chatbot Arena (LMSys)'],
|
|
147
|
+
MEDIA_ARTS: ['MT-Bench'],
|
|
148
|
+
STRATEGY_PLANNING: ['MMLU', 'SuperGLUE'],
|
|
149
|
+
FINANCIAL_ANALYSIS: ['GSM8K', 'DROP', 'MMLU'],
|
|
150
|
+
LEGAL_COMPLIANCE: ['MMLU', 'TruthfulQA'],
|
|
151
|
+
PROFESSIONAL_COMMUNICATION: ['SuperGLUE', 'MT-Bench'],
|
|
152
|
+
ACADEMIC_INSTRUCTION: ['MMLU', 'ARC'],
|
|
153
|
+
STUDY_ASSISTANCE: ['MMLU', 'GSM8K'],
|
|
154
|
+
RESEARCH_METHODOLOGY: ['MMLU', 'TruthfulQA'],
|
|
155
|
+
PERSONAL_ADVICE: ['Chatbot Arena (LMSys)', 'TruthfulQA', 'HellaSwag'],
|
|
156
|
+
RECOMMENDATIONS: ['Chatbot Arena (LMSys)', 'HellaSwag'],
|
|
157
|
+
// Broad-level fallbacks
|
|
158
|
+
TECHNICAL: ['HumanEval', 'SWE-bench', 'GSM8K'],
|
|
159
|
+
CREATIVE: ['MT-Bench', 'Chatbot Arena (LMSys)'],
|
|
160
|
+
BUSINESS: ['MMLU', 'SuperGLUE', 'DROP'],
|
|
161
|
+
EDUCATIONAL: ['MMLU', 'ARC', 'GSM8K'],
|
|
162
|
+
CONVERSATIONAL: ['Chatbot Arena (LMSys)', 'HellaSwag', 'TruthfulQA'],
|
|
163
|
+
};
|
|
164
|
+
/** Calculate keyword match score for a category. */
|
|
165
|
+
function scoreCategory(textLower, keywords) {
|
|
166
|
+
if (keywords.length === 0)
|
|
167
|
+
return 0.0;
|
|
168
|
+
let matches = 0;
|
|
169
|
+
let weightedMatches = 0.0;
|
|
170
|
+
for (const kw of keywords) {
|
|
171
|
+
if (textLower.includes(kw)) {
|
|
172
|
+
matches += 1;
|
|
173
|
+
// Longer keywords are more specific -> higher weight
|
|
174
|
+
const weight = kw.length > 5 ? 1.5 : 1.0;
|
|
175
|
+
weightedMatches += weight;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (matches === 0)
|
|
179
|
+
return 0.0;
|
|
180
|
+
// Square-root normalization + match bonus
|
|
181
|
+
let baseScore = Math.sqrt(weightedMatches / keywords.length);
|
|
182
|
+
// Bonus for multiple matches
|
|
183
|
+
if (matches >= 3) {
|
|
184
|
+
baseScore += 0.2;
|
|
185
|
+
}
|
|
186
|
+
else if (matches >= 2) {
|
|
187
|
+
baseScore += 0.1;
|
|
188
|
+
}
|
|
189
|
+
return Math.min(1.0, baseScore);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Fast keyword-based classifier using hierarchical pattern matching.
|
|
193
|
+
*
|
|
194
|
+
* Two-stage classification:
|
|
195
|
+
* 1. Broad category (TECHNICAL, CREATIVE, BUSINESS, EDUCATIONAL, CONVERSATIONAL)
|
|
196
|
+
* 2. Subcategory refinement (CODE_TECHNICAL, WRITING_LITERARY, etc.)
|
|
197
|
+
*
|
|
198
|
+
* Output is mapped to benchmark similarity scores for compatibility
|
|
199
|
+
* with the ScoringEngine.
|
|
200
|
+
*/
|
|
201
|
+
export class KeywordClassifier extends BaseClassifier {
|
|
202
|
+
classify(prompt) {
|
|
203
|
+
const start = performance.now();
|
|
204
|
+
const textLower = prompt.toLowerCase();
|
|
205
|
+
// Stage 1: Broad category
|
|
206
|
+
const broadScores = {};
|
|
207
|
+
for (const [category, keywords] of Object.entries(BROAD_PATTERNS)) {
|
|
208
|
+
broadScores[category] = scoreCategory(textLower, keywords);
|
|
209
|
+
}
|
|
210
|
+
let bestBroad = '';
|
|
211
|
+
let broadConfidence = 0;
|
|
212
|
+
for (const [cat, score] of Object.entries(broadScores)) {
|
|
213
|
+
if (score > broadConfidence) {
|
|
214
|
+
broadConfidence = score;
|
|
215
|
+
bestBroad = cat;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (!bestBroad)
|
|
219
|
+
bestBroad = 'CONVERSATIONAL';
|
|
220
|
+
// Stage 2: Subcategory (if broad confidence is meaningful)
|
|
221
|
+
let bestSub = '';
|
|
222
|
+
let subConfidence = 0.0;
|
|
223
|
+
if (broadConfidence > 0.1 && SUBCATEGORY_PATTERNS[bestBroad]) {
|
|
224
|
+
const subScores = {};
|
|
225
|
+
for (const [sub, keywords] of Object.entries(SUBCATEGORY_PATTERNS[bestBroad])) {
|
|
226
|
+
subScores[sub] = scoreCategory(textLower, keywords);
|
|
227
|
+
}
|
|
228
|
+
for (const [sub, score] of Object.entries(subScores)) {
|
|
229
|
+
if (score > subConfidence) {
|
|
230
|
+
subConfidence = score;
|
|
231
|
+
bestSub = sub;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// Convert to benchmark scores
|
|
236
|
+
const finalCategory = bestSub && subConfidence > 0.05 ? bestSub : bestBroad;
|
|
237
|
+
const benchmarkNames = CATEGORY_TO_BENCHMARKS[finalCategory] ?? [];
|
|
238
|
+
const benchmarkScores = {};
|
|
239
|
+
const confidence = subConfidence > 0.05 ? subConfidence : broadConfidence;
|
|
240
|
+
for (const bench of benchmarkNames) {
|
|
241
|
+
benchmarkScores[bench] = confidence;
|
|
242
|
+
}
|
|
243
|
+
// Add a base score for general benchmarks
|
|
244
|
+
for (const bench of ['MMLU', 'Chatbot Arena (LMSys)', 'HellaSwag']) {
|
|
245
|
+
if (!(bench in benchmarkScores)) {
|
|
246
|
+
benchmarkScores[bench] = Math.max(0.05, broadConfidence * 0.3);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
const elapsedMs = performance.now() - start;
|
|
250
|
+
return {
|
|
251
|
+
benchmarkScores,
|
|
252
|
+
broadCategory: bestBroad,
|
|
253
|
+
subcategory: bestSub,
|
|
254
|
+
confidence,
|
|
255
|
+
classifierUsed: 'keyword',
|
|
256
|
+
cacheHit: false,
|
|
257
|
+
processingTimeMs: elapsedMs,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
isReady() {
|
|
261
|
+
return true; // Always ready -- no initialization needed
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=keyword.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyword.js","sourceRoot":"","sources":["../../src/classifiers/keyword.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* TryAii-DRE CLI.
|
|
4
|
+
*
|
|
5
|
+
* Commands (kept in parity with the Python SDK's `tryaii-dre`):
|
|
6
|
+
* tryaii-dre route "your prompt here" -- Route a prompt and show recommendations
|
|
7
|
+
* tryaii-dre eval prompts.json -- Route a JSON prompt dataset
|
|
8
|
+
* tryaii-dre setup -- Download the embedding model + warm centroids
|
|
9
|
+
* tryaii-dre models -- List available models
|
|
10
|
+
* tryaii-dre benchmarks -- List available benchmarks
|
|
11
|
+
*
|
|
12
|
+
* Global flags: --no-banner, --version, --help.
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}
|