ai-speedometer 1.0.0 → 1.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/README.md CHANGED
@@ -1,309 +1,58 @@
1
1
  # Ai-speedometer
2
2
 
3
- A comprehensive, modern CLI tool for benchmarking AI models across multiple providers with **parallel execution**, **professional tables**, **arrow key navigation**, and **advanced metrics**.
3
+ A CLI tool for benchmarking AI models across multiple providers with parallel execution and performance metrics.
4
4
 
5
- ## Quick Start
5
+ ## Install
6
6
 
7
7
  ```bash
8
- git clone https://github.com/aptdnfapt/Ai-speedometer
9
- # Install dependencies
10
- npm install
11
- # Set up your API keys and providers (see Setup Guide below)
12
- # Start the CLI
13
- npm run cli
14
-
15
-
8
+ npm install -g ai-speedometer
16
9
  ```
17
- Debug
18
- ```bash
19
- # Start with debug logging (for troubleshooting)
20
- npm run cli:debug
21
- ```
22
-
23
- ## Setup Guide
24
-
25
- ### Before You Begin
26
-
27
- Before running the benchmark, you need to configure your AI providers with API keys and base URLs. The tool supports two types of providers:
28
-
29
- 1. **OpenAI-Compatible providers** (OpenAI, local models, custom endpoints)
30
- 2. **Anthropic providers** (Claude models)
31
-
32
- ### Step 1: Get Your API Keys
33
-
34
- #### OpenAI-Compatible Providers
35
- - **OpenAI**: Get your API key from [OpenAI API Keys](https://platform.openai.com/api-keys)
36
- - **Other providers**: Check your provider's documentation for API key access
37
10
 
38
- #### Anthropic Providers
39
- - **Anthropic**: Get your API key from [Anthropic Console](https://console.anthropic.com/settings/keys)
11
+ ## What It Measures
40
12
 
41
- ### Step 2: Configure Providers
13
+ - **TTFT** (Time to First Token) - How fast the first response token arrives
14
+ - **Total Time** - Complete request duration
15
+ - **Tokens/Second** - Real-time throughput
16
+ - **Token Counts** - Input, output, and total tokens used
42
17
 
43
- You have two ways to configure providers:
18
+ ## Quick Setup
44
19
 
45
- #### Method A: Use the Interactive CLI (Recommended)
46
-
47
- 1. Run the CLI:
20
+ 1. **Set Model**
48
21
  ```bash
49
- npm run cli
22
+ ai-speedometer
23
+ # Select "Set Model" → "Add Verified Provider" → Choose provider (OpenAI, Anthropic, etc.)
24
+ # Enter your API key when prompted
50
25
  ```
51
26
 
52
- 2. Select "Set Model" from the main menu
53
-
54
- 3. Choose "Add New Provider"
55
-
56
- 4. Select the provider type:
57
- - **OpenAI Compatible**: For OpenAI, local models, or custom endpoints
58
- - **Anthropic**: For Claude models
27
+ 2. **Choose Model Provider**
28
+ - Verified providers (OpenAI, Anthropic, Google) - auto-configured
29
+ - Custom providers (Ollama, local models) - add your base URL
59
30
 
60
- 5. Enter the required information:
61
- - **Provider name**: A friendly name (e.g., "My OpenAI", "Local Ollama")
62
- - **Base URL**: The API endpoint (see examples below)
63
- - **API Key**: Your secret API key
64
- - **Model name**: The specific model you want to test
31
+ 3. **Add API Key**
32
+ - Get API keys from your provider's dashboard
33
+ - Enter when prompted - stored securely
65
34
 
66
- #### Method B: Manual Configuration
67
-
68
- 1. Copy the template:
35
+ 4. **Run Benchmark**
69
36
  ```bash
70
- cp ai-benchmark-config.json.template ai-benchmark-config.json
37
+ ai-speedometer
38
+ # Select "Run Benchmark (AI SDK)" → Choose models → Press ENTER
71
39
  ```
72
40
 
73
- 2. Edit `ai-benchmark-config.json` with your provider details:
74
-
75
- ```json
76
- {
77
- "providers": [
78
- {
79
- "id": "my_openai",
80
- "name": "OpenAI",
81
- "type": "openai-compatible",
82
- "baseUrl": "https://api.openai.com/v1",
83
- "apiKey": "sk-your-openai-key-here",
84
- "models": [
85
- {
86
- "name": "gpt-4",
87
- "id": "gpt4_model"
88
- }
89
- ]
90
- },
91
- {
92
- "id": "my_anthropic",
93
- "name": "Anthropic",
94
- "type": "anthropic",
95
- "baseUrl": "https://api.anthropic.com",
96
- "apiKey": "sk-ant-your-anthropic-key-here",
97
- "models": [
98
- {
99
- "name": "claude-3-sonnet-20240229",
100
- "id": "claude3_sonnet"
101
- }
102
- ]
103
- }
104
- ]
105
- }
106
- ```
107
-
108
- ### Step 3: Common Base URL Examples
109
-
110
- #### OpenAI-Compatible Providers
111
- - **OpenAI**: `https://api.openai.com/v1`
112
- - **Local Ollama**: `http://localhost:11434/v1`
113
- - **Groq**: `https://api.groq.com/openai/v1`
114
- - **Together AI**: `https://api.together.xyz/v1`
115
- - **Anyscale**: `https://api.endpoints.anyscale.com/v1`
116
- - **Fireworks AI**: `https://api.fireworks.ai/inference/v1`
117
-
118
- #### Anthropic Providers
119
- - **Anthropic Official**: `https://api.anthropic.com`
120
- - **Custom Anthropic endpoints**: Check with your provider
121
-
122
- ### Step 4: Security
123
-
124
- Your configuration file contains sensitive API keys. The `.gitignore` file already excludes `ai-benchmark-config.json` to prevent accidental commits.
125
-
126
- **Never commit your API keys to version control!**
127
-
128
- ### Step 5: Verify Configuration
129
-
130
- After setting up, run the CLI and check that your providers appear in the model selection menu. If you see your providers and models listed, you're ready to benchmark!
131
-
132
- ### Troubleshooting
133
-
134
- - **"Provider not found"**: Check your base URL and API key
135
- - **"Model not available"**: Verify the model name is correct for your provider
136
- - **"Connection failed"**: Ensure your base URL is accessible and you have internet access
137
- - **"Invalid API key"**: Double-check your API key is correct and has proper permissions
138
- - **Debug Mode**: Use `npm run cli:debug` to enable detailed logging. This creates a `debug.log` file with API request/response details for troubleshooting connection issues.
139
-
140
- ## Usage Examples
141
-
142
- ### Main Menu (Modern Arrow Navigation)
143
- ```
144
- Ai-speedometer
145
- =============================
146
- Note: opencode uses ai-sdk
147
-
148
- Use ↑↓ arrows to navigate, ENTER to select
149
- Navigation is circular
150
-
151
- ● Set Model
152
- ○ Run Benchmark (AI SDK)
153
- ○ Run Benchmark (REST API)
154
- ○ Exit
155
- ```
156
-
157
- ### Model Selection (Circle-Based UI)
158
- ```
159
- Select Models for Benchmark
160
-
161
- Use ↑↓ arrows to navigate, SPACE to select/deselect, ENTER to confirm
162
- Navigation is circular - moving past bottom/top wraps around
163
- Press "A" to select all models, "N" to deselect all
164
- Circle states: ●=Current+Selected ○=Current+Unselected ●=Selected ○=Unselected
165
-
166
- Available Models:
167
- ● gpt-4 (OpenAI)
168
- ○ claude-3-sonnet (Anthropic)
169
-
170
- Selected: 1 models
171
- ```
172
-
173
- ### Provider Management (Vertical Stacking)
174
- ```
175
- Available Providers
176
-
177
- 1. chutes (openai-compatible)
178
- Models:
179
- 1. zai-org/GLM-4.5-turbo
180
- 2. deepseek-ai/DeepSeek-V3.1-turbo
181
-
182
- 2. zai (openai-compatible)
183
- Models:
184
- 1. glm-4.5
185
-
186
- 3. zai-anthropic (anthropic)
187
- Models:
188
- 1. claude-3-sonnet-20240229
189
- ```
190
-
191
- ### Benchmark Results (Professional Tables + Enhanced Charts)
192
- ```
193
- BENCHMARK RESULTS
194
- =========================
195
- Method: AI SDK
196
-
197
- COMPREHENSIVE PERFORMANCE SUMMARY
198
- Note: AI SDK method does not count thinking tokens as first token. REST API method does not use streaming.
199
- ┌─────────────────────────┬─────────────────────┬─────────────────┬────────────┬─────────────────┬─────────────────┬─────────────────┬─────────────────┐
200
- │ Model │ Provider │ Total Time(s) │ TTFT(s) │ Tokens/Sec │ Output Tokens │ Prompt Tokens │ Total Tokens │
201
- ├─────────────────────────┼─────────────────────┼─────────────────┼────────────┼─────────────────┼─────────────────┼─────────────────┼─────────────────┤
202
- │ zai-org/GLM-4.5-turbo │ chutes │ 11.47 │ 1.00 │ 81.5 │ 935 │ 14 │ 1205 │
203
- │ deepseek-ai/DeepSeek-V3 │ chutes │ 5.21 │ 0.83 │ 178.6 │ 930 │ 14 │ 742 │
204
- │ glm-4.5 │ zai │ 11.30 │ 5.30 │ 72.9 │ 824 │ 14 │ 1087 │
205
- └─────────────────────────┴─────────────────────┴─────────────────┴────────────┴─────────────────┴─────────────────┴─────────────────┴─────────────────┘
206
-
207
- PERFORMANCE COMPARISON CHARTS
208
- ──────────────────────────────────────────────────────────────────────────────────────────
209
-
210
- TOTAL TIME COMPARISON (lower is better)
211
- 5.21s | 178.6 tok/s | deepseek-ai/DeepSeek-V3.1-turbo | ████████████████████████████████████████████████
212
- 11.30s | 72.9 tok/s | glm-4.5 | ████████████████████████████████████░░░░░░░░░
213
- 11.47s | 81.5 tok/s | zai-org/GLM-4.5-turbo | ████████████████████████████████████░░░░░░░░░
214
-
215
- TOKENS PER SECOND COMPARISON (higher is better)
216
- 178.6 tok/s | 5.21s | deepseek-ai/DeepSeek-V3.1-turbo | █████████████████████████████████████████████████████
217
- 81.5 tok/s | 11.47s | zai-org/GLM-4.5-turbo | ████████████████████████████████░░░░░░░░░░░░░░░░
218
- 72.9 tok/s | 11.30s | glm-4.5 | ████████████████████████████████░░░░░░░░░░░░░░░░
219
-
220
- Benchmark completed!
221
- ```
222
-
223
- ## Configuration
224
-
225
- ### Adding Providers (Arrow Key Navigation)
226
-
227
- #### OpenAI-Compatible Providers
228
- ```
229
- Add New Provider
41
+ ## Usage
230
42
 
231
- Use ↑↓ arrows to navigate, ENTER to select
232
- Navigation is circular
233
-
234
- Select provider type:
43
+ ```bash
44
+ # Start CLI
45
+ ai-speedometer
235
46
 
236
- OpenAI Compatible
237
- ○ Anthropic
238
- ○ Back to main menu
239
- ```
47
+ # Or use short alias
48
+ aispeed
240
49
 
241
- #### Anthropic Providers (Now Supports Custom Base URLs)
50
+ # Debug mode
51
+ ai-speedometer --debug
242
52
  ```
243
- Enter provider name (e.g., MyAnthropic):
244
- Enter base URL (e.g., https://api.anthropic.com):
245
- Enter Anthropic API key: [your-key]
246
- Enter model name (e.g., claude-3-sonnet-20240229):
247
- ```
248
-
249
- **Note**: The system automatically handles `/v1` path requirements for custom Anthropic endpoints. If you encounter issues with custom base URLs, run `npm run cli:debug` to see detailed API request logs.
250
-
251
-
252
- ## Performance Metrics Explained
253
-
254
- ### Core Metrics
255
- - **Total Time**: Complete request duration (seconds)
256
- - **Time to First Token (TTFT)**: Latency until first streaming token arrives (0 for REST API since it doesn't use streaming)
257
- - **Tokens per Second**: Real-time throughput calculation
258
- - **Output Tokens**: Number of tokens in the AI response
259
- - **Prompt Tokens**: Number of tokens in the input prompt
260
- - **Total Tokens**: Combined prompt + output tokens
261
-
262
- ### Benchmark Methods
263
- - **AI SDK Method**: Uses streaming with Vercel AI SDK, doesn't count thinking tokens as first token
264
- - **REST API Method**: Uses direct HTTP calls, no streaming, TTFT is always 0
265
-
266
- ### Chart Features
267
- - **Dual Comparison Charts**: Both time and performance perspectives
268
- - **Left-Side Metrics**: Shows actual values alongside bar charts
269
- - **Color Coding**: Red bars for time (lower is better), green for performance (higher is better)
270
- - **Dynamic Scaling**: Bars scale proportionally to the best/worst performers
271
-
272
- ## Tech Stack
273
-
274
- - **AI SDK**: Vercel AI SDK with streaming support (opencode uses it)
275
- - **Table Rendering**: `cli-table3` for professional tables
276
- - **Providers**: OpenAI-compatible and Anthropic APIs with custom baseUrl support
277
- - **Navigation**: Circular arrow key navigation throughout
278
- - **Colors**: ANSI escape codes for terminal styling
279
- - **Configuration**: JSON-based persistent storage
280
- - **Security**: .gitignore protection for sensitive files
281
- - **Debug Logging**: Built-in debugging system for troubleshooting API connections
282
53
 
283
54
  ## Requirements
284
55
 
285
56
  - Node.js 18+
286
57
  - API keys for AI providers
287
- - Terminal that supports ANSI colors and arrow keys
288
- - Git (for security configuration)
289
-
290
-
291
- ## Advanced Features
292
-
293
- ### Parallel Execution
294
- - **Speed**: Runs all selected models simultaneously
295
- - **Efficiency**: No sequential waiting between models
296
- - **Results**: Comprehensive comparison across all models
297
-
298
- ### Advanced Navigation
299
- - **Universal Pattern**: All menus use the same arrow key navigation
300
- - **Circular Movement**: Navigation wraps at top/bottom for seamless UX
301
- - **Visual Feedback**: Clear indicators for current selections
302
- - **Keyboard Shortcuts**: Quick actions like select all ('A') and deselect all ('N')
303
-
304
- ### Professional Output
305
- - **Table Format**: Clean, aligned columns with proper spacing
306
- - **Color Coding**: Different colors for different metric types
307
- - **Comprehensive Data**: All relevant metrics in one view
308
- - **Visual Charts**: Bar charts for quick visual comparison
309
-
58
+ - Terminal with arrow keys and ANSI colors