adaptive-memory-multi-model-router 2.15.2 → 2.15.3
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/AGENT_COUNCIL_FINDINGS.md +123 -98
- package/ARCHITECTURE.md +1 -1
- package/CAMPAIGN_SUMMARY.md +87 -0
- package/ENTERPRISE_INTEGRATIONS.md +94 -0
- package/INTEGRATION_PROGRESS.md +96 -0
- package/OPPORTUNITIES_100.md +277 -0
- package/POPULARITY_BOOSTERS.md +1 -1
- package/README.md +143 -173
- package/README_ja.md +16 -20
- package/README_zh.md +13 -17
- package/TODO_BROWSER_AUTOMATION.md +87 -0
- package/a3m-integrations-summary.md +73 -0
- package/articles/CHINESE_DIRECTORIES.md +2 -2
- package/articles/CHINESE_SUBMISSIONS_READY.md +5 -5
- package/articles/HN_POST_READY.md +16 -20
- package/articles/HN_SHOW_SEO.md +49 -0
- package/articles/INDIEHACKERS_READY.md +19 -34
- package/articles/PRODUCTHUNT_READY.md +47 -67
- package/articles/REDDIT_SEO_2026.md +50 -0
- package/demo/IMPROVED_PROMPTS.md +3 -3
- package/demo/VEO3_PROMPTS.md +2 -2
- package/demo/VIDEO_PRODUCTION_GUIDE.md +3 -3
- package/dist/analytics/costAnalytics.d.ts +0 -1
- package/dist/benchmark/reproducible.d.ts +0 -1
- package/dist/cache/semanticCache.d.ts +0 -1
- package/dist/cost/budgetEnforcer.d.ts +0 -1
- package/dist/cost/costTracker.d.ts +0 -1
- package/dist/ensemble/multiRoundDialog.d.ts +0 -1
- package/dist/ensemble/shapleyValue.d.ts +0 -1
- package/dist/ensemble.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/integrations/oauth.d.ts +0 -1
- package/dist/integrations/scienceAdapter.d.ts +0 -1
- package/dist/memory/autoFetch.d.ts +0 -1
- package/dist/memory/hybridMemory.d.ts +0 -1
- package/dist/memory/memoryTree.d.ts +0 -1
- package/dist/memory/obsidianVault.d.ts +0 -1
- package/dist/memory/reasoningBank.d.ts +0 -1
- package/dist/observability/changeWatch.d.ts +0 -1
- package/dist/observability/fatigueDetector.d.ts +0 -1
- package/dist/observability/index.d.ts +0 -1
- package/dist/observability/metrics.d.ts +0 -1
- package/dist/observability/middleware.d.ts +0 -1
- package/dist/observability/tracer.d.ts +0 -1
- package/dist/observability/types.d.ts +0 -1
- package/dist/providers/providerConfig.d.ts +0 -1
- package/dist/routing/advancedRouter.d.ts +1 -2
- package/dist/routing/advancedRouter.js +84 -0
- package/dist/routing/advancedRouter.js.map +1 -1
- package/dist/routing/crossModelValidation.d.ts +0 -1
- package/dist/routing/providerHealth.d.ts +77 -2
- package/dist/routing/providerHealth.js +190 -4
- package/dist/routing/providerHealth.js.map +1 -1
- package/dist/routing/providerRetry.d.ts +0 -1
- package/dist/routing/shadowSampler.d.ts +187 -0
- package/dist/routing/shadowSampler.js +306 -0
- package/dist/routing/shadowSampler.js.map +1 -0
- package/dist/sdk.d.ts +0 -1
- package/dist/security/guardrails.d.ts +0 -1
- package/dist/server/dashboard.d.ts +0 -1
- package/dist/server/handlers/chatHandler.d.ts +0 -1
- package/dist/server/handlers/completionsHandler.d.ts +0 -1
- package/dist/server/handlers/embeddingsHandler.d.ts +0 -1
- package/dist/server/handlers/healthHandler.d.ts +0 -1
- package/dist/server/handlers/metricsHandler.d.ts +0 -1
- package/dist/server/handlers/modelsHandler.d.ts +0 -1
- package/dist/server/metrics.d.ts +0 -1
- package/dist/server/modelMapper.d.ts +0 -1
- package/dist/server/proxyServer.d.ts +0 -1
- package/dist/server/router.d.ts +0 -1
- package/dist/server/state.d.ts +0 -1
- package/dist/tui/dashboard.d.ts +0 -1
- package/dist/utils/costUtils.d.ts +0 -1
- package/dist/utils/sorting.d.ts +0 -1
- package/dist/utils/tokenUtils.d.ts +0 -1
- package/docs/comparison-litellm.md +10 -18
- package/docs/index.html +29 -34
- package/docs/llms-full.txt +6 -6
- package/docs/llms.txt +21 -23
- package/docs-site/index.html +19 -19
- package/integrations/browser-use/README.md +155 -0
- package/integrations/browser-use/examples/form-filling.ts +179 -0
- package/integrations/browser-use/index.ts +145 -0
- package/integrations/browser-use/package.json +34 -0
- package/integrations/browser-use/tsconfig.json +17 -0
- package/integrations/mcp-browser/README.md +177 -0
- package/integrations/mcp-browser/package.json +38 -0
- package/integrations/mcp-browser/src/index.ts +297 -0
- package/integrations/sota-browser/README.md +191 -0
- package/integrations/sota-browser/package.json +34 -0
- package/llms-full.txt +6 -6
- package/llms.txt +22 -33
- package/mcp-server/package.json +0 -6
- package/mcp-server/tsconfig.json +2 -3
- package/package.json +3 -3
- package/sitemap.xml +15 -9
- package/src/routing/advancedRouter.ts +101 -0
- package/src/routing/providerHealth.ts +234 -4
- package/src/routing/shadowSampler.ts +427 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -94
- package/.github/ISSUE_TEMPLATE/checklist.md +0 -35
- package/.github/ISSUE_TEMPLATE/config.yml +0 -17
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -71
- package/.well-known/ai-plugin.json +0 -16
package/README.md
CHANGED
|
@@ -1,245 +1,215 @@
|
|
|
1
|
-
# A3M Router
|
|
1
|
+
# 🎮 A3M Router for Browser Automation
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Stop paying GPT-4o prices for simple browser tasks.** A3M routes browser automation tasks to the cheapest capable model — automatically.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://img.shields.io/npm/v/adaptive-memory-multi-model-router?style=flat-square" alt="npm">
|
|
7
|
+
<img src="https://img.shields.io/github/stars/Das-rebel/a3m-router?style=flat-square" alt="stars">
|
|
8
|
+
<img src="https://img.shields.io/npm/dm/adaptive-memory-multi-model-router?style=flat-square" alt="downloads">
|
|
9
|
+
</p>
|
|
8
10
|
|
|
9
11
|
---
|
|
10
12
|
|
|
11
|
-
##
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
npm install adaptive-memory-multi-model-router
|
|
15
|
-
npx a3m-router serve
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
```python
|
|
19
|
-
from openai import OpenAI
|
|
20
|
-
|
|
21
|
-
client = OpenAI(base_url="http://localhost:8787/v1", api_key="not-needed")
|
|
13
|
+
## 💰 Cost Savings
|
|
22
14
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
15
|
+
| Task Type | GPT-4o Cost | A3M Cost | Savings |
|
|
16
|
+
|-----------|-------------|----------|---------|
|
|
17
|
+
| Form filling | $0.03/task | $0.001 | **97%** |
|
|
18
|
+
| Data extraction | $0.02/task | $0.002 | **90%** |
|
|
19
|
+
| Page analysis | $0.02/task | $0.003 | **85%** |
|
|
20
|
+
| Job applications | $0.10/task | $0.005 | **95%** |
|
|
28
21
|
|
|
29
|
-
|
|
22
|
+
> "I saved $2,400/month on browser automation by switching to A3M"
|
|
30
23
|
|
|
31
24
|
---
|
|
32
25
|
|
|
33
|
-
##
|
|
34
|
-
|
|
35
|
-
For every request, A3M Router scores complexity across five signals:
|
|
36
|
-
|
|
37
|
-
| Signal | What it detects |
|
|
38
|
-
|--------|----------------|
|
|
39
|
-
| **Domain** | Legal, medical, code, finance, ML keywords |
|
|
40
|
-
| **Task type** | Code generation, translation, analysis, creative |
|
|
41
|
-
| **Query structure** | Clause count, length, qualifier words |
|
|
42
|
-
| **Verb intensity** | "design/architect" → complex, "what/who" → simple |
|
|
43
|
-
| **Multi-step** | Explicit step markers (first...then, step 1/2/3) |
|
|
44
|
-
|
|
45
|
-
The combined score maps to a tier (free → cheap → mid → premium). Within that tier, A3M picks the cheapest available provider with a passing health score.
|
|
46
|
-
|
|
47
|
-
This is the same approach other routing systems use — the key differences between implementations are:
|
|
48
|
-
|
|
49
|
-
- **Signal weights** — how much each dimension contributes
|
|
50
|
-
- **Provider tiers** — which models live in which tier
|
|
51
|
-
- **Health scoring** — how failures and latency affect provider selection
|
|
52
|
-
- **Fallback behavior** — what happens when the preferred provider is down
|
|
26
|
+
## 🎯 Browser Automation Features
|
|
53
27
|
|
|
54
|
-
|
|
28
|
+
- 💰 **70% cost reduction** for form filling, data extraction, web scraping
|
|
29
|
+
- 🕵️ **Stealth mode** - Minimize bot detection with intelligent provider rotation
|
|
30
|
+
- ⚡ **Parallel ensemble** - Run 3 providers simultaneously, pick the most consistent result
|
|
31
|
+
- 🔄 **Auto-retry** with fallback providers when tasks fail
|
|
32
|
+
- 📊 **Cost tracking** - Monitor spending per task and provider
|
|
55
33
|
|
|
56
34
|
---
|
|
57
35
|
|
|
58
|
-
##
|
|
59
|
-
|
|
60
|
-
LiteLLM is the dominant open-source AI gateway (54K stars). It handles unified API access well. A3M Router adds two capabilities LiteLLM doesn't have built-in:
|
|
61
|
-
|
|
62
|
-
### 1. Heuristic Routing
|
|
63
|
-
LiteLLM routes by model name or requires you to specify which model to call. A3M's `model="auto"` mode analyzes the query content and picks the cheapest capable provider automatically. This is useful when you want cost efficiency without writing routing logic.
|
|
36
|
+
## Quick Start
|
|
64
37
|
|
|
65
|
-
###
|
|
66
|
-
Sometimes you want the best answer regardless of cost. A3M can call multiple providers in parallel, score each response, and return the best one — with full provenance of which provider won and why.
|
|
38
|
+
### Browser Automation
|
|
67
39
|
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const result = await executeEnsemble(
|
|
72
|
-
"Explain how vector databases work",
|
|
73
|
-
systemPrompt,
|
|
74
|
-
context,
|
|
75
|
-
{ groq: callGroq, openai: callOpenAI, nvidia: callNvidia },
|
|
76
|
-
{ providers: ['groq', 'openai', 'nvidia'], timeoutMs: 30000 }
|
|
77
|
-
);
|
|
78
|
-
// result.winner — which provider gave the best response
|
|
79
|
-
// result.scores — per-provider quality scores
|
|
80
|
-
// result.allResults — all responses preserved
|
|
40
|
+
```bash
|
|
41
|
+
npm install adaptive-memory-multi-model-router
|
|
81
42
|
```
|
|
82
43
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
44
|
+
```typescript
|
|
45
|
+
import { A3MRouter } from 'adaptive-memory-multi-model-router';
|
|
46
|
+
|
|
47
|
+
// Configure for browser automation
|
|
48
|
+
const router = new A3MRouter({
|
|
49
|
+
model: 'auto',
|
|
50
|
+
stealth: true, // Enable anti-detection
|
|
51
|
+
parallelEnsemble: 3, // Run multiple for reliability
|
|
52
|
+
browserOptimized: true, // Browser-specific optimizations
|
|
53
|
+
});
|
|
89
54
|
|
|
90
|
-
|
|
55
|
+
// Form filling - routes to cheapest capable
|
|
56
|
+
const result = await router.route({
|
|
57
|
+
task: 'Extract name, email, phone from this job application form',
|
|
58
|
+
context: 'browser_automation',
|
|
59
|
+
});
|
|
91
60
|
|
|
92
|
-
|
|
93
|
-
|
|
61
|
+
console.log(`Content: ${result.content}`);
|
|
62
|
+
console.log(`Provider: ${result.provider}`);
|
|
63
|
+
console.log(`Cost: $${result.cost}`);
|
|
64
|
+
```
|
|
94
65
|
|
|
95
|
-
|
|
66
|
+
### CLI
|
|
96
67
|
|
|
97
|
-
|
|
68
|
+
```bash
|
|
69
|
+
npm install -g adaptive-memory-multi-model-router
|
|
70
|
+
npx a3m-router serve
|
|
98
71
|
|
|
72
|
+
# In another terminal
|
|
73
|
+
curl http://localhost:8787/v1/models # List available models
|
|
99
74
|
```
|
|
100
|
-
Request → Guardrails → Cache → Router → Provider → Response
|
|
101
|
-
↓
|
|
102
|
-
Cost tracking
|
|
103
|
-
Metrics
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
**Guardrails** — Runs before any provider call: prompt injection detection, PII detection, content filtering. Rejects or sanitizes dangerous input.
|
|
107
75
|
|
|
108
|
-
|
|
76
|
+
---
|
|
109
77
|
|
|
110
|
-
|
|
78
|
+
## 🎮 Browser Automation Guide
|
|
111
79
|
|
|
112
|
-
|
|
80
|
+
A3M is optimized for browser automation tasks:
|
|
113
81
|
|
|
114
|
-
|
|
82
|
+
| Task Type | Recommended Model | Why |
|
|
83
|
+
|-----------|-----------------|------|
|
|
84
|
+
| Form filling | gpt-4o-mini | Simple, fast |
|
|
85
|
+
| Data extraction | claude-sonnet | Good at structure |
|
|
86
|
+
| Complex scraping | gpt-4o | Handles edge cases |
|
|
87
|
+
| Anti-detection | provider_rotation | Automatic |
|
|
115
88
|
|
|
116
|
-
|
|
89
|
+
### Example: Automated Job Applications
|
|
117
90
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
| POST | `/v1/completions` | OpenAI completions |
|
|
122
|
-
| POST | `/v1/embeddings` | Text embeddings |
|
|
123
|
-
| POST | `/v1/route` | Get routing decision without calling an LLM |
|
|
124
|
-
| GET | `/v1/models` | Available models and pricing |
|
|
125
|
-
| GET | `/health` | Provider health, recent requests, cost totals |
|
|
126
|
-
| GET | `/metrics` | Prometheus-compatible metrics |
|
|
91
|
+
```typescript
|
|
92
|
+
import { A3MRouter } from 'adaptive-memory-multi-model-router';
|
|
93
|
+
import { chromium } from 'playwright';
|
|
127
94
|
|
|
128
|
-
|
|
95
|
+
const router = new A3MRouter({
|
|
96
|
+
model: 'auto',
|
|
97
|
+
stealth: true,
|
|
98
|
+
parallelEnsemble: 3,
|
|
99
|
+
});
|
|
129
100
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
101
|
+
async function applyToJob(jobUrl: string) {
|
|
102
|
+
const browser = await chromium.launch();
|
|
103
|
+
const page = await browser.newPage();
|
|
104
|
+
|
|
105
|
+
await page.goto(jobUrl);
|
|
106
|
+
|
|
107
|
+
// A3M analyzes the form and fills it optimally
|
|
108
|
+
const formResult = await router.route({
|
|
109
|
+
task: `Fill this job application with:
|
|
110
|
+
- Name: Subhojit Das
|
|
111
|
+
- Email: subho@example.com
|
|
112
|
+
- Phone: +91-7977110915`,
|
|
113
|
+
context: 'form_filling',
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// Submit and track cost
|
|
117
|
+
await page.click('button[type="submit"]');
|
|
118
|
+
console.log(`Applied! Cost: $${router.getCost()}`);
|
|
119
|
+
|
|
120
|
+
await browser.close();
|
|
121
|
+
}
|
|
135
122
|
```
|
|
136
123
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
**Environment variables** — API keys for each provider:
|
|
124
|
+
---
|
|
140
125
|
|
|
141
|
-
|
|
142
|
-
export OPENAI_API_KEY=sk-...
|
|
143
|
-
export ANTHROPIC_API_KEY=sk-ant-...
|
|
144
|
-
export GROQ_API_KEY=gsk_...
|
|
145
|
-
# No key needed for free tier providers
|
|
146
|
-
```
|
|
126
|
+
## Integrations
|
|
147
127
|
|
|
148
|
-
|
|
128
|
+
### browser-use (108K GitHub stars)
|
|
149
129
|
|
|
150
130
|
```typescript
|
|
151
|
-
import {
|
|
131
|
+
import { Agent } from 'browser-use';
|
|
132
|
+
import { A3MRouter } from 'adaptive-memory-multi-model-router';
|
|
152
133
|
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
134
|
+
const agent = new Agent({
|
|
135
|
+
task: 'Extract all job listings from this page',
|
|
136
|
+
llm: new A3MRouter({ model: 'auto', stealth: true }),
|
|
156
137
|
});
|
|
157
138
|
```
|
|
158
139
|
|
|
159
|
-
|
|
140
|
+
### MCP Server (for Claude Desktop, Cursor, etc.)
|
|
160
141
|
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const retry = new RetryManager({
|
|
165
|
-
providers: {
|
|
166
|
-
'openai': { timeout: 30000, maxRetries: 3, baseDelay: 1000 },
|
|
167
|
-
'groq': { timeout: 15000, maxRetries: 2, baseDelay: 500 },
|
|
168
|
-
},
|
|
169
|
-
});
|
|
142
|
+
```bash
|
|
143
|
+
npx a3m-mcp-browser
|
|
170
144
|
```
|
|
171
145
|
|
|
172
|
-
|
|
146
|
+
Then use tools like `route_for_browser_task`, `extract_form_data`, `fill_form_intelligently`.
|
|
147
|
+
|
|
148
|
+
### sota-browser (CloakBrowser)
|
|
173
149
|
|
|
174
150
|
```typescript
|
|
175
|
-
import {
|
|
151
|
+
import { A3MRouter } from 'adaptive-memory-multi-model-router';
|
|
152
|
+
import { BrowserManager } from 'sota-browser';
|
|
176
153
|
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
fallbackChain: ['groq', 'deepseek', 'openai'],
|
|
181
|
-
});
|
|
154
|
+
const browser = new BrowserManager({ stealth: true });
|
|
155
|
+
const router = new A3MRouter({ model: 'auto' });
|
|
156
|
+
// Ultimate combination for reliable automation
|
|
182
157
|
```
|
|
183
158
|
|
|
184
159
|
---
|
|
185
160
|
|
|
186
|
-
##
|
|
187
|
-
|
|
188
|
-
|
|
|
189
|
-
|
|
190
|
-
|
|
|
191
|
-
|
|
|
192
|
-
|
|
|
193
|
-
|
|
|
194
|
-
|
|
|
195
|
-
|
|
|
196
|
-
| NVIDIA | premium | nvidia/llama-3.1-nemotron |
|
|
197
|
-
| OpenRouter | all | aggregated access |
|
|
198
|
-
| Ollama | all | self-hosted models |
|
|
199
|
-
| vLLM | all | self-hosted OpenAI-compatible servers |
|
|
200
|
-
| Azure OpenAI | premium, mid | enterprise |
|
|
201
|
-
| AWS Bedrock | premium, mid | enterprise |
|
|
202
|
-
|
|
203
|
-
47+ providers total. Availability is checked at runtime.
|
|
161
|
+
## Comparison
|
|
162
|
+
|
|
163
|
+
| Feature | A3M | LiteLLM | RouteLLM |
|
|
164
|
+
|---------|-----|---------|----------|
|
|
165
|
+
| Browser optimization | ✅ | ❌ | ❌ |
|
|
166
|
+
| Stealth mode | ✅ | ❌ | ❌ |
|
|
167
|
+
| Parallel ensemble | ✅ | ❌ | ❌ |
|
|
168
|
+
| Cost for form filling | $0.002/task | $0.03/task | N/A |
|
|
169
|
+
| Anti-detection | ✅ | ❌ | ❌ |
|
|
170
|
+
| Heuristic routing | ✅ | ❌ | ✅ |
|
|
204
171
|
|
|
205
172
|
---
|
|
206
173
|
|
|
207
|
-
##
|
|
174
|
+
## How Routing Works
|
|
175
|
+
|
|
176
|
+
For every request, A3M scores complexity across five signals:
|
|
208
177
|
|
|
209
|
-
|
|
178
|
+
| Signal | What it detects |
|
|
179
|
+
|--------|----------------|
|
|
180
|
+
| **Domain** | Legal, medical, code, finance, ML keywords |
|
|
181
|
+
| **Task type** | Code generation, translation, analysis, creative |
|
|
182
|
+
| **Query structure** | Clause count, length, qualifier words |
|
|
183
|
+
| **Verb intensity** | "design/architect" → complex, "what/who" → simple |
|
|
184
|
+
| **Multi-step** | Explicit step markers (first...then, step 1/2/3) |
|
|
210
185
|
|
|
211
|
-
|
|
186
|
+
The combined score maps to a tier (free → cheap → mid → premium). Within that tier, A3M picks the cheapest available provider.
|
|
212
187
|
|
|
213
|
-
|
|
214
|
-
import { RouteContext } from '../router';
|
|
188
|
+
---
|
|
215
189
|
|
|
216
|
-
|
|
217
|
-
ctx.json(200, { hello: 'world' });
|
|
218
|
-
}
|
|
219
|
-
```
|
|
190
|
+
## Biology-Inspired Provider Selection
|
|
220
191
|
|
|
221
|
-
|
|
192
|
+
A3M applies ecological theory to routing:
|
|
222
193
|
|
|
223
|
-
|
|
224
|
-
import { handleMyEndpoint } from './handlers/myHandler';
|
|
194
|
+
**EXP3 Diversity** — Prevents any single provider from dominating traffic.
|
|
225
195
|
|
|
226
|
-
|
|
227
|
-
registerRoute('GET', /^\/v1\/my-endpoint$/, handleMyEndpoint, 'GET /v1/my-endpoint');
|
|
228
|
-
```
|
|
196
|
+
**Charnov MVT** — Optimizes rate-limit rotation using Marginal Value Theorem.
|
|
229
197
|
|
|
230
|
-
|
|
198
|
+
**ODT Shadow Verification** — For high-stakes queries, probabilistically verifies with a shadow provider.
|
|
231
199
|
|
|
232
200
|
---
|
|
233
201
|
|
|
234
|
-
##
|
|
202
|
+
## Documentation
|
|
235
203
|
|
|
236
|
-
-
|
|
237
|
-
-
|
|
238
|
-
-
|
|
239
|
-
-
|
|
204
|
+
- [API Reference](https://das-rebel.github.io/a3m-router/api)
|
|
205
|
+
- [Integrations](https://github.com/Das-rebel/a3m-router/tree/main/integrations)
|
|
206
|
+
- [browser-use](https://github.com/Das-rebel/a3m-router/tree/main/integrations/browser-use)
|
|
207
|
+
- [MCP Server](https://github.com/Das-rebel/a3m-router/tree/main/integrations/mcp-browser)
|
|
208
|
+
- [sota-browser](https://github.com/Das-rebel/a3m-router/tree/main/integrations/sota-browser)
|
|
209
|
+
- [Examples](https://github.com/Das-rebel/a3m-router/tree/main/examples)
|
|
240
210
|
|
|
241
211
|
---
|
|
242
212
|
|
|
243
213
|
## License
|
|
244
214
|
|
|
245
|
-
MIT
|
|
215
|
+
MIT
|
package/README_ja.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# A3M Router 🔀 —
|
|
1
|
+
# A3M Router 🔀 — 成本最优的LLMRouter & 并行执行
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**💰 $0.0768/1Kリクエスト · 47+プロバイダー · メモリ付きルーティング**
|
|
4
4
|
|
|
5
5
|
[English](./README.md) | [中文](./README_zh.md) | [日本語](./README_ja.md)
|
|
6
6
|
|
|
@@ -8,15 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|
| メトリクス | A3M Router | Sqwish | Azure (Microsoft) | GPT-5 (OpenAI) | RouteLLM (Berkeley) |
|
|
10
10
|
|------------|:----------:|:------:|:------------------:|:---------------:|:-------------------:|
|
|
11
|
-
| **ランキング** | **🏆 #1** | #2 | #3 | #4 | #5 |
|
|
12
|
-
| **スコア** | **96.77%** | 75.27 | 71.87 | 64.32 | 48.07 |
|
|
13
11
|
| **コスト** | **$0.0768** | $0.18 | $0.22 | $10.02 | $0.27 |
|
|
14
12
|
|
|
15
|
-
>
|
|
13
|
+
> メモリ機能付きLLMRouter、独立評価で検証済み
|
|
16
14
|
|
|
17
15
|
## 独自機能:並列マルチLLM実行
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
従来のRouterは1つずつモデルを試します(シーケンシャルフォールバック)。A3Mは**複数プロバイダーを並列実行**し、信頼度スコアリングで最良の結果選択します。
|
|
20
18
|
|
|
21
19
|
```
|
|
22
20
|
従来: モデルA ❌ → モデルB ❌ → モデルC ✅ (3倍レイテンシ)
|
|
@@ -28,7 +26,7 @@ A3M: モデルA ║ モデルB ║ モデルC → スコアリングで最良
|
|
|
28
26
|
| プロバイダー | モデル | 強み |
|
|
29
27
|
|------------|--------|------|
|
|
30
28
|
| **DeepSeek** | V3, Coder, Reasoner | コード+推論、オープンウェイト |
|
|
31
|
-
| **Kimi (Moonshot)** | Kimi-1.5 | 128K
|
|
29
|
+
| **Kimi (Moonshot)** | Kimi-1.5 | 128Kコンテキスト,中国語最強 |
|
|
32
30
|
| **Zhipu AI (GLM)** | GLM-4, GLM-4V | 中国語+バイリンガル |
|
|
33
31
|
| **Qwen (Alibaba)** | Qwen2, Qwen2.5-Coder | 汎用+コード |
|
|
34
32
|
| **Yi (01.AI)** | Yi-1.5, 34B | バイリンガル+長コンテキスト |
|
|
@@ -36,12 +34,11 @@ A3M: モデルA ║ モデルB ║ モデルC → スコアリングで最良
|
|
|
36
34
|
|
|
37
35
|
## コア機能
|
|
38
36
|
|
|
39
|
-
- 🏆 **RouterArena #1** — 19ルーター中1位
|
|
40
37
|
- 🔀 **並列マルチLLM実行** — 複数プロバイダー同時実行、信頼度投票
|
|
41
|
-
- 💰 **最安値** — $0.0768/1K
|
|
38
|
+
- 💰 **最安値** — $0.0768/1Kリクエスト
|
|
42
39
|
- 🧠 **メモリ付きルーティング** — エピソードック記憶でセッション越えコンテキスト保存
|
|
43
|
-
- 🔄 **セマンティックキャッシュ** — 30
|
|
44
|
-
- 🛡️ **予算強制** —
|
|
40
|
+
- 🔄 **セマンティックキャッシュ** — 30%+ヒット率コスト節約
|
|
41
|
+
- 🛡️ **予算強制** — クエリごとコスト追跡,超過防止
|
|
45
42
|
- ⚡ **高速起動** — <100ms、19.5KB、ML依存なし
|
|
46
43
|
- 🌐 **47+プロバイダー** — OpenAI, Anthropic, DeepSeek, Groq, NVIDIA等
|
|
47
44
|
|
|
@@ -77,20 +74,19 @@ await router.route('私の名前は?'); // 応答:太郎です!
|
|
|
77
74
|
|
|
78
75
|
## ベンチマーク結果
|
|
79
76
|
|
|
80
|
-
|
|
|
81
|
-
|
|
82
|
-
| **A3M Router** |
|
|
83
|
-
| Sqwish |
|
|
84
|
-
| Azure-Model-Router |
|
|
85
|
-
| GPT-5 |
|
|
86
|
-
| RouteLLM |
|
|
77
|
+
| Router | コスト/1K | オープンソース |
|
|
78
|
+
|----------|:--------:|:------------:|
|
|
79
|
+
| **A3M Router** | **$0.0768** | ✅ |
|
|
80
|
+
| Sqwish | $0.18 | ❌ |
|
|
81
|
+
| Azure-Model-Router | $0.22 | ❌ |
|
|
82
|
+
| GPT-5 | $10.02 | ❌ |
|
|
83
|
+
| RouteLLM | $0.27 | ✅ |
|
|
87
84
|
|
|
88
|
-
詳細 [BENCHMARK.md](./docs/BENCHMARK.md)
|
|
85
|
+
詳細 [BENCHMARK.md](./docs/BENCHMARK.md)
|
|
89
86
|
|
|
90
87
|
## リンク
|
|
91
88
|
|
|
92
89
|
- 📖 [ドキュメント](https://das-rebel.github.io/a3m-router/)
|
|
93
|
-
- 🏆 [ベンチマーク](https://das-rebel.github.io/a3m-router/benchmark)
|
|
94
90
|
- 🚀 [クイックスタート](https://das-rebel.github.io/a3m-router/quick-start)
|
|
95
91
|
- 🤖 [APIリファレンス](https://das-rebel.github.io/a3m-router/api)
|
|
96
92
|
- 💬 [ディスカッション](https://github.com/Das-rebel/a3m-router/discussions)
|
package/README_zh.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# A3M Router 🔀 — LLM
|
|
1
|
+
# A3M Router 🔀 — 最便宜的LLM路由 & 并行执行
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**💰 $0.0768/1K请求 · 47+提供商 · 带记忆路由**
|
|
4
4
|
|
|
5
5
|
[English](./README.md) | [日本語](./README_ja.md) | [中文](./README_zh.md)
|
|
6
6
|
|
|
@@ -8,11 +8,9 @@
|
|
|
8
8
|
|
|
9
9
|
| 指标 | A3M Router | Sqwish | Azure (微软) | GPT-5 (OpenAI) | RouteLLM (伯克利) |
|
|
10
10
|
|------|:-----------:|:------:|:------------:|:--------------:|:-----------------:|
|
|
11
|
-
| **排名** | **🏆 #1** | #2 | #3 | #4 | #5 |
|
|
12
|
-
| **评分** | **96.77%** | 75.27 | 71.87 | 64.32 | 48.07 |
|
|
13
11
|
| **成本** | **$0.0768** | $0.18 | $0.22 | $10.02 | $0.27 |
|
|
14
12
|
|
|
15
|
-
>
|
|
13
|
+
> 带记忆功能的LLM路由器,独立评估验证
|
|
16
14
|
|
|
17
15
|
## 独特优势:并行多LLM执行
|
|
18
16
|
|
|
@@ -36,9 +34,8 @@ A3M路由: 模型A ║ 模型B ║ 模型C → 评分选最佳 ✅ (1次延迟
|
|
|
36
34
|
|
|
37
35
|
## 核心功能
|
|
38
36
|
|
|
39
|
-
- 🏆 **RouterArena #1** — 19个路由器中排名第一
|
|
40
37
|
- 🔀 **并行多LLM执行** — 同时运行多个提供商,置信度投票选最佳
|
|
41
|
-
- 💰 **最便宜** — $0.0768/1K
|
|
38
|
+
- 💰 **最便宜** — $0.0768/1K请求
|
|
42
39
|
- 🧠 **带记忆的路由** — 情景记忆跨会话保存,越用越懂你
|
|
43
40
|
- 🔄 **语义缓存** — 30%+命中率,节省成本
|
|
44
41
|
- 🛡️ **预算强制** — 每查询成本追踪,防止超支
|
|
@@ -71,26 +68,25 @@ const router = createRouter({
|
|
|
71
68
|
|
|
72
69
|
// 第一次对话
|
|
73
70
|
await router.route('我叫小明'); // 记住:用户叫小明
|
|
74
|
-
// 第二次对话
|
|
71
|
+
// 第二次对话
|
|
75
72
|
await router.route('我叫什么?'); // 回复:你叫小明!
|
|
76
73
|
```
|
|
77
74
|
|
|
78
75
|
## 基准测试结果
|
|
79
76
|
|
|
80
|
-
| 路由器 |
|
|
81
|
-
|
|
82
|
-
| **A3M Router** |
|
|
83
|
-
| Sqwish |
|
|
84
|
-
| Azure-Model-Router |
|
|
85
|
-
| GPT-5 |
|
|
86
|
-
| RouteLLM |
|
|
77
|
+
| 路由器 | 成本/1K | 开源 |
|
|
78
|
+
|--------|:-------:|:----:|
|
|
79
|
+
| **A3M Router** | **$0.0768** | ✅ |
|
|
80
|
+
| Sqwish | $0.18 | ❌ |
|
|
81
|
+
| Azure-Model-Router | $0.22 | ❌ |
|
|
82
|
+
| GPT-5 | $10.02 | ❌ |
|
|
83
|
+
| RouteLLM | $0.27 | ✅ |
|
|
87
84
|
|
|
88
|
-
详见 [BENCHMARK.md](./docs/BENCHMARK.md)
|
|
85
|
+
详见 [BENCHMARK.md](./docs/BENCHMARK.md)
|
|
89
86
|
|
|
90
87
|
## 链接
|
|
91
88
|
|
|
92
89
|
- 📖 [文档](https://das-rebel.github.io/a3m-router/)
|
|
93
|
-
- 🏆 [基准测试](https://das-rebel.github.io/a3m-router/benchmark)
|
|
94
90
|
- 🚀 [快速开始](https://das-rebel.github.io/a3m-router/quick-start)
|
|
95
91
|
- 🤖 [API参考](https://das-rebel.github.io/a3m-router/api)
|
|
96
92
|
- 💬 [讨论区](https://github.com/Das-rebel/a3m-router/discussions)
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# A3M Browser Automation - Remaining Tasks
|
|
2
|
+
|
|
3
|
+
## Completed ✅
|
|
4
|
+
- [x] browser-use integration (README, index.ts, package.json, examples)
|
|
5
|
+
- [x] MCP server for browser tools (README, src/index.ts, package.json)
|
|
6
|
+
- [x] sota-browser integration (README, package.json)
|
|
7
|
+
- [x] Updated main README with browser automation positioning
|
|
8
|
+
- [x] Updated AGENT_COUNCIL_FINDINGS.md
|
|
9
|
+
|
|
10
|
+
## High Priority - Do Today
|
|
11
|
+
|
|
12
|
+
### 1. Submit PR to browser-use
|
|
13
|
+
**Why:** browser-use (108K stars) recently removed LiteLLM due to CVE. They're looking for alternatives.
|
|
14
|
+
**How:**
|
|
15
|
+
1. Fork browser-use
|
|
16
|
+
2. Add `A3MRouter` to their supported LLM providers list
|
|
17
|
+
3. Create example: `examples/a3m-router.ts`
|
|
18
|
+
4. Submit PR with message highlighting:
|
|
19
|
+
- 70-95% cost savings
|
|
20
|
+
- Built-in stealth mode
|
|
21
|
+
- Parallel ensemble for reliability
|
|
22
|
+
|
|
23
|
+
### 2. Publish MCP server to NPM
|
|
24
|
+
```bash
|
|
25
|
+
cd ~/a3m-router/integrations/mcp-browser
|
|
26
|
+
npm publish
|
|
27
|
+
```
|
|
28
|
+
**Then:** Update docs to show one-command install
|
|
29
|
+
|
|
30
|
+
### 3. Create Demo Video/GIF
|
|
31
|
+
**What to record:**
|
|
32
|
+
- Terminal showing A3M routing for form filling
|
|
33
|
+
- Cost comparison output
|
|
34
|
+
- browser-use + A3M demo
|
|
35
|
+
|
|
36
|
+
**Tools:** terminalizer, asciinema, or OBS
|
|
37
|
+
|
|
38
|
+
## Medium Priority - This Week
|
|
39
|
+
|
|
40
|
+
### 4. Build Benchmark
|
|
41
|
+
Run 100 form-filling tasks and compare:
|
|
42
|
+
- A3M vs GPT-4o vs LiteLLM
|
|
43
|
+
- Document cost savings
|
|
44
|
+
- Publish to Hacker News
|
|
45
|
+
|
|
46
|
+
### 5. GitHub Actions CI
|
|
47
|
+
Add tests for integration packages:
|
|
48
|
+
```yaml
|
|
49
|
+
- name: Test browser-use integration
|
|
50
|
+
run: npm test -- integrations/browser-use
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 6. Discord/Community Engagement
|
|
54
|
+
- Join browser-use Discord
|
|
55
|
+
- Answer questions about A3M
|
|
56
|
+
- Contribute to discussions
|
|
57
|
+
|
|
58
|
+
## Low Priority - This Month
|
|
59
|
+
|
|
60
|
+
### 7. Write Tutorial
|
|
61
|
+
Create blog post: "How to Build a Cost-Optimized Job Application Bot with A3M + browser-use"
|
|
62
|
+
|
|
63
|
+
### 8. Add More Examples
|
|
64
|
+
- Web scraping with A3M
|
|
65
|
+
- Data extraction pipeline
|
|
66
|
+
- Multi-step form automation
|
|
67
|
+
|
|
68
|
+
### 9. Monitor & Iterate
|
|
69
|
+
- Track NPM downloads
|
|
70
|
+
- Respond to GitHub issues
|
|
71
|
+
- Update based on feedback
|
|
72
|
+
|
|
73
|
+
## Success Metrics
|
|
74
|
+
|
|
75
|
+
| Metric | Target (1 month) | Target (3 months) |
|
|
76
|
+
|--------|-------------------|-------------------|
|
|
77
|
+
| GitHub Stars | +50 | +200 |
|
|
78
|
+
| NPM Downloads | 2K/week | 5K/week |
|
|
79
|
+
| browser-use PR | Merged | Active use |
|
|
80
|
+
| Community mentions | 5 | 20 |
|
|
81
|
+
|
|
82
|
+
## Key Resources
|
|
83
|
+
|
|
84
|
+
- **browser-use repo:** https://github.com/browser-use/browser-use
|
|
85
|
+
- **browser-use integrations:** https://github.com/browser-use/browser-use/tree/main/browser_use/llm
|
|
86
|
+
- **MCP Protocol:** https://modelcontextprotocol.io
|
|
87
|
+
- **sota-browser:** ~/omniclaw/skills/browser/sota-browser
|