adaptive-memory-multi-model-router 2.15.5 → 2.16.1
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/.github/workflows/auto-submit-sitemap.yml +41 -0
- package/.github/workflows/mcp-pypi-publish.yml +34 -0
- package/.github/workflows/pypi-publish.yml +61 -17
- package/.github/workflows/tmlpd-publish.yml +23 -0
- package/README.md +181 -207
- package/RELEASE_v2.16.0.md +149 -0
- package/TECHNICAL_README.md +253 -0
- package/discoverability-diagnosis.md +280 -0
- package/dist/analytics/costAnalytics.d.ts.map +1 -1
- package/dist/benchmark/reproducible.d.ts.map +1 -1
- package/dist/cache/semanticCache.d.ts.map +1 -1
- package/dist/cli/setupWizard.d.ts +257 -50
- package/dist/cli/setupWizard.d.ts.map +1 -1
- package/dist/cli/setupWizard.js +419 -109
- package/dist/cli/setupWizard.js.map +1 -1
- package/dist/cli/tui.js +96 -67
- package/dist/cli.js +9 -0
- package/dist/cost/budgetEnforcer.d.ts.map +1 -1
- package/dist/cost/costTracker.d.ts.map +1 -1
- package/dist/ensemble/multiRoundDialog.d.ts.map +1 -1
- package/dist/ensemble/shapleyValue.d.ts.map +1 -1
- package/dist/ensemble.d.ts +1 -1
- package/dist/ensemble.js +141 -0
- package/dist/integrations/langchainAdapter.d.ts.map +1 -1
- package/dist/integrations/langchainAdapter.js +3 -3
- package/dist/integrations/langchainAdapter.js.map +1 -1
- package/dist/integrations/oauth.d.ts.map +1 -1
- package/dist/integrations/scienceAdapter.d.ts.map +1 -1
- package/dist/memory/autoFetch.d.ts.map +1 -1
- package/dist/memory/hybridMemory.d.ts.map +1 -1
- package/dist/memory/memoryTree.d.ts.map +1 -1
- package/dist/memory/obsidianVault.d.ts.map +1 -1
- package/dist/memory/reasoningBank.d.ts.map +1 -1
- package/dist/observability/metrics.d.ts.map +1 -1
- package/dist/observability/tracer.d.ts.map +1 -1
- package/dist/providers/providerConfig.d.ts.map +1 -1
- package/dist/providers/providerConfig.js +32 -17
- package/dist/providers/providerConfig.js.map +1 -1
- package/dist/routing/advancedRouter.d.ts.map +1 -1
- package/dist/routing/advancedRouter.js +106 -14
- package/dist/routing/advancedRouter.js.map +1 -1
- package/dist/routing/providerHealth.d.ts.map +1 -1
- package/dist/routing/providerRetry.d.ts.map +1 -1
- package/dist/routing/shadowSampler.js.map +1 -1
- package/dist/security/guardrails.d.ts.map +1 -1
- package/dist/server/handlers/chatHandler.d.ts.map +1 -1
- package/dist/server/handlers/completionsHandler.d.ts.map +1 -1
- package/dist/server/handlers/embeddingsHandler.d.ts.map +1 -1
- package/dist/server/handlers/healthHandler.d.ts.map +1 -1
- package/dist/server/handlers/metricsHandler.d.ts.map +1 -1
- package/dist/server/handlers/modelsHandler.d.ts.map +1 -1
- package/dist/server/metrics.d.ts.map +1 -1
- package/dist/server/proxyServer.d.ts.map +1 -1
- package/dist/server/router.d.ts.map +1 -1
- package/dist/server/state.d.ts.map +1 -1
- package/dist/skills/__tests__/skill_manager.test.js +5 -265
- package/dist/skills/__tests__/skill_manager.test.js.map +1 -1
- package/dist/utils/tokenUtils.d.ts.map +1 -1
- package/docs/ARTICLE_Biology_Inspired_Routing.md +208 -0
- package/docs/ARTICLE_Master.md +78 -0
- package/docs/ARTICLE_Master_CN.md +78 -0
- package/docs/ARTICLE_OpenRouter_Stripe.md +140 -0
- package/docs/DEVPTO_ARTICLE.md +84 -0
- package/docs/HUMAN_STYLE_GUIDE.md +75 -0
- package/docs/IMPRINT_PLAN.md +88 -0
- package/docs/OPENROUTER_ALTERNATIVE.md +184 -0
- package/docs/SOCIAL_CAMPAIGN.md +316 -0
- package/docs/anthropic.html +45 -0
- package/docs/best-llm-routers-2025.html +157 -0
- package/docs/cerebras.html +43 -0
- package/docs/cli-cheatsheet.md +286 -212
- package/docs/deepseek.html +44 -0
- package/docs/google.html +47 -0
- package/docs/groq.html +44 -0
- package/docs/mistral.html +43 -0
- package/docs/ollama.html +50 -0
- package/docs/openai.html +57 -0
- package/docs/sitemap.xml +69 -57
- package/docs-site/blog/best-llm-routers-2025.html +157 -0
- package/docs-site/index.html +59 -0
- package/docs-site/providers/anthropic.html +45 -0
- package/docs-site/providers/cerebras.html +43 -0
- package/docs-site/providers/deepseek.html +44 -0
- package/docs-site/providers/google.html +47 -0
- package/docs-site/providers/groq.html +44 -0
- package/docs-site/providers/index.html +41 -0
- package/docs-site/providers/mistral.html +43 -0
- package/docs-site/providers/ollama.html +50 -0
- package/docs-site/providers/openai.html +57 -0
- package/docs-site/sitemap.xml +69 -0
- package/package.json +36 -124
- package/python/README.md +33 -106
- package/python/mcp-server/a3m_mcp/__init__.py +20 -10
- package/python/mcp-server/a3m_mcp/server.py +172 -306
- package/python/pyproject.toml +6 -3
- package/scripts/submit-sitemap.sh +52 -0
- package/src/__types__/registry.d.ts +14 -0
- package/src/cli/setupWizard.ts +443 -112
- package/src/cli/tui.ts +159 -0
- package/src/ensemble.ts +154 -1
- package/src/integrations/langchainAdapter.ts +2 -2
- package/src/providers/providerConfig.ts +32 -17
- package/src/providers/registry.js +27 -0
- package/src/routing/advancedRouter.ts +99 -14
- package/src/routing/shadowSampler.ts +1 -1
- package/test-install/package.json +12 -0
- package/tests/tsconfig.json +0 -1
- package/tmlpd-pi-extension/README.md +105 -44
- package/tmlpd-pi-extension/docs/demo.svg +33 -0
- package/tmlpd-pi-extension/package.json +35 -106
- package/tmlpd-pi-extension/src/tokenOptimization/contextStratifier.ts +163 -0
- package/tmlpd-pi-extension/src/tokenOptimization/fetchOnceLocal.ts +136 -0
- package/tmlpd-pi-extension/src/tokenOptimization/index.ts +197 -0
- package/tmlpd-pi-extension/src/tokenOptimization/interAgentCompression.ts +157 -0
- package/tmlpd-pi-extension/src/tokenOptimization/schemaContract.ts +101 -0
- package/tmlpd-pi-extension/src/tokenOptimization/semanticCache.ts +248 -0
- package/tmlpd-pi-extension/src/tokenOptimization/tokenAwareFallback.ts +192 -0
- package/tmlpd-pi-extension/test/verify.js +21 -0
- package/tsconfig.build.json +2 -0
- package/packages/a3m-vercel-ai/dist/a3m-language-model.d.ts +0 -12
- package/packages/a3m-vercel-ai/dist/a3m-language-model.d.ts.map +0 -1
- package/packages/a3m-vercel-ai/dist/a3m-language-model.js +0 -289
- package/packages/a3m-vercel-ai/dist/a3m-language-model.js.map +0 -1
- package/packages/a3m-vercel-ai/dist/index.d.ts +0 -82
- package/packages/a3m-vercel-ai/dist/index.d.ts.map +0 -1
- package/packages/a3m-vercel-ai/dist/index.js +0 -79
- package/packages/a3m-vercel-ai/dist/index.js.map +0 -1
- package/packages/a3m-vercel-ai/dist/types.d.ts +0 -97
- package/packages/a3m-vercel-ai/dist/types.d.ts.map +0 -1
- package/packages/a3m-vercel-ai/dist/types.js +0 -5
- package/packages/a3m-vercel-ai/dist/types.js.map +0 -1
- package/python/a3m_router.egg-info/PKG-INFO +0 -172
- package/python/a3m_router.egg-info/SOURCES.txt +0 -17
- package/python/a3m_router.egg-info/dependency_links.txt +0 -1
- package/python/a3m_router.egg-info/requires.txt +0 -24
- package/python/a3m_router.egg-info/top_level.txt +0 -1
- package/python/dist/a3m_router-2.2.1-py3-none-any.whl +0 -0
- package/python/dist/a3m_router-2.2.1.tar.gz +0 -0
- package/python/dist/a3m_router-2.2.2-py3-none-any.whl +0 -0
- package/python/dist/a3m_router-2.2.2.tar.gz +0 -0
- package/src/skills/__tests__/skill_manager.test.ts +0 -328
- package/tmlpd-pi-extension/dist/cache/prefixCache.d.ts +0 -114
- package/tmlpd-pi-extension/dist/cache/prefixCache.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/cache/prefixCache.js +0 -285
- package/tmlpd-pi-extension/dist/cache/prefixCache.js.map +0 -1
- package/tmlpd-pi-extension/dist/cache/responseCache.d.ts +0 -58
- package/tmlpd-pi-extension/dist/cache/responseCache.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/cache/responseCache.js +0 -153
- package/tmlpd-pi-extension/dist/cache/responseCache.js.map +0 -1
- package/tmlpd-pi-extension/dist/cli.js +0 -59
- package/tmlpd-pi-extension/dist/cost/costTracker.d.ts +0 -95
- package/tmlpd-pi-extension/dist/cost/costTracker.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/cost/costTracker.js +0 -240
- package/tmlpd-pi-extension/dist/cost/costTracker.js.map +0 -1
- package/tmlpd-pi-extension/dist/index.d.ts +0 -723
- package/tmlpd-pi-extension/dist/index.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/index.js +0 -239
- package/tmlpd-pi-extension/dist/index.js.map +0 -1
- package/tmlpd-pi-extension/dist/memory/episodicMemory.d.ts +0 -82
- package/tmlpd-pi-extension/dist/memory/episodicMemory.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/memory/episodicMemory.js +0 -145
- package/tmlpd-pi-extension/dist/memory/episodicMemory.js.map +0 -1
- package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.d.ts +0 -102
- package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.js +0 -207
- package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.js.map +0 -1
- package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.d.ts +0 -85
- package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.js +0 -210
- package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.js.map +0 -1
- package/tmlpd-pi-extension/dist/providers/localProvider.d.ts +0 -102
- package/tmlpd-pi-extension/dist/providers/localProvider.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/providers/localProvider.js +0 -338
- package/tmlpd-pi-extension/dist/providers/localProvider.js.map +0 -1
- package/tmlpd-pi-extension/dist/providers/registry.d.ts +0 -55
- package/tmlpd-pi-extension/dist/providers/registry.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/providers/registry.js +0 -138
- package/tmlpd-pi-extension/dist/providers/registry.js.map +0 -1
- package/tmlpd-pi-extension/dist/routing/advancedRouter.d.ts +0 -68
- package/tmlpd-pi-extension/dist/routing/advancedRouter.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/routing/advancedRouter.js +0 -332
- package/tmlpd-pi-extension/dist/routing/advancedRouter.js.map +0 -1
- package/tmlpd-pi-extension/dist/tools/tmlpdTools.d.ts +0 -101
- package/tmlpd-pi-extension/dist/tools/tmlpdTools.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/tools/tmlpdTools.js +0 -368
- package/tmlpd-pi-extension/dist/tools/tmlpdTools.js.map +0 -1
- package/tmlpd-pi-extension/dist/utils/batchProcessor.d.ts +0 -96
- package/tmlpd-pi-extension/dist/utils/batchProcessor.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/utils/batchProcessor.js +0 -170
- package/tmlpd-pi-extension/dist/utils/batchProcessor.js.map +0 -1
- package/tmlpd-pi-extension/dist/utils/compression.d.ts +0 -61
- package/tmlpd-pi-extension/dist/utils/compression.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/utils/compression.js +0 -281
- package/tmlpd-pi-extension/dist/utils/compression.js.map +0 -1
- package/tmlpd-pi-extension/dist/utils/reliability.d.ts +0 -74
- package/tmlpd-pi-extension/dist/utils/reliability.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/utils/reliability.js +0 -177
- package/tmlpd-pi-extension/dist/utils/reliability.js.map +0 -1
- package/tmlpd-pi-extension/dist/utils/speculativeDecoding.d.ts +0 -117
- package/tmlpd-pi-extension/dist/utils/speculativeDecoding.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/utils/speculativeDecoding.js +0 -246
- package/tmlpd-pi-extension/dist/utils/speculativeDecoding.js.map +0 -1
- package/tmlpd-pi-extension/dist/utils/tokenUtils.d.ts +0 -50
- package/tmlpd-pi-extension/dist/utils/tokenUtils.d.ts.map +0 -1
- package/tmlpd-pi-extension/dist/utils/tokenUtils.js +0 -124
- package/tmlpd-pi-extension/dist/utils/tokenUtils.js.map +0 -1
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @a3m/vercel-ai - A3M Router Provider for Vercel AI SDK
|
|
3
|
-
*
|
|
4
|
-
* Drop-in replacement that routes to the cheapest capable provider
|
|
5
|
-
* with parallel execution, caching, and automatic fallback.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import { createA3MProvider } from '@a3m/vercel-ai';
|
|
10
|
-
* import { generateText } from 'ai';
|
|
11
|
-
*
|
|
12
|
-
* const a3m = createA3MProvider();
|
|
13
|
-
*
|
|
14
|
-
* const { text } = await generateText({
|
|
15
|
-
* model: a3m('auto'),
|
|
16
|
-
* prompt: 'What is the capital of France?',
|
|
17
|
-
* });
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export { createA3MLanguageModel } from './a3m-language-model';
|
|
21
|
-
import { createA3MLanguageModel } from './a3m-language-model';
|
|
22
|
-
/**
|
|
23
|
-
* Create an A3M Router provider for Vercel AI SDK
|
|
24
|
-
*/
|
|
25
|
-
export function createA3MProvider(config = {}) {
|
|
26
|
-
const languageModel = createA3MLanguageModel(config);
|
|
27
|
-
const provider = Object.assign((modelId) => {
|
|
28
|
-
// Return the language model - A3M handles model selection internally
|
|
29
|
-
return languageModel;
|
|
30
|
-
}, {
|
|
31
|
-
name: 'a3m',
|
|
32
|
-
// Allow accessing config for introspection
|
|
33
|
-
__config: config,
|
|
34
|
-
});
|
|
35
|
-
return provider;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Example usage with Next.js App Router
|
|
39
|
-
*
|
|
40
|
-
* ```typescript
|
|
41
|
-
* // app/api/chat/route.ts
|
|
42
|
-
* import { createA3MProvider } from '@a3m/vercel-ai';
|
|
43
|
-
* import { generateText } from 'ai';
|
|
44
|
-
*
|
|
45
|
-
* const a3m = createA3MProvider({
|
|
46
|
-
* parallelEnsemble: true,
|
|
47
|
-
* });
|
|
48
|
-
*
|
|
49
|
-
* export async function POST(req: Request) {
|
|
50
|
-
* const { messages } = await req.json();
|
|
51
|
-
*
|
|
52
|
-
* const result = await generateText({
|
|
53
|
-
* model: a3m('auto'),
|
|
54
|
-
* messages,
|
|
55
|
-
* });
|
|
56
|
-
*
|
|
57
|
-
* return Response.json(result);
|
|
58
|
-
* }
|
|
59
|
-
* ```
|
|
60
|
-
*/
|
|
61
|
-
/**
|
|
62
|
-
* Example usage with streaming
|
|
63
|
-
*
|
|
64
|
-
* ```typescript
|
|
65
|
-
* import { createA3MProvider } from '@a3m/vercel-ai';
|
|
66
|
-
* import { streamText } from 'ai';
|
|
67
|
-
*
|
|
68
|
-
* const a3m = createA3MProvider();
|
|
69
|
-
*
|
|
70
|
-
* const result = await streamText({
|
|
71
|
-
* model: a3m('auto'),
|
|
72
|
-
* prompt: 'Write a story about a robot...',
|
|
73
|
-
* });
|
|
74
|
-
*
|
|
75
|
-
* // Stream to response
|
|
76
|
-
* return result.toDataStreamResponse();
|
|
77
|
-
* ```
|
|
78
|
-
*/
|
|
79
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAI9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAe9D;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAA0B,EAAE;IAC5D,MAAM,aAAa,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAErD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAC5B,CAAC,OAAe,EAAE,EAAE;QAClB,qEAAqE;QACrE,OAAO,aAAa,CAAC;IACvB,CAAC,EACD;QACE,IAAI,EAAE,KAAc;QACpB,2CAA2C;QAC3C,QAAQ,EAAE,MAAM;KACjB,CACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;;;;;;;;;;;;;GAiBG"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A3M Router configuration for Vercel AI SDK
|
|
3
|
-
*/
|
|
4
|
-
export interface A3MRouterConfig {
|
|
5
|
-
/**
|
|
6
|
-
* A3M Router endpoint
|
|
7
|
-
* @default 'http://localhost:8787'
|
|
8
|
-
*/
|
|
9
|
-
baseURL?: string;
|
|
10
|
-
/**
|
|
11
|
-
* API key for A3M Router
|
|
12
|
-
* @default 'not-needed' for local
|
|
13
|
-
*/
|
|
14
|
-
apiKey?: string;
|
|
15
|
-
/**
|
|
16
|
-
* Enable parallel ensemble execution
|
|
17
|
-
* Runs multiple providers and picks the best result
|
|
18
|
-
* @default false
|
|
19
|
-
*/
|
|
20
|
-
parallelEnsemble?: boolean;
|
|
21
|
-
/**
|
|
22
|
-
* Number of providers to run in parallel when parallelEnsemble is true
|
|
23
|
-
* @default 3
|
|
24
|
-
*/
|
|
25
|
-
parallelCount?: number;
|
|
26
|
-
/**
|
|
27
|
-
* Enable stealth mode (anti-detection for browser automation)
|
|
28
|
-
* @default false
|
|
29
|
-
*/
|
|
30
|
-
stealth?: boolean;
|
|
31
|
-
/**
|
|
32
|
-
* Cache configuration
|
|
33
|
-
*/
|
|
34
|
-
cache?: {
|
|
35
|
-
enabled?: boolean;
|
|
36
|
-
ttl?: number;
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Provider configuration
|
|
40
|
-
* Maps provider names to their API keys
|
|
41
|
-
*/
|
|
42
|
-
providers?: Record<string, {
|
|
43
|
-
apiKey: string;
|
|
44
|
-
/** Override the base URL for this provider */
|
|
45
|
-
baseURL?: string;
|
|
46
|
-
}>;
|
|
47
|
-
/**
|
|
48
|
-
* Cost limits per provider
|
|
49
|
-
*/
|
|
50
|
-
budgetLimits?: Record<string, {
|
|
51
|
-
maxCostPerRequest?: number;
|
|
52
|
-
maxRequestsPerMinute?: number;
|
|
53
|
-
}>;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* A3M Router response from /route or /generate
|
|
57
|
-
*/
|
|
58
|
-
export interface A3MRouteResponse {
|
|
59
|
-
/** The generated content */
|
|
60
|
-
content: string;
|
|
61
|
-
/** The provider that was selected */
|
|
62
|
-
provider: string;
|
|
63
|
-
/** The model that was used */
|
|
64
|
-
model: string;
|
|
65
|
-
/** Cost in USD */
|
|
66
|
-
cost: number;
|
|
67
|
-
/** Latency in ms */
|
|
68
|
-
latencyMs: number;
|
|
69
|
-
/** Token usage */
|
|
70
|
-
usage?: {
|
|
71
|
-
promptTokens: number;
|
|
72
|
-
completionTokens: number;
|
|
73
|
-
totalTokens: number;
|
|
74
|
-
};
|
|
75
|
-
/** Confidence score (0-1) */
|
|
76
|
-
confidence?: number;
|
|
77
|
-
/** Finish reason */
|
|
78
|
-
finishReason?: 'stop' | 'length' | 'error';
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* A3M Router streaming response chunk
|
|
82
|
-
*/
|
|
83
|
-
export interface A3MStreamChunk {
|
|
84
|
-
/** The delta content */
|
|
85
|
-
delta: string;
|
|
86
|
-
/** Provider that responded */
|
|
87
|
-
provider: string;
|
|
88
|
-
/** Whether this is the final chunk */
|
|
89
|
-
done: boolean;
|
|
90
|
-
/** Token usage (only on final chunk) */
|
|
91
|
-
usage?: {
|
|
92
|
-
promptTokens: number;
|
|
93
|
-
completionTokens: number;
|
|
94
|
-
totalTokens: number;
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IAEF;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,8CAA8C;QAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IAEH;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAEhB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IAEjB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IAEd,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IAEb,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAElB,kBAAkB;IAClB,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IAEd,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IAEjB,sCAAsC;IACtC,IAAI,EAAE,OAAO,CAAC;IAEd,wCAAwC;IACxC,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: a3m-router
|
|
3
|
-
Version: 2.2.2
|
|
4
|
-
Summary: Auto-selects cheapest capable LLM from 47+ providers — 70-95% cost savings
|
|
5
|
-
License: MIT
|
|
6
|
-
Project-URL: Homepage, https://github.com/Das-rebel/a3m-router
|
|
7
|
-
Project-URL: Documentation, https://das-rebel.github.io/a3m-router
|
|
8
|
-
Project-URL: Repository, https://github.com/Das-rebel/a3m-router
|
|
9
|
-
Project-URL: Changelog, https://github.com/Das-rebel/a3m-router/releases
|
|
10
|
-
Keywords: llm,routing,openai,proxy,ai-gateway,routellm,litellm,multi-llm,model-selection,cost-optimization,langchain,llamaindex,rag,vector-search,embeddings,parallel,ensemble,router
|
|
11
|
-
Classifier: Development Status :: 4 - Beta
|
|
12
|
-
Classifier: Intended Audience :: Developers
|
|
13
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
-
Classifier: Operating System :: OS Independent
|
|
15
|
-
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
22
|
-
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
23
|
-
Requires-Python: >=3.8
|
|
24
|
-
Description-Content-Type: text/markdown
|
|
25
|
-
Requires-Dist: httpx>=0.24.0
|
|
26
|
-
Provides-Extra: langchain
|
|
27
|
-
Requires-Dist: langchain>=0.1.0; extra == "langchain"
|
|
28
|
-
Provides-Extra: llamaindex
|
|
29
|
-
Requires-Dist: llamaindex>=0.9.0; extra == "llamaindex"
|
|
30
|
-
Provides-Extra: qdrant
|
|
31
|
-
Requires-Dist: qdrant-client>=1.7.0; extra == "qdrant"
|
|
32
|
-
Provides-Extra: weaviate
|
|
33
|
-
Requires-Dist: weaviate-client>=4.0.0; extra == "weaviate"
|
|
34
|
-
Provides-Extra: adapters
|
|
35
|
-
Requires-Dist: langchain>=0.1.0; extra == "adapters"
|
|
36
|
-
Requires-Dist: llamaindex>=0.9.0; extra == "adapters"
|
|
37
|
-
Requires-Dist: qdrant-client>=1.7.0; extra == "adapters"
|
|
38
|
-
Requires-Dist: weaviate-client>=4.0.0; extra == "adapters"
|
|
39
|
-
Provides-Extra: dev
|
|
40
|
-
Requires-Dist: pytest>=7.4.0; extra == "dev"
|
|
41
|
-
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
42
|
-
Requires-Dist: black>=23.0.0; extra == "dev"
|
|
43
|
-
|
|
44
|
-
# A3M Router Python SDK
|
|
45
|
-
|
|
46
|
-
**Intelligent LLM routing — auto-selects the cheapest capable model from 47+ providers.**
|
|
47
|
-
|
|
48
|
-
Routes queries to the best model for your needs — whether it's Groq for simple Q&A ($0.001/1K) or GPT-4o for complex reasoning ($0.15/1K).
|
|
49
|
-
|
|
50
|
-
## Installation
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
pip install a3m-router
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## Quick Start
|
|
57
|
-
|
|
58
|
-
```python
|
|
59
|
-
from a3m import A3MRouter
|
|
60
|
-
|
|
61
|
-
router = A3MRouter(base_url="http://localhost:8787")
|
|
62
|
-
|
|
63
|
-
# Auto-routes to optimal provider
|
|
64
|
-
response = await router.chat("What is 2+2?")
|
|
65
|
-
# → Routes to Groq, costs ~$0.000001
|
|
66
|
-
|
|
67
|
-
# See routing decision before executing
|
|
68
|
-
decision = await router.route("Explain quantum computing")
|
|
69
|
-
print(f"Model: {decision.model}")
|
|
70
|
-
print(f"Tier: {decision.tier}")
|
|
71
|
-
print(f"Cost: ${decision.cost:.6f}")
|
|
72
|
-
|
|
73
|
-
# Stream responses
|
|
74
|
-
async for token in router.stream_chat("Tell me a story"):
|
|
75
|
-
print(token, end="", flush=True)
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Key Features
|
|
79
|
-
|
|
80
|
-
- **Auto-routing**: Picks the right model based on query complexity, budget, and requirements
|
|
81
|
-
- **Cost savings**: 70-95% cheaper than always using premium models
|
|
82
|
-
- **47+ providers**: Groq, DeepSeek, GPT-4o, Claude, Mistral, and more
|
|
83
|
-
- **Framework adapters**: Drop-in for LangChain, LlamaIndex, Qdrant, Weaviate
|
|
84
|
-
- **Health monitoring**: Check provider status and availability
|
|
85
|
-
- **Cost analytics**: Track spending and savings
|
|
86
|
-
|
|
87
|
-
## Framework Adapters
|
|
88
|
-
|
|
89
|
-
| Adapter | Use Case | Install |
|
|
90
|
-
|---------|----------|---------|
|
|
91
|
-
| **LangChain** | Chain-based AI workflows | `pip install a3m-router[langchain]` |
|
|
92
|
-
| **LlamaIndex** | RAG and document QA | `pip install a3m-router[llamaindex]` |
|
|
93
|
-
| **Qdrant** | Vector search + RAG | `pip install a3m-router[qdrant]` |
|
|
94
|
-
| **Weaviate** | Vector search + RAG | `pip install a3m-router[weaviate]` |
|
|
95
|
-
|
|
96
|
-
All adapters:
|
|
97
|
-
```bash
|
|
98
|
-
pip install a3m-router[all]
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Routing Tiers
|
|
102
|
-
|
|
103
|
-
| Tier | Providers | Cost | When Used |
|
|
104
|
-
|------|-----------|------|-----------|
|
|
105
|
-
| **free** | Ollama, vLLM | $0 | Local inference |
|
|
106
|
-
| **cheap** | Groq, DeepSeek | ~$0.001/1K | Simple Q&A, short code |
|
|
107
|
-
| **mid** | GPT-4o-mini, Claude-haiku | ~$0.01/1K | Standard tasks |
|
|
108
|
-
| **premium** | GPT-4o, Claude-sonnet | ~$0.15/1K | Complex reasoning |
|
|
109
|
-
|
|
110
|
-
## API Reference
|
|
111
|
-
|
|
112
|
-
### A3MRouter
|
|
113
|
-
|
|
114
|
-
```python
|
|
115
|
-
router = A3MRouter(
|
|
116
|
-
base_url="http://localhost:8787", # A3M Router server URL
|
|
117
|
-
timeout=30.0, # Request timeout
|
|
118
|
-
)
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
| Method | Description |
|
|
122
|
-
|--------|-------------|
|
|
123
|
-
| `chat(message)` | Send chat message with auto-routing |
|
|
124
|
-
| `route(query)` | Get routing decision (no execution) |
|
|
125
|
-
| `route_batch(queries)` | Route multiple queries |
|
|
126
|
-
| `stream_chat(message)` | Stream response tokens |
|
|
127
|
-
| `models()` | List all available models |
|
|
128
|
-
| `health()` | Provider health status |
|
|
129
|
-
| `cost_report()` | Cost analytics |
|
|
130
|
-
|
|
131
|
-
### LangChain Example
|
|
132
|
-
|
|
133
|
-
```python
|
|
134
|
-
from a3m import LangChainAdapter
|
|
135
|
-
from langchain.schema import HumanMessage
|
|
136
|
-
|
|
137
|
-
llm = LangChainAdapter(base_url="http://localhost:8787")
|
|
138
|
-
response = llm([HumanMessage(content="What is RAG?")])
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### LlamaIndex Example
|
|
142
|
-
|
|
143
|
-
```python
|
|
144
|
-
from a3m import LlamaIndexAdapter
|
|
145
|
-
|
|
146
|
-
llm = LlamaIndexAdapter()
|
|
147
|
-
response = llm.complete("Explain transformers")
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
## Server Setup
|
|
151
|
-
|
|
152
|
-
Start the A3M Router server:
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
# Via npm
|
|
156
|
-
npx a3m-router serve
|
|
157
|
-
|
|
158
|
-
# Via Docker
|
|
159
|
-
docker-compose up -d
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
Server runs on `http://localhost:8787` by default.
|
|
163
|
-
|
|
164
|
-
## Links
|
|
165
|
-
|
|
166
|
-
- **GitHub**: https://github.com/Das-rebel/a3m-router
|
|
167
|
-
- **npm Package**: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
168
|
-
- **Documentation**: https://das-rebel.github.io/a3m-router
|
|
169
|
-
|
|
170
|
-
## License
|
|
171
|
-
|
|
172
|
-
MIT
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
README.md
|
|
2
|
-
pyproject.toml
|
|
3
|
-
setup.py
|
|
4
|
-
a3m/__init__.py
|
|
5
|
-
a3m/client.py
|
|
6
|
-
a3m/models.py
|
|
7
|
-
a3m/sync_client.py
|
|
8
|
-
a3m/adapters/__init__.py
|
|
9
|
-
a3m/adapters/langchain.py
|
|
10
|
-
a3m/adapters/llamaindex.py
|
|
11
|
-
a3m/adapters/qdrant.py
|
|
12
|
-
a3m/adapters/weaviate.py
|
|
13
|
-
a3m_router.egg-info/PKG-INFO
|
|
14
|
-
a3m_router.egg-info/SOURCES.txt
|
|
15
|
-
a3m_router.egg-info/dependency_links.txt
|
|
16
|
-
a3m_router.egg-info/requires.txt
|
|
17
|
-
a3m_router.egg-info/top_level.txt
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
httpx>=0.24.0
|
|
2
|
-
|
|
3
|
-
[adapters]
|
|
4
|
-
langchain>=0.1.0
|
|
5
|
-
llamaindex>=0.9.0
|
|
6
|
-
qdrant-client>=1.7.0
|
|
7
|
-
weaviate-client>=4.0.0
|
|
8
|
-
|
|
9
|
-
[dev]
|
|
10
|
-
pytest>=7.4.0
|
|
11
|
-
pytest-asyncio>=0.21.0
|
|
12
|
-
black>=23.0.0
|
|
13
|
-
|
|
14
|
-
[langchain]
|
|
15
|
-
langchain>=0.1.0
|
|
16
|
-
|
|
17
|
-
[llamaindex]
|
|
18
|
-
llamaindex>=0.9.0
|
|
19
|
-
|
|
20
|
-
[qdrant]
|
|
21
|
-
qdrant-client>=1.7.0
|
|
22
|
-
|
|
23
|
-
[weaviate]
|
|
24
|
-
weaviate-client>=4.0.0
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
a3m
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|