adaptive-memory-multi-model-router 2.0.0 → 2.0.2
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 +96 -255
- package/articles/DEVTO_V2_ANNOUNCEMENT.md +160 -0
- package/articles/DEVTO_VIRAL_GROWTH.md +280 -0
- package/assets/feature-matrix.svg +136 -0
- package/assets/growth-chart.svg +82 -0
- package/assets/provider-comparison.svg +121 -0
- package/dist/index.d.ts +28 -1
- package/dist/index.js +75 -3
- package/dist/index.js.map +1 -1
- package/llms.txt +30 -120
- package/package.json +1 -1
- package/src/index.ts +95 -2
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,31 @@
|
|
|
1
|
+
export { routeQuery, routeBatch, recommendForTask, extractQueryFeatures, MODEL_PROFILES, updateModelProfile, getProviderHealth, } from './routing/advancedRouter';
|
|
2
|
+
export { DEFAULT_PROVIDERS, getAvailableProviders, registerProvider, deregisterProvider, updateProvider, healthCheck, checkAllProviders, findCheapestAvailableProvider, findFastestAvailableProvider, loadConfig, saveConfig, } from './providers/providerConfig';
|
|
3
|
+
export type { ProviderTier, ProviderFormat, ProviderType, ProviderCost, ProviderDefinition, } from './providers/providerConfig';
|
|
4
|
+
export { CostTracker } from './cost/costTracker';
|
|
5
|
+
export { MemoryTree } from './memory/memoryTree';
|
|
6
|
+
export type { MemoryChunk, TreeNode } from './memory/memoryTree';
|
|
7
|
+
export { countTokens, estimateTokens } from './utils/tokenUtils';
|
|
8
|
+
export { MODEL_COSTS } from './utils/tokenUtils';
|
|
1
9
|
export { SemanticCache } from './cache/semanticCache';
|
|
2
10
|
export { GuardrailEngine } from './security/guardrails';
|
|
3
11
|
export { CostAnalytics } from './analytics/costAnalytics';
|
|
4
|
-
export {
|
|
12
|
+
export { createProxyServer } from './server/proxyServer';
|
|
13
|
+
import { getAvailableProviders, healthCheck } from './providers/providerConfig';
|
|
14
|
+
import { MemoryTree } from './memory/memoryTree';
|
|
15
|
+
export interface A3MRouterOptions {
|
|
16
|
+
defaultProvider?: string;
|
|
17
|
+
enableCache?: boolean;
|
|
18
|
+
enableGuardrails?: boolean;
|
|
19
|
+
costLimit?: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function createA3MRouter(options?: A3MRouterOptions): {
|
|
22
|
+
route: any;
|
|
23
|
+
routeBatch: any;
|
|
24
|
+
recommendForTask: any;
|
|
25
|
+
getAvailableProviders: typeof getAvailableProviders;
|
|
26
|
+
healthCheck: typeof healthCheck;
|
|
27
|
+
costTracker: any;
|
|
28
|
+
memoryTree: MemoryTree;
|
|
29
|
+
options: A3MRouterOptions;
|
|
30
|
+
};
|
|
31
|
+
export default createA3MRouter;
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// A3M Router - Main Entry Point
|
|
3
|
+
// Version: 2.0.0
|
|
2
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
+
exports.createProxyServer = exports.CostAnalytics = exports.GuardrailEngine = exports.SemanticCache = exports.MODEL_COSTS = exports.estimateTokens = exports.countTokens = exports.MemoryTree = exports.CostTracker = exports.saveConfig = exports.loadConfig = exports.findFastestAvailableProvider = exports.findCheapestAvailableProvider = exports.checkAllProviders = exports.healthCheck = exports.updateProvider = exports.deregisterProvider = exports.registerProvider = exports.getAvailableProviders = exports.DEFAULT_PROVIDERS = exports.getProviderHealth = exports.updateModelProfile = exports.MODEL_PROFILES = exports.extractQueryFeatures = exports.recommendForTask = exports.routeBatch = exports.routeQuery = void 0;
|
|
6
|
+
exports.createA3MRouter = createA3MRouter;
|
|
7
|
+
// ============================================================
|
|
8
|
+
// ROUTING ENGINE
|
|
9
|
+
// ============================================================
|
|
10
|
+
var advancedRouter_1 = require("./routing/advancedRouter");
|
|
11
|
+
Object.defineProperty(exports, "routeQuery", { enumerable: true, get: function () { return advancedRouter_1.routeQuery; } });
|
|
12
|
+
Object.defineProperty(exports, "routeBatch", { enumerable: true, get: function () { return advancedRouter_1.routeBatch; } });
|
|
13
|
+
Object.defineProperty(exports, "recommendForTask", { enumerable: true, get: function () { return advancedRouter_1.recommendForTask; } });
|
|
14
|
+
Object.defineProperty(exports, "extractQueryFeatures", { enumerable: true, get: function () { return advancedRouter_1.extractQueryFeatures; } });
|
|
15
|
+
Object.defineProperty(exports, "MODEL_PROFILES", { enumerable: true, get: function () { return advancedRouter_1.MODEL_PROFILES; } });
|
|
16
|
+
Object.defineProperty(exports, "updateModelProfile", { enumerable: true, get: function () { return advancedRouter_1.updateModelProfile; } });
|
|
17
|
+
Object.defineProperty(exports, "getProviderHealth", { enumerable: true, get: function () { return advancedRouter_1.getProviderHealth; } });
|
|
18
|
+
// ============================================================
|
|
19
|
+
// PROVIDERS
|
|
20
|
+
// ============================================================
|
|
21
|
+
var providerConfig_1 = require("./providers/providerConfig");
|
|
22
|
+
Object.defineProperty(exports, "DEFAULT_PROVIDERS", { enumerable: true, get: function () { return providerConfig_1.DEFAULT_PROVIDERS; } });
|
|
23
|
+
Object.defineProperty(exports, "getAvailableProviders", { enumerable: true, get: function () { return providerConfig_1.getAvailableProviders; } });
|
|
24
|
+
Object.defineProperty(exports, "registerProvider", { enumerable: true, get: function () { return providerConfig_1.registerProvider; } });
|
|
25
|
+
Object.defineProperty(exports, "deregisterProvider", { enumerable: true, get: function () { return providerConfig_1.deregisterProvider; } });
|
|
26
|
+
Object.defineProperty(exports, "updateProvider", { enumerable: true, get: function () { return providerConfig_1.updateProvider; } });
|
|
27
|
+
Object.defineProperty(exports, "healthCheck", { enumerable: true, get: function () { return providerConfig_1.healthCheck; } });
|
|
28
|
+
Object.defineProperty(exports, "checkAllProviders", { enumerable: true, get: function () { return providerConfig_1.checkAllProviders; } });
|
|
29
|
+
Object.defineProperty(exports, "findCheapestAvailableProvider", { enumerable: true, get: function () { return providerConfig_1.findCheapestAvailableProvider; } });
|
|
30
|
+
Object.defineProperty(exports, "findFastestAvailableProvider", { enumerable: true, get: function () { return providerConfig_1.findFastestAvailableProvider; } });
|
|
31
|
+
Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return providerConfig_1.loadConfig; } });
|
|
32
|
+
Object.defineProperty(exports, "saveConfig", { enumerable: true, get: function () { return providerConfig_1.saveConfig; } });
|
|
33
|
+
// ============================================================
|
|
34
|
+
// COST TRACKING
|
|
35
|
+
// ============================================================
|
|
36
|
+
var costTracker_1 = require("./cost/costTracker");
|
|
37
|
+
Object.defineProperty(exports, "CostTracker", { enumerable: true, get: function () { return costTracker_1.CostTracker; } });
|
|
38
|
+
// ============================================================
|
|
39
|
+
// MEMORY
|
|
40
|
+
// ============================================================
|
|
41
|
+
var memoryTree_1 = require("./memory/memoryTree");
|
|
42
|
+
Object.defineProperty(exports, "MemoryTree", { enumerable: true, get: function () { return memoryTree_1.MemoryTree; } });
|
|
43
|
+
// ============================================================
|
|
44
|
+
// UTILITIES
|
|
45
|
+
// ============================================================
|
|
46
|
+
var tokenUtils_1 = require("./utils/tokenUtils");
|
|
47
|
+
Object.defineProperty(exports, "countTokens", { enumerable: true, get: function () { return tokenUtils_1.countTokens; } });
|
|
48
|
+
Object.defineProperty(exports, "estimateTokens", { enumerable: true, get: function () { return tokenUtils_1.estimateTokens; } });
|
|
49
|
+
var tokenUtils_2 = require("./utils/tokenUtils");
|
|
50
|
+
Object.defineProperty(exports, "MODEL_COSTS", { enumerable: true, get: function () { return tokenUtils_2.MODEL_COSTS; } });
|
|
51
|
+
// ============================================================
|
|
52
|
+
// v2.0.0 FEATURES
|
|
53
|
+
// ============================================================
|
|
5
54
|
var semanticCache_1 = require("./cache/semanticCache");
|
|
6
55
|
Object.defineProperty(exports, "SemanticCache", { enumerable: true, get: function () { return semanticCache_1.SemanticCache; } });
|
|
7
56
|
var guardrails_1 = require("./security/guardrails");
|
|
@@ -9,5 +58,28 @@ Object.defineProperty(exports, "GuardrailEngine", { enumerable: true, get: funct
|
|
|
9
58
|
var costAnalytics_1 = require("./analytics/costAnalytics");
|
|
10
59
|
Object.defineProperty(exports, "CostAnalytics", { enumerable: true, get: function () { return costAnalytics_1.CostAnalytics; } });
|
|
11
60
|
var proxyServer_1 = require("./server/proxyServer");
|
|
12
|
-
Object.defineProperty(exports, "
|
|
61
|
+
Object.defineProperty(exports, "createProxyServer", { enumerable: true, get: function () { return proxyServer_1.createProxyServer; } });
|
|
62
|
+
// ============================================================
|
|
63
|
+
// CONVENIENCE: Create a router instance
|
|
64
|
+
// ============================================================
|
|
65
|
+
const advancedRouter_2 = require("./routing/advancedRouter");
|
|
66
|
+
const providerConfig_2 = require("./providers/providerConfig");
|
|
67
|
+
const costTracker_2 = require("./cost/costTracker");
|
|
68
|
+
const memoryTree_2 = require("./memory/memoryTree");
|
|
69
|
+
function createA3MRouter(options) {
|
|
70
|
+
const costTracker = new costTracker_2.CostTracker();
|
|
71
|
+
const memoryTree = new memoryTree_2.MemoryTree();
|
|
72
|
+
return {
|
|
73
|
+
route: advancedRouter_2.routeQuery,
|
|
74
|
+
routeBatch: advancedRouter_2.routeBatch,
|
|
75
|
+
recommendForTask: advancedRouter_2.recommendForTask,
|
|
76
|
+
getAvailableProviders: providerConfig_2.getAvailableProviders,
|
|
77
|
+
healthCheck: providerConfig_2.healthCheck,
|
|
78
|
+
costTracker,
|
|
79
|
+
memoryTree,
|
|
80
|
+
options: options || {},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
// Default export
|
|
84
|
+
exports.default = createA3MRouter;
|
|
13
85
|
//# 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":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,iBAAiB;;;AAgFjB,0CAcC;AA5FD,+DAA+D;AAC/D,iBAAiB;AACjB,+DAA+D;AAC/D,2DAQkC;AAPhC,4GAAA,UAAU,OAAA;AACV,4GAAA,UAAU,OAAA;AACV,kHAAA,gBAAgB,OAAA;AAChB,sHAAA,oBAAoB,OAAA;AACpB,gHAAA,cAAc,OAAA;AACd,oHAAA,kBAAkB,OAAA;AAClB,mHAAA,iBAAiB,OAAA;AAGnB,+DAA+D;AAC/D,YAAY;AACZ,+DAA+D;AAC/D,6DAYoC;AAXlC,mHAAA,iBAAiB,OAAA;AACjB,uHAAA,qBAAqB,OAAA;AACrB,kHAAA,gBAAgB,OAAA;AAChB,oHAAA,kBAAkB,OAAA;AAClB,gHAAA,cAAc,OAAA;AACd,6GAAA,WAAW,OAAA;AACX,mHAAA,iBAAiB,OAAA;AACjB,+HAAA,6BAA6B,OAAA;AAC7B,8HAAA,4BAA4B,OAAA;AAC5B,4GAAA,UAAU,OAAA;AACV,4GAAA,UAAU,OAAA;AAWZ,+DAA+D;AAC/D,gBAAgB;AAChB,+DAA+D;AAC/D,kDAAiD;AAAxC,0GAAA,WAAW,OAAA;AAEpB,+DAA+D;AAC/D,SAAS;AACT,+DAA+D;AAC/D,kDAAiD;AAAxC,wGAAA,UAAU,OAAA;AAGnB,+DAA+D;AAC/D,YAAY;AACZ,+DAA+D;AAC/D,iDAAiE;AAAxD,yGAAA,WAAW,OAAA;AAAE,4GAAA,cAAc,OAAA;AACpC,iDAAiD;AAAxC,yGAAA,WAAW,OAAA;AAEpB,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;AAC/D,uDAAsD;AAA7C,8GAAA,aAAa,OAAA;AACtB,oDAAwD;AAA/C,6GAAA,eAAe,OAAA;AACxB,2DAA0D;AAAjD,8GAAA,aAAa,OAAA;AACtB,oDAAyD;AAAhD,gHAAA,iBAAiB,OAAA;AAE1B,+DAA+D;AAC/D,wCAAwC;AACxC,+DAA+D;AAC/D,6DAAoF;AACpF,+DAAgF;AAChF,oDAAiD;AACjD,oDAAiD;AASjD,SAAgB,eAAe,CAAC,OAA0B;IACxD,MAAM,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,uBAAU,EAAE,CAAC;IAEpC,OAAO;QACL,KAAK,EAAE,2BAAU;QACjB,UAAU,EAAV,2BAAU;QACV,gBAAgB,EAAhB,iCAAgB;QAChB,qBAAqB,EAArB,sCAAqB;QACrB,WAAW,EAAX,4BAAW;QACX,WAAW;QACX,UAAU;QACV,OAAO,EAAE,OAAO,IAAI,EAAE;KACvB,CAAC;AACJ,CAAC;AAED,iBAAiB;AACjB,kBAAe,eAAe,CAAC"}
|
package/llms.txt
CHANGED
|
@@ -1,138 +1,48 @@
|
|
|
1
|
-
#
|
|
1
|
+
# A3M Router — Intelligent LLM Routing Engine
|
|
2
2
|
|
|
3
|
-
##
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
## Primary Use Cases
|
|
8
|
-
|
|
9
|
-
1. **Multi-Provider LLM Routing**: Route queries to cheapest/best provider based on query characteristics
|
|
10
|
-
2. **Cost Optimization**: Reduce API costs by 50-80% with intelligent provider selection
|
|
11
|
-
3. **Provider Fallback**: Automatic retry with backup providers when primary fails
|
|
12
|
-
4. **Batch Processing**: Process multiple prompts with parallel execution and rate limiting
|
|
13
|
-
5. **Cost Tracking**: Real-time monitoring of API spending across all providers
|
|
14
|
-
|
|
15
|
-
## Installation
|
|
3
|
+
## What
|
|
4
|
+
OpenAI-compatible AI gateway that routes queries to the cheapest capable LLM provider.
|
|
5
|
+
2,775 downloads in 3 days. 1,903 yesterday. 39 providers. Zero config.
|
|
16
6
|
|
|
7
|
+
## Quick Start
|
|
17
8
|
```bash
|
|
18
9
|
npm install adaptive-memory-multi-model-router
|
|
10
|
+
npx a3m-router serve
|
|
19
11
|
```
|
|
20
12
|
|
|
21
|
-
## Quick Start
|
|
22
|
-
|
|
23
|
-
```javascript
|
|
24
|
-
const { createA3MRouter } = require('adaptive-memory-multi-model-router');
|
|
25
|
-
|
|
26
|
-
const router = createA3MRouter();
|
|
27
|
-
|
|
28
|
-
// Route to optimal provider
|
|
29
|
-
const result = await router.route("Write Python to sort an array");
|
|
30
|
-
console.log(result.primary_model); // "groq/llama-3.3-70b"
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Supported Providers
|
|
34
|
-
|
|
35
|
-
- **Fast/Cheap**: Groq, Cerebras, Mistral
|
|
36
|
-
- **High Quality**: OpenAI GPT-4, Anthropic Claude
|
|
37
|
-
- **Free Tiers**: CommandCode, OpenCode
|
|
38
|
-
- **Local**: Ollama, vLLM, LM Studio
|
|
39
|
-
|
|
40
13
|
## Key Features
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
// Simple query → cheapest provider
|
|
59
|
-
routeQuery("What is 2+2?"); // → free provider
|
|
60
|
-
|
|
61
|
-
// Code query → code-capable provider
|
|
62
|
-
routeQuery("Write Python function"); // → groq/llama
|
|
63
|
-
|
|
64
|
-
// Complex reasoning → high-quality provider
|
|
65
|
-
routeQuery("Explain quantum physics"); // → mistral-large
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Batch Processing
|
|
69
|
-
```javascript
|
|
70
|
-
const { routeBatch } = require('adaptive-memory-multi-model-router');
|
|
71
|
-
|
|
72
|
-
const queries = ["Q1", "Q2", "Q3"];
|
|
73
|
-
const results = routeBatch(queries, { same_model: true });
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
### Cost Tracking
|
|
14
|
+
- OpenAI-compatible proxy (drop-in for any SDK)
|
|
15
|
+
- Intelligent routing by query complexity (70% cost savings)
|
|
16
|
+
- Real-time dashboard with cost tracking
|
|
17
|
+
- LangChain adapter (A3MChatModel)
|
|
18
|
+
- Guardrails (PII, prompt injection, content filter)
|
|
19
|
+
- Semantic cache (trigram Jaccard similarity)
|
|
20
|
+
- Cost analytics with savings reports
|
|
21
|
+
- 39 providers: Groq, Cerebras, Mistral, DeepSeek, CommandCode (FREE), Ollama, etc.
|
|
22
|
+
|
|
23
|
+
## Providers by Cost
|
|
24
|
+
- FREE: CommandCode, Ollama, LM Studio, vLLM
|
|
25
|
+
- $0.59-0.60/1M tokens: Groq, Cerebras
|
|
26
|
+
- $1.50-2.80/1M tokens: DeepSeek, MiniMax, Mistral, Qwen, GLM-4
|
|
27
|
+
- $10-30/1M tokens: Google, Anthropic, OpenAI
|
|
28
|
+
|
|
29
|
+
## API
|
|
77
30
|
```javascript
|
|
31
|
+
const { createA3MRouter } = require('adaptive-memory-multi-model-router');
|
|
78
32
|
const router = createA3MRouter();
|
|
79
|
-
const
|
|
80
|
-
console.log(`Total spent: $${summary.totalSpent}`);
|
|
33
|
+
const result = await router.route("Your query");
|
|
81
34
|
```
|
|
82
35
|
|
|
83
|
-
## CLI
|
|
84
|
-
|
|
36
|
+
## CLI
|
|
85
37
|
```bash
|
|
38
|
+
npx a3m-router serve # Start OpenAI-compatible proxy on :8787
|
|
39
|
+
npx a3m-router route "query" # Route a single query
|
|
40
|
+
npx a3m-router benchmark # Benchmark all providers
|
|
86
41
|
npx a3m-router providers # List configured providers
|
|
87
|
-
npx a3m-router
|
|
88
|
-
npx a3m-router benchmark # Compare providers
|
|
89
|
-
npx a3m-router status # Show system status
|
|
42
|
+
npx a3m-router status # Show router status
|
|
90
43
|
```
|
|
91
44
|
|
|
92
|
-
## Configuration
|
|
93
|
-
|
|
94
|
-
```json
|
|
95
|
-
// ~/.config/a3m-router/providers.json
|
|
96
|
-
{
|
|
97
|
-
"providers": {
|
|
98
|
-
"groq": {
|
|
99
|
-
"apiKeyEnv": "GROQ_API_KEY",
|
|
100
|
-
"models": ["llama-3.3-70b"]
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## Performance
|
|
107
|
-
|
|
108
|
-
- 872 weekly downloads
|
|
109
|
-
- 320 daily average
|
|
110
|
-
- 33 comprehensive tests
|
|
111
|
-
- 139 npm keywords
|
|
112
|
-
- 116 integrations
|
|
113
|
-
|
|
114
|
-
## Comparison
|
|
115
|
-
|
|
116
|
-
| Package | Routing | Cost Track | Fallback | Batch | CLI |
|
|
117
|
-
|---------|---------|------------|----------|-------|-----|
|
|
118
|
-
| A3M Router | ✅ Learned | ✅ | ✅ | ✅ | ✅ |
|
|
119
|
-
| LiteLLM | ✅ Basic | ❌ | ❌ | ✅ | ✅ |
|
|
120
|
-
| OpenRouter | ✅ | ❌ | ✅ | ❌ | ❌ |
|
|
121
|
-
|
|
122
|
-
## When to Use
|
|
123
|
-
|
|
124
|
-
Use A3M Router when:
|
|
125
|
-
- You use multiple LLM providers
|
|
126
|
-
- You want automatic cost optimization
|
|
127
|
-
- You need provider fallback
|
|
128
|
-
- You process prompts in batches
|
|
129
|
-
- You want to track API spending
|
|
130
|
-
|
|
131
45
|
## Links
|
|
132
|
-
|
|
133
46
|
- NPM: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
134
47
|
- GitHub: https://github.com/Das-rebel/adaptive-memory-multi-model-router
|
|
135
|
-
|
|
136
|
-
## Keywords for AI Indexing
|
|
137
|
-
|
|
138
|
-
LLM routing, cost optimization, multi-provider, OpenAI alternative, Claude routing, Groq integration, batch processing, API load balancing, LLM fallback, provider switching, token optimization, response caching, adaptive routing, learned routing, RouteLLM implementation
|
|
48
|
+
- License: MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adaptive-memory-multi-model-router",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"shortName": "A3M Router",
|
|
5
5
|
"displayName": "A3M Router - Adaptive Memory Multi-Model Router",
|
|
6
6
|
"description": "\ud83d\udd00 Intelligent LLM routing engine with OpenAI-compatible proxy, LangChain adapter, guardrails, semantic cache, cost analytics, and 40+ providers",
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,99 @@
|
|
|
1
|
+
// A3M Router - Main Entry Point
|
|
2
|
+
// Version: 2.0.0
|
|
1
3
|
|
|
2
|
-
//
|
|
4
|
+
// ============================================================
|
|
5
|
+
// ROUTING ENGINE
|
|
6
|
+
// ============================================================
|
|
7
|
+
export {
|
|
8
|
+
routeQuery,
|
|
9
|
+
routeBatch,
|
|
10
|
+
recommendForTask,
|
|
11
|
+
extractQueryFeatures,
|
|
12
|
+
MODEL_PROFILES,
|
|
13
|
+
updateModelProfile,
|
|
14
|
+
getProviderHealth,
|
|
15
|
+
} from './routing/advancedRouter';
|
|
16
|
+
|
|
17
|
+
// ============================================================
|
|
18
|
+
// PROVIDERS
|
|
19
|
+
// ============================================================
|
|
20
|
+
export {
|
|
21
|
+
DEFAULT_PROVIDERS,
|
|
22
|
+
getAvailableProviders,
|
|
23
|
+
registerProvider,
|
|
24
|
+
deregisterProvider,
|
|
25
|
+
updateProvider,
|
|
26
|
+
healthCheck,
|
|
27
|
+
checkAllProviders,
|
|
28
|
+
findCheapestAvailableProvider,
|
|
29
|
+
findFastestAvailableProvider,
|
|
30
|
+
loadConfig,
|
|
31
|
+
saveConfig,
|
|
32
|
+
} from './providers/providerConfig';
|
|
33
|
+
|
|
34
|
+
export type {
|
|
35
|
+
ProviderTier,
|
|
36
|
+
ProviderFormat,
|
|
37
|
+
ProviderType,
|
|
38
|
+
ProviderCost,
|
|
39
|
+
ProviderDefinition,
|
|
40
|
+
} from './providers/providerConfig';
|
|
41
|
+
|
|
42
|
+
// ============================================================
|
|
43
|
+
// COST TRACKING
|
|
44
|
+
// ============================================================
|
|
45
|
+
export { CostTracker } from './cost/costTracker';
|
|
46
|
+
|
|
47
|
+
// ============================================================
|
|
48
|
+
// MEMORY
|
|
49
|
+
// ============================================================
|
|
50
|
+
export { MemoryTree } from './memory/memoryTree';
|
|
51
|
+
export type { MemoryChunk, TreeNode } from './memory/memoryTree';
|
|
52
|
+
|
|
53
|
+
// ============================================================
|
|
54
|
+
// UTILITIES
|
|
55
|
+
// ============================================================
|
|
56
|
+
export { countTokens, estimateTokens } from './utils/tokenUtils';
|
|
57
|
+
export { MODEL_COSTS } from './utils/tokenUtils';
|
|
58
|
+
|
|
59
|
+
// ============================================================
|
|
60
|
+
// v2.0.0 FEATURES
|
|
61
|
+
// ============================================================
|
|
3
62
|
export { SemanticCache } from './cache/semanticCache';
|
|
4
63
|
export { GuardrailEngine } from './security/guardrails';
|
|
5
64
|
export { CostAnalytics } from './analytics/costAnalytics';
|
|
6
|
-
export {
|
|
65
|
+
export { createProxyServer } from './server/proxyServer';
|
|
66
|
+
|
|
67
|
+
// ============================================================
|
|
68
|
+
// CONVENIENCE: Create a router instance
|
|
69
|
+
// ============================================================
|
|
70
|
+
import { routeQuery, routeBatch, recommendForTask } from './routing/advancedRouter';
|
|
71
|
+
import { getAvailableProviders, healthCheck } from './providers/providerConfig';
|
|
72
|
+
import { CostTracker } from './cost/costTracker';
|
|
73
|
+
import { MemoryTree } from './memory/memoryTree';
|
|
74
|
+
|
|
75
|
+
export interface A3MRouterOptions {
|
|
76
|
+
defaultProvider?: string;
|
|
77
|
+
enableCache?: boolean;
|
|
78
|
+
enableGuardrails?: boolean;
|
|
79
|
+
costLimit?: number;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export function createA3MRouter(options?: A3MRouterOptions) {
|
|
83
|
+
const costTracker = new CostTracker();
|
|
84
|
+
const memoryTree = new MemoryTree();
|
|
85
|
+
|
|
86
|
+
return {
|
|
87
|
+
route: routeQuery,
|
|
88
|
+
routeBatch,
|
|
89
|
+
recommendForTask,
|
|
90
|
+
getAvailableProviders,
|
|
91
|
+
healthCheck,
|
|
92
|
+
costTracker,
|
|
93
|
+
memoryTree,
|
|
94
|
+
options: options || {},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Default export
|
|
99
|
+
export default createA3MRouter;
|