HeTalksInMaths commited on
Commit
560c34e
·
1 Parent(s): 43c3d37

Clean up repository: Remove unnecessary markdown files and update README

Browse files
.gitignore CHANGED
@@ -6,3 +6,30 @@ __pycache__/
6
  data/benchmark_vector_db/
7
  data/benchmark_results/mmlu_real_results.json
8
  models/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  data/benchmark_vector_db/
7
  data/benchmark_results/mmlu_real_results.json
8
  models/
9
+ # Development summary files
10
+ COMPLETE_DEMO_ANALYSIS.md
11
+ FINAL_SUMMARY.md
12
+ PUSH_TO_GITHUB.md
13
+ GITHUB_INSTRUCTIONS.md
14
+ CLUSTERING_EXECUTION_LOG.md
15
+ CLUSTERING_RESULTS_SUMMARY.md
16
+ CLUSTERING_TO_DYNAMIC_TOOLS_STRATEGY.md
17
+ REAL_DATA_FETCH_STATUS.md
18
+ VECTOR_DB_STATUS.md
19
+ VECTOR_DB_SUMMARY.md
20
+ ARCHITECTURE.md
21
+ CHANGELOG_ROADMAP.md
22
+ CLAUDE_DESKTOP_TROUBLESHOOTING.md
23
+ DEPLOYMENT.md
24
+ DYNAMIC_TOOLS_DESIGN.md
25
+ EXECUTION_PLAN.md
26
+ HOSTING_GUIDE.md
27
+ INDEX.md
28
+ MCP_CONNECTION_GUIDE.md
29
+ PROJECT_SUMMARY.md
30
+ PROMPT_IMPROVER_PLAN.md
31
+ QUICKSTART.md
32
+ QUICK_ANSWERS.md
33
+ RUN_COMMANDS.sh
34
+ SERVER_INFO.md
35
+ SETUP_COMPLETE.md
ARCHITECTURE.md DELETED
@@ -1,486 +0,0 @@
1
- # ToGMAL Architecture
2
-
3
- ## System Overview
4
-
5
- ```
6
- ┌─────────────────────────────────────────────────────────────────┐
7
- │ Claude Desktop │
8
- │ (or other MCP Client) │
9
- └────────────────────────────┬────────────────────────────────────┘
10
- │ stdio/MCP Protocol
11
-
12
- ┌────────────────────────────▼────────────────────────────────────┐
13
- │ ToGMAL MCP Server │
14
- │ (togmal_mcp.py) │
15
- │ ┌──────────────────────────────────────────────────────────┐ │
16
- │ │ MCP Tools Layer │ │
17
- │ │ - togmal_analyze_prompt │ │
18
- │ │ - togmal_analyze_response │ │
19
- │ │ - togmal_submit_evidence │ │
20
- │ │ - togmal_get_taxonomy │ │
21
- │ │ - togmal_get_statistics │ │
22
- │ └──────────────────┬───────────────────────────────────────┘ │
23
- │ │ │
24
- │ ┌──────────────────▼───────────────────────────────────────┐ │
25
- │ │ Detection Heuristics │ │
26
- │ │ ┌────────────────────────────────────────────────────┐ │ │
27
- │ │ │ Math/Physics Speculation Detector │ │ │
28
- │ │ │ - Pattern: "theory of everything" │ │ │
29
- │ │ │ - Pattern: "new equation" │ │ │
30
- │ │ │ - Pattern: excessive notation │ │ │
31
- │ │ └────────────────────────────────────────────────────┘ │ │
32
- │ │ ┌────────────────────────────────────────────────────┐ │ │
33
- │ │ │ Ungrounded Medical Advice Detector │ │ │
34
- │ │ │ - Pattern: "you probably have" │ │ │
35
- │ │ │ - Pattern: "take Xmg" │ │ │
36
- │ │ │ - Check: has_sources │ │ │
37
- │ │ └────────────────────────────────────────────────────┘ │ │
38
- │ │ ┌────────────────────────────────────────────────────┐ │ │
39
- │ │ │ Dangerous File Operations Detector │ │ │
40
- │ │ │ - Pattern: "rm -rf" │ │ │
41
- │ │ │ - Pattern: recursive deletion │ │ │
42
- │ │ │ - Check: has_safeguards │ │ │
43
- │ │ └────────────────────────────────────────────────────┘ │ │
44
- │ │ ┌────────────────────────────────────────────────────┐ │ │
45
- │ │ │ Vibe Coding Overreach Detector │ │ │
46
- │ │ │ - Pattern: "complete app" │ │ │
47
- │ │ │ - Pattern: large line counts │ │ │
48
- │ │ │ - Check: has_planning │ │ │
49
- │ │ └────────────────────────────────────────────────────┘ │ │
50
- │ │ ┌────────────────────────────────────────────────────┐ │ │
51
- │ │ │ Unsupported Claims Detector │ │ │
52
- │ │ │ - Pattern: "always/never" │ │ │
53
- │ │ │ - Pattern: statistics without source │ │ │
54
- │ │ │ - Check: has_hedging │ │ │
55
- │ │ └────────────────────────────────────────────────────┘ │ │
56
- │ └──────────────────┬───────────────────────────────────────┘ │
57
- │ │ │
58
- │ ┌──────────────────▼───────────────────────────────────────┐ │
59
- │ │ Risk Assessment & Interventions │ │
60
- │ │ - Calculate weighted risk score │ │
61
- │ │ - Map to risk levels (LOW → CRITICAL) │ │
62
- │ │ - Recommend interventions │ │
63
- │ └──────────────────┬───────────────────────────────────────┘ │
64
- │ │ │
65
- │ ┌──────────────────▼───────────────────────────────────────┐ │
66
- │ │ Taxonomy Database │ │
67
- │ │ - In-memory storage (extendable to persistent) │ │
68
- │ │ - Evidence entries with metadata │ │
69
- │ │ - Filtering and pagination │ │
70
- │ └───────────────────────────────────────────────────────────┘ │
71
- └─────────────────────────────────────────────────────────────────┘
72
- ```
73
-
74
- ## Data Flow - Prompt Analysis
75
-
76
- ```
77
- User Prompt
78
-
79
- ├─────────────────────────────────────────────┐
80
- │ │
81
- ▼ │
82
- togmal_analyze_prompt │
83
- │ │
84
- ├──► Math/Physics Detector ──► Result 1 │
85
- │ │
86
- ├──► Medical Advice Detector ──► Result 2 │
87
- │ │
88
- ├──► File Ops Detector ──► Result 3 │
89
- │ │
90
- ├──► Vibe Coding Detector ──► Result 4 │
91
- │ │
92
- └──► Unsupported Claims Detector ──► Result 5│
93
-
94
- ┌─────────────────────────────────────────────┘
95
-
96
-
97
- Risk Calculation
98
-
99
- ├─► Weight results
100
- ├─► Calculate score
101
- └─► Map to risk level
102
-
103
-
104
- Intervention Recommendation
105
-
106
- ├─► Step breakdown?
107
- ├─► Human-in-loop?
108
- ├─► Web search?
109
- └─► Simplified scope?
110
-
111
-
112
- Format Response (Markdown/JSON)
113
-
114
- └──► Return to Client
115
- ```
116
-
117
- ## Detection Pipeline
118
-
119
- ```
120
- Input Text
121
-
122
-
123
- ┌───────────────────────────┐
124
- │ Preprocessing │
125
- │ - Lowercase │
126
- │ - Strip whitespace │
127
- └───────────┬───────────────┘
128
-
129
-
130
- ┌───────────────────────────┐
131
- │ Pattern Matching │
132
- │ - Regex patterns │
133
- │ - Keyword detection │
134
- │ - Structural analysis │
135
- └───────────┬───────────────┘
136
-
137
-
138
- ┌───────────────────────────┐
139
- │ Confidence Scoring │
140
- │ - Count matches │
141
- │ - Weight by type │
142
- │ - Normalize to [0,1] │
143
- └───────────┬───────────────┘
144
-
145
-
146
- ┌───────────────────────────┐
147
- │ Context Checks │
148
- │ - has_sources? │
149
- │ - has_hedging? │
150
- │ - has_safeguards? │
151
- └───────────┬───────────────┘
152
-
153
-
154
- Detection Result
155
- {
156
- detected: bool,
157
- categories: list,
158
- confidence: float,
159
- metadata: dict
160
- }
161
- ```
162
-
163
- ## Risk Calculation Algorithm
164
-
165
- ```
166
- For each detection category:
167
-
168
- Math/Physics:
169
- risk += confidence × 0.5
170
-
171
- Medical Advice:
172
- risk += confidence × 1.5 # Highest weight
173
-
174
- File Operations:
175
- risk += confidence × 2.0 # Critical actions
176
-
177
- Vibe Coding:
178
- risk += confidence × 0.4
179
-
180
- Unsupported Claims:
181
- risk += confidence × 0.3
182
-
183
- Total Risk Score:
184
-
185
- ≥ 1.5 → CRITICAL
186
- ≥ 1.0 → HIGH
187
- ≥ 0.5 → MODERATE
188
- < 0.5 → LOW
189
- ```
190
-
191
- ## Intervention Decision Tree
192
-
193
- ```
194
- Detection Results
195
-
196
- ┌─────────────────┼─────────────────┐
197
- │ │ │
198
- ▼ ▼ ▼
199
- Math/Physics? Medical Advice? File Operations?
200
- │ │ │
201
- ├─► Yes ├─► Yes ├─► Yes
202
- │ │ │ │ │ │
203
- │ ├─► Step │ ├─► Human │ ├─► Human
204
- │ │ Breakdown │ │ in Loop │ │ in Loop
205
- │ │ │ │ │ │
206
- │ └─► Web │ └─► Web │ └─► Step
207
- │ Search │ Search │ Breakdown
208
- │ │ │
209
- └─► No └─► No └─► No
210
- │ │ │
211
- ▼ ▼ ▼
212
- Continue Continue Continue
213
-
214
- ┌───────────┐
215
- │ Combine │
216
- │ Results │
217
- └─────┬─────┘
218
-
219
-
220
- Intervention List
221
- (deduplicated)
222
- ```
223
-
224
- ## Taxonomy Database Schema
225
-
226
- ```
227
- TAXONOMY_DB = {
228
- "category_name": [
229
- {
230
- "id": "abc123def456",
231
- "category": "math_physics_speculation",
232
- "prompt": "User's prompt text...",
233
- "response": "LLM's response text...",
234
- "description": "Why problematic...",
235
- "severity": "high",
236
- "timestamp": "2025-10-18T00:00:00",
237
- "prompt_hash": "a1b2c3d4"
238
- },
239
- { ... more entries ... }
240
- ],
241
- "another_category": [ ... ]
242
- }
243
-
244
- Indices:
245
- - By category (dict key)
246
- - By severity (filter)
247
- - By timestamp (sort)
248
- - By hash (deduplication)
249
- ```
250
-
251
- ## Component Responsibilities
252
-
253
- ### MCP Tools Layer
254
- **Responsibilities:**
255
- - Input validation (Pydantic models)
256
- - Parameter extraction
257
- - Tool orchestration
258
- - Response formatting
259
- - Character limit enforcement
260
-
261
- **Does NOT:**
262
- - Perform detection logic
263
- - Calculate risk scores
264
- - Store data directly
265
-
266
- ### Detection Heuristics Layer
267
- **Responsibilities:**
268
- - Pattern matching
269
- - Confidence scoring
270
- - Context analysis
271
- - Detection result generation
272
-
273
- **Does NOT:**
274
- - Make intervention decisions
275
- - Format responses
276
- - Handle I/O
277
-
278
- ### Risk Assessment Layer
279
- **Responsibilities:**
280
- - Aggregate detection results
281
- - Calculate weighted risk scores
282
- - Map scores to risk levels
283
- - Generate intervention recommendations
284
-
285
- **Does NOT:**
286
- - Perform detection
287
- - Format responses
288
- - Store data
289
-
290
- ### Taxonomy Database
291
- **Responsibilities:**
292
- - Store evidence entries
293
- - Support filtering/pagination
294
- - Provide statistics
295
- - Maintain capacity limits
296
-
297
- **Does NOT:**
298
- - Perform analysis
299
- - Make decisions
300
- - Format responses
301
-
302
- ## Extension Points
303
-
304
- ### Adding New Detection Categories
305
-
306
- ```python
307
- # 1. Add enum value
308
- class CategoryType(str, Enum):
309
- NEW_CATEGORY = "new_category"
310
-
311
- # 2. Create detector function
312
- def detect_new_category(text: str) -> Dict[str, Any]:
313
- patterns = { ... }
314
- # Detection logic
315
- return {
316
- 'detected': bool,
317
- 'categories': list,
318
- 'confidence': float
319
- }
320
-
321
- # 3. Update analysis functions
322
- def analyze_prompt(params):
323
- results['new_category'] = detect_new_category(params.prompt)
324
- # ... rest of logic
325
-
326
- # 4. Update risk calculation
327
- def calculate_risk_level(results):
328
- if results['new_category']['detected']:
329
- risk_score += results['new_category']['confidence'] * WEIGHT
330
-
331
- # 5. Add intervention logic
332
- def recommend_interventions(results):
333
- if results['new_category']['detected']:
334
- interventions.append({ ... })
335
- ```
336
-
337
- ### Adding Persistent Storage
338
-
339
- ```python
340
- # 1. Define storage backend
341
- class TaxonomyStorage:
342
- def save(self, category, entry): ...
343
- def load(self, category, filters): ...
344
- def get_stats(self): ...
345
-
346
- # 2. Replace in-memory dict
347
- storage = TaxonomyStorage(backend="sqlite") # or "postgres", "mongodb"
348
-
349
- # 3. Update tool functions
350
- @mcp.tool()
351
- async def submit_evidence(params):
352
- # Instead of: TAXONOMY_DB[category].append(entry)
353
- await storage.save(params.category, entry)
354
- ```
355
-
356
- ### Adding ML Models
357
-
358
- ```python
359
- # 1. Define model interface
360
- class AnomalyDetector:
361
- def fit(self, X): ...
362
- def predict(self, x) -> float: ...
363
-
364
- # 2. Train from taxonomy
365
- detector = AnomalyDetector()
366
- training_data = get_training_data_from_taxonomy()
367
- detector.fit(training_data)
368
-
369
- # 3. Use in detection
370
- def detect_with_ml(text: str) -> float:
371
- features = extract_features(text)
372
- anomaly_score = detector.predict(features)
373
- return anomaly_score
374
- ```
375
-
376
- ## Performance Characteristics
377
-
378
- ### Time Complexity
379
- - **Pattern Matching**: O(n) where n = text length
380
- - **All Detectors**: O(n) (parallel constant time)
381
- - **Risk Calculation**: O(1) (fixed number of categories)
382
- - **Taxonomy Query**: O(m·log m) where m = matching entries
383
- - **Overall**: O(n + m·log m)
384
-
385
- ### Space Complexity
386
- - **Server Base**: ~50 MB
387
- - **Per Request**: ~1 KB (temporary)
388
- - **Per Taxonomy Entry**: ~1 KB
389
- - **Total with 1000 entries**: ~51 MB
390
-
391
- ### Latency
392
- - **Single Detection**: ~10-50 ms
393
- - **All Detections**: ~50-100 ms
394
- - **Format Response**: ~1-10 ms
395
- - **Total Per Request**: ~100-150 ms
396
-
397
- ## Security Considerations
398
-
399
- ### Input Validation
400
- ```
401
- User Input
402
-
403
-
404
- Pydantic Model
405
-
406
- ├─► Type checking
407
- ├─► Length limits
408
- ├─► Pattern validation
409
- └─► Field constraints
410
-
411
-
412
- Valid Input
413
- ```
414
-
415
- ### Privacy Protection
416
- ```
417
- ┌────────────────────────────────────┐
418
- │ NO External API Calls │
419
- │ NO Data Transmission │
420
- │ NO Logging Sensitive Info │
421
- │ YES Local Processing Only │
422
- │ YES User Consent Required │
423
- │ YES Data Stays on Device │
424
- └────────────────────────────────────┘
425
- ```
426
-
427
- ### Human-in-the-Loop
428
- ```
429
- Sensitive Operation Detected
430
-
431
-
432
- Request User Confirmation
433
-
434
- ├─► Yes → Proceed
435
-
436
- └─► No → Cancel
437
- ```
438
-
439
- ## Scalability Path
440
-
441
- ### Current: Single Instance
442
- ```
443
- Client → stdio → ToGMAL Server → Response
444
- ```
445
-
446
- ### Future: HTTP Transport
447
- ```
448
- Multiple Clients → HTTP → ToGMAL Server → Response
449
-
450
- Shared Database
451
- ```
452
-
453
- ### Advanced: Distributed
454
- ```
455
- Clients → Load Balancer → ToGMAL Servers (N)
456
-
457
- Shared Database
458
-
459
- ML Model Cache
460
- ```
461
-
462
- ## Monitoring Points
463
-
464
- ```
465
- ┌─────────────────────────────────────┐
466
- │ Metrics to Track │
467
- ├─────────────────────────────────────┤
468
- │ - Tool call frequency │
469
- │ - Detection rates by category │
470
- │ - Risk level distribution │
471
- │ - Intervention effectiveness │
472
- │ - False positive rate │
473
- │ - Response latency │
474
- │ - Taxonomy growth rate │
475
- │ - User feedback submissions │
476
- └─────────────────────────────────────┘
477
- ```
478
-
479
- ---
480
-
481
- This architecture supports:
482
- - ✅ Privacy-preserving analysis
483
- - ✅ Low-latency detection
484
- - ✅ Extensible design
485
- - ✅ Production readiness
486
- - ✅ Future ML integration
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CHANGELOG_ROADMAP.md DELETED
@@ -1,399 +0,0 @@
1
- # ToGMAL Changelog & Roadmap
2
-
3
- ## Version 1.0.0 (October 2025) - Initial Release
4
-
5
- ### ✨ Features
6
-
7
- #### Core Detection System
8
- - ✅ Math/Physics speculation detector with pattern matching
9
- - ✅ Ungrounded medical advice detector with source checking
10
- - ✅ Dangerous file operations detector with safeguard validation
11
- - ✅ Vibe coding overreach detector with scope analysis
12
- - ✅ Unsupported claims detector with hedging verification
13
-
14
- #### Risk Assessment
15
- - ✅ Weighted confidence scoring system
16
- - ✅ Four-tier risk levels (LOW, MODERATE, HIGH, CRITICAL)
17
- - ✅ Dynamic risk calculation based on detection results
18
- - ✅ Context-aware confidence adjustment
19
-
20
- #### Intervention System
21
- - ✅ Step breakdown recommendations
22
- - ✅ Human-in-the-loop suggestions
23
- - ✅ Web search recommendations
24
- - ✅ Simplified scope guidance
25
- - ✅ Automatic intervention mapping by detection type
26
-
27
- #### MCP Tools
28
- - ✅ `togmal_analyze_prompt` - Pre-process analysis
29
- - ✅ `togmal_analyze_response` - Post-process analysis
30
- - ✅ `togmal_submit_evidence` - Taxonomy contribution with user confirmation
31
- - ✅ `togmal_get_taxonomy` - Database query with filtering/pagination
32
- - ✅ `togmal_get_statistics` - Aggregate metrics
33
-
34
- #### Data Management
35
- - ✅ In-memory taxonomy database
36
- - ✅ Evidence submission with human-in-the-loop
37
- - ✅ Pagination support for large result sets
38
- - ✅ Category and severity filtering
39
- - ✅ Statistical summaries
40
-
41
- #### Developer Experience
42
- - ✅ Comprehensive documentation (README, DEPLOYMENT, QUICKSTART)
43
- - ✅ Test examples with expected outcomes
44
- - ✅ Architecture documentation with diagrams
45
- - ✅ Claude Desktop configuration examples
46
- - ✅ Type-safe Pydantic models
47
- - ✅ Full MCP best practices compliance
48
-
49
- ### 📊 Statistics
50
- - **Lines of Code**: 1,270 (server) + 500+ (tests/docs)
51
- - **Detection Patterns**: 25+ regex patterns across 5 categories
52
- - **MCP Tools**: 5 tools with full documentation
53
- - **Test Cases**: 10 comprehensive scenarios
54
- - **Documentation Pages**: 6 files (README, DEPLOYMENT, QUICKSTART, etc.)
55
-
56
- ### 🎯 Design Goals Achieved
57
- - ✅ Privacy-preserving (no external API calls)
58
- - ✅ Low latency (< 150ms per request)
59
- - ✅ Deterministic detection (reproducible results)
60
- - ✅ Extensible architecture (easy to add patterns)
61
- - ✅ Human-centered (always allows override)
62
-
63
- ---
64
-
65
- ## Version 1.1.0 (Planned - Q1 2026)
66
-
67
- ### 🚀 Planned Features
68
-
69
- #### Enhanced Detection
70
- - 🔜 Code smell detector for programming anti-patterns
71
- - 🔜 SQL injection pattern detector for database queries
72
- - 🔜 Privacy violation detector (PII, credentials in code)
73
- - 🔜 License compliance checker for code generation
74
- - 🔜 Bias and fairness detector for content analysis
75
-
76
- #### Improved Accuracy
77
- - 🔜 Context-aware pattern matching (not just regex)
78
- - 🔜 Multi-language support (start with Spanish, Chinese)
79
- - 🔜 Domain-specific pattern libraries
80
- - 🔜 Confidence calibration based on feedback
81
- - 🔜 False positive reduction heuristics
82
-
83
- #### User Experience
84
- - 🔜 Configurable sensitivity levels (strict/moderate/lenient)
85
- - 🔜 Custom pattern editor UI (if web interface added)
86
- - 🔜 Detection history and trends
87
- - 🔜 Exportable reports (PDF, CSV)
88
- - 🔜 Batch analysis mode
89
-
90
- #### Integration
91
- - 🔜 GitHub Actions integration for PR checks
92
- - 🔜 VS Code extension
93
- - 🔜 Slack bot for team safety
94
- - 🔜 API webhooks for custom workflows
95
- - 🔜 Prometheus metrics export
96
-
97
- ---
98
-
99
- ## Version 2.0.0 (Planned - Q3 2026)
100
-
101
- ### 🔬 Machine Learning Integration
102
-
103
- #### Traditional ML Models
104
- - 🔜 Unsupervised clustering for anomaly detection
105
- - 🔜 Feature extraction from text (TF-IDF, embeddings)
106
- - 🔜 Statistical outlier detection
107
- - 🔜 Time-series analysis for trend detection
108
- - 🔜 Ensemble methods combining heuristics + ML
109
-
110
- #### Training Pipeline
111
- - 🔜 Automated retraining from taxonomy submissions
112
- - 🔜 Cross-validation framework
113
- - 🔜 Performance benchmarking suite
114
- - 🔜 Model versioning and rollback
115
- - 🔜 A/B testing framework
116
-
117
- #### Persistent Storage
118
- - 🔜 SQLite backend for local deployments
119
- - 🔜 PostgreSQL support for multi-user setups
120
- - 🔜 MongoDB support for document-oriented storage
121
- - 🔜 Data export/import utilities
122
- - 🔜 Backup and restore functionality
123
-
124
- #### Performance Optimization
125
- - 🔜 Caching layer for repeated queries
126
- - 🔜 Parallel detection pipeline
127
- - 🔜 Incremental analysis for large texts
128
- - 🔜 Background processing for non-blocking operations
129
- - 🔜 Resource pooling for high-concurrency
130
-
131
- ---
132
-
133
- ## Version 3.0.0 (Planned - 2027)
134
-
135
- ### 🌐 Advanced Capabilities
136
-
137
- #### Federated Learning
138
- - 🔜 Privacy-preserving model updates across users
139
- - 🔜 Differential privacy guarantees
140
- - 🔜 Decentralized taxonomy building
141
- - 🔜 Peer-to-peer pattern sharing
142
- - 🔜 Community-driven improvement
143
-
144
- #### Context Understanding
145
- - 🔜 Multi-turn conversation awareness
146
- - 🔜 User intent detection
147
- - 🔜 Domain adaptation based on context
148
- - 🔜 Temporal reasoning (before/after analysis)
149
- - 🔜 Cross-reference checking
150
-
151
- #### Domain-Specific Models
152
- - 🔜 Medical domain specialist
153
- - 🔜 Legal compliance checker
154
- - 🔜 Financial advice validator
155
- - 🔜 Engineering standards enforcer
156
- - 🔜 Educational content verifier
157
-
158
- #### Advanced Interventions
159
- - 🔜 Automated prompt refinement suggestions
160
- - 🔜 Real-time correction proposals
161
- - 🔜 Alternative approach generation
162
- - 🔜 Risk mitigation strategies
163
- - 🔜 Learning resources recommendation
164
-
165
- ---
166
-
167
- ## Feature Requests (Community Driven)
168
-
169
- ### High Priority
170
- - [ ] Custom pattern templates for organizations
171
- - [ ] Integration with popular IDEs (IntelliJ, PyCharm)
172
- - [ ] Support for more file formats (PDF analysis, image text)
173
- - [ ] Multi-user collaboration features
174
- - [ ] Role-based access control
175
-
176
- ### Medium Priority
177
- - [ ] Natural language pattern definition (no regex needed)
178
- - [ ] Visual dashboard for analytics
179
- - [ ] Email digest of daily detections
180
- - [ ] Integration with CI/CD pipelines
181
- - [ ] Mobile app for on-the-go analysis
182
-
183
- ### Low Priority
184
- - [ ] Voice interface for accessibility
185
- - [ ] Browser extension for web-based LLM tools
186
- - [ ] Desktop notification system
187
- - [ ] Gamification of taxonomy contributions
188
- - [ ] Social features (share patterns, leaderboards)
189
-
190
- ---
191
-
192
- ## Technical Debt & Improvements
193
-
194
- ### Code Quality
195
- - [ ] Increase test coverage to 90%+
196
- - [ ] Add integration tests with MCP client
197
- - [ ] Performance benchmarking suite
198
- - [ ] Memory profiling and optimization
199
- - [ ] Code coverage reporting
200
-
201
- ### Documentation
202
- - [ ] Video tutorials
203
- - [ ] Interactive playground
204
- - [ ] API reference (auto-generated)
205
- - [ ] Contribution guidelines
206
- - [ ] Security audit documentation
207
-
208
- ### Infrastructure
209
- - [ ] Automated release process
210
- - [ ] Docker images on Docker Hub
211
- - [ ] Helm charts for Kubernetes
212
- - [ ] Terraform modules for cloud deployment
213
- - [ ] Ansible playbooks for server setup
214
-
215
- ---
216
-
217
- ## Research Directions
218
-
219
- ### Academic Interests
220
- - Effectiveness of different intervention strategies
221
- - False positive/negative rates across domains
222
- - User behavior changes with safety interventions
223
- - Pattern evolution over time
224
- - Cross-cultural differences in LLM usage
225
-
226
- ### Industry Applications
227
- - Healthcare LLM safety in clinical settings
228
- - Financial services compliance checking
229
- - Legal review automation assistance
230
- - Educational content quality assurance
231
- - Enterprise governance and risk management
232
-
233
- ### Open Problems
234
- - Zero-shot detection of novel failure modes
235
- - Adversarial robustness against prompt engineering
236
- - Balancing safety with creative freedom
237
- - Determining optimal intervention timing
238
- - Measuring long-term impact on user behavior
239
-
240
- ---
241
-
242
- ## Breaking Changes
243
-
244
- ### Version 1.x → 2.0
245
- - ML models will require additional dependencies (scikit-learn, numpy)
246
- - Database schema changes (migration scripts provided)
247
- - New configuration format for ML settings
248
- - API changes for detection result structure
249
-
250
- ### Version 2.x → 3.0
251
- - Federated learning requires network capabilities
252
- - Context-aware features need conversation history
253
- - Domain models require larger memory footprint
254
- - API changes for multi-turn analysis
255
-
256
- ---
257
-
258
- ## Deprecation Schedule
259
-
260
- ### Version 1.x
261
- - **No deprecations** - All features fully supported
262
- - Commitment to backward compatibility for 2 years
263
-
264
- ### Version 2.0
265
- - In-memory storage will become **optional** (still supported)
266
- - Heuristic-only mode will be **supplemented** (not replaced)
267
- - Single-request analysis remains **fully supported**
268
-
269
- ### Version 3.0
270
- - Regex-based patterns may become **legacy** feature
271
- - Simple patterns will be **auto-converted** to ML-compatible format
272
- - Manual intervention recommendations may become **AI-assisted**
273
-
274
- ---
275
-
276
- ## Community Contributions
277
-
278
- ### How to Contribute
279
-
280
- #### Code Contributions
281
- 1. Fork the repository
282
- 2. Create a feature branch
283
- 3. Write tests for new features
284
- 4. Submit a pull request with description
285
- 5. Address review comments
286
-
287
- #### Pattern Contributions
288
- 1. Use `togmal_submit_evidence` tool
289
- 2. Provide clear descriptions
290
- 3. Include severity assessment
291
- 4. Add reproduction steps if possible
292
- 5. Vote on existing submissions
293
-
294
- #### Documentation Contributions
295
- 1. Identify unclear sections
296
- 2. Propose improvements
297
- 3. Add examples and use cases
298
- 4. Translate to other languages
299
- 5. Create video tutorials
300
-
301
- ### Recognition
302
- - Contributors listed in README
303
- - Significant contributions highlighted in releases
304
- - Option for co-authorship on research papers
305
- - Speaking opportunities at conferences
306
- - Early access to new features
307
-
308
- ---
309
-
310
- ## Versioning Strategy
311
-
312
- ### Semantic Versioning (X.Y.Z)
313
- - **X (Major)**: Breaking changes, new ML models, architecture changes
314
- - **Y (Minor)**: New features, new detectors, non-breaking API changes
315
- - **Z (Patch)**: Bug fixes, documentation updates, pattern improvements
316
-
317
- ### Release Cadence
318
- - **Patch releases**: As needed for critical bugs (1-2 weeks)
319
- - **Minor releases**: Quarterly (every 3 months)
320
- - **Major releases**: Annually or when significant changes warrant
321
-
322
- ### Support Policy
323
- - **Current major version**: Full support
324
- - **Previous major version**: Security fixes for 1 year
325
- - **Older versions**: Community support only
326
-
327
- ---
328
-
329
- ## Success Metrics
330
-
331
- ### Version 1.0 Goals (6 months)
332
- - [ ] 100+ active users
333
- - [ ] 1,000+ analyzed prompts
334
- - [ ] 50+ taxonomy submissions
335
- - [ ] 10+ community pattern contributions
336
- - [ ] 5+ integration examples
337
-
338
- ### Version 2.0 Goals (12 months)
339
- - [ ] 1,000+ active users
340
- - [ ] 10,000+ analyzed prompts
341
- - [ ] ML models deployed in production
342
- - [ ] 50%+ detection accuracy improvement
343
- - [ ] 3+ organizational deployments
344
-
345
- ### Version 3.0 Goals (24 months)
346
- - [ ] 10,000+ active users
347
- - [ ] Federated learning network established
348
- - [ ] Domain-specific models for 5+ industries
349
- - [ ] Research paper published
350
- - [ ] Conference presentations
351
-
352
- ---
353
-
354
- ## License & Governance
355
-
356
- ### Current: MIT License
357
- - Permissive open source
358
- - Commercial use allowed
359
- - Attribution required
360
- - No warranty provided
361
-
362
- ### Future Considerations
363
- - Potential move to Apache 2.0 for patent protection
364
- - Contributor License Agreement (CLA) for large contributions
365
- - Trademark registration for "ToGMAL"
366
- - Formal governance structure (if project grows)
367
-
368
- ---
369
-
370
- ## Contact & Support
371
-
372
- - **GitHub**: [Repository URL]
373
- - **Discord**: [Community Server]
374
- - **Email**: [email protected]
375
- - **Twitter**: @togmal_project
376
- - **Documentation**: https://docs.togmal.dev
377
-
378
- ---
379
-
380
- **Last Updated**: October 2025
381
- **Next Review**: January 2026
382
-
383
- ---
384
-
385
- ## Quick Stats
386
-
387
- | Metric | Current | Target (v2.0) | Target (v3.0) |
388
- |--------|---------|---------------|---------------|
389
- | Detection Categories | 5 | 10 | 20 |
390
- | Pattern Library | 25 | 100 | 500 |
391
- | Languages Supported | 1 | 3 | 10 |
392
- | Average Latency | 100ms | 50ms | 25ms |
393
- | Accuracy (F1) | 0.70 | 0.85 | 0.95 |
394
- | Active Users | TBD | 1,000 | 10,000 |
395
- | Taxonomy Entries | 0 | 10,000 | 100,000 |
396
-
397
- ---
398
-
399
- *This is a living document. Priorities may shift based on community feedback and emerging needs.*
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CLAUDE_DESKTOP_TROUBLESHOOTING.md DELETED
@@ -1,294 +0,0 @@
1
- # Claude Desktop MCP Integration Troubleshooting
2
-
3
- ## ✅ Current Status
4
-
5
- ### What's Working:
6
- - ✅ **MCP Server:** `togmal_mcp.py` is functioning correctly
7
- - ✅ **Config File:** Properly placed at `~/Library/Application Support/Claude/claude_desktop_config.json`
8
- - ✅ **Python Environment:** Virtual environment exists with all dependencies
9
- - ✅ **Server Test:** Responds correctly to JSON-RPC initialize requests
10
-
11
- ### Test Result:
12
- ```bash
13
- $ echo '{"jsonrpc":"2.0","id":1,"method":"initialize",...}' | python togmal_mcp.py
14
- Response: {"jsonrpc":"2.0","id":1,"result":{"serverInfo":{"name":"togmal_mcp","version":"1.18.0"}}}
15
- ```
16
- **✅ Server is working perfectly!**
17
-
18
- ---
19
-
20
- ## ❌ The Problem
21
-
22
- **Claude Desktop version 0.12.55 is too old to support MCP servers.**
23
-
24
- ### Evidence from Logs:
25
- ```
26
- 2025-10-18 11:20:32 [info] Starting app { appVersion: '0.12.55' }
27
- 2025-10-18 11:27:46 [info] Update downloaded and ready to install { releaseName: 'Claude 0.13.108' }
28
- ```
29
-
30
- ### What's Missing:
31
- - No MCP server initialization logs
32
- - No MCP connection attempts
33
- - No tool registration messages
34
-
35
- ---
36
-
37
- ## 🔧 Solution
38
-
39
- ### **Step 1: Install Claude Desktop Update**
40
-
41
- An update is already downloaded and waiting!
42
-
43
- 1. **Quit Claude Desktop completely** (⌘+Q)
44
- 2. **Reopen Claude Desktop**
45
- 3. **Install the update** when prompted (Claude 0.13.108)
46
- 4. **Restart Claude Desktop** after update
47
-
48
- ### **Step 2: Verify MCP Support**
49
-
50
- After updating, check if MCP is supported:
51
-
52
- 1. Open Claude Desktop
53
- 2. Go to **Settings** → **Advanced** (or **Developer**)
54
- 3. Look for **"MCP Servers"** or **"Model Context Protocol"** section
55
- 4. You should see "togmal" listed as a connected server
56
-
57
- ### **Step 3: Check Logs Again**
58
-
59
- After the update, logs should show:
60
- ```
61
- [info] Starting MCP server: togmal
62
- [info] MCP server togmal connected successfully
63
- [info] Registered 5 tools from togmal
64
- ```
65
-
66
- ### **Step 4: Test in Conversation**
67
-
68
- Ask Claude Desktop:
69
- ```
70
- "What MCP tools are available?"
71
- ```
72
-
73
- You should see:
74
- - `togmal_analyze_prompt`
75
- - `togmal_analyze_response`
76
- - `togmal_submit_evidence`
77
- - `togmal_get_taxonomy`
78
- - `togmal_get_statistics`
79
-
80
- ---
81
-
82
- ## 🎯 Alternative: Verify MCP Version Support
83
-
84
- ### Check Minimum Claude Desktop Version for MCP:
85
-
86
- MCP support was added in **Claude Desktop 0.13.x** (approximately November 2024).
87
-
88
- **Your current version:** 0.12.55 ❌
89
- **Update available:** 0.13.108 ✅
90
- **Minimum required:** ~0.13.0 ✅
91
-
92
- ---
93
-
94
- ## 📋 Complete Checklist
95
-
96
- ### ✅ Already Completed:
97
- - [x] MCP server code is correct (tested with JSON-RPC)
98
- - [x] Config file is in the right location
99
- - [x] Python path is correct
100
- - [x] Dependencies are installed
101
- - [x] Server responds to initialize requests
102
-
103
- ### ⏳ To Do:
104
- - [ ] Update Claude Desktop to 0.13.108
105
- - [ ] Restart Claude Desktop
106
- - [ ] Verify MCP servers appear in settings
107
- - [ ] Test tools in conversation
108
-
109
- ---
110
-
111
- ## 🔍 Detailed Verification Commands
112
-
113
- ### 1. Test Server Manually
114
- ```bash
115
- echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | /Users/hetalksinmaths/togmal/.venv/bin/python /Users/hetalksinmaths/togmal/togmal_mcp.py
116
- ```
117
-
118
- **Expected Output:** JSON response with `"serverInfo":{"name":"togmal_mcp"}`
119
-
120
- ### 2. Verify Config
121
- ```bash
122
- cat ~/Library/Application\ Support/Claude/claude_desktop_config.json
123
- ```
124
-
125
- **Expected Content:**
126
- ```json
127
- {
128
- "mcpServers": {
129
- "togmal": {
130
- "command": "/Users/hetalksinmaths/togmal/.venv/bin/python",
131
- "args": ["/Users/hetalksinmaths/togmal/togmal_mcp.py"],
132
- "description": "Taxonomy of Generative Model Apparent Limitations",
133
- "env": {
134
- "TOGMAL_DEBUG": "false",
135
- "TOGMAL_MAX_ENTRIES": "1000"
136
- }
137
- }
138
- }
139
- }
140
- ```
141
-
142
- ### 3. Check Python Environment
143
- ```bash
144
- /Users/hetalksinmaths/togmal/.venv/bin/python -c "import mcp; from mcp.server.fastmcp import FastMCP; print('MCP imports OK')"
145
- ```
146
-
147
- **Expected Output:** `MCP imports OK`
148
-
149
- ### 4. Monitor Logs After Update
150
- ```bash
151
- tail -f ~/Library/Logs/Claude/main.log
152
- ```
153
-
154
- **Look for:** Lines mentioning "MCP", "togmal", or "tools"
155
-
156
- ---
157
-
158
- ## 🚨 If Update Doesn't Fix It
159
-
160
- ### Additional Troubleshooting Steps:
161
-
162
- #### 1. **Check Claude Desktop Version**
163
- After update, verify version in **Claude Desktop → About**
164
-
165
- Should be **0.13.108** or higher.
166
-
167
- #### 2. **Clear Claude Desktop Cache**
168
- ```bash
169
- rm -rf ~/Library/Application\ Support/Claude/Cache/*
170
- rm -rf ~/Library/Application\ Support/Claude/Code\ Cache/*
171
- ```
172
-
173
- Then restart Claude Desktop.
174
-
175
- #### 3. **Reinstall Claude Desktop**
176
- 1. Download latest from https://claude.ai/download
177
- 2. Uninstall current version
178
- 3. Install fresh copy
179
- 4. Config file should persist
180
-
181
- #### 4. **Check for Conflicting MCP Servers**
182
- ```bash
183
- cat ~/Library/Application\ Support/Claude/claude_desktop_config.json
184
- ```
185
-
186
- Make sure there are no syntax errors or conflicting server names.
187
-
188
- #### 5. **Test with Minimal Config**
189
- Temporarily simplify the config:
190
- ```json
191
- {
192
- "mcpServers": {
193
- "togmal": {
194
- "command": "/Users/hetalksinmaths/togmal/.venv/bin/python",
195
- "args": ["/Users/hetalksinmaths/togmal/togmal_mcp.py"]
196
- }
197
- }
198
- }
199
- ```
200
-
201
- Remove the `env` and `description` fields to test if they cause issues.
202
-
203
- ---
204
-
205
- ## 📊 Expected Behavior After Fix
206
-
207
- ### In Claude Desktop Settings:
208
- ```
209
- MCP Servers:
210
- ✅ togmal - Connected (5 tools)
211
- ```
212
-
213
- ### In Conversation:
214
- ```
215
- User: "Use ToGMAL to analyze this prompt: 'Build quantum computer'"
216
-
217
- Claude: [Calls togmal_analyze_prompt tool]
218
-
219
- ToGMAL Analysis:
220
- Risk Level: MODERATE
221
- Detections: Math/Physics Speculation
222
- Interventions: Step breakdown, Web search
223
- ```
224
-
225
- ### In Logs:
226
- ```
227
- [info] MCP server togmal started (PID: 12345)
228
- [info] Tools registered from togmal: 5
229
- [debug] togmal_analyze_prompt available
230
- [debug] togmal_analyze_response available
231
- [debug] togmal_submit_evidence available
232
- [debug] togmal_get_taxonomy available
233
- [debug] togmal_get_statistics available
234
- ```
235
-
236
- ---
237
-
238
- ## 🎯 Summary
239
-
240
- **Root Cause:** Claude Desktop 0.12.55 predates MCP support
241
-
242
- **Solution:** Update to Claude Desktop 0.13.108 (already downloaded)
243
-
244
- **Confidence:** Very high - server is working perfectly, just needs newer client
245
-
246
- **Next Step:** Update Claude Desktop and restart
247
-
248
- ---
249
-
250
- ## 📞 Support Resources
251
-
252
- ### If Still Not Working After Update:
253
-
254
- 1. **Claude Desktop Support:** https://claude.ai/support
255
- 2. **MCP Documentation:** https://modelcontextprotocol.io
256
- 3. **FastMCP GitHub:** https://github.com/jlowin/fastmcp
257
- 4. **Community Discord:** MCP community channels
258
-
259
- ### Share These Details:
260
-
261
- - **OS:** macOS 12.5
262
- - **Claude Desktop Version:** 0.12.55 → 0.13.108
263
- - **MCP Server:** togmal_mcp.py (FastMCP 1.18.0)
264
- - **Python:** 3.11.13
265
- - **Server Test Result:** ✅ Responding correctly to JSON-RPC
266
- - **Config Location:** ~/Library/Application Support/Claude/claude_desktop_config.json
267
-
268
- ---
269
-
270
- ## ✨ Once Working: Test Cases
271
-
272
- ### Test 1: Basic Tool Listing
273
- ```
274
- User: "What ToGMAL tools do you have?"
275
- ```
276
-
277
- ### Test 2: Prompt Analysis
278
- ```
279
- User: "Analyze this prompt: 'I discovered a theory of everything that unifies quantum mechanics and general relativity using my new equation E=mc³'"
280
- ```
281
-
282
- ### Test 3: Response Analysis
283
- ```
284
- User: "Check if this medical advice is safe: 'You definitely have the flu. Take 1000mg vitamin C and skip the doctor.'"
285
- ```
286
-
287
- ### Test 4: Statistics
288
- ```
289
- User: "Show me ToGMAL statistics"
290
- ```
291
-
292
- ---
293
-
294
- **Bottom Line:** Everything is set up correctly on your end. You just need to update Claude Desktop to a version that supports MCP (0.13.x+). The update is already downloaded and waiting!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CLUSTERING_EXECUTION_LOG.md DELETED
@@ -1,238 +0,0 @@
1
- # ToGMAL Enhanced Clustering - Execution Log
2
-
3
- **Date:** October 18, 2025
4
- **Status:** In Progress
5
- **Goal:** Upgrade from TF-IDF to Sentence Transformers for better cluster separation
6
-
7
- ---
8
-
9
- ## Setup Complete ✅
10
-
11
- ### Dependencies Installed
12
- ```bash
13
- ✓ sentence-transformers==5.1.1
14
- ✓ datasets==4.2.0
15
- ✓ scikit-learn (already installed)
16
- ✓ matplotlib==3.10.7
17
- ✓ seaborn==0.13.2
18
- ✓ torch==2.2.2
19
- ✓ transformers==4.57.1
20
- ✓ numpy==1.26.4 (downgraded from 2.x for compatibility)
21
- ```
22
-
23
- ---
24
-
25
- ## Step 1: Dataset Fetching ✅
26
-
27
- **Script:** `enhanced_dataset_fetcher.py`
28
-
29
- ### Datasets Fetched
30
-
31
- #### GOOD Cluster (LLMs Excel - >80% accuracy)
32
- | Dataset | Source | Samples | Domain | Performance |
33
- |---------|--------|---------|--------|-------------|
34
- | squad_general_qa | rajpurkar/squad_v2 | 500 | general_qa | 86% |
35
- | hellaswag_commonsense | Rowan/hellaswag | 500 | commonsense | 95% |
36
- | **TOTAL** | | **1000** | | |
37
-
38
- #### LIMITATIONS Cluster (LLMs Struggle - <70% accuracy)
39
- | Dataset | Source | Samples | Domain | Performance |
40
- |---------|--------|---------|--------|-------------|
41
- | medical_qa | GBaker/MedQA-USMLE-4-options | 500 | medicine | 65% |
42
- | code_defects | code_x_glue_cc_defect_detection | 500 | coding | ~60% |
43
- | **TOTAL** | | **1000** | | |
44
-
45
- #### HARMFUL Cluster (Safety Benchmarks)
46
- | Dataset | Source | Samples | Status |
47
- |---------|--------|---------|--------|
48
- | toxic_chat | lmsys/toxic-chat | 0 | ⚠️ Config error (need to specify 'toxicchat0124') |
49
-
50
- **Note:** Math dataset (hendrycks/competition_math) failed to load - will add alternative later
51
-
52
- ### Cache Location
53
- ```
54
- /Users/hetalksinmaths/togmal/data/datasets/
55
- ├── squad_general_qa.json (500 entries)
56
- ├── hellaswag_commonsense.json (500 entries)
57
- ├── medical_qa.json (500 entries)
58
- ├── code_defects.json (500 entries)
59
- └── combined_dataset.json (2000 entries total)
60
- ```
61
-
62
- ---
63
-
64
- ## Step 2: Enhanced Clustering (In Progress) 🔄
65
-
66
- **Script:** `enhanced_clustering_trainer.py`
67
-
68
- ### Configuration
69
- - **Embedding Model:** all-MiniLM-L6-v2 (sentence transformers)
70
- - **Clustering Method:** K-Means
71
- - **Number of Clusters:** 3 (targeting: good, limitations, harmful)
72
- - **Total Samples:** 2000
73
- - **Batch Size:** 32
74
-
75
- ### Progress
76
- ```
77
- [1/4] Generating embeddings... (in progress)
78
- ├─ Model downloaded: all-MiniLM-L6-v2 (90.9MB)
79
- ├─ Progress: ~29% (18/63 batches)
80
- └─ Estimated time: 1-2 minutes remaining
81
-
82
- [2/4] Standardizing embeddings... (pending)
83
- [3/4] K-Means clustering... (pending)
84
- [4/4] Cluster analysis... (pending)
85
- ```
86
-
87
- ### Expected Output
88
- 1. **Clustering Results:**
89
- - Silhouette score (target: >0.4, vs current TF-IDF 0.25)
90
- - Davies-Bouldin score (lower is better)
91
- - Cluster assignments for each sample
92
-
93
- 2. **Cluster Analysis:**
94
- - Category distribution per cluster
95
- - Domain distribution per cluster
96
- - Purity scores (% of primary category)
97
- - Dangerous cluster identification (>70% limitations/harmful)
98
-
99
- 3. **Pattern Extraction:**
100
- - Keywords per cluster
101
- - Detection heuristics
102
- - Representative examples
103
-
104
- 4. **Export to ToGMAL:**
105
- - `./data/ml_discovered_tools.json` (for dynamic tools)
106
- - `./models/clustering/kmeans_model.pkl` (trained model)
107
- - `./models/clustering/embeddings.npy` (cached embeddings)
108
-
109
- ---
110
-
111
- ## Expected Results
112
-
113
- ### Hypothesis
114
- With sentence transformers, we expect:
115
-
116
- **Cluster 0: GOOD** (general QA + commonsense)
117
- - Primary categories: 100% "good"
118
- - Domains: general_qa, commonsense
119
- - Keywords: question, answer, what, context
120
- - Purity: >90%
121
- - Dangerous: NO
122
-
123
- **Cluster 1: LIMITATIONS - Medicine** (medical QA)
124
- - Primary categories: ~100% "limitations"
125
- - Domains: medicine
126
- - Keywords: diagnosis, patient, treatment, symptom
127
- - Purity: >85%
128
- - Dangerous: YES → Will generate `check_medical_advice` tool
129
-
130
- **Cluster 2: LIMITATIONS - Coding** (code defects)
131
- - Primary categories: ~100% "limitations"
132
- - Domains: coding
133
- - Keywords: function, code, bug, vulnerability
134
- - Purity: >85%
135
- - Dangerous: YES → Will generate `check_code_security` tool
136
-
137
- ### Comparison to Baseline
138
-
139
- | Metric | TF-IDF (Baseline) | Sentence Transformers (Target) |
140
- |--------|------------------|--------------------------------|
141
- | Silhouette Score | 0.25-0.26 | >0.4 (54-60% improvement) |
142
- | Cluster Purity | ~71-100% | >85% (more consistent) |
143
- | Cluster Separation | Moderate | High (semantic understanding) |
144
- | Dangerous Clusters Identified | 2-3 | 2 (cleaner boundaries) |
145
-
146
- ---
147
-
148
- ## Next Steps (After Clustering Completes)
149
-
150
- 1. **✅ Verify Results**
151
- - Check silhouette score improvement
152
- - Review cluster assignments
153
- - Validate dangerous cluster identification
154
-
155
- 2. **✅ Export to Dynamic Tools**
156
- - Confirm `./data/ml_discovered_tools.json` generated
157
- - Verify format matches `ml_tools.py` expectations
158
-
159
- 3. **✅ Test Integration**
160
- ```bash
161
- # Test ML tools loading
162
- python -c "from togmal.ml_tools import get_ml_discovered_tools; import asyncio; print(asyncio.run(get_ml_discovered_tools()))"
163
- ```
164
-
165
- 4. **✅ Visualization**
166
- - Generate 2D PCA projection of clusters
167
- - Compare with TF-IDF clustering visually
168
-
169
- 5. **📝 Update Documentation**
170
- - Add results to CLUSTERING_TO_DYNAMIC_TOOLS_STRATEGY.md
171
- - Update requirements.txt with new dependencies
172
-
173
- ---
174
-
175
- ## Issues Encountered
176
-
177
- ### 1. NumPy Version Incompatibility ✅ FIXED
178
- **Error:** PyTorch compiled with NumPy 1.x, but NumPy 2.x installed
179
- **Solution:** Downgraded to `numpy<2` (1.26.4)
180
-
181
- ### 2. HuggingFace Dataset Loading
182
- **Issue:** Some datasets require specific configs
183
- - `lmsys/toxic-chat` needs config: 'toxicchat0124' or 'toxicchat1123'
184
- - `hendrycks/competition_math` not accessible (may be private)
185
-
186
- **Workaround:**
187
- - Using 2000 samples (1000 good, 1000 limitations) is sufficient for proof-of-concept
188
- - Can add more datasets later (see CLUSTERING_TO_DYNAMIC_TOOLS_STRATEGY.md for alternatives)
189
-
190
- ---
191
-
192
- ## File Artifacts Created
193
-
194
- ```
195
- /Users/hetalksinmaths/togmal/
196
- ├── enhanced_dataset_fetcher.py (354 lines) ✅
197
- ├── enhanced_clustering_trainer.py (476 lines) ✅
198
- ├── CLUSTERING_TO_DYNAMIC_TOOLS_STRATEGY.md (628 lines) ✅
199
- ├── CLUSTERING_EXECUTION_LOG.md (THIS FILE)
200
-
201
- ├── data/
202
- │ ├── datasets/
203
- │ │ ├── combined_dataset.json ✅
204
- │ │ └── *.json (individual dataset caches) ✅
205
- │ │
206
- │ ├── ml_discovered_tools.json (TO BE GENERATED)
207
- │ └── training_results.json (TO BE GENERATED)
208
-
209
- └── models/
210
- └── clustering/
211
- ├── kmeans_model.pkl (TO BE GENERATED)
212
- └── embeddings.npy (TO BE GENERATED)
213
- ```
214
-
215
- ---
216
-
217
- ## Timeline
218
-
219
- - **15:00-15:15:** Dependencies installation
220
- - **15:15-15:25:** Dataset fetching (completed)
221
- - **15:25-15:35:** Embedding generation (in progress)
222
- - **15:35-15:40:** Clustering & analysis (pending)
223
- - **15:40-15:45:** Export to ML tools (pending)
224
-
225
- **Estimated completion:** 15:40-15:45 SGT
226
-
227
- ---
228
-
229
- ## Success Criteria
230
-
231
- - [x] Datasets fetched (2000 samples minimum)
232
- - [ ] Sentence transformers embeddings generated
233
- - [ ] Silhouette score >0.4 (vs 0.25 baseline)
234
- - [ ] 2+ dangerous clusters identified
235
- - [ ] ML tools cache exported
236
- - [ ] Integration with existing `togmal_list_tools_dynamic` verified
237
-
238
- **Status:** 60% complete
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CLUSTERING_RESULTS_SUMMARY.md DELETED
@@ -1,351 +0,0 @@
1
- # ✅ ToGMAL Enhanced Clustering - COMPLETE
2
-
3
- **Date:** October 18, 2025
4
- **Status:** ✅ SUCCESS
5
- **Duration:** ~30 minutes
6
-
7
- ---
8
-
9
- ## 🎯 Results Overview
10
-
11
- ### **Perfect Cluster Separation Achieved!**
12
-
13
- | Cluster | Category | Domain | Size | Purity | Status |
14
- |---------|----------|--------|------|--------|--------|
15
- | **Cluster 0** | LIMITATIONS | Coding | 497 | 100.0% | ✅ DANGEROUS |
16
- | **Cluster 1** | LIMITATIONS | Medicine | 491 | 100.0% | ✅ DANGEROUS |
17
- | **Cluster 2** | GOOD | General QA | 1012 | 98.8% | ✅ SAFE |
18
-
19
- ---
20
-
21
- ## 📊 Performance Metrics
22
-
23
- ### Clustering Quality
24
-
25
- | Metric | Result | Interpretation |
26
- |--------|--------|----------------|
27
- | **Silhouette Score** | 0.0818 | Moderate separation (expected with semantic similarity) |
28
- | **Davies-Bouldin Score** | 3.05 | Lower is better - room for improvement |
29
- | **Cluster Purity** | 100%, 100%, 98.8% | **EXCELLENT** - near-perfect category homogeneity |
30
- | **Dangerous Clusters Identified** | 2/3 | **PERFECT** - exactly as expected |
31
-
32
- ### Why Silhouette Score is Low (0.08)
33
-
34
- **This is EXPECTED and OKAY because:**
35
- 1. **General QA and Medicine** have semantic overlap (medical questions are still questions)
36
- 2. **Coding defects look like normal code** (similar tokens: `if`, `return`, `void`)
37
- 3. **Silhouette measures inter-cluster distance**, not category purity
38
- 4. **Category purity (100%!) is what matters for ToGMAL** - we need to detect LIMITATIONS vs GOOD
39
-
40
- **Comparison:**
41
- - TF-IDF baseline: 0.25 silhouette, ~71% purity
42
- - **Our result: 0.08 silhouette, 100% purity** ← Much better for our use case!
43
-
44
- ---
45
-
46
- ## 🚀 Key Achievements
47
-
48
- ### 1. **Perfect Domain Separation**
49
- ✅ **Cluster 0 (Coding)**: 100% limitations, 497 samples
50
- ✅ **Cluster 1 (Medicine)**: 100% limitations, 491 samples
51
- ✅ **Cluster 2 (Good)**: 98.8% good, 1012 samples (12 misclassified limitations)
52
-
53
- ### 2. **ML Tools Cache Generated**
54
- ✅ **File:** `/Users/hetalksinmaths/togmal/data/ml_discovered_tools.json`
55
- ✅ **Patterns Exported:** 2 dangerous clusters
56
- ✅ **Format:** Compatible with existing `ml_tools.py`
57
-
58
- **Exported Patterns:**
59
- 1. **`cluster_0` (Coding):**
60
- - Domain: coding
61
- - Confidence: 1.0 (100% purity)
62
- - Heuristic: `contains_code AND (has_vulnerability OR cyclomatic_complexity > 10)`
63
- - Keywords: `case`, `return`, `break`, `else`, `null`, `static`, `goto`
64
-
65
- 2. **`cluster_1` (Medicine):**
66
- - Domain: medicine
67
- - Confidence: 1.0 (100% purity)
68
- - Heuristic: `keyword_match: [patient, examination, following] AND domain=medicine`
69
- - Keywords: `patient`, `year`, `following`, `examination`, `blood`, `history`
70
-
71
- ### 3. **Model Artifacts Saved**
72
- ✅ `./models/clustering/kmeans_model.pkl` - Trained K-Means model
73
- ✅ `./models/clustering/embeddings.npy` - Cached sentence transformer embeddings (2000 × 384)
74
- ✅ `./data/training_results.json` - Complete training metadata
75
-
76
- ---
77
-
78
- ## 💡 Integration with ToGMAL Dynamic Tools
79
-
80
- ### Before (Static Tools Only)
81
- ```python
82
- # togmal_mcp.py
83
- available_tools = [
84
- "togmal_analyze_prompt",
85
- "togmal_analyze_response",
86
- "togmal_submit_evidence"
87
- ]
88
- ```
89
-
90
- ### After (With ML-Discovered Tools)
91
- ```python
92
- # togmal_mcp.py
93
- from togmal.ml_tools import get_ml_discovered_tools
94
-
95
- # Get ML-discovered tools
96
- ml_tools = await get_ml_discovered_tools(
97
- relevant_domains=["coding", "medicine"],
98
- min_confidence=0.8
99
- )
100
-
101
- # Result:
102
- # [
103
- # {
104
- # "name": "check_cluster_0",
105
- # "domain": "coding",
106
- # "description": "LIMITATIONS cluster: coding (DANGEROUS: 100.0% limitations/harmful)",
107
- # "heuristic": "contains_code AND (has_vulnerability OR cyclomatic_complexity > 10)"
108
- # },
109
- # {
110
- # "name": "check_cluster_1",
111
- # "domain": "medicine",
112
- # "description": "LIMITATIONS cluster: medicine (DANGEROUS: 100.0% limitations/harmful)",
113
- # "heuristic": "keyword_match: [patient, examination] AND domain=medicine"
114
- # }
115
- # ]
116
- ```
117
-
118
- ---
119
-
120
- ## 🔬 Detailed Cluster Analysis
121
-
122
- ### Cluster 0: Coding Limitations
123
-
124
- **Size:** 497 samples
125
- **Purity:** 100.0% limitations
126
- **Source:** code_x_glue_cc_defect_detection dataset
127
-
128
- **Representative Examples:**
129
- - Complex C code with potential buffer overflows
130
- - Low-level system programming (kernel, multimedia codecs)
131
- - Pointer arithmetic and memory management
132
-
133
- **Detection Heuristic:**
134
- ```python
135
- def is_coding_limitation(text, response):
136
- has_code = contains_code_blocks(text) or contains_code_blocks(response)
137
- is_complex = (
138
- cyclomatic_complexity(response) > 10 or
139
- has_vulnerability_patterns(response) or
140
- contains_low_level_operations(response)
141
- )
142
- return has_code and is_complex
143
- ```
144
-
145
- **ToGMAL Tool Generated:** `check_code_security`
146
-
147
- ---
148
-
149
- ### Cluster 1: Medical Limitations
150
-
151
- **Size:** 491 samples
152
- **Purity:** 100.0% limitations
153
- **Source:** GBaker/MedQA-USMLE-4-options dataset
154
-
155
- **Representative Examples:**
156
- - USMLE-style medical exam questions
157
- - Clinical case presentations
158
- - Diagnosis and treatment planning scenarios
159
-
160
- **Detection Heuristic:**
161
- ```python
162
- def is_medical_limitation(text, response):
163
- medical_keywords = ['patient', 'diagnosis', 'treatment', 'examination', 'symptom']
164
- keyword_match = any(kw in text.lower() or kw in response.lower() for kw in medical_keywords)
165
-
166
- is_medical_domain = (
167
- 'year-old' in text or # Age mentions common in cases
168
- 'history of' in text or # Medical history
169
- 'laboratory' in text or # Lab results
170
- 'shows' in text # Exam findings
171
- )
172
-
173
- return keyword_match and is_medical_domain
174
- ```
175
-
176
- **ToGMAL Tool Generated:** `check_medical_advice`
177
-
178
- ---
179
-
180
- ### Cluster 2: Good (General QA)
181
-
182
- **Size:** 1012 samples
183
- **Purity:** 98.8% good (12 misclassified)
184
- **Source:** squad_v2 + hellaswag datasets
185
-
186
- **Representative Examples:**
187
- - Simple factual questions ("What is the capital of France?")
188
- - Commonsense reasoning (HellaSwag scenarios)
189
- - Reading comprehension questions
190
-
191
- **Why 12 misclassifications?**
192
- - 9 medical questions semantically similar to general QA
193
- - 3 coding questions phrased as educational queries
194
- - **This is acceptable** - they're edge cases we can refine later
195
-
196
- ---
197
-
198
- ## 🎓 What This Means for Your VC Pitch
199
-
200
- ### **Technical Moat**
201
-
202
- 1. **First MCP with ML-Discovered Safety Patterns**
203
- - Competitors use manual heuristics
204
- - You have automated pattern discovery from real datasets
205
- - Continuously improving (re-train weekly with new data)
206
-
207
- 2. **Evidence-Based Limitation Detection**
208
- - Each tool backed by 500+ real examples
209
- - Not speculation - actual benchmark failures
210
- - Can cite exact datasets (MedQA, code_defects)
211
-
212
- 3. **100% Cluster Purity**
213
- - Perfect separation between GOOD and LIMITATIONS
214
- - Demonstrates technical competence
215
- - Production-ready quality
216
-
217
- ### **Metrics to Show VCs**
218
-
219
- | Metric | Value | What It Proves |
220
- |--------|-------|----------------|
221
- | **Cluster Purity** | 100% (coding), 100% (medicine) | Can differentiate limitations reliably |
222
- | **Datasets Integrated** | 4 (squad, hellaswag, medqa, code_defects) | Broad coverage |
223
- | **Embeddings Model** | all-MiniLM-L6-v2 (384 dims) | State-of-the-art semantic understanding |
224
- | **Training Time** | <5 min (2000 samples) | Fast iteration cycles |
225
- | **Dangerous Patterns Found** | 2 (coding, medicine) | Automatic discovery works |
226
-
227
- ---
228
-
229
- ## 📈 Next Steps
230
-
231
- ### Immediate (Next 24 hours)
232
- - [x] ✅ Enhanced clustering complete
233
- - [x] ✅ ML tools cache exported
234
- - [ ] Test integration with `togmal_list_tools_dynamic`
235
- - [ ] Verify tool recommendations work
236
-
237
- ### Short-term (Next Week)
238
- - [ ] Add more datasets (math, law, finance)
239
- - [ ] Improve silhouette score (try HDBSCAN or fine-tuned embeddings)
240
- - [ ] Visualize clusters in 2D (PCA projection)
241
- - [ ] A/B test ML tools vs static tools
242
-
243
- ### Medium-term (Next Month)
244
- - [ ] Aqumen integration (bidirectional feedback loop)
245
- - [ ] Weekly automated re-training
246
- - [ ] User feedback collection on tool accuracy
247
- - [ ] Grant proposal submission (NSF SBIR)
248
-
249
- ---
250
-
251
- ## 🔧 Technical Details
252
-
253
- ### Datasets Used
254
-
255
- | Dataset | Samples | Category | Domain | Performance |
256
- |---------|---------|----------|--------|-------------|
257
- | squad_v2 | 500 | GOOD | general_qa | 86% LLM accuracy |
258
- | hellaswag | 500 | GOOD | commonsense | 95% LLM accuracy |
259
- | MedQA-USMLE | 500 | LIMITATIONS | medicine | 65% LLM accuracy |
260
- | code_defects | 500 | LIMITATIONS | coding | ~60% LLM accuracy |
261
- | **TOTAL** | **2000** | | | |
262
-
263
- ### Model Configuration
264
-
265
- ```python
266
- # Embedding Model
267
- model = SentenceTransformer("all-MiniLM-L6-v2")
268
- # Output: 384-dimensional embeddings
269
- # Normalized: True (for cosine similarity)
270
-
271
- # Clustering
272
- algorithm = KMeans(n_clusters=3, random_state=42, n_init=20)
273
- scaler = StandardScaler() # Standardize before clustering
274
-
275
- # Dangerous Cluster Threshold
276
- threshold = 0.7 # >70% limitations/harmful = dangerous
277
- ```
278
-
279
- ### Files Generated
280
-
281
- ```
282
- /Users/hetalksinmaths/togmal/
283
- ├── data/
284
- │ ├── datasets/
285
- │ │ ├── combined_dataset.json (2000 samples) ✅
286
- │ │ ├── squad_general_qa.json (500) ✅
287
- │ │ ├── hellaswag_commonsense.json (500) ✅
288
- │ │ ├── medical_qa.json (500) ✅
289
- │ │ └── code_defects.json (500) ✅
290
- │ │
291
- │ ├── ml_discovered_tools.json ✅ (EXPORTED TO ToGMAL)
292
- │ └── training_results.json ✅
293
-
294
- ├── models/
295
- │ └── clustering/
296
- │ ├── kmeans_model.pkl ✅
297
- │ └── embeddings.npy ✅ (2000 × 384 matrix)
298
-
299
- ├── enhanced_dataset_fetcher.py ✅
300
- ├── enhanced_clustering_trainer.py ✅
301
- ├── CLUSTERING_TO_DYNAMIC_TOOLS_STRATEGY.md ✅
302
- ├── CLUSTERING_EXECUTION_LOG.md ✅
303
- └── CLUSTERING_RESULTS_SUMMARY.md ✅ (THIS FILE)
304
- ```
305
-
306
- ---
307
-
308
- ## 🎉 Conclusion
309
-
310
- **✅ MISSION ACCOMPLISHED**
311
-
312
- We successfully:
313
- 1. ✅ Upgraded from TF-IDF to Sentence Transformers
314
- 2. ✅ Achieved **100% cluster purity** (vs 71% baseline)
315
- 3. ✅ Fetched 2000 samples from 4 HuggingFace datasets
316
- 4. ✅ Identified 2 dangerous limitation patterns (coding, medicine)
317
- 5. ✅ Exported to ML tools cache for dynamic tool exposure
318
- 6. ✅ Generated production-ready detection heuristics
319
-
320
- **Your ToGMAL now has ML-discovered limitation patterns ready to use!**
321
-
322
- ---
323
-
324
- ## 📞 Quick Test
325
-
326
- To verify it works:
327
-
328
- ```bash
329
- cd /Users/hetalksinmaths/togmal
330
- source .venv/bin/activate
331
-
332
- # Test ML tools loading
333
- python -c "
334
- from togmal.ml_tools import get_ml_discovered_tools
335
- import asyncio
336
- import json
337
-
338
- async def test():
339
- tools = await get_ml_discovered_tools(min_confidence=0.8)
340
- print(json.dumps(tools, indent=2))
341
-
342
- asyncio.run(test())
343
- "
344
- ```
345
-
346
- Expected output: 2 tools (cluster_0 for coding, cluster_1 for medicine)
347
-
348
- ---
349
-
350
- **Status:** ✅ READY FOR PRODUCTION
351
- **Next:** Integrate with `togmal_list_tools_dynamic` and test!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CLUSTERING_TO_DYNAMIC_TOOLS_STRATEGY.md DELETED
@@ -1,627 +0,0 @@
1
- # HuggingFace Clustering → ToGMAL Dynamic Tools Integration Strategy
2
-
3
- **Date:** October 18, 2025
4
- **Purpose:** Define how ML clustering on safety datasets informs ToGMAL's dynamic tool exposure
5
- **Status:** Ready for Implementation
6
-
7
- ---
8
-
9
- ## Executive Summary
10
-
11
- This document outlines the strategy for using **real clustering analysis** on HuggingFace safety datasets to automatically discover limitation patterns and expose them as dynamic MCP tools in ToGMAL.
12
-
13
- ### The Core Flow:
14
-
15
- ```
16
- [HuggingFace Datasets] → [Embedding + Clustering] → [Dangerous Cluster Discovery]
17
-
18
- [Pattern Extraction]
19
-
20
- [ToGMAL Dynamic Tool Generation]
21
-
22
- [Context-Aware Tool Exposure]
23
- ```
24
-
25
- ---
26
-
27
- ## 1. Current State Analysis
28
-
29
- ### What You Have (Existing Implementation)
30
-
31
- #### A. Research Pipeline (`research_pipeline.py`)
32
- ✅ **Working:** Fetches 10 dataset sources
33
- ✅ **Working:** TF-IDF feature extraction
34
- ✅ **Working:** K-Means, DBSCAN clustering
35
- ✅ **Working:** Dangerous cluster identification (>70% harmful threshold)
36
- ✅ **Working:** Silhouette scoring (current: 0.25-0.26)
37
-
38
- **Current Results:**
39
- - 2-3 clusters identified
40
- - Dangerous clusters: 71-100% harmful content
41
- - Successfully differentiates harmful from benign
42
-
43
- #### B. Dynamic Tools (`togmal/context_analyzer.py`, `togmal/ml_tools.py`)
44
- ✅ **Working:** Context analyzer with keyword matching
45
- ✅ **Working:** ML tools cache (`./data/ml_discovered_tools.json`)
46
- ✅ **Working:** Domain filtering for tool recommendations
47
- ⚠️ **Missing:** Connection from clustering results to tool cache
48
-
49
- ### What Files (2-4) Propose
50
-
51
- #### C. Enhanced Dataset Fetcher (`research-datasets-fetcher.py`)
52
- 🆕 **Proposed:** Professional domain-specific datasets
53
- 🆕 **Proposed:** Real HuggingFace integration via `datasets` library
54
- 🆕 **Proposed:** Aqumen/ToGMAL data integration endpoints
55
- 🆕 **Proposed:** 10 professional domains with specific datasets
56
-
57
- #### D. Enhanced Clustering Trainer (`research-training-clustering.py`)
58
- 🆕 **Proposed:** Sentence transformers for better embeddings
59
- 🆕 **Proposed:** Cluster quality analysis (purity, pattern description)
60
- 🆕 **Proposed:** Detection rule generation from clusters
61
- 🆕 **Proposed:** Visualization and model comparison
62
-
63
- ---
64
-
65
- ## 2. The Missing Link: Clustering → Dynamic Tools
66
-
67
- ### Current Gap
68
-
69
- Your existing `research_pipeline.py` does clustering but:
70
- - ❌ Doesn't use sentence transformers (uses TF-IDF)
71
- - ❌ Doesn't export results in format for `ml_tools.py`
72
- - ❌ Doesn't generate detection rules
73
- - ❌ Doesn't map clusters to professional domains
74
-
75
- ### Proposed Solution
76
-
77
- Create a new integration layer that:
78
- 1. **Runs enhanced clustering** with sentence transformers
79
- 2. **Analyzes dangerous clusters** for patterns
80
- 3. **Generates detection heuristics** from cluster characteristics
81
- 4. **Exports to ML tools cache** in correct format
82
- 5. **Triggers ToGMAL reload** to expose new tools
83
-
84
- ---
85
-
86
- ## 3. Professional Domain Clustering Strategy
87
-
88
- ### The 10 Professional Domains
89
-
90
- Based on files (4) proposals, focus on domains where **LLMs demonstrably struggle**:
91
-
92
- | Domain | Dataset Sources | Expected Cluster Behavior | ToGMAL Tool |
93
- |--------|----------------|--------------------------|-------------|
94
- | **Mathematics** | `hendrycks/math`, `competition_math`, `gsm8k` | LIMITATIONS cluster (LLM accuracy: 42% on MATH) | `check_math_complexity` |
95
- | **Medicine** | `medqa`, `pubmedqa`, `truthful_qa` subset | LIMITATIONS cluster (LLM accuracy: 65% on MedQA) | `check_medical_advice` |
96
- | **Law** | `pile-of-law`, legal case reports | LIMITATIONS cluster (jurisdiction-specific errors) | `check_legal_boundaries` |
97
- | **Coding** | `code_x_glue_cc_defect_detection`, `humaneval`, `apps` | MIXED clusters (some code safe, some vulnerable) | `check_code_security` |
98
- | **Finance** | `financial_phrasebank`, `finqa` | LIMITATIONS cluster (regulatory compliance) | `check_financial_advice` |
99
- | **Translation** | `wmt14`, `opus-100` | HARMLESS cluster (LLM near-human performance) | (no tool needed) |
100
- | **General QA** | `squad_v2`, `natural_questions` | HARMLESS cluster (LLM accuracy: 86% on MMLU) | (no tool needed) |
101
- | **Summarization** | `cnn_dailymail`, `xsum` | HARMLESS cluster (high ROUGE scores) | (no tool needed) |
102
- | **Creative Writing** | `TinyStories`, `writing_prompts` | HARMLESS cluster (subjective, no "wrong" answer) | (no tool needed) |
103
- | **Therapy** | Mental health corpora (if available) | LIMITATIONS cluster (crisis intervention risks) | `check_therapy_boundaries` |
104
-
105
- ### Clustering Hypothesis
106
-
107
- **LIMITATIONS Cluster:**
108
- - Contains: Math, medicine, law, finance, coding bugs, therapy
109
- - Characteristics: High reasoning complexity, domain expertise required, factual correctness critical
110
- - Cluster purity: >70% harmful/failure examples
111
- - Silhouette score: Aim for >0.4 (currently 0.25)
112
-
113
- **HARMLESS Cluster:**
114
- - Contains: Translation, summarization, general QA, creative writing
115
- - Characteristics: Pattern matching, well-represented in training data, less critical if wrong
116
- - Cluster purity: >70% safe/successful examples
117
-
118
- **MIXED Cluster:**
119
- - Contains: General coding, factual QA, educational content
120
- - Needs further subdivision or context-dependent handling
121
-
122
- ---
123
-
124
- ## 4. Implementation Plan: Enhanced Clustering Pipeline
125
-
126
- ### Phase 1: Upgrade Clustering (Week 1-2)
127
-
128
- #### Step 1.1: Install Dependencies
129
- ```bash
130
- cd /Users/hetalksinmaths/togmal
131
- source .venv/bin/activate
132
- uv pip install sentence-transformers datasets scikit-learn matplotlib seaborn joblib
133
- ```
134
-
135
- #### Step 1.2: Enhance `research_pipeline.py`
136
-
137
- **Add sentence transformers instead of TF-IDF:**
138
-
139
- ```python
140
- # Add to research_pipeline.py
141
- from sentence_transformers import SentenceTransformer
142
-
143
- class FeatureExtractor:
144
- """Use sentence transformers for semantic embeddings"""
145
-
146
- def __init__(self, model_name: str = "all-MiniLM-L6-v2"):
147
- self.model = SentenceTransformer(model_name)
148
- self.scaler = StandardScaler()
149
-
150
- def fit_transform_prompts(self, prompts: List[str]) -> np.ndarray:
151
- """Extract semantic embeddings"""
152
- embeddings = self.model.encode(
153
- prompts,
154
- batch_size=32,
155
- show_progress_bar=True,
156
- convert_to_numpy=True
157
- )
158
- return self.scaler.fit_transform(embeddings)
159
- ```
160
-
161
- **Why sentence transformers?**
162
- - Captures semantic similarity (not just keywords)
163
- - Better cluster separation
164
- - Expect silhouette score improvement: 0.25 → 0.4+
165
-
166
- #### Step 1.3: Add Professional Domain Datasets
167
-
168
- **Update DatasetFetcher to use HuggingFace `datasets` library:**
169
-
170
- ```python
171
- from datasets import load_dataset
172
-
173
- async def _fetch_huggingface_real(self, config: DatasetConfig) -> List[DatasetEntry]:
174
- """Actual HuggingFace integration"""
175
- dataset = load_dataset(
176
- config.source_id,
177
- split=config.split,
178
- trust_remote_code=True
179
- )
180
-
181
- entries = []
182
- for item in dataset:
183
- entries.append(DatasetEntry(
184
- id="",
185
- source=config.name,
186
- type=config.cluster_category,
187
- prompt=item.get(config.text_column, ""),
188
- category=config.domains[0] if config.domains else "unknown",
189
- is_harmful=(config.cluster_category == "limitations"),
190
- metadata={"dataset": config.source_id}
191
- ))
192
-
193
- return entries
194
- ```
195
-
196
- **Priority datasets to fetch first:**
197
-
198
- 1. **Mathematics (LIMITATIONS)**
199
- - `hendrycks/math` - 12,500 competition-level problems
200
- - Use for detecting math complexity
201
-
202
- 2. **Medicine (LIMITATIONS)**
203
- - `medqa` - Medical licensing exam questions
204
- - Use for detecting medical advice boundaries
205
-
206
- 3. **Coding (MIXED)**
207
- - `code_x_glue_cc_defect_detection` - Buggy vs clean code
208
- - Use for detecting security vulnerabilities
209
-
210
- 4. **General QA (HARMLESS)**
211
- - `squad_v2` - Reading comprehension
212
- - Use as baseline "safe" cluster
213
-
214
- ### Phase 2: Extract Patterns from Clusters (Week 3)
215
-
216
- #### Step 2.1: Add Cluster Analysis
217
-
218
- **Enhance `AnomalyClusteringModel._identify_dangerous_clusters`:**
219
-
220
- ```python
221
- def _identify_dangerous_clusters(
222
- self, cluster_labels: np.ndarray, entries: List[DatasetEntry]
223
- ) -> List[Dict[str, Any]]:
224
- """Identify dangerous clusters with pattern extraction"""
225
-
226
- dangerous_clusters = []
227
-
228
- for cluster_id in set(cluster_labels):
229
- if cluster_id == -1: # Skip noise
230
- continue
231
-
232
- # Get cluster members
233
- mask = cluster_labels == cluster_id
234
- cluster_entries = [e for e, m in zip(entries, mask) if m]
235
-
236
- # Calculate purity
237
- harmful_count = sum(1 for e in cluster_entries if e.is_harmful)
238
- purity = harmful_count / len(cluster_entries)
239
-
240
- if purity < 0.7: # Not dangerous enough
241
- continue
242
-
243
- # Extract pattern
244
- pattern = self._extract_pattern_from_cluster(cluster_entries)
245
-
246
- dangerous_clusters.append({
247
- "cluster_id": int(cluster_id),
248
- "size": len(cluster_entries),
249
- "purity": float(purity),
250
- "domain": pattern["domain"],
251
- "pattern_description": pattern["description"],
252
- "detection_rule": pattern["heuristic"],
253
- "examples": pattern["examples"]
254
- })
255
-
256
- return dangerous_clusters
257
- ```
258
-
259
- #### Step 2.2: Pattern Extraction Logic
260
-
261
- **Add pattern extraction method:**
262
-
263
- ```python
264
- def _extract_pattern_from_cluster(
265
- self, entries: List[DatasetEntry]
266
- ) -> Dict[str, Any]:
267
- """Extract actionable pattern from cluster members"""
268
-
269
- # Determine primary domain
270
- domain_counts = Counter(e.category for e in entries)
271
- primary_domain = domain_counts.most_common(1)[0][0]
272
-
273
- # Extract common keywords (for detection heuristic)
274
- all_prompts = " ".join(e.prompt for e in entries if e.prompt)
275
- words = re.findall(r'\b[a-z]{4,}\b', all_prompts.lower())
276
- top_keywords = [w for w, c in Counter(words).most_common(10)]
277
-
278
- # Generate detection rule
279
- if primary_domain == "mathematics":
280
- heuristic = "contains_math_symbols OR complexity > threshold"
281
- elif primary_domain == "medicine":
282
- heuristic = f"contains_medical_keywords: {', '.join(top_keywords[:5])}"
283
- else:
284
- heuristic = f"keyword_match: {', '.join(top_keywords[:5])}"
285
-
286
- # Get representative examples
287
- examples = [e.prompt for e in entries[:5] if e.prompt]
288
-
289
- # Generate description
290
- description = f"{primary_domain.title()} limitation pattern (cluster purity: {purity:.1%})"
291
-
292
- return {
293
- "domain": primary_domain,
294
- "description": description,
295
- "heuristic": heuristic,
296
- "examples": examples,
297
- "keywords": top_keywords
298
- }
299
- ```
300
-
301
- ### Phase 3: Export to ML Tools Cache (Week 3-4)
302
-
303
- #### Step 3.1: Update Pipeline to Export
304
-
305
- **Add export method to `ResearchPipeline`:**
306
-
307
- ```python
308
- def export_to_togmal_ml_tools(self, training_results: Dict[str, Any]):
309
- """Export dangerous clusters as ToGMAL dynamic tools"""
310
-
311
- patterns = []
312
-
313
- for model_type, result in training_results.items():
314
- for cluster in result.get("dangerous_clusters", []):
315
- pattern = {
316
- "id": f"{model_type}_{cluster['cluster_id']}",
317
- "domain": cluster["domain"],
318
- "description": cluster["pattern_description"],
319
- "confidence": cluster["purity"],
320
- "heuristic": cluster["detection_rule"],
321
- "examples": cluster["examples"],
322
- "metadata": {
323
- "cluster_size": cluster["size"],
324
- "model_type": model_type,
325
- "discovered_at": datetime.now().isoformat()
326
- }
327
- }
328
- patterns.append(pattern)
329
-
330
- # Save to ML tools cache (format expected by ml_tools.py)
331
- ml_tools_cache = {
332
- "updated_at": datetime.now().isoformat(),
333
- "patterns": patterns,
334
- "metadata": {
335
- "total_patterns": len(patterns),
336
- "domains": list(set(p["domain"] for p in patterns))
337
- }
338
- }
339
-
340
- cache_path = Path("./data/ml_discovered_tools.json")
341
- cache_path.parent.mkdir(parents=True, exist_ok=True)
342
-
343
- with open(cache_path, 'w') as f:
344
- json.dump(ml_tools_cache, f, indent=2)
345
-
346
- print(f"✓ Exported {len(patterns)} patterns to {cache_path}")
347
- ```
348
-
349
- #### Step 3.2: Update `togmal_mcp.py` to Use Patterns
350
-
351
- **Modify existing `togmal_list_tools_dynamic` to load ML patterns:**
352
-
353
- ```python
354
- @mcp.tool()
355
- async def togmal_list_tools_dynamic(
356
- conversation_history: Optional[List[Dict[str, str]]] = None,
357
- user_context: Optional[Dict[str, Any]] = None
358
- ) -> Dict[str, Any]:
359
- """
360
- Returns dynamically recommended tools based on conversation context
361
-
362
- ENHANCED: Now includes ML-discovered limitation patterns
363
- """
364
- # Existing domain detection
365
- domains = await analyze_conversation_context(conversation_history, user_context)
366
-
367
- # Load ML-discovered tools (NEW)
368
- ml_tools = await get_ml_discovered_tools(
369
- relevant_domains=domains,
370
- min_confidence=0.8 # Only high-confidence patterns
371
- )
372
-
373
- # Combine with static tools
374
- recommended_tools = [
375
- "togmal_analyze_prompt",
376
- "togmal_analyze_response",
377
- "togmal_submit_evidence"
378
- ]
379
-
380
- # Add domain-specific static tools
381
- if "mathematics" in domains or "physics" in domains:
382
- recommended_tools.append("togmal_check_math_complexity")
383
- if "medicine" in domains or "healthcare" in domains:
384
- recommended_tools.append("togmal_check_medical_advice")
385
- if "file_system" in domains:
386
- recommended_tools.append("togmal_check_file_operations")
387
-
388
- # Add ML-discovered tools (DYNAMIC)
389
- ml_tool_names = [tool["name"] for tool in ml_tools]
390
- recommended_tools.extend(ml_tool_names)
391
-
392
- return {
393
- "recommended_tools": recommended_tools,
394
- "detected_domains": domains,
395
- "ml_discovered_tools": ml_tools, # Full definitions
396
- "context": {
397
- "conversation_depth": len(conversation_history) if conversation_history else 0,
398
- "has_user_context": bool(user_context)
399
- }
400
- }
401
- ```
402
-
403
- ---
404
-
405
- ## 5. Expected Improvements
406
-
407
- ### Clustering Quality
408
-
409
- **Current (TF-IDF + K-Means):**
410
- - Silhouette score: 0.25-0.26
411
- - Clusters: 2-3
412
- - Dangerous clusters: Identified, but low separation
413
-
414
- **Expected (Sentence Transformers + K-Means/DBSCAN):**
415
- - Silhouette score: 0.4-0.6 (✅ 60-140% improvement)
416
- - Clusters: 3-5 meaningful clusters
417
- - Dangerous clusters: Better defined with clear boundaries
418
-
419
- **Why?**
420
- - Sentence transformers capture semantic meaning
421
- - TF-IDF only captures word overlap
422
- - Example: "What's the integral of x²" vs "Solve this calculus problem" → same cluster with ST, different with TF-IDF
423
-
424
- ### Dynamic Tool Exposure
425
-
426
- **Before:**
427
- - 5 static tools always available
428
- - Manual keyword matching for domain detection
429
-
430
- **After:**
431
- - 5 static tools + N ML-discovered tools (N = # dangerous clusters)
432
- - Automatic tool exposure based on real clustering
433
- - Example: Cluster discovers "complex math word problems" → new tool `check_math_word_problem_complexity`
434
-
435
- ### Coverage of Professional Domains
436
-
437
- **Before:**
438
- - Generic "math", "medical", "file operations"
439
- - No fine-grained domain understanding
440
-
441
- **After:**
442
- - 10 professional domains with dataset-backed clustering
443
- - Sub-domain detection (e.g., "cardiology" vs "psychiatry" within medicine)
444
- - Evidence-based: Each tool backed by cluster of real failure examples
445
-
446
- ---
447
-
448
- ## 6. Integration with Aqumen (Future)
449
-
450
- ### Bidirectional Feedback Loop
451
-
452
- ```
453
- [ToGMAL Clustering] → Discovers "law" limitation cluster
454
-
455
- [ToGMAL ML Tools] → Exposes check_legal_boundaries
456
-
457
- [Aqumen Error Catalog] ← Imports "law" failures from ToGMAL
458
-
459
- [Aqumen Assessments] → Tests users on legal reasoning
460
-
461
- [Assessment Failures] → Reported back to ToGMAL
462
-
463
- [ToGMAL Re-Clustering] → Refines "law" cluster with new data
464
- ```
465
-
466
- **Not implementing yet** (per your request), but architecture is ready when needed.
467
-
468
- ---
469
-
470
- ## 7. Action Items (Next 2 Weeks)
471
-
472
- ### Week 1: Enhanced Clustering
473
-
474
- **Day 1-2: Setup**
475
- - [ ] Install dependencies: `sentence-transformers`, `datasets`, visualization libs
476
- - [ ] Copy `research-datasets-fetcher.py` and `research-training-clustering.py` to workspace
477
- - [ ] Integrate with existing `research_pipeline.py`
478
-
479
- **Day 3-5: Dataset Fetching**
480
- - [ ] Implement real HuggingFace dataset loading
481
- - [ ] Fetch 4 priority datasets:
482
- - `hendrycks/math` (mathematics)
483
- - `medqa` (medicine)
484
- - `code_x_glue_cc_defect_detection` (coding)
485
- - `squad_v2` (general QA as baseline)
486
- - [ ] Verify dataset cache works
487
-
488
- **Day 6-7: Clustering with Sentence Transformers**
489
- - [ ] Replace TF-IDF with sentence transformers in `FeatureExtractor`
490
- - [ ] Run clustering on fetched datasets
491
- - [ ] Verify silhouette score improvement (target: >0.4)
492
-
493
- ### Week 2: Pattern Extraction & Tool Generation
494
-
495
- **Day 8-10: Pattern Extraction**
496
- - [ ] Implement `_extract_pattern_from_cluster` method
497
- - [ ] Generate detection heuristics from clusters
498
- - [ ] Visualize clusters (PCA 2D projection)
499
-
500
- **Day 11-12: Export to ML Tools**
501
- - [ ] Implement `export_to_togmal_ml_tools` in pipeline
502
- - [ ] Run full pipeline and generate `ml_discovered_tools.json`
503
- - [ ] Verify format matches what `ml_tools.py` expects
504
-
505
- **Day 13-14: Testing & Validation**
506
- - [ ] Test `togmal_list_tools_dynamic` with ML tools
507
- - [ ] Verify context analyzer correctly triggers ML tools
508
- - [ ] Run end-to-end test: conversation → domain detection → ML tool exposure
509
-
510
- ---
511
-
512
- ## 8. Success Metrics
513
-
514
- ### Technical Metrics
515
-
516
- | Metric | Current | Target | How to Measure |
517
- |--------|---------|--------|----------------|
518
- | Silhouette Score | 0.25-0.26 | >0.4 | sklearn.metrics.silhouette_score |
519
- | Dangerous Cluster Purity | 71-100% | >80% | % harmful in cluster |
520
- | # Detected Domains | 0 (manual) | 5-10 | Count from clustering |
521
- | ML Tools Generated | 0 | 5-10 | Count in ml_discovered_tools.json |
522
- | Tool Precision | N/A | >85% | Manual review of triggered tools |
523
-
524
- ### Functional Metrics
525
-
526
- - [ ] Can differentiate "math limitations" from "general QA" clusters
527
- - [ ] Can automatically expose `check_math_complexity` when conversation contains math
528
- - [ ] Can generate heuristic rules that are interpretable (not just "cluster 3")
529
- - [ ] Visualization shows clear cluster separation
530
-
531
- ---
532
-
533
- ## 9. Risks & Mitigations
534
-
535
- | Risk | Impact | Mitigation |
536
- |------|--------|------------|
537
- | **Sentence transformer slower than TF-IDF** | High | Cache embeddings, use batch processing |
538
- | **Silhouette score doesn't improve** | High | Try different embedding models (mpnet, distilbert) |
539
- | **HuggingFace datasets too large** | Medium | Sample datasets (max 5000 entries each) |
540
- | **Clusters don't align with domains** | High | Add domain labels to training data, use semi-supervised clustering |
541
- | **ML tools not useful in practice** | Medium | Start with high confidence threshold (0.8+), iterate |
542
-
543
- ---
544
-
545
- ## 10. File Structure After Implementation
546
-
547
- ```
548
- /Users/hetalksinmaths/togmal/
549
- ├── research_pipeline.py (ENHANCED)
550
- │ ├── FeatureExtractor with sentence transformers ✅
551
- │ ├── Pattern extraction from clusters ✅
552
- │ ├── Export to ML tools cache ✅
553
-
554
- ├── togmal/
555
- │ ├── context_analyzer.py (EXISTING - works as-is)
556
- │ ├── ml_tools.py (EXISTING - works as-is)
557
- │ └── config.py (EXISTING)
558
-
559
- ├── data/
560
- │ ├── datasets/ (NEW)
561
- │ │ ├── combined_dataset.csv
562
- │ │ └── [domain]_[dataset].csv
563
- │ │
564
- │ ├── cache/ (EXISTING)
565
- │ │ └── [source].json
566
- │ │
567
- │ └── ml_discovered_tools.json (GENERATED by pipeline)
568
-
569
- ├── models/ (NEW)
570
- │ ├── clustering/
571
- │ │ ├── kmeans_model.pkl
572
- │ │ ├── embeddings_cache.npy
573
- │ │ └── training_results.json
574
- │ └── visualization/
575
- │ └── clusters_2d.png
576
-
577
- └── CLUSTERING_TO_DYNAMIC_TOOLS_STRATEGY.md (THIS FILE)
578
- ```
579
-
580
- ---
581
-
582
- ## 11. Next Steps After This Implementation
583
-
584
- ### Phase 4: Aqumen Integration (When Ready)
585
- 1. Export ToGMAL clustering results to Aqumen error catalogs
586
- 2. Import Aqumen assessment failures back into ToGMAL
587
- 3. Re-train clustering with combined data
588
-
589
- ### Phase 5: Continuous Improvement
590
- 1. Weekly automated re-training on new data
591
- 2. A/B testing of ML tools vs static tools
592
- 3. User feedback loop to improve heuristics
593
-
594
- ### Phase 6: Grant Preparation
595
- 1. Publish clustering results as research artifact
596
- 2. Use improved metrics (silhouette 0.4+) in grant proposal
597
- 3. Demonstrate concrete improvements over baseline
598
-
599
- ---
600
-
601
- ## Conclusion
602
-
603
- **What This Gets You:**
604
-
605
- 1. ✅ **Real clustering** on professional domain datasets
606
- 2. ✅ **Better separation** between limitations and harmless clusters
607
- 3. ✅ **Automatic tool generation** from clustering results
608
- 4. ✅ **Evidence-backed** limitation detection (not just heuristics)
609
- 5. ✅ **Scalable architecture** ready for Aqumen integration
610
-
611
- **What This Doesn't Do (Yet):**
612
-
613
- - ❌ Aqumen bidirectional integration (Phase 4)
614
- - ❌ Production deployment (focus on research validation)
615
- - ❌ Comprehensive grant proposal (focus on technical foundation)
616
-
617
- **Recommended Focus:**
618
-
619
- Start with **Week 1-2 action items** to prove the clustering approach works, then decide on Aqumen integration vs grant preparation.
620
-
621
- ---
622
-
623
- **Ready to proceed?** Let me know if you want me to:
624
- 1. Start implementing the enhanced clustering pipeline
625
- 2. Create a test harness for validating clusters
626
- 3. Build the export-to-ML-tools integration
627
- 4. Something else?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
COMPLETE_DEMO_ANALYSIS.md DELETED
@@ -1,193 +0,0 @@
1
- # 🧠 ToGMAL Prompt Difficulty Analyzer - Complete Analysis
2
-
3
- Real-time LLM capability boundary detection using vector similarity search.
4
-
5
- ## 🎯 Demo Overview
6
-
7
- This system analyzes any prompt and tells you:
8
- 1. **How difficult it is** for current LLMs (based on real benchmark data)
9
- 2. **Why it's difficult** (shows similar benchmark questions)
10
- 3. **What to do about it** (actionable recommendations)
11
-
12
- ## 🔥 Key Innovation
13
-
14
- Instead of clustering by domain (all math together), we cluster by **difficulty** - what's actually hard for LLMs regardless of domain.
15
-
16
- ## 📊 Real Data
17
-
18
- - **14,042 MMLU questions** with real success rates from top models
19
- - **<50ms query time** for real-time analysis
20
- - **Production ready** vector database
21
-
22
- ## 🚀 Demo Links
23
-
24
- - **Local**: http://127.0.0.1:7861
25
- - **Public**: https://db11ee71660c8a3319.gradio.live
26
-
27
- ## 🧪 Analysis of 11 Test Questions
28
-
29
- ### Hard Questions (Low Success Rates - 20-50%)
30
-
31
- These questions are correctly identified as HIGH or MODERATE risk:
32
-
33
- 1. **"Calculate the quantum correction to the partition function for a 3D harmonic oscillator"**
34
- - Risk: HIGH (23.9% success)
35
- - Similar to: Physics questions with ~30% success rates
36
- - Recommendation: Multi-step reasoning with verification
37
-
38
- 2. **"Prove that there are infinitely many prime numbers"**
39
- - Risk: MODERATE (45.2% success)
40
- - Similar to: Abstract math reasoning questions
41
- - Recommendation: Use chain-of-thought prompting
42
-
43
- 3. **"Find all zeros of the polynomial x³ + 2x + 2 in Z₇"**
44
- - Risk: MODERATE (43.8% success)
45
- - Similar to: Abstract algebra questions
46
- - Recommendation: Use chain-of-thought prompting
47
-
48
- ### Moderate Questions (50-70% Success)
49
-
50
- 4. **"Diagnose a patient with acute chest pain and shortness of breath"**
51
- - Risk: MODERATE (55.1% success)
52
- - Similar to: Medical diagnosis questions
53
- - Recommendation: Use chain-of-thought prompting
54
-
55
- 5. **"Explain the legal doctrine of precedent in common law systems"**
56
- - Risk: MODERATE (52.3% success)
57
- - Similar to: Law domain questions
58
- - Recommendation: Use chain-of-thought prompting
59
-
60
- 6. **"Implement a binary search tree with insert and search operations"**
61
- - Risk: MODERATE (58.7% success)
62
- - Similar to: Computer science algorithm questions
63
- - Recommendation: Use chain-of-thought prompting
64
-
65
- ### Easy Questions (High Success Rates - 80-100%)
66
-
67
- These questions are correctly identified as MINIMAL risk:
68
-
69
- 7. **"What is 2 + 2?"**
70
- - Risk: MINIMAL (100% success)
71
- - Similar to: Basic arithmetic questions
72
- - Recommendation: Standard LLM response adequate
73
-
74
- 8. **"What is the capital of France?"**
75
- - Risk: MINIMAL (100% success)
76
- - Similar to: Geography fact questions
77
- - Recommendation: Standard LLM response adequate
78
-
79
- 9. **"Who wrote Romeo and Juliet?"**
80
- - Risk: MINIMAL (100% success)
81
- - Similar to: Literature fact questions
82
- - Recommendation: Standard LLM response adequate
83
-
84
- 10. **"What is the boiling point of water in Celsius?"**
85
- - Risk: MINIMAL (100% success)
86
- - Similar to: Science fact questions
87
- - Recommendation: Standard LLM response adequate
88
-
89
- 11. **"Statement 1 | Every field is also a ring. Statement 2 | Every ring has a multiplicative identity."**
90
- - Risk: HIGH (23.9% success)
91
- - Similar to: Abstract mathematics with low success rates
92
- - Recommendation: Multi-step reasoning with verification
93
-
94
- ## 🎯 How the System Differentiates Difficulty
95
-
96
- ### Methodology
97
- 1. **Real Data**: Uses 14,042 actual MMLU questions with success rates from top models
98
- 2. **Vector Similarity**: Embeds prompts and finds K nearest benchmark questions
99
- 3. **Weighted Scoring**: Computes success rate weighted by similarity scores
100
- 4. **Risk Classification**: Maps success rates to risk levels
101
-
102
- ### Risk Levels
103
- - **CRITICAL** (<10% success): Nearly impossible questions
104
- - **HIGH** (10-30% success): Very hard questions
105
- - **MODERATE** (30-50% success): Hard questions
106
- - **LOW** (50-70% success): Moderate difficulty
107
- - **MINIMAL** (>70% success): Easy questions
108
-
109
- ### Recommendation Engine
110
- Based on success rates:
111
- - **<30%**: Multi-step reasoning with verification, consider web search
112
- - **30-70%**: Use chain-of-thought prompting
113
- - **>70%**: Standard LLM response adequate
114
-
115
- ## 🛠️ Technical Architecture
116
-
117
- ```
118
- User Prompt → Embedding Model → Vector DB → K Nearest Questions → Weighted Score
119
- ```
120
-
121
- ### Components
122
- 1. **Sentence Transformers** (all-MiniLM-L6-v2) for embeddings
123
- 2. **ChromaDB** for vector storage
124
- 3. **Real MMLU data** with success rates from top models
125
- 4. **Gradio** for web interface
126
-
127
- ## 📈 Performance Validation
128
-
129
- ### Before (Mock Data)
130
- - All prompts showed ~45% success rate
131
- - Could not differentiate difficulty levels
132
- - Used estimated rather than real success rates
133
-
134
- ### After (Real Data)
135
- - Hard prompts: 23.9% success rate (correctly identified as HIGH risk)
136
- - Easy prompts: 100% success rate (correctly identified as MINIMAL risk)
137
- - System now correctly differentiates between difficulty levels
138
-
139
- ## 🚀 Quick Start
140
-
141
- ```bash
142
- # Install dependencies
143
- uv pip install -r requirements.txt
144
- uv pip install gradio
145
-
146
- # Run the demo
147
- python demo_app.py
148
- ```
149
-
150
- Visit http://127.0.0.1:7861 to use the web interface.
151
-
152
- ## 📤 Pushing to GitHub
153
-
154
- Follow these steps to push the code to GitHub:
155
-
156
- 1. Create a new repository on GitHub
157
- 2. Clone it locally:
158
- ```bash
159
- git clone <your-repo-url>
160
- cd <your-repo-name>
161
- ```
162
-
163
- 3. Copy the relevant files:
164
- ```bash
165
- cp -r /Users/hetalksinmaths/togmal/* .
166
- ```
167
-
168
- 4. Commit and push:
169
- ```bash
170
- git add .
171
- git commit -m "Initial commit: ToGMAL Prompt Difficulty Analyzer"
172
- git push origin main
173
- ```
174
-
175
- ## 📁 Key Files to Include
176
-
177
- - `benchmark_vector_db.py`: Core vector database implementation
178
- - `demo_app.py`: Gradio web interface
179
- - `fetch_mmlu_top_models.py`: Data fetching script
180
- - `test_vector_db.py`: Test script with real data
181
- - `requirements.txt`: Dependencies
182
- - `README.md`: Project documentation
183
- - `data/benchmark_vector_db/`: Vector database files
184
- - `data/benchmark_results/`: Real benchmark data
185
-
186
- ## 🏁 Conclusion
187
-
188
- The system successfully:
189
- 1. ✅ Uses real benchmark data instead of mock estimates
190
- 2. ✅ Correctly differentiates between easy and hard prompts
191
- 3. ✅ Provides actionable recommendations based on difficulty
192
- 4. ✅ Runs as a web demo with public sharing capability
193
- 5. ✅ Ready for GitHub deployment
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
DEPLOYMENT.md DELETED
@@ -1,427 +0,0 @@
1
- # ToGMAL Deployment Guide
2
-
3
- ## Quick Start
4
-
5
- ### 1. Install Dependencies
6
-
7
- ```bash
8
- # Install Python dependencies
9
- pip install mcp pydantic httpx --break-system-packages
10
-
11
- # Or use the requirements file
12
- pip install -r requirements.txt --break-system-packages
13
- ```
14
-
15
- ### 2. Verify Installation
16
-
17
- ```bash
18
- # Check Python syntax
19
- python -m py_compile togmal_mcp.py
20
-
21
- # View available commands
22
- python togmal_mcp.py --help
23
- ```
24
-
25
- ### 3. Test the Server
26
-
27
- ```bash
28
- # Option A: Use the MCP Inspector (recommended)
29
- npx @modelcontextprotocol/inspector python togmal_mcp.py
30
-
31
- # Option B: Run test examples
32
- python test_examples.py
33
- ```
34
-
35
- ## Claude Desktop Integration
36
-
37
- ### macOS Configuration
38
-
39
- 1. Open Claude Desktop configuration:
40
- ```bash
41
- code ~/Library/Application\ Support/Claude/claude_desktop_config.json
42
- ```
43
-
44
- 2. Add ToGMAL server:
45
- ```json
46
- {
47
- "mcpServers": {
48
- "togmal": {
49
- "command": "python",
50
- "args": ["/absolute/path/to/togmal_mcp.py"]
51
- }
52
- }
53
- }
54
- ```
55
-
56
- 3. Restart Claude Desktop
57
-
58
- ### Windows Configuration
59
-
60
- 1. Open configuration file:
61
- ```powershell
62
- notepad %APPDATA%\Claude\claude_desktop_config.json
63
- ```
64
-
65
- 2. Add ToGMAL server (use forward slashes or escaped backslashes):
66
- ```json
67
- {
68
- "mcpServers": {
69
- "togmal": {
70
- "command": "python",
71
- "args": ["C:/path/to/togmal_mcp.py"]
72
- }
73
- }
74
- }
75
- ```
76
-
77
- 3. Restart Claude Desktop
78
-
79
- ### Linux Configuration
80
-
81
- 1. Open configuration:
82
- ```bash
83
- nano ~/.config/Claude/claude_desktop_config.json
84
- ```
85
-
86
- 2. Add ToGMAL server:
87
- ```json
88
- {
89
- "mcpServers": {
90
- "togmal": {
91
- "command": "python",
92
- "args": ["/home/username/togmal_mcp.py"]
93
- }
94
- }
95
- }
96
- ```
97
-
98
- 3. Restart Claude Desktop
99
-
100
- ## Verification
101
-
102
- After setup, verify the server is working:
103
-
104
- 1. Open Claude Desktop
105
- 2. Start a new conversation
106
- 3. Check that ToGMAL tools appear in the available tools list:
107
- - `togmal_analyze_prompt`
108
- - `togmal_analyze_response`
109
- - `togmal_submit_evidence`
110
- - `togmal_get_taxonomy`
111
- - `togmal_get_statistics`
112
-
113
- ## Basic Usage Examples
114
-
115
- ### Example 1: Analyze a Prompt
116
-
117
- **User:** "Can you analyze this prompt for issues?"
118
-
119
- Then provide the prompt:
120
- ```
121
- Build me a quantum computer simulation that proves my theory of everything
122
- ```
123
-
124
- The assistant will use `togmal_analyze_prompt` and provide a risk assessment.
125
-
126
- ### Example 2: Check a Response
127
-
128
- **User:** "Check if this medical advice is safe:"
129
-
130
- ```
131
- You definitely have the flu. Take 1000mg of vitamin C and
132
- you'll be fine in 2 days. No need to see a doctor.
133
- ```
134
-
135
- The assistant will use `togmal_analyze_response` and flag the ungrounded medical advice.
136
-
137
- ### Example 3: Submit Evidence
138
-
139
- **User:** "I want to report a concerning LLM response"
140
-
141
- The assistant will guide you through using `togmal_submit_evidence` with human-in-the-loop confirmation.
142
-
143
- ### Example 4: View Statistics
144
-
145
- **User:** "Show me the taxonomy statistics"
146
-
147
- The assistant will use `togmal_get_statistics` to display the current state of the database.
148
-
149
- ## Troubleshooting
150
-
151
- ### Server Won't Start
152
-
153
- **Issue:** Server hangs when running directly
154
- ```bash
155
- python togmal_mcp.py
156
- # Hangs indefinitely...
157
- ```
158
-
159
- **Solution:** This is expected! MCP servers are long-running processes that wait for stdio input. Use the MCP Inspector or integrate with Claude Desktop instead.
160
-
161
- ### Import Errors
162
-
163
- **Issue:** `ModuleNotFoundError: No module named 'mcp'`
164
-
165
- **Solution:** Install dependencies:
166
- ```bash
167
- pip install mcp pydantic --break-system-packages
168
- ```
169
-
170
- ### Tools Not Appearing in Claude
171
-
172
- **Issue:** ToGMAL tools don't show up in Claude Desktop
173
-
174
- **Checklist:**
175
- 1. Verify configuration file path is correct
176
- 2. Ensure Python path in config is absolute
177
- 3. Check that togmal_mcp.py is executable
178
- 4. Restart Claude Desktop completely
179
- 5. Check Claude Desktop logs for errors
180
-
181
- ### Permission Errors
182
-
183
- **Issue:** Permission denied when running server
184
-
185
- **Solution:**
186
- ```bash
187
- # Make script executable (Unix-like systems)
188
- chmod +x togmal_mcp.py
189
-
190
- # Or specify Python interpreter explicitly
191
- python togmal_mcp.py
192
- ```
193
-
194
- ## Advanced Configuration
195
-
196
- ### Custom Detection Patterns
197
-
198
- Edit `togmal_mcp.py` to add custom patterns:
199
-
200
- ```python
201
- def detect_custom_category(text: str) -> Dict[str, Any]:
202
- patterns = {
203
- 'my_pattern': [
204
- r'custom pattern 1',
205
- r'custom pattern 2'
206
- ]
207
- }
208
- # Add detection logic
209
- return {
210
- 'detected': False,
211
- 'categories': [],
212
- 'confidence': 0.0
213
- }
214
- ```
215
-
216
- ### Adjust Sensitivity
217
-
218
- Modify confidence thresholds:
219
-
220
- ```python
221
- def calculate_risk_level(analysis_results: Dict[str, Any]) -> RiskLevel:
222
- risk_score = 0.0
223
-
224
- # Adjust these weights to change sensitivity
225
- if analysis_results['math_physics']['detected']:
226
- risk_score += analysis_results['math_physics']['confidence'] * 0.5
227
-
228
- # Lower threshold for more sensitive detection
229
- if risk_score >= 0.3: # Was 0.5
230
- return RiskLevel.MODERATE
231
- ```
232
-
233
- ### Database Persistence
234
-
235
- By default, taxonomy data is stored in memory. For persistence, modify:
236
-
237
- ```python
238
- import json
239
- import os
240
-
241
- TAXONOMY_FILE = "/path/to/taxonomy.json"
242
-
243
- # Load on startup
244
- if os.path.exists(TAXONOMY_FILE):
245
- with open(TAXONOMY_FILE, 'r') as f:
246
- TAXONOMY_DB = json.load(f)
247
-
248
- # Save after each submission
249
- def save_taxonomy():
250
- with open(TAXONOMY_FILE, 'w') as f:
251
- json.dump(TAXONOMY_DB, f, indent=2, default=str)
252
- ```
253
-
254
- ## Performance Optimization
255
-
256
- ### For High-Volume Usage
257
-
258
- 1. **Index Taxonomy Data:**
259
- ```python
260
- from collections import defaultdict
261
-
262
- # Add indices for faster queries
263
- TAXONOMY_INDEX = defaultdict(list)
264
- ```
265
-
266
- 2. **Implement Caching:**
267
- ```python
268
- from functools import lru_cache
269
-
270
- @lru_cache(maxsize=1000)
271
- def detect_cached(text: str, detector_name: str):
272
- # Cache detection results
273
- pass
274
- ```
275
-
276
- 3. **Async Improvements:**
277
- ```python
278
- import asyncio
279
-
280
- # Run detectors in parallel
281
- async def analyze_parallel(text: str):
282
- results = await asyncio.gather(
283
- detect_math_physics_speculation(text),
284
- detect_ungrounded_medical_advice(text),
285
- # ... other detectors
286
- )
287
- ```
288
-
289
- ## Production Deployment
290
-
291
- ### Using a Process Manager
292
-
293
- **systemd (Linux):**
294
-
295
- Create `/etc/systemd/system/togmal.service`:
296
- ```ini
297
- [Unit]
298
- Description=ToGMAL MCP Server
299
- After=network.target
300
-
301
- [Service]
302
- Type=simple
303
- User=your-user
304
- WorkingDirectory=/path/to/togmal
305
- ExecStart=/usr/bin/python /path/to/togmal_mcp.py
306
- Restart=on-failure
307
-
308
- [Install]
309
- WantedBy=multi-user.target
310
- ```
311
-
312
- Enable and start:
313
- ```bash
314
- sudo systemctl enable togmal
315
- sudo systemctl start togmal
316
- ```
317
-
318
- **Docker:**
319
-
320
- Create `Dockerfile`:
321
- ```dockerfile
322
- FROM python:3.11-slim
323
-
324
- WORKDIR /app
325
- COPY requirements.txt .
326
- RUN pip install --no-cache-dir -r requirements.txt
327
-
328
- COPY togmal_mcp.py .
329
-
330
- CMD ["python", "togmal_mcp.py"]
331
- ```
332
-
333
- Build and run:
334
- ```bash
335
- docker build -t togmal-mcp .
336
- docker run togmal-mcp
337
- ```
338
-
339
- ## Monitoring
340
-
341
- ### Logging
342
-
343
- Add logging to the server:
344
-
345
- ```python
346
- import logging
347
-
348
- logging.basicConfig(
349
- level=logging.INFO,
350
- format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
351
- handlers=[
352
- logging.FileHandler('/var/log/togmal.log'),
353
- logging.StreamHandler()
354
- ]
355
- )
356
-
357
- logger = logging.getLogger('togmal')
358
- ```
359
-
360
- ### Metrics
361
-
362
- Track usage metrics:
363
-
364
- ```python
365
- from collections import Counter
366
-
367
- USAGE_STATS = {
368
- 'tool_calls': Counter(),
369
- 'detections': Counter(),
370
- 'interventions': Counter()
371
- }
372
-
373
- # In each tool function:
374
- USAGE_STATS['tool_calls'][tool_name] += 1
375
- ```
376
-
377
- ## Security Considerations
378
-
379
- 1. **Input Validation:** Already handled by Pydantic models
380
- 2. **Rate Limiting:** Consider adding for public deployments
381
- 3. **Data Privacy:** Taxonomy stores prompts/responses - be mindful of sensitive data
382
- 4. **Access Control:** Implement authentication for multi-user scenarios
383
-
384
- ## Updates and Maintenance
385
-
386
- ### Updating Detection Patterns
387
-
388
- 1. Edit detection functions in `togmal_mcp.py`
389
- 2. Test with `test_examples.py`
390
- 3. Restart the MCP server
391
- 4. Verify changes in Claude Desktop
392
-
393
- ### Updating Dependencies
394
-
395
- ```bash
396
- pip install --upgrade mcp pydantic httpx --break-system-packages
397
- ```
398
-
399
- ### Backup Taxonomy Data
400
-
401
- If using persistent storage:
402
- ```bash
403
- # Create backup
404
- cp /path/to/taxonomy.json /path/to/taxonomy.backup.json
405
-
406
- # Restore if needed
407
- cp /path/to/taxonomy.backup.json /path/to/taxonomy.json
408
- ```
409
-
410
- ## Getting Help
411
-
412
- - **GitHub Issues:** Report bugs and request features
413
- - **Documentation:** See README.md for detailed information
414
- - **MCP Documentation:** https://modelcontextprotocol.io
415
- - **Community:** Join MCP community discussions
416
-
417
- ## Next Steps
418
-
419
- 1. ✅ Install and configure ToGMAL
420
- 2. ✅ Test with example prompts
421
- 3. ✅ Submit evidence to improve detection
422
- 4. 📝 Customize patterns for your use case
423
- 5. 🚀 Deploy to production
424
- 6. 📊 Monitor usage and effectiveness
425
- 7. 🔄 Iterate and improve
426
-
427
- Happy safe LLM usage! 🛡️
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
DYNAMIC_TOOLS_DESIGN.md DELETED
@@ -1,577 +0,0 @@
1
- # Dynamic Tool Exposure Design for ToGMAL MCP
2
-
3
- **Date:** October 18, 2025
4
- **Status:** Design Proposal
5
- **Impact:** Moderate - improves efficiency, enables ML-driven tool discovery
6
-
7
- ---
8
-
9
- ## Problem Statement
10
-
11
- Current ToGMAL MCP exposes **all 5 tools at startup**, regardless of conversation context:
12
- - `check_math_physics`
13
- - `check_medical_advice`
14
- - `check_file_operations`
15
- - `check_code_quality`
16
- - `check_claims`
17
-
18
- **Issues:**
19
- 1. LLM must decide which tools are relevant (cognitive overhead)
20
- 2. Irrelevant tools clutter the tool list
21
- 3. No way to automatically add ML-discovered limitation checks
22
- 4. Fixed architecture doesn't scale to 10+ professional domains
23
-
24
- ---
25
-
26
- ## Proposed Solution
27
-
28
- **Dynamic Tool Exposure** based on:
29
- 1. **Conversation context** (what domain is being discussed?)
30
- 2. **ML clustering results** (what new patterns were discovered?)
31
- 3. **User metadata** (what domains does this user work in?)
32
-
33
- ---
34
-
35
- ## Design Changes
36
-
37
- ### 1. Context-Aware Tool Filtering
38
-
39
- **Current:**
40
- ```python
41
- # server.py
42
- @server.list_tools()
43
- async def list_tools() -> list[Tool]:
44
- # Always returns all 5 tools
45
- return [
46
- Tool(name="check_math_physics", ...),
47
- Tool(name="check_medical_advice", ...),
48
- Tool(name="check_file_operations", ...),
49
- Tool(name="check_code_quality", ...),
50
- Tool(name="check_claims", ...),
51
- ]
52
- ```
53
-
54
- **Proposed:**
55
- ```python
56
- # server.py
57
- from typing import Optional
58
- from .context_analyzer import analyze_conversation_context
59
-
60
- @server.list_tools()
61
- async def list_tools(
62
- conversation_history: Optional[list[dict]] = None,
63
- user_context: Optional[dict] = None
64
- ) -> list[Tool]:
65
- """
66
- Dynamically expose tools based on conversation context
67
-
68
- Args:
69
- conversation_history: Recent messages for domain detection
70
- user_context: User metadata (role, industry, preferences)
71
- """
72
- # Detect relevant domains from conversation
73
- domains = await analyze_conversation_context(
74
- conversation_history=conversation_history,
75
- user_context=user_context
76
- )
77
-
78
- # Build tool list based on detected domains
79
- tools = []
80
-
81
- # Core tools (always available)
82
- tools.append(Tool(name="check_claims", ...)) # General-purpose
83
-
84
- # Domain-specific tools (conditional)
85
- if "mathematics" in domains or "physics" in domains:
86
- tools.append(Tool(name="check_math_physics", ...))
87
-
88
- if "medicine" in domains or "healthcare" in domains:
89
- tools.append(Tool(name="check_medical_advice", ...))
90
-
91
- if "coding" in domains or "file_system" in domains:
92
- tools.append(Tool(name="check_file_operations", ...))
93
- tools.append(Tool(name="check_code_quality", ...))
94
-
95
- # ML-discovered tools (dynamic)
96
- if ML_CLUSTERING_ENABLED:
97
- ml_tools = await get_ml_discovered_tools(domains)
98
- tools.extend(ml_tools)
99
-
100
- return tools
101
- ```
102
-
103
- ### 2. Context Analyzer Module
104
-
105
- **New file:** `togmal/context_analyzer.py`
106
-
107
- ```python
108
- """
109
- Context analyzer for domain detection
110
- Determines which limitation checks are relevant
111
- """
112
-
113
- import re
114
- from typing import List, Dict, Any, Optional
115
- from collections import Counter
116
-
117
- # Domain keywords mapping
118
- DOMAIN_KEYWORDS = {
119
- "mathematics": ["math", "calculus", "algebra", "geometry", "proof", "theorem", "equation"],
120
- "physics": ["physics", "force", "energy", "quantum", "relativity", "mechanics"],
121
- "medicine": ["medical", "diagnosis", "treatment", "symptom", "disease", "patient", "doctor"],
122
- "healthcare": ["health", "medication", "drug", "therapy", "clinical"],
123
- "law": ["legal", "law", "court", "regulation", "compliance", "attorney", "contract"],
124
- "finance": ["financial", "investment", "stock", "portfolio", "trading", "tax"],
125
- "coding": ["code", "programming", "function", "class", "debug", "git", "api"],
126
- "file_system": ["file", "directory", "path", "write", "delete", "permission"],
127
- }
128
-
129
- async def analyze_conversation_context(
130
- conversation_history: Optional[List[Dict[str, str]]] = None,
131
- user_context: Optional[Dict[str, Any]] = None,
132
- threshold: float = 0.3
133
- ) -> List[str]:
134
- """
135
- Analyze conversation to detect relevant domains
136
-
137
- Args:
138
- conversation_history: Recent messages [{"role": "user", "content": "..."}]
139
- user_context: User metadata {"industry": "healthcare", "role": "developer"}
140
- threshold: Minimum confidence to include domain (0-1)
141
-
142
- Returns:
143
- List of detected domains, e.g., ["mathematics", "coding"]
144
- """
145
- detected_domains = set()
146
-
147
- # Strategy 1: Keyword matching in conversation
148
- if conversation_history:
149
- domain_scores = _score_domains_by_keywords(conversation_history)
150
-
151
- # Add domains above threshold
152
- for domain, score in domain_scores.items():
153
- if score >= threshold:
154
- detected_domains.add(domain)
155
-
156
- # Strategy 2: User context hints
157
- if user_context:
158
- if "industry" in user_context:
159
- industry = user_context["industry"].lower()
160
- # Map industry to domains
161
- if "health" in industry or "medical" in industry:
162
- detected_domains.update(["medicine", "healthcare"])
163
- elif "tech" in industry or "software" in industry:
164
- detected_domains.add("coding")
165
- elif "finance" in industry or "bank" in industry:
166
- detected_domains.add("finance")
167
-
168
- # Strategy 3: Always include if explicitly mentioned in last message
169
- if conversation_history and len(conversation_history) > 0:
170
- last_message = conversation_history[-1].get("content", "").lower()
171
-
172
- for domain, keywords in DOMAIN_KEYWORDS.items():
173
- if any(kw in last_message for kw in keywords):
174
- detected_domains.add(domain)
175
-
176
- return list(detected_domains)
177
-
178
-
179
- def _score_domains_by_keywords(
180
- conversation_history: List[Dict[str, str]],
181
- recent_weight: float = 2.0
182
- ) -> Dict[str, float]:
183
- """
184
- Score domains based on keyword frequency (recent messages weighted higher)
185
-
186
- Returns:
187
- Dict of {domain: score} normalized 0-1
188
- """
189
- domain_counts = Counter()
190
- total_messages = len(conversation_history)
191
-
192
- for i, message in enumerate(conversation_history):
193
- content = message.get("content", "").lower()
194
-
195
- # Weight recent messages higher
196
- recency_weight = 1.0 + (i / total_messages) * (recent_weight - 1.0)
197
-
198
- for domain, keywords in DOMAIN_KEYWORDS.items():
199
- matches = sum(1 for kw in keywords if kw in content)
200
- domain_counts[domain] += matches * recency_weight
201
-
202
- # Normalize scores
203
- max_count = max(domain_counts.values()) if domain_counts else 1
204
- return {
205
- domain: count / max_count
206
- for domain, count in domain_counts.items()
207
- }
208
- ```
209
-
210
- ### 3. ML-Discovered Tools Integration
211
-
212
- **New file:** `togmal/ml_tools.py`
213
-
214
- ```python
215
- """
216
- Dynamically generate tools from ML clustering results
217
- """
218
-
219
- from typing import List, Optional
220
- from mcp.types import Tool
221
- import json
222
- from pathlib import Path
223
-
224
- ML_TOOLS_CACHE_PATH = Path("./data/ml_discovered_tools.json")
225
-
226
- async def get_ml_discovered_tools(
227
- relevant_domains: Optional[List[str]] = None
228
- ) -> List[Tool]:
229
- """
230
- Load ML-discovered limitation checks as MCP tools
231
-
232
- Args:
233
- relevant_domains: Only return tools for these domains (None = all)
234
-
235
- Returns:
236
- List of dynamically generated Tool objects
237
- """
238
- if not ML_TOOLS_CACHE_PATH.exists():
239
- return []
240
-
241
- # Load ML-discovered patterns
242
- with open(ML_TOOLS_CACHE_PATH) as f:
243
- ml_patterns = json.load(f)
244
-
245
- tools = []
246
-
247
- for pattern in ml_patterns.get("patterns", []):
248
- domain = pattern.get("domain")
249
-
250
- # Filter by relevant domains
251
- if relevant_domains and domain not in relevant_domains:
252
- continue
253
-
254
- # Only include high-confidence patterns
255
- if pattern.get("confidence", 0) < 0.8:
256
- continue
257
-
258
- # Generate tool dynamically
259
- tool = Tool(
260
- name=f"check_{pattern['id']}",
261
- description=pattern["description"],
262
- inputSchema={
263
- "type": "object",
264
- "properties": {
265
- "prompt": {"type": "string"},
266
- "response": {"type": "string"}
267
- },
268
- "required": ["prompt", "response"]
269
- }
270
- )
271
-
272
- tools.append(tool)
273
-
274
- return tools
275
-
276
-
277
- async def update_ml_tools_cache(research_pipeline_output: dict):
278
- """
279
- Called by research pipeline to update available ML tools
280
-
281
- Args:
282
- research_pipeline_output: Latest clustering/anomaly detection results
283
- """
284
- # Extract high-confidence patterns
285
- patterns = []
286
-
287
- for cluster in research_pipeline_output.get("clusters", []):
288
- if cluster.get("is_dangerous", False) and cluster.get("purity", 0) > 0.7:
289
- pattern = {
290
- "id": cluster["id"],
291
- "domain": cluster["domain"],
292
- "description": f"Check for {cluster['pattern_description']}",
293
- "confidence": cluster["purity"],
294
- "heuristic": cluster.get("detection_rule", ""),
295
- "examples": cluster.get("examples", [])[:3]
296
- }
297
- patterns.append(pattern)
298
-
299
- # Save to cache
300
- ML_TOOLS_CACHE_PATH.parent.mkdir(parents=True, exist_ok=True)
301
- with open(ML_TOOLS_CACHE_PATH, 'w') as f:
302
- json.dump({
303
- "updated_at": research_pipeline_output["timestamp"],
304
- "patterns": patterns
305
- }, f, indent=2)
306
- ```
307
-
308
- ### 4. Tool Handler Registration
309
-
310
- **Modified:** `togmal/server.py`
311
-
312
- ```python
313
- # Dynamic handler registration for ML tools
314
- @server.call_tool()
315
- async def call_tool(name: str, arguments: dict) -> list[TextContent]:
316
- """
317
- Route tool calls to appropriate handlers
318
- Supports both static and ML-discovered tools
319
- """
320
- # Static tools (existing)
321
- if name == "check_math_physics":
322
- return await check_math_physics(**arguments)
323
- elif name == "check_medical_advice":
324
- return await check_medical_advice(**arguments)
325
- # ... etc
326
-
327
- # ML-discovered tools (dynamic)
328
- elif name.startswith("check_ml_"):
329
- return await handle_ml_tool(name, arguments)
330
-
331
- else:
332
- raise ValueError(f"Unknown tool: {name}")
333
-
334
-
335
- async def handle_ml_tool(tool_name: str, arguments: dict) -> list[TextContent]:
336
- """
337
- Execute ML-discovered limitation check
338
-
339
- Args:
340
- tool_name: e.g., "check_ml_cluster_47"
341
- arguments: {"prompt": "...", "response": "..."}
342
- """
343
- # Load ML pattern definition
344
- pattern = await load_ml_pattern(tool_name)
345
-
346
- if not pattern:
347
- return [TextContent(
348
- type="text",
349
- text=f"Error: ML pattern not found for {tool_name}"
350
- )]
351
-
352
- # Run heuristic check
353
- result = await run_ml_heuristic(
354
- prompt=arguments["prompt"],
355
- response=arguments["response"],
356
- heuristic=pattern["heuristic"],
357
- examples=pattern["examples"]
358
- )
359
-
360
- return [TextContent(
361
- type="text",
362
- text=json.dumps(result, indent=2)
363
- )]
364
- ```
365
-
366
- ---
367
-
368
- ## Configuration
369
-
370
- **New file:** `togmal/config.py`
371
-
372
- ```python
373
- """Configuration for dynamic tool exposure"""
374
-
375
- # Enable/disable dynamic behavior
376
- DYNAMIC_TOOLS_ENABLED = True
377
-
378
- # Enable ML-discovered tools
379
- ML_CLUSTERING_ENABLED = True
380
-
381
- # Context analysis settings
382
- DOMAIN_DETECTION_THRESHOLD = 0.3 # 0-1, confidence required
383
- CONVERSATION_HISTORY_LENGTH = 10 # How many messages to analyze
384
-
385
- # ML tools settings
386
- ML_TOOLS_MIN_CONFIDENCE = 0.8 # Only expose high-confidence patterns
387
- ML_TOOLS_CACHE_TTL = 3600 # Seconds to cache ML tools
388
-
389
- # Always-available tools (never filtered)
390
- CORE_TOOLS = ["check_claims"] # General-purpose checks
391
- ```
392
-
393
- ---
394
-
395
- ## Example Usage
396
-
397
- ### Before (Static)
398
-
399
- ```python
400
- # LLM sees all 5 tools regardless of context
401
- tools = [
402
- "check_math_physics", # Not relevant
403
- "check_medical_advice", # Not relevant
404
- "check_file_operations", # RELEVANT
405
- "check_code_quality", # RELEVANT
406
- "check_claims" # RELEVANT
407
- ]
408
-
409
- # User: "How do I delete all files in a directory?"
410
- # LLM must reason about which tools to use
411
- ```
412
-
413
- ### After (Dynamic)
414
-
415
- ```python
416
- # Conversation: "How do I delete all files in a directory?"
417
- # Detected domains: ["coding", "file_system"]
418
-
419
- tools = [
420
- "check_file_operations", # ✅ Relevant
421
- "check_code_quality", # ✅ Relevant
422
- "check_claims" # ✅ Core tool
423
- # check_math_physics - filtered out
424
- # check_medical_advice - filtered out
425
- ]
426
-
427
- # Cleaner tool list, LLM focuses on relevant checks
428
- ```
429
-
430
- ### With ML Tools
431
-
432
- ```python
433
- # After research pipeline discovers new pattern:
434
- # "Users frequently attempt dangerous recursive deletions"
435
-
436
- # Next conversation about file operations:
437
- tools = [
438
- "check_file_operations",
439
- "check_code_quality",
440
- "check_claims",
441
- "check_ml_recursive_delete_danger" # ✅ Auto-added by ML!
442
- ]
443
- ```
444
-
445
- ---
446
-
447
- ## Implementation Priority
448
-
449
- **Phase 1 (Week 1):** Context analyzer
450
- - Implement keyword-based domain detection
451
- - Add conversation history parameter to `list_tools()`
452
- - Test with existing 5 tools
453
-
454
- **Phase 2 (Week 2):** ML tool integration
455
- - Create `ml_tools.py` module
456
- - Implement tool caching from research pipeline
457
- - Dynamic handler registration
458
-
459
- **Phase 3 (Week 3):** Optimization
460
- - Add user context hints
461
- - Improve domain detection accuracy
462
- - Performance testing
463
-
464
- ---
465
-
466
- ## Benefits
467
-
468
- 1. **Reduced Cognitive Load:** LLM sees only relevant tools
469
- 2. **Scalability:** Can add 10+ domains without overwhelming LLM
470
- 3. **ML Integration:** Research pipeline automatically exposes new checks
471
- 4. **Efficiency:** Fewer irrelevant tool calls
472
- 5. **Personalization:** Tools adapt to user context
473
-
474
- ---
475
-
476
- ## Backward Compatibility
477
-
478
- **Option 1 (Recommended):** Feature flag
479
- ```python
480
- if DYNAMIC_TOOLS_ENABLED:
481
- tools = await list_tools_dynamic(conversation_history)
482
- else:
483
- tools = await list_tools_static() # Original behavior
484
- ```
485
-
486
- **Option 2:** MCP protocol parameter
487
- ```python
488
- # Client can request static or dynamic
489
- @server.list_tools()
490
- async def list_tools(mode: str = "dynamic") -> list[Tool]:
491
- if mode == "static":
492
- return ALL_TOOLS
493
- else:
494
- return filter_tools_by_context()
495
- ```
496
-
497
- ---
498
-
499
- ## Testing Strategy
500
-
501
- ```python
502
- # tests/test_dynamic_tools.py
503
-
504
- async def test_math_context_exposes_math_tool():
505
- conversation = [
506
- {"role": "user", "content": "What's the derivative of x^2?"}
507
- ]
508
-
509
- tools = await list_tools(conversation_history=conversation)
510
- tool_names = [t.name for t in tools]
511
-
512
- assert "check_math_physics" in tool_names
513
- assert "check_medical_advice" not in tool_names
514
-
515
-
516
- async def test_medical_context_exposes_medical_tool():
517
- conversation = [
518
- {"role": "user", "content": "What are symptoms of diabetes?"}
519
- ]
520
-
521
- tools = await list_tools(conversation_history=conversation)
522
- tool_names = [t.name for t in tools]
523
-
524
- assert "check_medical_advice" in tool_names
525
- assert "check_math_physics" not in tool_names
526
-
527
-
528
- async def test_ml_tool_added_after_research_update():
529
- # Simulate research pipeline discovering new pattern
530
- research_output = {
531
- "timestamp": "2025-10-18T10:00:00Z",
532
- "clusters": [
533
- {
534
- "id": "cluster_recursive_delete",
535
- "domain": "file_system",
536
- "is_dangerous": True,
537
- "purity": 0.92,
538
- "pattern_description": "recursive deletion without confirmation",
539
- "detection_rule": "check for 'rm -rf' or 'shutil.rmtree' without safeguards"
540
- }
541
- ]
542
- }
543
-
544
- await update_ml_tools_cache(research_output)
545
-
546
- # Check that new tool is exposed
547
- conversation = [{"role": "user", "content": "Delete all files recursively"}]
548
- tools = await list_tools(conversation_history=conversation)
549
- tool_names = [t.name for t in tools]
550
-
551
- assert "check_ml_cluster_recursive_delete" in tool_names
552
- ```
553
-
554
- ---
555
-
556
- ## Future Enhancements
557
-
558
- 1. **Semantic Analysis:** Use embeddings for domain detection (more accurate)
559
- 2. **User Learning:** Remember which tools user frequently needs
560
- 3. **Proactive Suggestions:** "This conversation may benefit from medical advice check"
561
- 4. **Tool Composition:** Combine multiple ML patterns into meta-tools
562
- 5. **A/B Testing:** Measure if dynamic exposure improves safety outcomes
563
-
564
- ---
565
-
566
- ## Decision
567
-
568
- **Recommendation:** ✅ **Implement dynamic tool exposure**
569
-
570
- **Rationale:**
571
- - Essential for scaling beyond 5 tools
572
- - Enables ML-driven tool discovery (key innovation!)
573
- - Improves LLM efficiency
574
- - Maintains backward compatibility
575
- - Relatively low implementation cost (~1 week)
576
-
577
- **When:** Implement in **Phase 2** of integration (after core ToGMAL-Aqumen bidirectional flow working)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
EXECUTION_PLAN.md DELETED
@@ -1,278 +0,0 @@
1
- # Benchmark Data Collection & Vector DB Build Plan
2
-
3
- **Status**: Data fetched, ready for vector DB integration
4
- **Date**: October 19, 2025
5
-
6
- ---
7
-
8
- ## ✅ What We've Accomplished
9
-
10
- ### 1. Infrastructure Built
11
- - ✅ Vector DB system ([`benchmark_vector_db.py`](file:///Users/hetalksinmaths/togmal/benchmark_vector_db.py))
12
- - ✅ Data fetcher ([`fetch_benchmark_data.py`](file:///Users/hetalksinmaths/togmal/fetch_benchmark_data.py))
13
- - ✅ Post-processor ([`postprocess_benchmark_data.py`](file:///Users/hetalksinmaths/togmal/postprocess_benchmark_data.py))
14
- - ✅ MCP tool integration ([`togmal_check_prompt_difficulty`](file:///Users/hetalksinmaths/togmal/togmal_mcp.py))
15
-
16
- ### 2. Data Collected
17
- ```
18
- Total Questions: 500 MMLU-Pro questions
19
- Source: TIGER-Lab/MMLU-Pro (test split)
20
- Domains: 14 domains (math, physics, biology, health, law, etc.)
21
- Sampling: Stratified across domains
22
- ```
23
-
24
- **Files Created**:
25
- - `./data/benchmark_results/raw_benchmark_results.json` (500 questions)
26
- - `./data/benchmark_results/collection_statistics.json`
27
-
28
- ---
29
-
30
- ## 🎯 Current Situation
31
-
32
- ### What Worked
33
- ✅ **MMLU-Pro**: 500 questions fetched successfully
34
- ✅ **Stratified sampling**: Balanced across 14 domains
35
- ✅ **Infrastructure**: All code ready for production
36
-
37
- ### What Didn't Work
38
- ❌ **GPQA Diamond**: Gated dataset (needs HuggingFace auth)
39
- ❌ **MATH dataset**: Dataset name changed/moved on HuggingFace
40
- ❌ **Per-question model results**: OpenLLM Leaderboard doesn't expose detailed per-question results publicly
41
-
42
- ### Key Finding
43
- **OpenLLM Leaderboard doesn't provide per-question results in downloadable datasets.**
44
-
45
- The `open-llm-leaderboard/details_*` datasets don't exist or aren't publicly accessible. We need an alternative approach.
46
-
47
- ---
48
-
49
- ## 🔄 Revised Strategy
50
-
51
- Since we can't get **real per-question success rates from leaderboards**, we have **3 options**:
52
-
53
- ### Option A: Use Benchmark-Level Estimates (FAST - Recommended)
54
- **Time**: Immediate
55
- **Accuracy**: Good enough for MVP
56
-
57
- Assign success rates based on published benchmark scores:
58
-
59
- ```python
60
- # From published leaderboard scores
61
- BENCHMARK_SUCCESS_RATES = {
62
- "MMLU_Pro": {
63
- "physics": 0.52,
64
- "mathematics": 0.48,
65
- "biology": 0.55,
66
- "health": 0.58,
67
- "law": 0.62,
68
- # ... per domain
69
- }
70
- }
71
- ```
72
-
73
- **Pros**:
74
- - ✅ Immediate deployment
75
- - ✅ Based on real benchmark scores
76
- - ✅ Good enough for capability boundary detection
77
-
78
- **Cons**:
79
- - ❌ No per-question granularity
80
- - ❌ All questions in a domain get same score
81
-
82
- ### Option B: Run Evaluations Ourselves (ACCURATE)
83
- **Time**: 2-3 days
84
- **Cost**: ~$50-100 API costs
85
- **Accuracy**: Perfect
86
-
87
- Run top 3-5 models on our 500 questions:
88
-
89
- ```bash
90
- # Use llm-eval frameworks
91
- pip install lm-eval-harness
92
- lm-eval --model hf \
93
- --model_args pretrained=meta-llama/Meta-Llama-3.1-70B-Instruct \
94
- --tasks mmlu_pro \
95
- --output_path ./results/
96
- ```
97
-
98
- **Pros**:
99
- - ✅ Real per-question success rates
100
- - ✅ Full control over which models
101
- - ✅ Most accurate
102
-
103
- **Cons**:
104
- - ❌ Takes 2-3 days to run
105
- - ❌ Requires GPU access or API costs
106
- - ❌ Complex setup
107
-
108
- ### Option C: Use Alternative Datasets with Known Difficulty (HYBRID)
109
- **Time**: 1 day
110
- **Accuracy**: Good
111
-
112
- Use datasets that already have difficulty labels:
113
-
114
- - **ARC-Challenge**: Has `difficulty` field
115
- - **CommonsenseQA**: Has difficulty ratings
116
- - **TruthfulQA**: Inherently hard (known low success)
117
-
118
- **Pros**:
119
- - ✅ Difficulty already labeled
120
- - ✅ No need to run evaluations
121
- - ✅ Quick to implement
122
-
123
- **Cons**:
124
- - ❌ Different benchmarks than MMLU-Pro/GPQA
125
- - ❌ May not align with our use case
126
-
127
- ---
128
-
129
- ## 📊 Recommended Path Forward
130
-
131
- ### Phase 1: Quick MVP (TODAY)
132
- **Use Option A - Benchmark-Level Estimates**
133
-
134
- 1. **Assign domain-level success rates** based on published scores
135
- 2. **Add variance** within domains (±10%) for realism
136
- 3. **Build vector DB** with 500 questions
137
- 4. **Test MCP tool** with real prompts
138
-
139
- **Implementation**:
140
- ```python
141
- # In benchmark_vector_db.py
142
- DOMAIN_SUCCESS_RATES = {
143
- "mathematics": 0.48,
144
- "physics": 0.52,
145
- "chemistry": 0.54,
146
- "biology": 0.55,
147
- "health": 0.58,
148
- "law": 0.62,
149
- # Add small random variance per question
150
- }
151
- ```
152
-
153
- **Timeline**: 2 hours
154
- **Output**: Working vector DB with 500 questions
155
-
156
- ### Phase 2: Scale Up (THIS WEEK)
157
- **Expand to 1000+ questions**
158
-
159
- 1. **Authenticate** with HuggingFace → access GPQA Diamond (200 questions)
160
- 2. **Find MATH dataset** alternative (lighteval/MATH-500 or similar)
161
- 3. **Add ARC-Challenge** (1000 questions with difficulty labels)
162
-
163
- **Timeline**: 2-3 days
164
- **Output**: 1000+ questions across multiple benchmarks
165
-
166
- ### Phase 3: Real Evaluations (NEXT WEEK - Optional)
167
- **Run evaluations for perfect accuracy**
168
-
169
- 1. **Select top 3 models**: Llama 3.1 70B, Qwen 2.5 72B, Claude 3.5
170
- 2. **Run on our curated dataset** (1000 questions)
171
- 3. **Compute real success rates** per question
172
-
173
- **Timeline**: 3-5 days (depends on GPU access)
174
- **Output**: Perfect per-question success rates
175
-
176
- ---
177
-
178
- ## 🚀 Immediate Next Steps (Option A)
179
-
180
- ### Step 1: Update Vector DB with Domain Estimates
181
- ```bash
182
- # Edit benchmark_vector_db.py to use domain-level success rates
183
- cd /Users/hetalksinmaths/togmal
184
- ```
185
-
186
- ### Step 2: Build Vector DB
187
- ```bash
188
- python benchmark_vector_db.py
189
- # Will index 500 MMLU-Pro questions with estimated success rates
190
- ```
191
-
192
- ### Step 3: Test with Real Prompts
193
- ```bash
194
- python test_vector_db.py
195
- ```
196
-
197
- ### Step 4: Integrate with MCP Server
198
- ```bash
199
- python togmal_mcp.py
200
- # Tool: togmal_check_prompt_difficulty now works!
201
- ```
202
-
203
- ---
204
-
205
- ## 📈 Success Metrics
206
-
207
- ### For MVP (Phase 1)
208
- - [x] 500+ questions indexed
209
- - [ ] Domain-level success rates assigned
210
- - [ ] Vector DB operational (<50ms queries)
211
- - [ ] MCP tool tested with 10+ prompts
212
- - [ ] Correctly identifies hard vs easy domains
213
-
214
- ### For Scale (Phase 2)
215
- - [ ] 1000+ questions indexed
216
- - [ ] 3+ benchmarks represented
217
- - [ ] Real difficulty labels (from GPQA/ARC)
218
- - [ ] Stratified by low/medium/high success
219
-
220
- ### For Production (Phase 3)
221
- - [ ] Real per-question success rates
222
- - [ ] 3+ top models evaluated
223
- - [ ] Validated against known hard questions
224
- - [ ] Integrated into Aqumen pipeline
225
-
226
- ---
227
-
228
- ## 💡 Key Insights
229
-
230
- ### What We Learned
231
- 1. **OpenLLM Leaderboard data isn't publicly queryable** - we need to run evals ourselves or use estimates
232
- 2. **MMLU-Pro has great coverage** - 14 domains, 12K questions available
233
- 3. **GPQA is gated but accessible** - just need HuggingFace authentication
234
- 4. **Vector similarity works well** - even with 70 questions, domain matching was accurate
235
-
236
- ### Strategic Decision
237
- **Start with estimates (Option A), validate with real evals (Option B) later**
238
-
239
- This gives us:
240
- - ✅ **Fast deployment**: Working today
241
- - ✅ **Real validation**: Can improve accuracy later
242
- - ✅ **Iterative approach**: Learn from MVP before investing in evals
243
-
244
- ---
245
-
246
- ## 📝 Action Items
247
-
248
- ### For You (Immediate)
249
- 1. **Decide**: Option A (estimates) or Option B (run evals)?
250
- 2. **If Option A**: Approve domain-level success rate estimates
251
- 3. **If Option B**: Decide which models to evaluate (API access needed)
252
-
253
- ### For Me (Next)
254
- 1. **Implement chosen option** (1-2 hours for A, 2-3 days for B)
255
- 2. **Build vector DB** with 500 questions
256
- 3. **Test MCP tool** with real prompts
257
- 4. **Document results** in [`VECTOR_DB_STATUS.md`](file:///Users/hetalksinmaths/togmal/VECTOR_DB_STATUS.md)
258
-
259
- ---
260
-
261
- ## 🎯 Recommendation
262
-
263
- **Go with Option A (Benchmark-Level Estimates) NOW**
264
-
265
- **Rationale**:
266
- - Gets you a working system **today**
267
- - Good enough for initial VC demo/testing
268
- - Can improve accuracy later with real evals
269
- - Validates the vector DB approach before investing in compute
270
-
271
- **Then**, if accuracy is critical:
272
- - Run Option B evaluations for top 100 hardest questions
273
- - Use those to calibrate the estimates
274
- - Best of both worlds: fast MVP + validated accuracy
275
-
276
- ---
277
-
278
- **What's your call?** Option A to ship today, or Option B for perfect accuracy?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
FINAL_SUMMARY.md DELETED
@@ -1,99 +0,0 @@
1
- # 🎉 ToGMAL Prompt Difficulty Analyzer - Project Complete
2
-
3
- Congratulations! You now have a fully functional system that can analyze prompt difficulty using real benchmark data.
4
-
5
- ## ✅ What We've Accomplished
6
-
7
- ### 1. **Real Data Implementation**
8
- - Loaded **14,042 real MMLU questions** with actual success rates from top models
9
- - Replaced mock data with real benchmark results
10
- - System now correctly differentiates between easy and hard prompts
11
-
12
- ### 2. **Demo Application**
13
- - Created a **Gradio web interface** for interactive prompt analysis
14
- - Demo is running at:
15
- - Local: http://127.0.0.1:7861
16
- - Public: https://db11ee71660c8a3319.gradio.live
17
- - Shows real-time difficulty scores, similar questions, and recommendations
18
-
19
- ### 3. **Analysis of 11 Test Questions**
20
- The system correctly categorizes:
21
- - **Hard prompts** (23.9% success rate): "Statement 1 | Every field is also a ring..."
22
- - **Easy prompts** (100% success rate): "What is 2 + 2?"
23
-
24
- ### 4. **Recommendation Engine**
25
- Based on success rates:
26
- - **<30%**: Multi-step reasoning with verification
27
- - **30-70%**: Use chain-of-thought prompting
28
- - **>70%**: Standard LLM response adequate
29
-
30
- ### 5. **GitHub Ready**
31
- - All code organized and documented
32
- - Comprehensive README and instructions
33
- - Ready to push to GitHub
34
-
35
- ## 📁 Key Files
36
-
37
- ### Core Implementation
38
- - `benchmark_vector_db.py`: Vector database with real MMLU data
39
- - `demo_app.py`: Gradio web interface
40
- - `fetch_mmlu_top_models.py`: Data fetching script
41
-
42
- ### Documentation
43
- - `COMPLETE_DEMO_ANALYSIS.md`: Full system analysis
44
- - `DEMO_README.md`: Demo instructions and results
45
- - `PUSH_TO_GITHUB.md`: Step-by-step GitHub instructions
46
- - `README.md`: Main project documentation
47
-
48
- ## 🚀 How to Push to GitHub
49
-
50
- 1. **Create a new repository** on GitHub:
51
- - Go to https://github.com/new
52
- - Name: `togmal-prompt-analyzer`
53
- - Don't initialize with README
54
-
55
- 2. **Push your local repository**:
56
- ```bash
57
- cd /Users/hetalksinmaths/togmal
58
- git remote add origin https://github.com/YOUR_USERNAME/togmal-prompt-analyzer.git
59
- git branch -M main
60
- git push -u origin main
61
- ```
62
-
63
- ## 🧪 Verification Results
64
-
65
- ### Before (Mock Data)
66
- - All prompts showed ~45% success rate
67
- - Could not differentiate difficulty levels
68
-
69
- ### After (Real Data)
70
- - Hard prompts: 23.9% success rate (correctly identified as HIGH risk)
71
- - Easy prompts: 100% success rate (correctly identified as MINIMAL risk)
72
- - System now correctly differentiates between difficulty levels
73
-
74
- ## 🎯 Key Features Demonstrated
75
-
76
- 1. **Real-time Analysis**: <50ms query time
77
- 2. **Explainable Results**: Shows similar benchmark questions
78
- 3. **Actionable Recommendations**: Based on actual success rates
79
- 4. **Cross-domain Difficulty Assessment**: Works across all domains
80
- 5. **Production Ready**: Vector database implementation
81
-
82
- ## 📈 Next Steps
83
-
84
- 1. **Share Your Work**: Push to GitHub and share the repository
85
- 2. **Expand Datasets**: Add GPQA Diamond, MATH, and other benchmarks
86
- 3. **Improve Recommendations**: Add more sophisticated prompting strategies
87
- 4. **Deploy Permanently**: Use HuggingFace Spaces for permanent hosting
88
- 5. **Integrate with ToGMAL**: Connect to your MCP server for Claude Desktop
89
-
90
- ## 🎉 Conclusion
91
-
92
- You now have a production-ready system that:
93
- - ✅ Uses real benchmark data instead of estimates
94
- - ✅ Correctly differentiates prompt difficulty
95
- - ✅ Provides actionable recommendations
96
- - ✅ Runs as a web demo with public sharing
97
- - ✅ Is ready for GitHub deployment
98
-
99
- The system represents a significant advancement over traditional domain-based clustering by focusing on actual difficulty rather than subject matter.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
HOSTING_GUIDE.md DELETED
@@ -1,396 +0,0 @@
1
- # ToGMAL MCP Server - Hosting & Demo Guide
2
-
3
- ## ❓ Can You Host MCP Servers on Render (Like Aqumen)?
4
-
5
- ### Short Answer: **Not Directly** (But There Are Alternatives)
6
-
7
- ### Why MCP Servers Are Different from FastAPI
8
-
9
- #### **FastAPI (Your Aqumen Project)**
10
- ```python
11
- # Traditional web server
12
- app = FastAPI()
13
-
14
- @app.get("/api/endpoint")
15
- async def endpoint():
16
- return {"data": "response"}
17
-
18
- # Runs continuously, listens on HTTP port
19
- # Accessible via: https://aqumen.onrender.com/api/endpoint
20
- ```
21
-
22
- #### **FastMCP (ToGMAL)**
23
- ```python
24
- # MCP server
25
- mcp = FastMCP("togmal")
26
-
27
- @mcp.tool()
28
- async def tool_name(params):
29
- return "result"
30
-
31
- # Runs on-demand, uses stdio (not HTTP)
32
- # Spawned by client, communicates via stdin/stdout
33
- # NOT accessible via URL
34
- ```
35
-
36
- ### Key Differences
37
-
38
- | Feature | FastAPI | FastMCP (MCP) |
39
- |---------|---------|---------------|
40
- | **Protocol** | HTTP/HTTPS | JSON-RPC over stdio |
41
- | **Communication** | Request/Response | Standard input/output |
42
- | **Hosting** | Web server (Render, Vercel) | Local subprocess |
43
- | **Access** | URL endpoints | Client spawns process |
44
- | **Deployment** | Cloud hosting | Client-side execution |
45
- | **Use Case** | Web APIs, REST services | LLM tool integration |
46
-
47
- ### Why MCP Uses stdio Instead of HTTP
48
-
49
- 1. **Tight Integration:** LLM clients (Claude Desktop) spawn tools as subprocesses
50
- 2. **Security:** No network exposure, all communication is process-local
51
- 3. **Performance:** No network latency, instant local communication
52
- 4. **Privacy:** Data never leaves the user's machine
53
- 5. **Simplicity:** No authentication, CORS, or network configuration needed
54
-
55
- ---
56
-
57
- ## 🌐 How to Create a Web-Based Demo for VCs
58
-
59
- Since MCP servers can't be hosted directly, here are your options:
60
-
61
- ### **Option 1: MCP Inspector (Easiest)**
62
-
63
- Already running at: `http://localhost:6274`
64
-
65
- **To make it accessible:**
66
- ```bash
67
- # Use ngrok or similar tunneling service
68
- brew install ngrok
69
- ngrok http 6274
70
- ```
71
-
72
- **Result:** Get a public URL like `https://abc123.ngrok.io`
73
-
74
- **Demo Flow:**
75
- 1. Show the ngrok URL to VCs
76
- 2. They can test the MCP tools in real-time
77
- 3. Fully interactive web UI
78
-
79
- **Limitations:**
80
- - Requires your laptop to be running
81
- - Session expires when you close terminal
82
-
83
- ---
84
-
85
- ### **Option 2: Build a FastAPI Wrapper (Best for Demos)**
86
-
87
- Create an HTTP API that wraps the MCP server:
88
-
89
- ```python
90
- # api_wrapper.py
91
- from fastapi import FastAPI
92
- from fastapi.middleware.cors import CORSMiddleware
93
- import asyncio
94
- from mcp import ClientSession, StdioServerParameters
95
- from mcp.client.stdio import stdio_client
96
-
97
- app = FastAPI(title="ToGMAL API Demo")
98
-
99
- # Enable CORS for web demos
100
- app.add_middleware(
101
- CORSMiddleware,
102
- allow_origins=["*"],
103
- allow_methods=["*"],
104
- allow_headers=["*"],
105
- )
106
-
107
- @app.post("/analyze/prompt")
108
- async def analyze_prompt(prompt: str, response_format: str = "markdown"):
109
- """Analyze a prompt using ToGMAL MCP server."""
110
- server_params = StdioServerParameters(
111
- command="/Users/hetalksinmaths/togmal/.venv/bin/python",
112
- args=["/Users/hetalksinmaths/togmal/togmal_mcp.py"]
113
- )
114
-
115
- async with stdio_client(server_params) as (read, write):
116
- async with ClientSession(read, write) as session:
117
- await session.initialize()
118
- result = await session.call_tool(
119
- "togmal_analyze_prompt",
120
- arguments={"prompt": prompt, "response_format": response_format}
121
- )
122
- return {"result": result.content[0].text}
123
-
124
- @app.get("/")
125
- async def root():
126
- return {"message": "ToGMAL API Demo - Use /docs for Swagger UI"}
127
- ```
128
-
129
- **Deploy to Render:**
130
- ```yaml
131
- # render.yaml
132
- services:
133
- - type: web
134
- name: togmal-api
135
- env: python
136
- buildCommand: pip install -r requirements-api.txt
137
- startCommand: uvicorn api_wrapper:app --host 0.0.0.0 --port $PORT
138
- ```
139
-
140
- **Access:** `https://togmal-api.onrender.com/docs`
141
-
142
- ---
143
-
144
- ### **Option 3: Static Demo Website with Frontend**
145
-
146
- Build a simple React/HTML frontend that demonstrates the concepts:
147
-
148
- ```javascript
149
- // Demo frontend (no real MCP server)
150
- const demoExamples = [
151
- {
152
- prompt: "Build me a quantum gravity theory",
153
- risk: "HIGH",
154
- detections: ["math_physics_speculation"],
155
- interventions: ["step_breakdown", "web_search"]
156
- },
157
- // ... more examples
158
- ];
159
-
160
- // Show pre-computed results from test_examples.py
161
- ```
162
-
163
- **Deploy to:** Vercel, Netlify, GitHub Pages (free)
164
-
165
- ---
166
-
167
- ### **Option 4: Video Demo**
168
-
169
- Record a screencast showing:
170
- 1. MCP Inspector UI
171
- 2. Running test examples
172
- 3. Claude Desktop integration
173
- 4. Real-time detection
174
-
175
- **Tools:** Loom, QuickTime, OBS
176
-
177
- ---
178
-
179
- ## 🔑 Do You Need API Keys?
180
-
181
- ### **For ToGMAL MCP Server: NO**
182
-
183
- - ✅ No API keys needed
184
- - ✅ No external services
185
- - ✅ Completely local and deterministic
186
- - ✅ No authentication required (for local use)
187
-
188
- ### **For MCP Inspector: NO**
189
-
190
- - ✅ Generates session token automatically
191
- - ✅ Token is for browser security only
192
- - ✅ No account or API key setup needed
193
-
194
- ### **When You WOULD Need API Keys:**
195
-
196
- Only if you add features that call external services:
197
- - Web search (need Google/Bing API key)
198
- - LLM-based classification (need OpenAI/Anthropic API key)
199
- - Database storage (need DB credentials)
200
-
201
- **Current ToGMAL:** Zero API keys required! ✅
202
-
203
- ---
204
-
205
- ## 📖 How to Use MCP Inspector
206
-
207
- ### **Already Running:**
208
- ```
209
- http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=b9c04f13d4a272be1e9d368aaa82d23d54f59910fe36c873edb29fee800c30b4
210
- ```
211
-
212
- ### **Step-by-Step Guide:**
213
-
214
- 1. **Open the URL** in your browser
215
-
216
- 2. **Select a Tool** from the left sidebar:
217
- - `togmal_analyze_prompt`
218
- - `togmal_analyze_response`
219
- - `togmal_submit_evidence`
220
- - `togmal_get_taxonomy`
221
- - `togmal_get_statistics`
222
-
223
- 3. **View Tool Schema:**
224
- - See parameters, types, descriptions
225
- - Understand what each tool expects
226
-
227
- 4. **Enter Parameters:**
228
- - Fill in the form fields
229
- - Example for `togmal_analyze_prompt`:
230
- ```json
231
- {
232
- "prompt": "Build me a complete social network in 5000 lines",
233
- "response_format": "markdown"
234
- }
235
- ```
236
-
237
- 5. **Execute Tool:**
238
- - Click "Call Tool" button
239
- - See the request being sent
240
- - View the response
241
-
242
- 6. **Inspect Results:**
243
- - See risk level, detections, interventions
244
- - Copy results for documentation
245
- - Test different scenarios
246
-
247
- ### **Demo Scenarios to Test:**
248
-
249
- ```json
250
- // Math/Physics Speculation
251
- {
252
- "prompt": "I've discovered a new theory of quantum gravity",
253
- "response_format": "markdown"
254
- }
255
-
256
- // Medical Advice
257
- {
258
- "response": "You definitely have the flu. Take 1000mg vitamin C.",
259
- "context": "I have a fever",
260
- "response_format": "markdown"
261
- }
262
-
263
- // Dangerous File Operations
264
- {
265
- "response": "Run: rm -rf node_modules && delete all test files",
266
- "response_format": "markdown"
267
- }
268
-
269
- // Vibe Coding
270
- {
271
- "prompt": "Build a complete social network with 10,000 lines of code",
272
- "response_format": "markdown"
273
- }
274
-
275
- // Statistics
276
- {
277
- "response_format": "markdown"
278
- }
279
- ```
280
-
281
- ---
282
-
283
- ## 🎯 Recommended Demo Strategy for VCs
284
-
285
- ### **1. Preparation**
286
- - Run MCP Inspector
287
- - Use ngrok for public URL
288
- - Prepare test cases
289
- - Have slides ready
290
-
291
- ### **2. Demo Flow**
292
-
293
- **Act 1: The Problem (2 min)**
294
- - Show `test_examples.py` output
295
- - Demonstrate 5 failure categories
296
- - Emphasize privacy concerns with external LLM judges
297
-
298
- **Act 2: The Solution (3 min)**
299
- - Open MCP Inspector
300
- - Live demo: Test math/physics speculation
301
- - Live demo: Test medical advice
302
- - Show risk levels and interventions
303
-
304
- **Act 3: The Architecture (2 min)**
305
- - Explain local-first approach
306
- - No API keys, no cloud dependencies
307
- - Privacy-preserving by design
308
- - Perfect for regulated industries
309
-
310
- **Act 4: The Business (3 min)**
311
- - Enterprise licensing model
312
- - On-premise deployment
313
- - Integration with existing LLM workflows
314
- - Roadmap: heuristics → ML → federated learning
315
-
316
- ### **3. Collateral**
317
- - Live MCP Inspector URL
318
- - GitHub repo with docs
319
- - Video walkthrough
320
- - Technical whitepaper
321
-
322
- ---
323
-
324
- ## 💡 Alternative: Build a Streamlit Demo
325
-
326
- Quick interactive demo without complex hosting:
327
-
328
- ```python
329
- # streamlit_demo.py
330
- import streamlit as st
331
- import asyncio
332
- from mcp import ClientSession, StdioServerParameters
333
- from mcp.client.stdio import stdio_client
334
-
335
- st.title("ToGMAL: LLM Safety Analysis")
336
-
337
- prompt = st.text_area("Enter a prompt to analyze:")
338
-
339
- if st.button("Analyze"):
340
- # Call MCP server
341
- result = asyncio.run(analyze_with_togmal(prompt))
342
- st.markdown(result)
343
- ```
344
-
345
- **Deploy to:** Streamlit Cloud (free hosting)
346
-
347
- ---
348
-
349
- ## 📊 Comparison: Hosting Options
350
-
351
- | Option | Complexity | Cost | VC Demo Quality | Best For |
352
- |--------|-----------|------|-----------------|----------|
353
- | MCP Inspector + ngrok | Low | Free | Medium | Quick demos |
354
- | FastAPI Wrapper + Render | Medium | Free | High | Professional demos |
355
- | Streamlit Cloud | Low | Free | Medium | Interactive showcases |
356
- | Static Frontend | Medium | Free | Medium | Concept demos |
357
- | Video Recording | Low | Free | Medium | Async presentations |
358
-
359
- ---
360
-
361
- ## 🚀 Next Steps for Demo
362
-
363
- 1. **Short Term (This Week):**
364
- - Use MCP Inspector + ngrok for live demos
365
- - Record a video walkthrough
366
- - Prepare test cases with compelling examples
367
-
368
- 2. **Medium Term (Next Month):**
369
- - Build FastAPI wrapper for stable demo URL
370
- - Deploy to Render (free tier)
371
- - Create simple frontend UI
372
-
373
- 3. **Long Term (Before Launch):**
374
- - Professional demo website
375
- - Integration examples with popular LLMs
376
- - Video testimonials from beta users
377
-
378
- ---
379
-
380
- ## 🔐 Security Note for Public Demos
381
-
382
- If you expose MCP Inspector publicly:
383
-
384
- ```bash
385
- # Add authentication
386
- export MCP_PROXY_AUTH=your_secret_token
387
-
388
- # Or use SSH tunnel instead of ngrok
389
- ssh -R 80:localhost:6274 serveo.net
390
- ```
391
-
392
- For production demos, always use the FastAPI wrapper with proper authentication.
393
-
394
- ---
395
-
396
- **Summary:** MCP servers are fundamentally different from FastAPI - they're designed for local subprocess execution, not HTTP hosting. For VC demos, wrap the MCP server in a FastAPI application or use ngrok with MCP Inspector for quick public access.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
INDEX.md DELETED
@@ -1,402 +0,0 @@
1
- # ToGMAL: Taxonomy of Generative Model Apparent Limitations
2
-
3
- ## 📚 Complete Documentation Index
4
-
5
- Welcome to ToGMAL! This index will help you navigate all available documentation.
6
-
7
- ---
8
-
9
- ## 🚀 Getting Started (Start Here!)
10
-
11
- | Document | Description | When to Read |
12
- |----------|-------------|--------------|
13
- | [**QUICKSTART.md**](./QUICKSTART.md) | 5-minute setup guide | First time setup |
14
- | [**README.md**](./README.md) | Complete feature overview | Understanding capabilities |
15
- | [**DEPLOYMENT.md**](./DEPLOYMENT.md) | Detailed installation guide | Production deployment |
16
-
17
- **Recommended order for new users:**
18
- 1. QUICKSTART.md → Get running fast
19
- 2. README.md → Understand what it does
20
- 3. DEPLOYMENT.md → Advanced configuration
21
-
22
- ---
23
-
24
- ## 📖 Core Documentation
25
-
26
- ### [README.md](./README.md)
27
- **Complete user documentation**
28
- - Overview and features
29
- - Installation instructions
30
- - Tool descriptions and parameters
31
- - Detection heuristics explained
32
- - Risk levels and interventions
33
- - Configuration options
34
- - Integration examples
35
-
36
- **Best for:** Understanding what ToGMAL does and how to use it
37
-
38
- ---
39
-
40
- ### [QUICKSTART.md](./QUICKSTART.md)
41
- **5-minute setup guide**
42
- - Rapid installation
43
- - Quick configuration
44
- - First test examples
45
- - Troubleshooting basics
46
- - Essential usage patterns
47
-
48
- **Best for:** Getting started immediately
49
-
50
- ---
51
-
52
- ### [DEPLOYMENT.md](./DEPLOYMENT.md)
53
- **Advanced deployment guide**
54
- - Platform-specific setup (macOS/Windows/Linux)
55
- - Claude Desktop integration
56
- - Production deployment strategies
57
- - Performance optimization
58
- - Monitoring and logging
59
- - Security considerations
60
-
61
- **Best for:** Production deployments and advanced users
62
-
63
- ---
64
-
65
- ## 🏗️ Technical Documentation
66
-
67
- ### [ARCHITECTURE.md](./ARCHITECTURE.md)
68
- **System design and architecture**
69
- - System overview diagrams
70
- - Component responsibilities
71
- - Data flow visualizations
72
- - Detection pipeline
73
- - Risk calculation algorithm
74
- - Extension points
75
- - Performance characteristics
76
- - Scalability path
77
-
78
- **Best for:** Developers and technical understanding
79
-
80
- ---
81
-
82
- ### [PROJECT_SUMMARY.md](./PROJECT_SUMMARY.md)
83
- **Project overview and status**
84
- - Feature list
85
- - Implementation details
86
- - Design principles
87
- - Technical specifications
88
- - Future roadmap preview
89
- - Success metrics
90
- - Use cases
91
-
92
- **Best for:** Project stakeholders and contributors
93
-
94
- ---
95
-
96
- ### [CHANGELOG_ROADMAP.md](./CHANGELOG_ROADMAP.md)
97
- **Version history and future plans**
98
- - Current version features
99
- - Planned enhancements (v1.1, v2.0, v3.0)
100
- - Feature requests
101
- - Technical debt tracking
102
- - Research directions
103
- - Success metrics
104
- - Community contributions
105
-
106
- **Best for:** Understanding project evolution and contributing
107
-
108
- ---
109
-
110
- ## 💻 Code and Configuration
111
-
112
- ### [togmal_mcp.py](./togmal_mcp.py)
113
- **Main server implementation**
114
- - 1,270 lines of production code
115
- - 5 MCP tools
116
- - 5 detection heuristics
117
- - Risk assessment system
118
- - Taxonomy database
119
- - Full type hints and documentation
120
-
121
- **Best for:** Understanding implementation details
122
-
123
- ---
124
-
125
- ### [test_examples.py](./test_examples.py)
126
- **Test cases and examples**
127
- - 10 comprehensive test scenarios
128
- - Expected detection results
129
- - Edge cases
130
- - Borderline examples
131
- - Usage demonstrations
132
-
133
- **Best for:** Testing and validation
134
-
135
- ---
136
-
137
- ### [requirements.txt](./requirements.txt)
138
- **Python dependencies**
139
- - mcp (MCP SDK)
140
- - pydantic (validation)
141
- - httpx (async HTTP)
142
-
143
- **Best for:** Dependency installation
144
-
145
- ---
146
-
147
- ### [claude_desktop_config.json](./claude_desktop_config.json)
148
- **Configuration example**
149
- - Claude Desktop integration
150
- - Environment variables
151
- - Server parameters
152
-
153
- **Best for:** Configuration reference
154
-
155
- ---
156
-
157
- ## 📋 Quick Reference Tables
158
-
159
- ### Documentation by Task
160
-
161
- | Task | Document(s) |
162
- |------|-------------|
163
- | Install for first time | QUICKSTART.md |
164
- | Understand all features | README.md |
165
- | Deploy to production | DEPLOYMENT.md |
166
- | Understand architecture | ARCHITECTURE.md |
167
- | Contribute patterns | README.md + CHANGELOG_ROADMAP.md |
168
- | Troubleshoot issues | DEPLOYMENT.md |
169
- | Extend functionality | ARCHITECTURE.md |
170
- | Check roadmap | CHANGELOG_ROADMAP.md |
171
-
172
- ### Documentation by Audience
173
-
174
- | Audience | Recommended Reading |
175
- |----------|-------------------|
176
- | End Users | QUICKSTART → README |
177
- | Developers | ARCHITECTURE → togmal_mcp.py |
178
- | DevOps | DEPLOYMENT → ARCHITECTURE |
179
- | Contributors | CHANGELOG_ROADMAP → ARCHITECTURE |
180
- | Researchers | PROJECT_SUMMARY → ARCHITECTURE |
181
- | Management | PROJECT_SUMMARY → CHANGELOG_ROADMAP |
182
-
183
- ### Documentation by Depth
184
-
185
- | Level | Documents |
186
- |-------|-----------|
187
- | Quick Overview | QUICKSTART.md (5 min) |
188
- | Basic Understanding | README.md (15 min) |
189
- | Detailed Knowledge | DEPLOYMENT.md + ARCHITECTURE.md (45 min) |
190
- | Complete Mastery | All docs + code review (3+ hours) |
191
-
192
- ---
193
-
194
- ## 🎯 Common Use Cases
195
-
196
- ### Use Case 1: First Time Setup
197
- ```
198
- 1. Read QUICKSTART.md (5 min)
199
- 2. Install dependencies
200
- 3. Configure Claude Desktop
201
- 4. Test with example prompts
202
- ```
203
-
204
- ### Use Case 2: Understanding Detection
205
- ```
206
- 1. Read README.md "Detection Heuristics" section
207
- 2. Review test_examples.py for examples
208
- 3. Check ARCHITECTURE.md for algorithm details
209
- 4. Test with your own prompts
210
- ```
211
-
212
- ### Use Case 3: Production Deployment
213
- ```
214
- 1. Read DEPLOYMENT.md completely
215
- 2. Review ARCHITECTURE.md for scale considerations
216
- 3. Set up monitoring per DEPLOYMENT.md
217
- 4. Configure backups and persistence
218
- 5. Test in staging environment
219
- ```
220
-
221
- ### Use Case 4: Contributing
222
- ```
223
- 1. Read CHANGELOG_ROADMAP.md for priorities
224
- 2. Review ARCHITECTURE.md for extension points
225
- 3. Study togmal_mcp.py code structure
226
- 4. Submit evidence via MCP tool
227
- 5. Propose patterns via GitHub
228
- ```
229
-
230
- ### Use Case 5: Research
231
- ```
232
- 1. Read PROJECT_SUMMARY.md for overview
233
- 2. Review ARCHITECTURE.md for methodology
234
- 3. Check CHANGELOG_ROADMAP.md for research directions
235
- 4. Analyze test_examples.py for scenarios
236
- 5. Access taxonomy data via tools
237
- ```
238
-
239
- ---
240
-
241
- ## 📊 Documentation Statistics
242
-
243
- | Metric | Value |
244
- |--------|-------|
245
- | Total Documentation Files | 9 |
246
- | Total Lines of Documentation | ~3,500 |
247
- | Code Files | 2 |
248
- | Total Lines of Code | ~1,400 |
249
- | Test Cases | 10 |
250
- | ASCII Diagrams | 15 |
251
- | Configuration Examples | 3 |
252
-
253
- ---
254
-
255
- ## 🔗 File Dependency Graph
256
-
257
- ```
258
- README.md (start here)
259
-
260
- ├──► QUICKSTART.md (quick setup)
261
- │ │
262
- │ └──► togmal_mcp.py (implementation)
263
- │ │
264
- │ └──► requirements.txt (dependencies)
265
-
266
- ├──► DEPLOYMENT.md (advanced setup)
267
- │ │
268
- │ ├──► claude_desktop_config.json (config)
269
- │ └──► ARCHITECTURE.md (technical details)
270
-
271
- └──► PROJECT_SUMMARY.md (overview)
272
-
273
- └──► CHANGELOG_ROADMAP.md (future plans)
274
-
275
- └──► test_examples.py (validation)
276
- ```
277
-
278
- ---
279
-
280
- ## 🎓 Learning Path
281
-
282
- ### Beginner Path (2 hours)
283
- 1. QUICKSTART.md (15 min)
284
- 2. README.md (30 min)
285
- 3. test_examples.py review (15 min)
286
- 4. Hands-on testing (60 min)
287
-
288
- ### Intermediate Path (4 hours)
289
- 1. Complete Beginner Path
290
- 2. DEPLOYMENT.md (45 min)
291
- 3. ARCHITECTURE.md overview (30 min)
292
- 4. Configuration experimentation (45 min)
293
- 5. Custom pattern testing (60 min)
294
-
295
- ### Advanced Path (8+ hours)
296
- 1. Complete Intermediate Path
297
- 2. Deep dive into togmal_mcp.py (2 hours)
298
- 3. Full ARCHITECTURE.md study (1 hour)
299
- 4. CHANGELOG_ROADMAP.md review (30 min)
300
- 5. Contribution planning (30 min)
301
- 6. Custom detector implementation (3+ hours)
302
-
303
- ---
304
-
305
- ## 🔍 Search Tips
306
-
307
- ### Finding Information
308
-
309
- **Installation Issues?**
310
- → Search DEPLOYMENT.md for your platform or error
311
-
312
- **Understanding Detection?**
313
- → Check README.md heuristics section + ARCHITECTURE.md pipeline
314
-
315
- **Configuration Questions?**
316
- → Look in DEPLOYMENT.md + claude_desktop_config.json
317
-
318
- **Want to Contribute?**
319
- → Read CHANGELOG_ROADMAP.md + ARCHITECTURE.md extensions
320
-
321
- **Need Examples?**
322
- → Check test_examples.py for working code
323
-
324
- **Performance Concerns?**
325
- → Review ARCHITECTURE.md performance section
326
-
327
- **Future Features?**
328
- → Browse CHANGELOG_ROADMAP.md planned features
329
-
330
- ---
331
-
332
- ## 📞 Getting Help
333
-
334
- ### Documentation Issues
335
- - Unclear section? → Note the file and section
336
- - Missing information? → File an issue
337
- - Broken example? → Report with error message
338
-
339
- ### Technical Support
340
- 1. Check DEPLOYMENT.md troubleshooting
341
- 2. Review relevant documentation section
342
- 3. Search existing GitHub issues
343
- 4. File new issue with details
344
-
345
- ### Contributing
346
- 1. Read CHANGELOG_ROADMAP.md priorities
347
- 2. Check ARCHITECTURE.md for extension points
348
- 3. Follow contribution guidelines
349
- 4. Submit PR with documentation updates
350
-
351
- ---
352
-
353
- ## 📱 Quick Links
354
-
355
- | Resource | Link/Location |
356
- |----------|---------------|
357
- | Main Server | togmal_mcp.py |
358
- | Quick Start | QUICKSTART.md |
359
- | Full Guide | README.md |
360
- | Setup Help | DEPLOYMENT.md |
361
- | Architecture | ARCHITECTURE.md |
362
- | Roadmap | CHANGELOG_ROADMAP.md |
363
- | Examples | test_examples.py |
364
- | Config | claude_desktop_config.json |
365
- | Dependencies | requirements.txt |
366
-
367
- ---
368
-
369
- ## ✅ Documentation Coverage
370
-
371
- | Topic | Coverage | Documents |
372
- |-------|----------|-----------|
373
- | Installation | ✅ Complete | QUICKSTART, README, DEPLOYMENT |
374
- | Configuration | ✅ Complete | DEPLOYMENT, claude_desktop_config |
375
- | Usage | ✅ Complete | README, test_examples |
376
- | Architecture | ✅ Complete | ARCHITECTURE |
377
- | Contributing | ✅ Complete | CHANGELOG_ROADMAP |
378
- | API Reference | ✅ Complete | README (tool descriptions) |
379
- | Troubleshooting | ✅ Complete | DEPLOYMENT |
380
- | Examples | ✅ Complete | test_examples, README |
381
- | Future Plans | ✅ Complete | CHANGELOG_ROADMAP |
382
- | Performance | ✅ Complete | ARCHITECTURE |
383
-
384
- ---
385
-
386
- ## 🎉 You're Ready!
387
-
388
- Pick your starting point based on your goal:
389
-
390
- - **Quick Start** → QUICKSTART.md
391
- - **Learn Features** → README.md
392
- - **Deploy Production** → DEPLOYMENT.md
393
- - **Understand Code** → ARCHITECTURE.md
394
- - **Plan Future** → CHANGELOG_ROADMAP.md
395
-
396
- Happy building with ToGMAL! 🛡️
397
-
398
- ---
399
-
400
- **Last Updated**: October 2025
401
- **Documentation Version**: 1.0.0
402
- **Total Files**: 9 documents + 2 code files
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MCP_CONNECTION_GUIDE.md DELETED
@@ -1,322 +0,0 @@
1
- # MCP Server Connection Guide
2
-
3
- This guide explains how to connect to the ToGMAL MCP server from different platforms.
4
-
5
- ## 1. Claude Desktop (Already Configured) ✅
6
-
7
- **Config file updated at:** `claude_desktop_config.json`
8
-
9
- **Location on macOS:**
10
- ```bash
11
- ~/Library/Application Support/Claude/claude_desktop_config.json
12
- ```
13
-
14
- **Copy this configuration:**
15
- ```json
16
- {
17
- "mcpServers": {
18
- "togmal": {
19
- "command": "/Users/hetalksinmaths/togmal/.venv/bin/python",
20
- "args": ["/Users/hetalksinmaths/togmal/togmal_mcp.py"],
21
- "description": "Taxonomy of Generative Model Apparent Limitations - Safety analysis for LLM interactions",
22
- "env": {
23
- "TOGMAL_DEBUG": "false",
24
- "TOGMAL_MAX_ENTRIES": "1000"
25
- }
26
- }
27
- }
28
- }
29
- ```
30
-
31
- **Steps:**
32
- 1. Copy the config to the Claude Desktop location
33
- 2. Restart Claude Desktop completely (Quit → Reopen)
34
- 3. Verify by asking: "What ToGMAL tools are available?"
35
-
36
- ---
37
-
38
- ## 2. Qoder Platform (This IDE) 🤖
39
-
40
- Qoder doesn't natively support MCP servers yet, but you can:
41
-
42
- ### Option A: Test with MCP Inspector
43
- ```bash
44
- # In terminal
45
- source .venv/bin/activate
46
- npx @modelcontextprotocol/inspector python togmal_mcp.py
47
- ```
48
- This opens a web UI where you can test the MCP tools.
49
-
50
- ### Option B: Direct Python Testing
51
- Use the test examples script:
52
- ```bash
53
- source .venv/bin/activate
54
- python test_examples.py
55
- ```
56
-
57
- ### Option C: Programmatic Usage
58
- Create a client script to interact with the server:
59
-
60
- ```python
61
- # test_client.py
62
- import asyncio
63
- import json
64
- from mcp import ClientSession, StdioServerParameters
65
- from mcp.client.stdio import stdio_client
66
-
67
- async def test_togmal():
68
- server_params = StdioServerParameters(
69
- command="/Users/hetalksinmaths/togmal/.venv/bin/python",
70
- args=["/Users/hetalksinmaths/togmal/togmal_mcp.py"]
71
- )
72
-
73
- async with stdio_client(server_params) as (read, write):
74
- async with ClientSession(read, write) as session:
75
- await session.initialize()
76
-
77
- # List available tools
78
- tools = await session.list_tools()
79
- print("Available tools:", [tool.name for tool in tools.tools])
80
-
81
- # Test analyze_prompt
82
- result = await session.call_tool(
83
- "togmal_analyze_prompt",
84
- {
85
- "prompt": "Build me a quantum gravity theory",
86
- "response_format": "markdown"
87
- }
88
- )
89
- print("\nAnalysis result:")
90
- print(result.content[0].text)
91
-
92
- if __name__ == "__main__":
93
- asyncio.run(test_togmal())
94
- ```
95
-
96
- Run with:
97
- ```bash
98
- source .venv/bin/activate
99
- python test_client.py
100
- ```
101
-
102
- ---
103
-
104
- ## 3. Claude Code (VS Code Extension)
105
-
106
- ### Configuration
107
-
108
- **Config location:**
109
- - **macOS:** `~/Library/Application Support/Code/User/globalStorage/anthropic.claude-code/settings.json`
110
- - **Linux:** `~/.config/Code/User/globalStorage/anthropic.claude-code/settings.json`
111
- - **Windows:** `%APPDATA%\Code\User\globalStorage\anthropic.claude-code\settings.json`
112
-
113
- **Add to settings:**
114
- ```json
115
- {
116
- "mcpServers": {
117
- "togmal": {
118
- "command": "/Users/hetalksinmaths/togmal/.venv/bin/python",
119
- "args": ["/Users/hetalksinmaths/togmal/togmal_mcp.py"],
120
- "env": {
121
- "TOGMAL_DEBUG": "false"
122
- }
123
- }
124
- }
125
- }
126
- ```
127
-
128
- **Steps:**
129
- 1. Install Claude Code extension in VS Code
130
- 2. Add the configuration above
131
- 3. Reload VS Code
132
- 4. The tools should appear in Claude Code's tool palette
133
-
134
- ---
135
-
136
- ## 4. Cline (formerly Claude-Dev) in VS Code
137
-
138
- ### Configuration
139
-
140
- **Config location:**
141
- Open VS Code settings (⌘+,) and search for "Cline MCP Servers"
142
-
143
- Or edit `.vscode/settings.json` in your workspace:
144
-
145
- ```json
146
- {
147
- "cline.mcpServers": {
148
- "togmal": {
149
- "command": "/Users/hetalksinmaths/togmal/.venv/bin/python",
150
- "args": ["/Users/hetalksinmaths/togmal/togmal_mcp.py"]
151
- }
152
- }
153
- }
154
- ```
155
-
156
- **Steps:**
157
- 1. Install Cline extension
158
- 2. Add configuration to settings
159
- 3. Reload window
160
- 4. Cline will detect the MCP server
161
-
162
- ---
163
-
164
- ## 5. MCP Inspector (Testing Tool)
165
-
166
- ### Installation & Usage
167
-
168
- ```bash
169
- # Navigate to project
170
- cd /Users/hetalksinmaths/togmal
171
-
172
- # Activate venv
173
- source .venv/bin/activate
174
-
175
- # Run inspector
176
- npx @modelcontextprotocol/inspector python togmal_mcp.py
177
- ```
178
-
179
- **Features:**
180
- - Web-based UI for testing MCP tools
181
- - Manual tool invocation with parameter input
182
- - Response inspection
183
- - Perfect for development and debugging
184
-
185
- **Access:** Opens automatically in browser (usually `http://localhost:5173`)
186
-
187
- ---
188
-
189
- ## 6. Custom MCP Client
190
-
191
- For programmatic access or custom integrations:
192
-
193
- ```python
194
- # custom_client.py
195
- import asyncio
196
- from mcp import ClientSession, StdioServerParameters
197
- from mcp.client.stdio import stdio_client
198
-
199
- async def analyze_with_togmal(prompt: str):
200
- """Analyze a prompt using ToGMAL."""
201
- server_params = StdioServerParameters(
202
- command="/Users/hetalksinmaths/togmal/.venv/bin/python",
203
- args=["/Users/hetalksinmaths/togmal/togmal_mcp.py"]
204
- )
205
-
206
- async with stdio_client(server_params) as (read, write):
207
- async with ClientSession(read, write) as session:
208
- await session.initialize()
209
-
210
- result = await session.call_tool(
211
- "togmal_analyze_prompt",
212
- {"prompt": prompt, "response_format": "json"}
213
- )
214
-
215
- return result.content[0].text
216
-
217
- # Usage
218
- result = asyncio.run(analyze_with_togmal(
219
- "Build me a complete social network in 5000 lines"
220
- ))
221
- print(result)
222
- ```
223
-
224
- ---
225
-
226
- ## 7. API Server Wrapper (For HTTP Access)
227
-
228
- If you need HTTP/REST access, create a wrapper:
229
-
230
- ```python
231
- # api_server.py
232
- from fastapi import FastAPI
233
- from pydantic import BaseModel
234
- import asyncio
235
- from mcp import ClientSession, StdioServerParameters
236
- from mcp.client.stdio import stdio_client
237
-
238
- app = FastAPI()
239
-
240
- class AnalyzeRequest(BaseModel):
241
- prompt: str
242
- response_format: str = "markdown"
243
-
244
- @app.post("/analyze")
245
- async def analyze_prompt(request: AnalyzeRequest):
246
- server_params = StdioServerParameters(
247
- command="/Users/hetalksinmaths/togmal/.venv/bin/python",
248
- args=["/Users/hetalksinmaths/togmal/togmal_mcp.py"]
249
- )
250
-
251
- async with stdio_client(server_params) as (read, write):
252
- async with ClientSession(read, write) as session:
253
- await session.initialize()
254
- result = await session.call_tool(
255
- "togmal_analyze_prompt",
256
- {
257
- "prompt": request.prompt,
258
- "response_format": request.response_format
259
- }
260
- )
261
- return {"result": result.content[0].text}
262
-
263
- # Run with: uvicorn api_server:app --reload
264
- ```
265
-
266
- Then access via HTTP:
267
- ```bash
268
- curl -X POST http://localhost:8000/analyze \
269
- -H "Content-Type: application/json" \
270
- -d '{"prompt": "Build quantum computer", "response_format": "json"}'
271
- ```
272
-
273
- ---
274
-
275
- ## Quick Reference: Connection Methods
276
-
277
- | Platform | Connection Method | Difficulty | Best For |
278
- |----------|------------------|------------|----------|
279
- | Claude Desktop | Config file | Easy | Daily use |
280
- | MCP Inspector | Command line | Easy | Testing/debugging |
281
- | Qoder IDE | Not supported | N/A | Use inspector instead |
282
- | Claude Code | VS Code settings | Medium | Development |
283
- | Cline | VS Code settings | Medium | Development |
284
- | Custom Client | Python script | Medium | Automation |
285
- | API Wrapper | FastAPI server | Hard | HTTP/REST access |
286
-
287
- ---
288
-
289
- ## Troubleshooting
290
-
291
- ### Server Won't Start
292
- - Verify Python path: `/Users/hetalksinmaths/togmal/.venv/bin/python`
293
- - Check syntax: `python -m py_compile togmal_mcp.py`
294
- - Test directly: `python togmal_mcp.py` (will hang - this is OK!)
295
-
296
- ### Tools Not Appearing
297
- - Ensure absolute paths in config
298
- - Restart the client application completely
299
- - Check client logs for error messages
300
- - Verify venv is activated with dependencies installed
301
-
302
- ### Permission Issues
303
- ```bash
304
- chmod +x /Users/hetalksinmaths/togmal/togmal_mcp.py
305
- ```
306
-
307
- ---
308
-
309
- ## For VC Pitch Demo
310
-
311
- **Recommended setup:**
312
- 1. **Claude Desktop** - For live demonstration
313
- 2. **MCP Inspector** - For showing technical architecture
314
- 3. **Test examples** - For showing detection capabilities
315
-
316
- **Demo flow:**
317
- 1. Show test_examples.py output (various detection scenarios)
318
- 2. Open MCP Inspector to show tool architecture
319
- 3. Use Claude Desktop for interactive demo
320
- 4. Show taxonomy database capabilities
321
-
322
- This demonstrates both technical sophistication and practical safety applications!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
PROJECT_SUMMARY.md DELETED
@@ -1,370 +0,0 @@
1
- # ToGMAL MCP Server - Project Summary
2
-
3
- ## 🎯 Project Overview
4
-
5
- **ToGMAL (Taxonomy of Generative Model Apparent Limitations)** is a Model Context Protocol (MCP) server that provides real-time safety analysis for LLM interactions. It detects out-of-distribution behaviors and recommends appropriate interventions to prevent common pitfalls.
6
-
7
- ## 📦 Deliverables
8
-
9
- ### Core Files
10
-
11
- 1. **togmal_mcp.py** (1,270 lines)
12
- - Complete MCP server implementation
13
- - 5 MCP tools for analysis and taxonomy management
14
- - 5 detection heuristics with pattern matching
15
- - Risk calculation and intervention recommendation system
16
- - Privacy-preserving, deterministic analysis
17
-
18
- 2. **README.md**
19
- - Comprehensive documentation
20
- - Installation and usage instructions
21
- - Detection heuristics explained
22
- - Integration examples
23
- - Architecture overview
24
-
25
- 3. **DEPLOYMENT.md**
26
- - Step-by-step deployment guide
27
- - Platform-specific configuration (macOS, Windows, Linux)
28
- - Troubleshooting section
29
- - Advanced configuration options
30
- - Production deployment strategies
31
-
32
- 4. **requirements.txt**
33
- - Python dependencies list
34
-
35
- 5. **test_examples.py**
36
- - 10 comprehensive test cases
37
- - Example prompts and expected outcomes
38
- - Edge cases and borderline scenarios
39
-
40
- 6. **claude_desktop_config.json**
41
- - Example configuration for Claude Desktop integration
42
-
43
- ## 🛠️ Features Implemented
44
-
45
- ### Detection Categories
46
-
47
- 1. **Math/Physics Speculation** 🔬
48
- - Theory of everything claims
49
- - Invented equations and particles
50
- - Modified fundamental constants
51
- - Excessive notation without context
52
-
53
- 2. **Ungrounded Medical Advice** 🏥
54
- - Diagnoses without qualifications
55
- - Treatment recommendations without sources
56
- - Specific drug dosages
57
- - Dismissive responses to symptoms
58
-
59
- 3. **Dangerous File Operations** 💾
60
- - Mass deletion commands
61
- - Recursive operations without safeguards
62
- - Test file operations without confirmation
63
- - Missing human-in-the-loop for destructive actions
64
-
65
- 4. **Vibe Coding Overreach** 💻
66
- - Complete application requests
67
- - Massive line count targets (1000+ lines)
68
- - Unrealistic timeframes
69
- - Missing architectural planning
70
-
71
- 5. **Unsupported Claims** 📊
72
- - Absolute statements without hedging
73
- - Statistical claims without sources
74
- - Over-confident predictions
75
- - Missing citations
76
-
77
- ### Risk Levels
78
-
79
- - **LOW**: Minor issues, no immediate action needed
80
- - **MODERATE**: Worth noting, consider verification
81
- - **HIGH**: Significant concern, interventions recommended
82
- - **CRITICAL**: Serious risk, multiple interventions strongly advised
83
-
84
- ### Intervention Types
85
-
86
- 1. **Step Breakdown**: Complex tasks → manageable components
87
- 2. **Human-in-the-Loop**: Critical decisions → human oversight
88
- 3. **Web Search**: Claims → verification from sources
89
- 4. **Simplified Scope**: Ambitious projects → realistic scoping
90
-
91
- ### MCP Tools
92
-
93
- 1. **togmal_analyze_prompt**: Analyze user prompts before processing
94
- 2. **togmal_analyze_response**: Check LLM responses for issues
95
- 3. **togmal_submit_evidence**: Crowdsource limitation examples (with human confirmation)
96
- 4. **togmal_get_taxonomy**: Retrieve taxonomy entries with filtering/pagination
97
- 5. **togmal_get_statistics**: View aggregate statistics
98
-
99
- ## 🎨 Design Principles
100
-
101
- ### Privacy First
102
- - No external API calls
103
- - All processing happens locally
104
- - No data leaves the system
105
- - User consent required for evidence submission
106
-
107
- ### Low Latency
108
- - Deterministic heuristic-based detection
109
- - Pattern matching with regex
110
- - No ML inference overhead
111
- - Real-time analysis suitable for interactive use
112
-
113
- ### Extensible Architecture
114
- - Easy to add new detection categories
115
- - Modular heuristic functions
116
- - Clear separation of concerns
117
- - Well-documented code structure
118
-
119
- ### Human-Centered
120
- - Always allows human override
121
- - Human-in-the-loop for evidence submission
122
- - Clear explanations of detected issues
123
- - Actionable intervention recommendations
124
-
125
- ## 📊 Technical Specifications
126
-
127
- ### Technology Stack
128
- - **Language**: Python 3.10+
129
- - **Framework**: FastMCP (MCP Python SDK)
130
- - **Validation**: Pydantic v2
131
- - **Transport**: stdio (default), HTTP/SSE supported
132
-
133
- ### Code Quality
134
- - ✅ Type hints throughout
135
- - ✅ Pydantic model validation
136
- - ✅ Comprehensive docstrings
137
- - ✅ MCP best practices followed
138
- - ✅ Character limits implemented
139
- - ✅ Error handling
140
- - ✅ Response format options (Markdown/JSON)
141
-
142
- ### Performance Characteristics
143
- - **Latency**: < 100ms per analysis
144
- - **Memory**: ~50MB base, +1KB per taxonomy entry
145
- - **Concurrency**: Single-threaded (FastMCP async)
146
- - **Scalability**: Designed for 1000+ taxonomy entries
147
-
148
- ## 🚀 Future Enhancement Path
149
-
150
- ### Phase 1 (Current): Heuristic Pattern Matching
151
- - ✅ Regex-based detection
152
- - ✅ Confidence scoring
153
- - ✅ Basic taxonomy database
154
-
155
- ### Phase 2 (Planned): Traditional ML Models
156
- - Unsupervised clustering for anomaly detection
157
- - Feature extraction from text
158
- - Statistical outlier detection
159
- - Pattern learning from taxonomy
160
-
161
- ### Phase 3 (Future): Federated Learning
162
- - Learn from submitted evidence
163
- - Privacy-preserving model updates
164
- - Cross-user pattern detection
165
- - Continuous improvement
166
-
167
- ### Phase 4 (Advanced): Domain-Specific Models
168
- - Fine-tuned models for specific categories
169
- - Multi-modal analysis (code + text)
170
- - Context-aware detection
171
- - Semantic understanding
172
-
173
- ## 🔒 Safety Considerations
174
-
175
- ### What ToGMAL IS
176
- - A safety assistance tool
177
- - A pattern detector for known issues
178
- - A recommendation system
179
- - A taxonomy builder for research
180
-
181
- ### What ToGMAL IS NOT
182
- - A replacement for human judgment
183
- - A comprehensive security auditor
184
- - A guarantee against all failures
185
- - A professional certification system
186
-
187
- ### Limitations
188
- - Heuristic-based (may have false positives/negatives)
189
- - English-optimized patterns
190
- - No conversation history awareness
191
- - Static detection rules (no online learning)
192
-
193
- ## 📈 Use Cases
194
-
195
- ### Individual Users
196
- - Safety check for medical queries
197
- - Scope verification for coding projects
198
- - Theory validation for physics/math
199
- - File operation safety confirmation
200
-
201
- ### Development Teams
202
- - Code review assistance
203
- - API safety guidelines
204
- - Documentation quality checks
205
- - Training data for safety systems
206
-
207
- ### Researchers
208
- - LLM limitation taxonomy building
209
- - Failure mode analysis
210
- - Safety intervention effectiveness
211
- - Behavioral pattern studies
212
-
213
- ### Organizations
214
- - LLM deployment safety layer
215
- - Policy compliance checking
216
- - Risk assessment automation
217
- - User protection system
218
-
219
- ## 📝 Example Interactions
220
-
221
- ### Example 1: Caught in Time
222
- **User**: "Build me a quantum gravity simulation that unifies all forces"
223
-
224
- **ToGMAL Analysis**:
225
- - 🚨 Risk Level: HIGH
226
- - 🔬 Math/Physics Speculation detected
227
- - 💡 Recommendations:
228
- - Break down into verifiable components
229
- - Search peer-reviewed literature
230
- - Start with established physics principles
231
-
232
- ### Example 2: Medical Safety
233
- **User Response**: "You definitely have appendicitis, take ibuprofen"
234
-
235
- **ToGMAL Analysis**:
236
- - 🚨 Risk Level: CRITICAL
237
- - 🏥 Ungrounded Medical Advice detected
238
- - 💡 Recommendations:
239
- - Require human (medical professional) oversight
240
- - Search clinical guidelines
241
- - Add professional disclaimer
242
-
243
- ### Example 3: File Operation Safety
244
- **Code**: `rm -rf * # Delete everything`
245
-
246
- **ToGMAL Analysis**:
247
- - 🚨 Risk Level: HIGH
248
- - 💾 Dangerous File Operation detected
249
- - 💡 Recommendations:
250
- - Add confirmation prompt
251
- - Show affected files first
252
- - Implement dry-run mode
253
-
254
- ## 🎓 Learning Resources
255
-
256
- ### MCP Protocol
257
- - Official docs: https://modelcontextprotocol.io
258
- - Python SDK: https://github.com/modelcontextprotocol/python-sdk
259
- - Best practices: See mcp-builder skill documentation
260
-
261
- ### Related Research
262
- - LLM limitations and failure modes
263
- - AI safety and alignment
264
- - Prompt injection and jailbreaking
265
- - Retrieval-augmented generation (RAG)
266
-
267
- ## 🤝 Contributing
268
-
269
- The ToGMAL project benefits from community contributions:
270
-
271
- 1. **Submit Evidence**: Use the `togmal_submit_evidence` tool
272
- 2. **Add Patterns**: Create PRs with new detection heuristics
273
- 3. **Report Issues**: Document false positives/negatives
274
- 4. **Share Use Cases**: Help others learn from your experience
275
-
276
- ## ✅ Quality Checklist
277
-
278
- Based on MCP best practices:
279
-
280
- - [x] Server follows naming convention (`togmal_mcp`)
281
- - [x] Tools have descriptive names with service prefix
282
- - [x] All tools have comprehensive docstrings
283
- - [x] Pydantic models used for input validation
284
- - [x] Response formats support JSON and Markdown
285
- - [x] Character limits implemented with truncation
286
- - [x] Error handling throughout
287
- - [x] Tool annotations properly configured
288
- - [x] Code is DRY (no duplication)
289
- - [x] Type hints used consistently
290
- - [x] Async patterns followed
291
- - [x] Privacy-preserving design
292
- - [x] Human-in-the-loop for critical operations
293
-
294
- ## 📄 Files Summary
295
-
296
- ```
297
- togmal-mcp/
298
- ├── togmal_mcp.py # Main server implementation (1,270 lines)
299
- ├── README.md # User documentation (400+ lines)
300
- ├── DEPLOYMENT.md # Deployment guide (500+ lines)
301
- ├── requirements.txt # Python dependencies
302
- ├── test_examples.py # Test cases and examples
303
- ├── claude_desktop_config.json # Configuration example
304
- └── PROJECT_SUMMARY.md # This file
305
- ```
306
-
307
- ## 🎉 Success Metrics
308
-
309
- ### Implementation Goals: ACHIEVED ✅
310
- - ✅ Privacy-preserving analysis (no external calls)
311
- - ✅ Low latency (heuristic-based)
312
- - ✅ Five detection categories
313
- - ✅ Risk level calculation
314
- - ✅ Intervention recommendations
315
- - ✅ Evidence submission with human-in-the-loop
316
- - ✅ Taxonomy database with pagination
317
- - ✅ MCP best practices compliance
318
- - ✅ Comprehensive documentation
319
- - ✅ Test cases and examples
320
-
321
- ### Code Quality: EXCELLENT ✅
322
- - Clean, readable implementation
323
- - Well-structured and modular
324
- - Type-safe with Pydantic
325
- - Thoroughly documented
326
- - Production-ready
327
-
328
- ### Documentation: COMPREHENSIVE ✅
329
- - Installation instructions
330
- - Usage examples
331
- - Detection explanations
332
- - Deployment guides
333
- - Troubleshooting sections
334
-
335
- ## 🚦 Getting Started (Quick)
336
-
337
- ```bash
338
- # 1. Install
339
- pip install mcp pydantic httpx --break-system-packages
340
-
341
- # 2. Configure Claude Desktop
342
- # Edit ~/Library/Application Support/Claude/claude_desktop_config.json
343
- # Add togmal server entry
344
-
345
- # 3. Restart Claude Desktop
346
-
347
- # 4. Test
348
- # Ask Claude to analyze a prompt using ToGMAL tools
349
- ```
350
-
351
- ## 🎯 Mission Statement
352
-
353
- **ToGMAL exists to make LLM interactions safer by detecting out-of-distribution behaviors and recommending appropriate safety interventions, while respecting user privacy and maintaining low latency.**
354
-
355
- ## 🙏 Acknowledgments
356
-
357
- Built with:
358
- - Model Context Protocol by Anthropic
359
- - FastMCP Python SDK
360
- - Pydantic for validation
361
- - Community feedback and testing
362
-
363
- ---
364
-
365
- **Version**: 1.0.0
366
- **Date**: October 2025
367
- **Status**: Production Ready ✅
368
- **License**: MIT
369
-
370
- For questions, issues, or contributions, please refer to the README.md and DEPLOYMENT.md files.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
PROMPT_IMPROVER_PLAN.md DELETED
@@ -1,676 +0,0 @@
1
- # Prompt Improver MCP Server - Comprehensive Plan
2
-
3
- ## 🎯 Project Vision
4
-
5
- **Name:** PromptCraft MCP Server
6
- **Purpose:** Privacy-preserving, heuristic-based prompt improvement and frustration detection
7
- **Philosophy:** Local-first, low-latency, deterministic analysis (no LLM judge needed)
8
-
9
- ---
10
-
11
- ## 📋 Core Features & Tools
12
-
13
- ### Tool 1: `promptcraft_analyze_vagueness`
14
-
15
- **Detects:**
16
- - Pronouns without context ("it", "that", "this thing")
17
- - Missing specifics (no constraints, timeframes, formats)
18
- - Ambiguous requests ("make it better", "fix this")
19
- - Lack of examples or context
20
- - No success criteria defined
21
-
22
- **Heuristics:**
23
- ```python
24
- def detect_vague_prompt(text: str, history: List[str] = None) -> Dict:
25
- """
26
- Args:
27
- text: Current prompt
28
- history: Last 3-5 messages for context resolution
29
-
30
- Returns:
31
- {
32
- 'vagueness_score': 0.0-1.0,
33
- 'vague_elements': ['pronouns', 'no_constraints', 'ambiguous_verbs'],
34
- 'suggestions': [
35
- 'Replace "it" with specific subject from context',
36
- 'Add output format specification',
37
- 'Define success criteria'
38
- ],
39
- 'improved_prompt': 'Rewritten version with specifics'
40
- }
41
- """
42
-
43
- # Vague pronoun detection
44
- vague_pronouns = count_pattern(r'\b(it|that|this|these|those)\b')
45
-
46
- # Missing constraint detection
47
- has_format = bool(re.search(r'(format|style|structure|template)', text))
48
- has_length = bool(re.search(r'(words|lines|pages|characters|sentences)', text))
49
- has_deadline = bool(re.search(r'(by|before|within|deadline)', text))
50
-
51
- # Ambiguous verb detection
52
- vague_verbs = ['make', 'fix', 'improve', 'enhance', 'update', 'change']
53
- vague_verb_count = sum(1 for verb in vague_verbs if verb in text.lower())
54
-
55
- # Context analysis (if history provided)
56
- if history:
57
- # Check if pronouns reference previous messages
58
- # Resolve "it" to actual subject from history
59
- pass
60
-
61
- return analysis
62
- ```
63
-
64
- **Example:**
65
- ```
66
- Input: "Make it better"
67
- Output:
68
- Vagueness Score: 0.95 (CRITICAL)
69
- Issues:
70
- - Pronoun "it" without context
71
- - Vague verb "make better"
72
- - No success criteria
73
- - No constraints specified
74
-
75
- Suggested Improvement:
76
- "Improve the [SUBJECT FROM CONTEXT] by:
77
- 1. [Specific improvement 1]
78
- 2. [Specific improvement 2]
79
- Success criteria: [Define what 'better' means]
80
- Format: [Specify output format]"
81
- ```
82
-
83
- ---
84
-
85
- ### Tool 2: `promptcraft_detect_frustration`
86
-
87
- **Detects:**
88
- - Repeated similar prompts (user trying multiple times)
89
- - Escalating specificity (sign of failed attempts)
90
- - Negative sentiment keywords
91
- - Contradictory requirements
92
- - "Never mind" / giving up signals
93
-
94
- **Heuristics:**
95
- ```python
96
- def detect_frustration_pattern(current: str, history: List[str]) -> Dict:
97
- """
98
- Analyzes conversation history for frustration signals.
99
-
100
- Patterns:
101
- 1. Repetition: Same request with minor variations
102
- 2. Escalation: Adding "please", "I need", "urgently"
103
- 3. Contradiction: Reversing previous requirements
104
- 4. Abandonment: "forget it", "never mind"
105
- 5. Negation: "not what I wanted", "that's wrong"
106
- """
107
-
108
- # Repetition detection (Levenshtein distance)
109
- similarity_scores = [
110
- levenshtein_ratio(current, prev)
111
- for prev in history[-5:]
112
- ]
113
- is_repeating = max(similarity_scores) > 0.7
114
-
115
- # Escalation keywords
116
- urgency_words = ['please', 'need', 'urgent', 'asap', 'immediately']
117
- urgency_trend = count_trend(urgency_words, history)
118
-
119
- # Negation detection
120
- negation_patterns = [
121
- r'(not|don\'t|doesn\'t) (what|how) I (want|need|meant)',
122
- r'(that\'s|this is) (wrong|incorrect|not right)',
123
- r'(try again|one more time|let me rephrase)',
124
- ]
125
-
126
- # Abandonment signals
127
- abandon_keywords = ['forget it', 'never mind', 'give up', 'whatever']
128
-
129
- return {
130
- 'frustration_level': 'low' | 'moderate' | 'high',
131
- 'patterns': ['repetition', 'escalation'],
132
- 'root_cause_hypothesis': 'Likely missing: output format specification',
133
- 'suggested_restart_prompt': 'Here\'s how you could have asked initially...'
134
- }
135
- ```
136
-
137
- **Example:**
138
- ```
139
- History:
140
- 1. "Create a dashboard"
141
- 2. "Create a dashboard with charts"
142
- 3. "Please create a dashboard with charts and filters"
143
- 4. "I need a dashboard with charts, filters, and export"
144
-
145
- Analysis:
146
- Frustration Level: HIGH
147
- Pattern: Escalating specificity
148
- Root Cause: Original prompt too vague
149
-
150
- Suggested Initial Prompt:
151
- "Create a data dashboard with the following requirements:
152
- - Charts: [specify types: bar, line, pie]
153
- - Filters: [specify dimensions: date, category, region]
154
- - Features: Export to CSV/PDF
155
- - Tech stack: [React, Vue, vanilla JS?]
156
- - Design: [minimal, colorful, corporate]
157
- - Data source: [API endpoint or sample data]"
158
- ```
159
-
160
- ---
161
-
162
- ### Tool 3: `promptcraft_extract_requirements`
163
-
164
- **Purpose:** Parse ambiguous prompts into structured requirements
165
-
166
- **Heuristics:**
167
- ```python
168
- def extract_structured_requirements(text: str) -> Dict:
169
- """
170
- Converts unstructured prompt into structured requirements.
171
-
172
- Extracts:
173
- - Functional requirements (what it should do)
174
- - Non-functional requirements (performance, style)
175
- - Constraints (time, budget, technology)
176
- - Success criteria (how to measure completion)
177
- - Assumptions (fill in gaps with reasonable defaults)
178
- """
179
-
180
- # Functional requirement patterns
181
- action_verbs = ['create', 'build', 'make', 'develop', 'generate']
182
- features = extract_pattern(r'(with|that has|including) ([^.,]+)')
183
-
184
- # Constraint extraction
185
- tech_stack = extract_pattern(r'(using|with|in) (Python|React|Node\.js|etc)')
186
- time_constraint = extract_pattern(r'(by|within|in) (\d+ (days|hours|weeks))')
187
-
188
- # Implicit assumptions
189
- if 'website' in text and 'tech stack' not in text:
190
- assumptions.append('Assuming modern web stack (React/Vue/Svelte)')
191
-
192
- return {
193
- 'functional': ['Feature 1', 'Feature 2'],
194
- 'non_functional': ['Performance: Fast', 'Style: Minimal'],
195
- 'constraints': ['Time: 2 weeks', 'Tech: Python'],
196
- 'success_criteria': ['User can do X', 'Output matches Y'],
197
- 'assumptions': ['Modern browser support'],
198
- 'missing_info': ['Color scheme', 'Authentication method']
199
- }
200
- ```
201
-
202
- ---
203
-
204
- ### Tool 4: `promptcraft_suggest_examples`
205
-
206
- **Purpose:** Recommend example-driven prompting
207
-
208
- **Heuristics:**
209
- ```python
210
- def suggest_example_addition(text: str) -> Dict:
211
- """
212
- Detects when examples would improve prompt clarity.
213
-
214
- Triggers:
215
- - Abstract concepts without concrete examples
216
- - Style/tone requests without samples
217
- - Format requests without templates
218
- - "Like X" comparisons without showing X
219
- """
220
-
221
- # Pattern: "in the style of" without example
222
- has_style_reference = bool(re.search(r'(style|tone|like|similar to)', text))
223
- has_example = bool(re.search(r'(for example|e\.g\.|such as)', text))
224
-
225
- if has_style_reference and not has_example:
226
- return {
227
- 'recommendation': 'Add concrete example',
228
- 'template': '''
229
- Original: "Write in a casual tone"
230
- Improved: "Write in a casual tone, like this example:
231
- 'Hey there! Just wanted to share...'
232
- (friendly, conversational, uses contractions)"
233
- '''
234
- }
235
-
236
- # Pattern: Format request without template
237
- if 'format' in text.lower() and not has_example:
238
- return {
239
- 'recommendation': 'Provide format template',
240
- 'template': 'Specify exact structure with placeholders'
241
- }
242
- ```
243
-
244
- ---
245
-
246
- ### Tool 5: `promptcraft_decompose_task`
247
-
248
- **Purpose:** Break complex prompts into subtasks
249
-
250
- **Heuristics:**
251
- ```python
252
- def detect_complex_task(text: str) -> Dict:
253
- """
254
- Identifies prompts that should be broken into steps.
255
-
256
- Complexity indicators:
257
- - Multiple "and" conjunctions (>3)
258
- - Different domains in one prompt (code + design + deployment)
259
- - Sequential dependencies ("first X then Y then Z")
260
- - Large scope verbs ("complete", "entire", "full")
261
- """
262
-
263
- # Count conjunctions
264
- and_count = text.lower().count(' and ')
265
-
266
- # Multi-domain detection
267
- domains = {
268
- 'code': ['function', 'class', 'API', 'database'],
269
- 'design': ['UI', 'layout', 'colors', 'font'],
270
- 'deployment': ['deploy', 'host', 'server', 'cloud'],
271
- 'testing': ['test', 'validate', 'verify'],
272
- }
273
-
274
- active_domains = sum(
275
- 1 for keywords in domains.values()
276
- if any(k in text.lower() for k in keywords)
277
- )
278
-
279
- if active_domains >= 3 or and_count >= 4:
280
- return {
281
- 'complexity': 'high',
282
- 'recommendation': 'Break into phases',
283
- 'suggested_phases': [
284
- 'Phase 1: Core functionality',
285
- 'Phase 2: UI/UX',
286
- 'Phase 3: Testing',
287
- 'Phase 4: Deployment'
288
- ]
289
- }
290
- ```
291
-
292
- ---
293
-
294
- ### Tool 6: `promptcraft_check_specificity`
295
-
296
- **Purpose:** Score prompts on specificity dimensions
297
-
298
- **Heuristics:**
299
- ```python
300
- def calculate_specificity_score(text: str) -> Dict:
301
- """
302
- Multi-dimensional specificity analysis.
303
-
304
- Dimensions:
305
- - Who: Target audience specified?
306
- - What: Clear deliverable defined?
307
- - When: Timeframe mentioned?
308
- - Where: Context/platform specified?
309
- - Why: Purpose/goal stated?
310
- - How: Method/approach indicated?
311
- """
312
-
313
- scores = {
314
- 'who': check_audience(text), # 0.0-1.0
315
- 'what': check_deliverable(text), # 0.0-1.0
316
- 'when': check_timeframe(text), # 0.0-1.0
317
- 'where': check_context(text), # 0.0-1.0
318
- 'why': check_purpose(text), # 0.0-1.0
319
- 'how': check_method(text), # 0.0-1.0
320
- }
321
-
322
- overall = sum(scores.values()) / len(scores)
323
-
324
- return {
325
- 'overall_score': overall,
326
- 'dimension_scores': scores,
327
- 'weakest_dimensions': sorted(scores, key=scores.get)[:2],
328
- 'improvement_priority': [
329
- f"Add {dim}: {suggestion}"
330
- for dim, score in scores.items()
331
- if score < 0.5
332
- ]
333
- }
334
- ```
335
-
336
- ---
337
-
338
- ## 🏗️ Project Structure
339
-
340
- ```
341
- prompt-improver/
342
- ├── promptcraft_mcp.py # Main MCP server
343
- ├── requirements.txt # Dependencies (mcp, pydantic)
344
- ├── README.md # Documentation
345
- ├── ARCHITECTURE.md # Design decisions
346
- ├── claude_desktop_config.json # Integration config
347
- ├── test_examples.py # Test cases
348
- ├── heuristics/ # Detection modules
349
- │ ├── __init__.py
350
- │ ├── vagueness.py # Vague prompt detection
351
- │ ├── frustration.py # Frustration pattern detection
352
- │ ├── requirements.py # Requirement extraction
353
- │ ├── examples.py # Example suggestion
354
- │ ├── decomposition.py # Task breakdown
355
- │ └── specificity.py # Specificity scoring
356
- ├── utils/ # Helper utilities
357
- │ ├── __init__.py
358
- │ ├── text_analysis.py # Text processing utilities
359
- │ ├── similarity.py # Levenshtein, cosine similarity
360
- │ └── patterns.py # Common regex patterns
361
- └── tests/ # Unit tests
362
- ├── test_vagueness.py
363
- ├── test_frustration.py
364
- └── test_integration.py
365
- ```
366
-
367
- ---
368
-
369
- ## 🎨 Heuristic Design Philosophy
370
-
371
- ### **Why Heuristics Over LLMs?**
372
-
373
- 1. **Privacy:** No data sent to external APIs
374
- 2. **Latency:** Instant analysis (<100ms)
375
- 3. **Cost:** Zero API costs
376
- 4. **Determinism:** Same input = same output
377
- 5. **Explainability:** Clear rules, easy to debug
378
- 6. **Control:** No hallucinations or drift
379
-
380
- ### **Evolution Path:**
381
-
382
- ```
383
- Phase 1: Pure Heuristics (Launch)
384
-
385
- Phase 2: Lightweight ML (Logistic Regression, Decision Trees)
386
- - Train on collected examples
387
- - Still local, fast inference
388
-
389
- Phase 3: Hybrid Approach
390
- - Heuristics for simple cases (90%)
391
- - Small transformer for edge cases (10%)
392
- - Local model, no API calls
393
-
394
- Phase 4: Federated Learning (Optional)
395
- - Learn from user corrections
396
- - Privacy-preserving model updates
397
- ```
398
-
399
- ---
400
-
401
- ## 📊 Test Cases & Examples
402
-
403
- ### Test Case 1: Vague Prompt
404
- ```python
405
- Input: "Make the code better"
406
- History: ["Write a Python function to sort numbers"]
407
-
408
- Expected Output:
409
- Vagueness: CRITICAL (0.95)
410
- Issues:
411
- - Pronoun "the code" - which code?
412
- - Vague verb "make better" - how?
413
-
414
- Improved:
415
- "Improve the Python sorting function by:
416
- 1. Using merge sort instead of bubble sort (O(n log n) time)
417
- 2. Adding type hints for better IDE support
418
- 3. Including docstring with usage examples
419
- 4. Handling edge cases: empty list, single element
420
- Success: Passes all test cases, runs 2x faster"
421
- ```
422
-
423
- ### Test Case 2: Frustration Pattern
424
- ```python
425
- History:
426
- 1. "Create a login page"
427
- 2. "Create a login page with email"
428
- 3. "Create a login page with email and password"
429
- 4. "Please create a login page with email, password, and remember me"
430
-
431
- Expected Output:
432
- Frustration: HIGH
433
- Pattern: Escalating specificity
434
-
435
- Root Cause: Incomplete initial requirements
436
-
437
- Suggested Restart:
438
- "Create a login page with these specifications:
439
-
440
- Fields:
441
- - Email (validated with regex)
442
- - Password (min 8 chars, hidden)
443
- - 'Remember me' checkbox
444
-
445
- Actions:
446
- - Submit button (primary CTA)
447
- - 'Forgot password?' link
448
- - 'Sign up' redirect
449
-
450
- Behavior:
451
- - Show inline validation errors
452
- - Disable submit until valid
453
- - Redirect to /dashboard on success
454
-
455
- Styling:
456
- - Center-aligned form
457
- - Minimal design (no background images)
458
- - Responsive (mobile-friendly)
459
-
460
- Tech: React + Tailwind CSS"
461
- ```
462
-
463
- ### Test Case 3: Missing Context
464
- ```python
465
- Input: "Add dark mode support"
466
- History: [] # No context
467
-
468
- Expected Output:
469
- Context Missing: YES
470
-
471
- Questions to Ask:
472
- - What technology stack? (React, Vue, vanilla JS?)
473
- - What's the current styling approach? (CSS, SCSS, Tailwind?)
474
- - Should it persist? (localStorage, cookies, database?)
475
- - Toggle location? (navbar, settings page, both?)
476
- - Color scheme preferences? (custom colors or preset theme?)
477
-
478
- Template:
479
- "Add dark mode to [YOUR APP] with:
480
- - Toggle: [location]
481
- - Persistence: [method]
482
- - Colors: [specify palette]
483
- - Scope: [which components]
484
- - Default: [light/dark/system]"
485
- ```
486
-
487
- ---
488
-
489
- ## 🔧 Implementation Details
490
-
491
- ### Data Structures
492
-
493
- ```python
494
- # Vagueness Analysis Result
495
- class VaguenessAnalysis(BaseModel):
496
- vagueness_score: float # 0.0-1.0
497
- vague_elements: List[str]
498
- suggestions: List[str]
499
- improved_prompt: str
500
- missing_info: List[str]
501
-
502
- # Frustration Detection Result
503
- class FrustrationAnalysis(BaseModel):
504
- frustration_level: Literal['low', 'moderate', 'high', 'critical']
505
- patterns: List[str] # ['repetition', 'escalation', 'negation']
506
- attempt_count: int
507
- root_cause: str
508
- suggested_restart: str
509
-
510
- # Requirement Extraction Result
511
- class RequirementExtraction(BaseModel):
512
- functional: List[str]
513
- non_functional: List[str]
514
- constraints: List[str]
515
- success_criteria: List[str]
516
- assumptions: List[str]
517
- missing_info: List[str]
518
- completeness_score: float
519
- ```
520
-
521
- ### Key Algorithms
522
-
523
- ```python
524
- # Levenshtein distance for repetition detection
525
- def levenshtein_distance(s1: str, s2: str) -> int:
526
- """Calculate edit distance between two strings."""
527
- # Dynamic programming implementation
528
- pass
529
-
530
- # Context resolution
531
- def resolve_pronouns(text: str, history: List[str]) -> str:
532
- """Replace pronouns with actual subjects from history."""
533
- # Find "it", "that", "this"
534
- # Search previous messages for likely referent
535
- # Replace with specific noun
536
- pass
537
-
538
- # Requirement extraction
539
- def extract_functional_requirements(text: str) -> List[str]:
540
- """Use dependency parsing to extract actions and objects."""
541
- # Pattern: verb + object
542
- # "create dashboard" → Functional: "Dashboard creation"
543
- pass
544
- ```
545
-
546
- ---
547
-
548
- ## 🚀 Development Roadmap
549
-
550
- ### **Phase 1: MVP (Week 1-2)**
551
- - [ ] Set up project structure
552
- - [ ] Implement vagueness detection
553
- - [ ] Implement frustration detection
554
- - [ ] Create basic test suite
555
- - [ ] Write documentation
556
- - [ ] Test with Claude Desktop
557
-
558
- ### **Phase 2: Enhancement (Week 3-4)**
559
- - [ ] Add requirement extraction
560
- - [ ] Add example suggestion
561
- - [ ] Add task decomposition
562
- - [ ] Add specificity scoring
563
- - [ ] Expand test coverage
564
- - [ ] Create demo video
565
-
566
- ### **Phase 3: Polish (Week 5-6)**
567
- - [ ] Optimize heuristics based on testing
568
- - [ ] Add more pattern matching rules
569
- - [ ] Create comprehensive docs
570
- - [ ] Build example use cases
571
- - [ ] Prepare for launch
572
-
573
- ### **Phase 4: ML Integration (Month 2-3)**
574
- - [ ] Collect training data from usage
575
- - [ ] Train lightweight classifiers
576
- - [ ] A/B test heuristics vs ML
577
- - [ ] Keep best of both
578
-
579
- ---
580
-
581
- ## 💡 Additional Tool Ideas
582
-
583
- ### 7. `promptcraft_check_ambiguity`
584
- - Detect multiple possible interpretations
585
- - Suggest disambiguating questions
586
-
587
- ### 8. `promptcraft_estimate_complexity`
588
- - Predict how long task will take LLM
589
- - Warn if beyond single response capacity
590
-
591
- ### 9. `promptcraft_suggest_constraints`
592
- - Recommend adding constraints based on domain
593
- - "For code: Add language, style guide, testing requirements"
594
-
595
- ### 10. `promptcraft_validate_examples`
596
- - Check if provided examples are consistent
597
- - Detect contradictory example patterns
598
-
599
- ---
600
-
601
- ## 🎯 Success Metrics
602
-
603
- ### **User Metrics:**
604
- - Average vagueness score improvement: Target >40%
605
- - Frustration pattern detection rate: Target >80%
606
- - User satisfaction with suggestions: Target >4/5
607
-
608
- ### **Technical Metrics:**
609
- - Analysis latency: Target <50ms
610
- - False positive rate: Target <10%
611
- - False negative rate: Target <15%
612
-
613
- ### **Business Metrics:**
614
- - Prompts improved per user per day: Target 5+
615
- - Time saved per improved prompt: Target 2-5 min
616
- - Adoption rate in teams: Target 60% active monthly users
617
-
618
- ---
619
-
620
- ## 🔐 Privacy & Security
621
-
622
- ### **Data Handling:**
623
- - ✅ All analysis local (no external API calls)
624
- - ✅ No prompt storage by default
625
- - ✅ Optional: Anonymous analytics (prompt length, vagueness score)
626
- - ✅ User control: Can disable all telemetry
627
-
628
- ### **Enterprise Considerations:**
629
- - Self-hosted deployment option
630
- - Air-gapped environment support
631
- - No data exfiltration possible
632
- - Audit logs for compliance
633
-
634
- ---
635
-
636
- ## 📦 Deliverables
637
-
638
- 1. **promptcraft_mcp.py** - Main MCP server (500-800 LOC)
639
- 2. **Heuristics modules** - 6 detection modules (~100 LOC each)
640
- 3. **Test suite** - 50+ test cases
641
- 4. **Documentation** - README, ARCHITECTURE, API docs
642
- 5. **Demo materials** - Video, example prompts, VC pitch deck
643
- 6. **Integration guide** - Claude Desktop, VS Code, Cursor
644
-
645
- ---
646
-
647
- ## 🤝 Synergy with ToGMAL
648
-
649
- ### **Combined Value Proposition:**
650
-
651
- **ToGMAL:** Prevents LLM from giving bad advice
652
- **PromptCraft:** Prevents user from asking bad questions
653
-
654
- **Together:** Complete safety & quality layer for LLM workflows
655
-
656
- ### **Potential Integration:**
657
-
658
- ```python
659
- # Combined analysis pipeline
660
- 1. User writes prompt
661
- 2. PromptCraft: "Your prompt is vague, here's improvement"
662
- 3. User revises prompt
663
- 4. LLM generates response
664
- 5. ToGMAL: "This response has medical advice without sources"
665
- 6. User gets safer, higher-quality output
666
- ```
667
-
668
- ### **Business Strategy:**
669
-
670
- - **Bundle pricing:** ToGMAL + PromptCraft package
671
- - **Enterprise suite:** Add monitoring, analytics, custom rules
672
- - **Platform play:** Become the safety/quality layer for all LLM tools
673
-
674
- ---
675
-
676
- **Next Steps:** Ready to implement? Let me know and I'll start creating the actual code structure!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
PUSH_TO_GITHUB.md DELETED
@@ -1,98 +0,0 @@
1
- # 🚀 Push to GitHub - Complete Instructions
2
-
3
- ## Step 1: Create a GitHub Repository
4
-
5
- 1. Go to https://github.com/new
6
- 2. Sign in to your GitHub account
7
- 3. Fill in the form:
8
- - **Repository name**: `togmal-prompt-analyzer`
9
- - **Description**: "Real-time LLM capability boundary detection using vector similarity search"
10
- - **Public**: Selected
11
- - **Initialize this repository with a README**: Unchecked
12
- 4. Click "Create repository"
13
-
14
- ## Step 2: Push Your Local Repository
15
-
16
- After creating the repository, you'll see instructions. Use these commands in your terminal:
17
-
18
- ```bash
19
- cd /Users/hetalksinmaths/togmal
20
- git remote add origin https://github.com/YOUR_USERNAME/togmal-prompt-analyzer.git
21
- git branch -M main
22
- git push -u origin main
23
- ```
24
-
25
- **Replace `YOUR_USERNAME`** with your actual GitHub username.
26
-
27
- ## What You'll Have on GitHub
28
-
29
- Once pushed, your repository will contain:
30
-
31
- ### Core Implementation
32
- - `benchmark_vector_db.py` - Vector database for difficulty assessment
33
- - `demo_app.py` - Gradio web interface
34
- - `fetch_mmlu_top_models.py` - Script to fetch real benchmark data
35
-
36
- ### Documentation
37
- - `COMPLETE_DEMO_ANALYSIS.md` - Comprehensive analysis of the system
38
- - `DEMO_README.md` - Demo instructions and results
39
- - `GITHUB_INSTRUCTIONS.md` - These instructions
40
- - `README.md` - Main project documentation
41
-
42
- ### Test Files
43
- - `test_vector_db.py` - Test script with real data examples
44
- - `test_examples.py` - Additional test cases
45
-
46
- ### Configuration
47
- - `requirements.txt` - Python dependencies
48
- - `.gitignore` - Files excluded from version control
49
-
50
- ## Key Features Demonstrated
51
-
52
- ### Real Data vs Mock Data
53
- - **Before**: All prompts showed ~45% success rate (mock data)
54
- - **After**: System correctly differentiates difficulty levels:
55
- - Hard prompts: 23.9% success rate (HIGH risk)
56
- - Easy prompts: 100% success rate (MINIMAL risk)
57
-
58
- ### 11 Test Questions Analysis
59
- The system correctly categorizes:
60
- - **Hard Questions** (20-50% success):
61
- - "Calculate the quantum correction to the partition function..."
62
- - "Prove that there are infinitely many prime numbers"
63
- - "Statement 1 | Every field is also a ring..."
64
- - **Easy Questions** (80-100% success):
65
- - "What is 2 + 2?"
66
- - "What is the capital of France?"
67
- - "Who wrote Romeo and Juliet?"
68
-
69
- ### Recommendation Engine
70
- Based on success rates:
71
- - **<30%**: Multi-step reasoning with verification
72
- - **30-70%**: Use chain-of-thought prompting
73
- - **>70%**: Standard LLM response adequate
74
-
75
- ## Live Demo
76
-
77
- Your demo is running at:
78
- - Local: http://127.0.0.1:7861
79
- - Public: https://db11ee71660c8a3319.gradio.live
80
-
81
- ## Next Steps After Pushing
82
-
83
- 1. Add badges to README (build status, license, etc.)
84
- 2. Create GitHub Pages for project documentation
85
- 3. Set up CI/CD for automated testing
86
- 4. Add more benchmark datasets
87
- 5. Create releases for different versions
88
-
89
- ## Need Help?
90
-
91
- If you encounter any issues:
92
- 1. Check that you're using the correct repository URL
93
- 2. Ensure you have internet connectivity
94
- 3. Verify your GitHub credentials are set up
95
- 4. Make sure you've replaced YOUR_USERNAME with your actual GitHub username
96
-
97
- For additional support, refer to:
98
- - [GitHub Documentation](https://docs.github.com/en/github/importing-your-projects-to-github/importing-source-code-to-github/adding-an-existing-project-to-github-using-the-command-line)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
QUICKSTART.md DELETED
@@ -1,160 +0,0 @@
1
- # ToGMAL Quick Start Guide
2
-
3
- ## ⚡ 5-Minute Setup
4
-
5
- ### Step 1: Install Dependencies (1 min)
6
-
7
- ```bash
8
- pip install mcp pydantic httpx --break-system-packages
9
- ```
10
-
11
- ### Step 2: Download ToGMAL (already done!)
12
-
13
- You already have all the files:
14
- - `togmal_mcp.py` - The server
15
- - `README.md` - Full documentation
16
- - `DEPLOYMENT.md` - Detailed setup guide
17
-
18
- ### Step 3: Test the Server (1 min)
19
-
20
- ```bash
21
- # Verify syntax
22
- python -m py_compile togmal_mcp.py
23
-
24
- # View help
25
- python togmal_mcp.py --help
26
- ```
27
-
28
- ### Step 4: Configure Claude Desktop (2 min)
29
-
30
- **macOS:**
31
- ```bash
32
- # Open config file
33
- code ~/Library/Application\ Support/Claude/claude_desktop_config.json
34
- ```
35
-
36
- **Windows:**
37
- ```powershell
38
- notepad %APPDATA%\Claude\claude_desktop_config.json
39
- ```
40
-
41
- **Linux:**
42
- ```bash
43
- nano ~/.config/Claude/claude_desktop_config.json
44
- ```
45
-
46
- **Add this (replace PATH with actual path):**
47
- ```json
48
- {
49
- "mcpServers": {
50
- "togmal": {
51
- "command": "python",
52
- "args": ["/ABSOLUTE/PATH/TO/togmal_mcp.py"]
53
- }
54
- }
55
- }
56
- ```
57
-
58
- ### Step 5: Restart Claude Desktop (1 min)
59
-
60
- Quit and reopen Claude Desktop completely.
61
-
62
- ## ✅ Verification
63
-
64
- In Claude, ask:
65
- > "What ToGMAL tools are available?"
66
-
67
- You should see 5 tools:
68
- 1. `togmal_analyze_prompt`
69
- 2. `togmal_analyze_response`
70
- 3. `togmal_submit_evidence`
71
- 4. `togmal_get_taxonomy`
72
- 5. `togmal_get_statistics`
73
-
74
- ## 🎯 First Test
75
-
76
- Try this in Claude:
77
-
78
- > "Use ToGMAL to analyze this prompt: 'Build me a quantum gravity theory that proves Einstein was wrong'"
79
-
80
- Expected result: ToGMAL will detect math/physics speculation and recommend interventions.
81
-
82
- ## 📚 What Each Tool Does
83
-
84
- | Tool | Purpose | When to Use |
85
- |------|---------|-------------|
86
- | `analyze_prompt` | Check user prompts | Before LLM processes request |
87
- | `analyze_response` | Check LLM responses | After LLM generates answer |
88
- | `submit_evidence` | Report issues | Found problematic behavior |
89
- | `get_taxonomy` | View database | Research failure patterns |
90
- | `get_statistics` | See metrics | Understand taxonomy state |
91
-
92
- ## 🚨 What ToGMAL Detects
93
-
94
- 1. **Math/Physics Speculation** - "My theory of everything..."
95
- 2. **Medical Advice Issues** - "You definitely have..." (no sources)
96
- 3. **Dangerous File Ops** - `rm -rf` without confirmation
97
- 4. **Vibe Coding** - "Build a complete social network now"
98
- 5. **Unsupported Claims** - "95% of scientists agree..." (no citation)
99
-
100
- ## 💡 Example Conversations
101
-
102
- ### Safe Medical Query
103
- **You**: "What helps with headaches?"
104
- **Claude**: [Provides sourced info with disclaimers]
105
- **ToGMAL**: ✅ No issues detected
106
-
107
- ### Unsafe Medical Advice
108
- **You**: [Gets response] "You probably have appendicitis, take ibuprofen"
109
- **Claude** (with ToGMAL): 🚨 CRITICAL risk detected! Recommends:
110
- - Human-in-the-loop (see a doctor)
111
- - Web search for clinical guidelines
112
-
113
- ### Dangerous Code
114
- **You**: "How do I delete test files?"
115
- **Claude**: `rm -rf *test*` (without safeguards)
116
- **ToGMAL**: 🚨 HIGH risk! Recommends:
117
- - Human confirmation before execution
118
- - Show affected files first
119
-
120
- ## 🎓 Learn More
121
-
122
- - **README.md** - Full documentation
123
- - **DEPLOYMENT.md** - Advanced setup
124
- - **test_examples.py** - See 10 test cases
125
- - **PROJECT_SUMMARY.md** - Project overview
126
-
127
- ## 🆘 Troubleshooting
128
-
129
- ### Tools Not Showing Up?
130
- 1. Check config file has absolute path
131
- 2. Verify `python togmal_mcp.py --help` works
132
- 3. Restart Claude Desktop completely
133
- 4. Check spelling in config (case-sensitive)
134
-
135
- ### Server Won't Run?
136
- Don't run it directly! MCP servers wait for stdio.
137
- Use through Claude Desktop or MCP Inspector instead.
138
-
139
- ### Import Errors?
140
- ```bash
141
- pip install mcp pydantic httpx --break-system-packages
142
- ```
143
-
144
- ## 🎉 You're Ready!
145
-
146
- ToGMAL is now protecting your LLM interactions. Use it to:
147
- - Verify ambitious project scopes
148
- - Check medical/health responses
149
- - Validate file operations
150
- - Confirm scientific claims
151
- - Submit evidence of issues
152
-
153
- **Happy safe LLMing!** 🛡️
154
-
155
- ---
156
-
157
- Need help? Check the detailed guides:
158
- - 📖 README.md for features
159
- - 🚀 DEPLOYMENT.md for advanced setup
160
- - 🧪 test_examples.py for test cases
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
QUICK_ANSWERS.md DELETED
@@ -1,279 +0,0 @@
1
- # Quick Answers to Your Questions
2
-
3
- ## 1️⃣ How to host so others can use and show web-based demo?
4
-
5
- ### **Short Answer:** MCP servers can't be hosted like FastAPI, but you have options:
6
-
7
- ### **For Live Demos:**
8
-
9
- **Option A: ngrok (Fastest)**
10
- ```bash
11
- # Already have MCP Inspector running on port 6274
12
- brew install ngrok
13
- ngrok http 6274
14
- ```
15
- → Get public URL like `https://abc123.ngrok.io` to share with VCs
16
-
17
- **Option B: FastAPI Wrapper (Best for production)**
18
- Create HTTP API wrapper around MCP server:
19
- ```python
20
- # api_wrapper.py
21
- from fastapi import FastAPI
22
- # Wrap MCP tools as HTTP endpoints
23
- # Deploy to Render like your aqumen project
24
- ```
25
- → Get stable URL: `https://togmal-api.onrender.com`
26
-
27
- **Option C: Streamlit Cloud (Easiest interactive demo)**
28
- ```python
29
- # streamlit_demo.py
30
- import streamlit as st
31
- # Interactive UI calling MCP tools
32
- # Deploy to Streamlit Cloud (free)
33
- ```
34
-
35
- **See:** [`HOSTING_GUIDE.md`](HOSTING_GUIDE.md) for complete details
36
-
37
- ---
38
-
39
- ## 2️⃣ Is FastMCP similar to FastAPI?
40
-
41
- ### **Short Answer:** Inspired by FastAPI's simplicity, but fundamentally different
42
-
43
- ### **Comparison:**
44
-
45
- | Feature | FastAPI | FastMCP |
46
- |---------|---------|---------|
47
- | **Purpose** | Web APIs (HTTP/REST) | LLM tool integration |
48
- | **Protocol** | HTTP/HTTPS | JSON-RPC over stdio |
49
- | **Communication** | Request/Response | Standard input/output |
50
- | **Deployment** | Cloud (Render, AWS) | Local subprocess |
51
- | **Access** | URL endpoints | Client spawns process |
52
- | **Use Case** | Web services, APIs | AI assistant tools |
53
-
54
- ### **Similarities:**
55
- - ✅ Clean decorator syntax: `@app.get()` vs `@mcp.tool()`
56
- - ✅ Automatic validation with Pydantic
57
- - ✅ Auto-generated documentation
58
- - ✅ Type hints and IDE support
59
-
60
- ### **Key Difference:**
61
- ```python
62
- # FastAPI - Listens on network port
63
- @app.get("/analyze")
64
- def analyze(): ...
65
- # Access: curl https://api.com/analyze
66
-
67
- # FastMCP - Runs as subprocess
68
- @mcp.tool()
69
- def analyze(): ...
70
- # Access: Client spawns python mcp_server.py
71
- ```
72
-
73
- **Bottom Line:** FastMCP makes MCP servers as easy as FastAPI makes web APIs, but they solve different problems.
74
-
75
- ---
76
-
77
- ## 3️⃣ How do I use the MCP Inspector?
78
-
79
- ### **Already Running!**
80
-
81
- **URL:**
82
- ```
83
- http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=b9c04f13d4a272be1e9d368aaa82d23d54f59910fe36c873edb29fee800c30b4
84
- ```
85
-
86
- ### **Step-by-Step:**
87
-
88
- 1. **Open the URL** in your browser
89
-
90
- 2. **Left Sidebar:** See 5 ToGMAL tools
91
- - togmal_analyze_prompt
92
- - togmal_analyze_response
93
- - togmal_submit_evidence
94
- - togmal_get_taxonomy
95
- - togmal_get_statistics
96
-
97
- 3. **Select a Tool:** Click on any tool
98
-
99
- 4. **View Schema:** See parameters, types, descriptions
100
-
101
- 5. **Enter Parameters:**
102
- ```json
103
- {
104
- "prompt": "Build me a quantum gravity theory",
105
- "response_format": "markdown"
106
- }
107
- ```
108
-
109
- 6. **Click "Call Tool"**
110
-
111
- 7. **View Results:** See the analysis with risk levels, detections, interventions
112
-
113
- ### **Try These Test Cases:**
114
-
115
- **Math/Physics Speculation:**
116
- ```json
117
- {"prompt": "I've discovered a new theory of quantum gravity", "response_format": "markdown"}
118
- ```
119
-
120
- **Medical Advice:**
121
- ```json
122
- {"response": "You definitely have the flu. Take 1000mg vitamin C.", "context": "I have a fever", "response_format": "markdown"}
123
- ```
124
-
125
- **Vibe Coding:**
126
- ```json
127
- {"prompt": "Build a complete social network in 5000 lines", "response_format": "markdown"}
128
- ```
129
-
130
- **Statistics:**
131
- ```json
132
- {"response_format": "markdown"}
133
- ```
134
-
135
- ### **For Public Demo:**
136
- ```bash
137
- ngrok http 6274
138
- # Share the ngrok URL with others
139
- ```
140
-
141
- ---
142
-
143
- ## 4️⃣ Don't I need API keys set-up?
144
-
145
- ### **For ToGMAL: NO! ❌**
146
-
147
- **Why?**
148
- - ✅ 100% local processing
149
- - ✅ No external API calls
150
- - ✅ No LLM judge needed
151
- - ✅ Pure heuristic detection
152
- - ✅ Completely deterministic
153
-
154
- **What the session token is:**
155
- - Just for browser security (CSRF protection)
156
- - Generated automatically by MCP Inspector
157
- - Not an API key - no account needed
158
- - Changes each time you start the inspector
159
-
160
- ### **When You WOULD Need API Keys:**
161
-
162
- Only if you add features like:
163
- - ❌ Web search (Google/Bing API)
164
- - ❌ LLM-based analysis (OpenAI/Anthropic API)
165
- - ❌ Cloud database (MongoDB/Firebase)
166
-
167
- **Current ToGMAL:** Zero API keys! Zero setup! ✅
168
-
169
- ---
170
-
171
- ## 5️⃣ Prompt Improver MCP Server Plan
172
-
173
- ### **Complete plan created:** [`PROMPT_IMPROVER_PLAN.md`](PROMPT_IMPROVER_PLAN.md)
174
-
175
- ### **Quick Overview:**
176
-
177
- **Name:** PromptCraft MCP Server
178
-
179
- **Tools:**
180
- 1. **`promptcraft_analyze_vagueness`** - Detect vague prompts, suggest improvements
181
- 2. **`promptcraft_detect_frustration`** - Find repeated/escalating prompts, recommend restart
182
- 3. **`promptcraft_extract_requirements`** - Parse unstructured → structured requirements
183
- 4. **`promptcraft_suggest_examples`** - Recommend adding concrete examples
184
- 5. **`promptcraft_decompose_task`** - Break complex prompts into phases
185
- 6. **`promptcraft_check_specificity`** - Score on Who/What/When/Where/Why/How
186
-
187
- ### **Key Features:**
188
- ✅ **Privacy-first:** All analysis local, no API calls
189
- ✅ **Low latency:** Heuristic-based, <50ms response time
190
- ✅ **Deterministic:** Same prompt = same suggestions
191
- ✅ **Context-aware:** Uses last 3-5 messages for pronoun resolution
192
- ✅ **Frustration detection:** Identifies repeated failed attempts
193
- ✅ **Explainable:** Clear rules, no black-box LLM judge
194
-
195
- ### **Heuristic Examples:**
196
-
197
- **Vagueness Detection:**
198
- ```python
199
- Input: "Make it better"
200
- → Vagueness: 0.95 (CRITICAL)
201
- → Issues: Pronoun without context, vague verb, no criteria
202
- → Improved: "Improve the [SUBJECT] by: [specific changes]"
203
- ```
204
-
205
- **Frustration Pattern:**
206
- ```python
207
- History:
208
- 1. "Create a dashboard"
209
- 2. "Create a dashboard with charts"
210
- 3. "Please create a dashboard with charts and filters"
211
- → Frustration: HIGH
212
- → Pattern: Escalating specificity
213
- → Root Cause: Missing initial requirements
214
- → Suggested restart prompt with all details
215
- ```
216
-
217
- ### **Evolution Path:**
218
- ```
219
- Phase 1: Heuristics (Launch) ← START HERE
220
-
221
- Phase 2: Lightweight ML (Logistic Regression)
222
-
223
- Phase 3: Hybrid (Heuristics + Small Transformer)
224
-
225
- Phase 4: Federated Learning (Privacy-preserving updates)
226
- ```
227
-
228
- ### **Project Structure:**
229
- ```
230
- prompt-improver/
231
- ├── promptcraft_mcp.py # Main MCP server
232
- ├── heuristics/ # Detection modules
233
- │ ├── vagueness.py
234
- │ ├── frustration.py
235
- │ ├── requirements.py
236
- │ ├── examples.py
237
- │ ├── decomposition.py
238
- │ └── specificity.py
239
- ├── utils/ # Text analysis tools
240
- ├── tests/ # Test cases
241
- └── README.md # Documentation
242
- ```
243
-
244
- ### **Synergy with ToGMAL:**
245
-
246
- **ToGMAL:** Prevents LLM from giving bad answers
247
- **PromptCraft:** Prevents user from asking bad questions
248
-
249
- **Together:** Complete safety & quality layer for LLM workflows!
250
-
251
- **Business Strategy:**
252
- - Bundle pricing (ToGMAL + PromptCraft)
253
- - Enterprise suite (monitoring, analytics, custom rules)
254
- - Platform play (safety/quality layer for all LLM tools)
255
-
256
- ---
257
-
258
- ## 📁 All Documentation Created
259
-
260
- 1. **[HOSTING_GUIDE.md](HOSTING_GUIDE.md)** - How to host/demo MCP servers
261
- 2. **[PROMPT_IMPROVER_PLAN.md](PROMPT_IMPROVER_PLAN.md)** - Complete PromptCraft plan
262
- 3. **[SERVER_INFO.md](SERVER_INFO.md)** - Current running status
263
- 4. **[SETUP_COMPLETE.md](SETUP_COMPLETE.md)** - ToGMAL setup summary
264
- 5. **[MCP_CONNECTION_GUIDE.md](MCP_CONNECTION_GUIDE.md)** - Platform connections
265
- 6. **[QUICK_ANSWERS.md](QUICK_ANSWERS.md)** - This file!
266
-
267
- ---
268
-
269
- ## 🚀 Ready to Build PromptCraft?
270
-
271
- Let me know and I'll:
272
- 1. Create the project folder structure
273
- 2. Implement the 6 core tools
274
- 3. Write heuristic detection modules
275
- 4. Create comprehensive test cases
276
- 5. Set up Claude Desktop integration
277
- 6. Build demo materials for VCs
278
-
279
- **This will be a perfect complement to ToGMAL for your VC pitch!** 🎯
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
README.md CHANGED
@@ -459,103 +459,4 @@ Built using:
459
  - [FastMCP](https://github.com/modelcontextprotocol/python-sdk)
460
  - [Pydantic](https://docs.pydantic.dev)
461
 
462
- Inspired by the need for safer, more grounded AI interactions.
463
-
464
- # 🧠 ToGMAL Prompt Difficulty Analyzer
465
-
466
- Real-time LLM capability boundary detection using vector similarity search.
467
-
468
- ## 🎯 What This Does
469
-
470
- This system analyzes any prompt and tells you:
471
- 1. **How difficult it is** for current LLMs (based on real benchmark data)
472
- 2. **Why it's difficult** (shows similar benchmark questions)
473
- 3. **What to do about it** (actionable recommendations)
474
-
475
- ## 🔥 Key Innovation
476
-
477
- Instead of clustering by domain (all math together), we cluster by **difficulty** - what's actually hard for LLMs regardless of domain.
478
-
479
- ## 📊 Real Data
480
-
481
- - **14,042 MMLU questions** with real success rates from top models
482
- - **<50ms query time** for real-time analysis
483
- - **Production ready** vector database
484
-
485
- ## 🚀 Demo
486
-
487
- - **Local**: http://127.0.0.1:7861
488
- - **Public**: https://db11ee71660c8a3319.gradio.live
489
-
490
- ## 🧪 Example Results
491
-
492
- ### Hard Questions (Low Success Rates)
493
- ```
494
- Prompt: "Statement 1 | Every field is also a ring..."
495
- Risk: HIGH (23.9% success)
496
- Recommendation: Multi-step reasoning with verification
497
-
498
- Prompt: "Find all zeros of polynomial x³ + 2x + 2 in Z₇"
499
- Risk: MODERATE (43.8% success)
500
- Recommendation: Use chain-of-thought prompting
501
- ```
502
-
503
- ### Easy Questions (High Success Rates)
504
- ```
505
- Prompt: "What is 2 + 2?"
506
- Risk: MINIMAL (100% success)
507
- Recommendation: Standard LLM response adequate
508
-
509
- Prompt: "What is the capital of France?"
510
- Risk: MINIMAL (100% success)
511
- Recommendation: Standard LLM response adequate
512
- ```
513
-
514
- ## 🛠️ Technical Details
515
-
516
- ### Architecture
517
- ```
518
- User Prompt → Embedding Model → Vector DB → K Nearest Questions → Weighted Score
519
- ```
520
-
521
- ### Components
522
- 1. **Sentence Transformers** (all-MiniLM-L6-v2) for embeddings
523
- 2. **ChromaDB** for vector storage
524
- 3. **Real MMLU data** with success rates from top models
525
- 4. **Gradio** for web interface
526
-
527
- ## 🚀 Quick Start
528
-
529
- ```bash
530
- # Install dependencies
531
- pip install -r requirements.txt
532
- pip install gradio
533
-
534
- # Run the demo
535
- python demo_app.py
536
- ```
537
-
538
- Visit http://127.0.0.1:7861 to use the web interface.
539
-
540
- ## 📈 Next Steps
541
-
542
- 1. Add more benchmark datasets (GPQA, MATH)
543
- 2. Fetch real per-question results from multiple top models
544
- 3. Integrate with ToGMAL MCP server for Claude Desktop
545
- 4. Deploy to HuggingFace Spaces for permanent hosting
546
-
547
- ## 📄 License
548
-
549
- MIT License - see [LICENSE](LICENSE) file for details.
550
-
551
- ## 🤝 Contributing
552
-
553
- 1. Fork the repository
554
- 2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
555
- 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
556
- 4. Push to the branch (`git push origin feature/AmazingFeature`)
557
- 5. Open a pull request
558
-
559
- ## 📧 Contact
560
-
561
- For questions or support, please open an issue on GitHub.
 
459
  - [FastMCP](https://github.com/modelcontextprotocol/python-sdk)
460
  - [Pydantic](https://docs.pydantic.dev)
461
 
462
+ Inspired by the need for safer, more grounded AI interactions.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
REAL_DATA_FETCH_STATUS.md DELETED
@@ -1,200 +0,0 @@
1
- # Real Benchmark Data Fetch - In Progress
2
-
3
- **Status**: ⏳ **RUNNING**
4
- **Started**: Now
5
- **ETA**: 10-15 minutes
6
-
7
- ---
8
-
9
- ## 🎯 What's Happening
10
-
11
- We're fetching **REAL per-question success rates** from the **top 5 models** on the OpenLLM Leaderboard for MMLU.
12
-
13
- ### Models Being Queried
14
- 1. **meta-llama/Meta-Llama-3.1-70B-Instruct** (~85% MMLU)
15
- 2. **Qwen/Qwen2.5-72B-Instruct** (~85% MMLU)
16
- 3. **mistralai/Mixtral-8x22B-Instruct-v0.1** (~77% MMLU)
17
- 4. **google/gemma-2-27b-it** (~75% MMLU)
18
- 5. **microsoft/Phi-3-medium-128k-instruct** (~78% MMLU)
19
-
20
- ### Data Being Collected
21
- - **14,042 MMLU questions** per model
22
- - **Per-question correctness** (0 or 1)
23
- - **Aggregated success rate** across all 5 models
24
- - **Difficulty classification** based on real performance
25
-
26
- ---
27
-
28
- ## 📊 What We'll Get
29
-
30
- ### Per-Question Data
31
- ```json
32
- {
33
- "mmlu_42": {
34
- "question_text": "Statement 1 | Some abelian group...",
35
- "success_rate": 0.60, // 3 out of 5 models got it right
36
- "num_models_tested": 5,
37
- "difficulty_tier": "medium",
38
- "difficulty_label": "Moderate",
39
- "model_results": {
40
- "meta-llama__Meta-Llama-3.1-70B-Instruct": 1,
41
- "Qwen__Qwen2.5-72B-Instruct": 1,
42
- "mistralai__Mixtral-8x22B-Instruct-v0.1": 0,
43
- "google__gemma-2-27b-it": 1,
44
- "microsoft__Phi-3-medium-128k-instruct": 0
45
- }
46
- }
47
- }
48
- ```
49
-
50
- ### Expected Distribution
51
- Based on top model performance:
52
- - **LOW success (0-30%)**: ~10-15% of questions (hard for even best models)
53
- - **MEDIUM success (30-70%)**: ~25-35% of questions (capability boundary)
54
- - **HIGH success (70-100%)**: ~50-65% of questions (mastered)
55
-
56
- This gives us the **full spectrum** to understand LLM capability boundaries!
57
-
58
- ---
59
-
60
- ## 🔍 Why This Approach is Better
61
-
62
- ### What We Tried First
63
- ❌ **Domain-level estimates**: All questions in a domain get same score
64
- ❌ **Manual evaluation**: Too slow, expensive
65
- ❌ **Clustering**: Groups questions but doesn't give individual scores
66
-
67
- ### What We're Doing Now ✅
68
- **Real per-question success rates from top models**
69
-
70
- **Advantages**:
71
- 1. **Granular**: Each question has its own difficulty score
72
- 2. **Accurate**: Based on actual model performance
73
- 3. **Current**: Uses latest top models
74
- 4. **Explainable**: "5 top models got this right" vs "estimated 45%"
75
-
76
- ---
77
-
78
- ## ⏱️ Timeline
79
-
80
- | Step | Status | Time |
81
- |------|--------|------|
82
- | Fetch Model 1 (Llama 3.1 70B) | ⏳ Running | ~3 min |
83
- | Fetch Model 2 (Qwen 2.5 72B) | ⏳ Queued | ~3 min |
84
- | Fetch Model 3 (Mixtral 8x22B) | ⏳ Queued | ~3 min |
85
- | Fetch Model 4 (Gemma 2 27B) | ⏳ Queued | ~3 min |
86
- | Fetch Model 5 (Phi-3 Medium) | ⏳ Queued | ~3 min |
87
- | Aggregate Success Rates | ⏳ Pending | ~1 min |
88
- | Save Results | ⏳ Pending | <1 min |
89
-
90
- **Total**: ~10-15 minutes
91
-
92
- ---
93
-
94
- ## 📦 Output Files
95
-
96
- ### Main Output
97
- [`./data/benchmark_results/mmlu_real_results.json`](file:///Users/hetalksinmaths/togmal/data/benchmark_results/mmlu_real_results.json)
98
-
99
- Contains:
100
- - Metadata (models, fetch time, counts)
101
- - Questions with real success rates
102
- - Difficulty classifications
103
-
104
- ### Statistics
105
- - Total questions collected
106
- - Difficulty tier distribution
107
- - Success rate statistics (min, max, mean, median)
108
-
109
- ---
110
-
111
- ## 🚀 Next Steps (After Fetch Completes)
112
-
113
- ### Immediate
114
- 1. ✅ Review fetched data quality
115
- 2. ✅ Verify difficulty distribution makes sense
116
- 3. ✅ Check for any data issues
117
-
118
- ### Then
119
- 1. **Load into vector DB**: Use real success rates
120
- 2. **Build embeddings**: Generate for all questions
121
- 3. **Test queries**: "Calculate quantum corrections..." → find similar hard questions
122
- 4. **Validate accuracy**: Does it correctly identify hard vs easy prompts?
123
-
124
- ### Finally
125
- 1. **Integrate with MCP**: `togmal_check_prompt_difficulty` uses real data
126
- 2. **Deploy to production**: Ready for use in Claude Desktop
127
- 3. **Monitor performance**: Track query speed, accuracy
128
-
129
- ---
130
-
131
- ## 💡 Key Innovation
132
-
133
- **We're not estimating difficulty - we're measuring it directly from the world's best models.**
134
-
135
- This means:
136
- - ✅ **No guesswork**: Real performance data
137
- - ✅ **Cross-model consensus**: 5 top models agree/disagree
138
- - ✅ **Capability boundary detection**: Find questions at 30-50% success (most interesting!)
139
- - ✅ **Actionable insights**: "Similar to questions that 4/5 top models fail"
140
-
141
- ---
142
-
143
- ## 📈 Expected Results
144
-
145
- ### Difficulty Tiers
146
- Based on top model performance patterns:
147
-
148
- **LOW Success (0-30%)** - ~500-1000 questions
149
- - Graduate-level reasoning
150
- - Multi-step problem solving
151
- - Domain-specific expertise
152
- - **These are the gold mine for detecting LLM limits!**
153
-
154
- **MEDIUM Success (30-70%)** - ~2000-3000 questions
155
- - Capability boundary
156
- - Requires careful reasoning
157
- - Some models succeed, others fail
158
- - **Most interesting for adaptive prompting**
159
-
160
- **HIGH Success (70-100%)** - ~8000-10000 questions
161
- - Within LLM capability
162
- - Baseline knowledge
163
- - Factual recall
164
- - **Good for validation**
165
-
166
- ---
167
-
168
- ## 🎯 Success Metrics
169
-
170
- ### Data Quality
171
- - [ ] All 5 models fetched successfully
172
- - [ ] 1000+ questions with complete data
173
- - [ ] Difficulty distribution looks reasonable
174
- - [ ] No major data anomalies
175
-
176
- ### Performance
177
- - [ ] Fetch completes in <20 minutes
178
- - [ ] All questions have success rates
179
- - [ ] Stratification works (low/medium/high)
180
- - [ ] JSON file validates
181
-
182
- ### Usability
183
- - [ ] Data format ready for vector DB
184
- - [ ] Metadata preserved (domains, questions)
185
- - [ ] Can be post-processed easily
186
- - [ ] Documented and reproducible
187
-
188
- ---
189
-
190
- **Current Status**: Script running, check back in ~15 minutes!
191
-
192
- Run this to check progress:
193
- ```bash
194
- tail -f <terminal_output>
195
- ```
196
-
197
- Or check the output file:
198
- ```bash
199
- ls -lh ./data/benchmark_results/mmlu_real_results.json
200
- ```
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
RUN_COMMANDS.sh DELETED
@@ -1,23 +0,0 @@
1
- #!/bin/bash
2
- # ToGMAL MCP Server - Quick Run Commands
3
-
4
- echo "ToGMAL MCP Server - Quick Commands"
5
- echo "===================================="
6
- echo ""
7
- echo "Choose an option:"
8
- echo ""
9
- echo "1. Run test examples (shows 9 detection scenarios)"
10
- echo " source .venv/bin/activate && python test_examples.py"
11
- echo ""
12
- echo "2. Open MCP Inspector (web UI for testing)"
13
- echo " source .venv/bin/activate && npx @modelcontextprotocol/inspector python togmal_mcp.py"
14
- echo ""
15
- echo "3. Test MCP client (programmatic access)"
16
- echo " source .venv/bin/activate && python test_client.py"
17
- echo ""
18
- echo "4. Verify server syntax"
19
- echo " source .venv/bin/activate && python -m py_compile togmal_mcp.py"
20
- echo ""
21
- echo "5. For Claude Desktop: Copy config"
22
- echo " cp claude_desktop_config.json ~/Library/Application\ Support/Claude/claude_desktop_config.json"
23
- echo ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
SERVER_INFO.md DELETED
@@ -1,252 +0,0 @@
1
- # ToGMAL MCP Server - Running Information
2
-
3
- ## 🌐 MCP Inspector Web UI (Currently Running)
4
-
5
- **Access URL:**
6
- ```
7
- http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=b9c04f13d4a272be1e9d368aaa82d23d54f59910fe36c873edb29fee800c30b4
8
- ```
9
-
10
- **Details:**
11
- - **Web UI Port:** `6274` (automatically assigned, avoids your 5173)
12
- - **Proxy Port:** `6277`
13
- - **Status:** ✅ Running in background (terminal_id: 1)
14
- - **Session Token:** `b9c04f13d4a272be1e9d368aaa82d23d54f59910fe36c873edb29fee800c30b4`
15
-
16
- **Features:**
17
- - Test all 5 MCP tools interactively
18
- - View tool schemas and parameters
19
- - Execute tools and see responses
20
- - Debug MCP communication
21
-
22
- ---
23
-
24
- ## 🖥️ Claude Desktop Configuration
25
-
26
- **Status:** ✅ Config copied successfully
27
-
28
- **Config Location:**
29
- ```
30
- ~/Library/Application Support/Claude/claude_desktop_config.json
31
- ```
32
-
33
- **Next Steps:**
34
- 1. **Quit Claude Desktop completely** (⌘+Q)
35
- 2. **Reopen Claude Desktop**
36
- 3. **Verify** by asking: "What ToGMAL tools are available?"
37
-
38
- You should see 5 tools:
39
- - `togmal_analyze_prompt`
40
- - `togmal_analyze_response`
41
- - `togmal_submit_evidence`
42
- - `togmal_get_taxonomy`
43
- - `togmal_get_statistics`
44
-
45
- ---
46
-
47
- ## 📍 Where is the Server Hosted?
48
-
49
- ### **The Server is LOCAL - Not Hosted Anywhere Remote**
50
-
51
- **Important:** The ToGMAL MCP server is **not hosted on any cloud server or remote location**. Here's how it works:
52
-
53
- ### Architecture Explanation
54
-
55
- ```
56
- ┌─────────────────────────────────────────────────────────┐
57
- │ YOUR LOCAL MACHINE (MacBook) │
58
- │ │
59
- │ ┌────────────────────────────────────────────────┐ │
60
- │ │ Client (Claude Desktop or MCP Inspector) │ │
61
- │ │ Runs in: Your local environment │ │
62
- │ └──────────────────┬───────────────────────────────┘ │
63
- │ │ │
64
- │ │ stdio (standard input/output) │
65
- │ │ JSON-RPC communication │
66
- │ ▼ │
67
- │ ┌────────────────────────────────────────────────┐ │
68
- │ │ ToGMAL MCP Server (togmal_mcp.py) │ │
69
- │ │ Location: /Users/hetalksinmaths/togmal/ │ │
70
- │ │ Python: .venv/bin/python │ │
71
- │ │ Process: Spawned on-demand by client │ │
72
- │ └────────────────────────────────────────────────┘ │
73
- │ │
74
- └─────────────────────────────────────────────────────────┘
75
- ```
76
-
77
- ### How It Works
78
-
79
- 1. **On-Demand Execution:**
80
- - When Claude Desktop starts, it reads the config file
81
- - It spawns the MCP server as a **subprocess** using:
82
- ```bash
83
- /Users/hetalksinmaths/togmal/.venv/bin/python /Users/hetalksinmaths/togmal/togmal_mcp.py
84
- ```
85
- - The server runs **only while Claude Desktop is open**
86
-
87
- 2. **Communication Method:**
88
- - **stdio (Standard Input/Output)** - Not HTTP, not network
89
- - The client sends JSON-RPC requests via stdin
90
- - The server responds via stdout
91
- - All communication is **process-to-process on your local machine**
92
-
93
- 3. **MCP Inspector:**
94
- - Runs a **local web server** at `http://localhost:6274`
95
- - Also spawns the MCP server as a subprocess
96
- - Provides a web UI to interact with the local server
97
- - **Still 100% local** - nothing leaves your machine
98
-
99
- ### Privacy & Security Benefits
100
-
101
- ✅ **No Network Traffic:** All analysis happens locally
102
- ✅ **No External APIs:** No data sent to cloud services
103
- ✅ **No Data Storage:** Everything in memory (unless you persist taxonomy)
104
- ✅ **Full Control:** You own and control all data
105
- ✅ **Offline Capable:** Works without internet connection
106
-
107
- ### Server Lifecycle
108
-
109
- | Client | Server State |
110
- |--------|--------------|
111
- | Claude Desktop opens | Server spawns as subprocess |
112
- | Claude Desktop running | Server active, processes requests |
113
- | Claude Desktop closes | Server terminates automatically |
114
- | MCP Inspector starts | Server spawns as subprocess |
115
- | MCP Inspector stops | Server terminates automatically |
116
-
117
- ### File Locations
118
-
119
- ```
120
- /Users/hetalksinmaths/togmal/
121
- ├── togmal_mcp.py ← The actual server code
122
- ├── .venv/ ← Virtual environment with dependencies
123
- │ └── bin/python ← Python interpreter used to run server
124
- ├── requirements.txt ← Server dependencies (mcp, pydantic, httpx)
125
- └── claude_desktop_config.json ← Config file (copied to Claude Desktop)
126
- ```
127
-
128
- ### Why This Design?
129
-
130
- 1. **Privacy:** Sensitive prompts/responses never leave your machine
131
- 2. **Speed:** No network latency, instant local processing
132
- 3. **Reliability:** No dependency on cloud services or internet
133
- 4. **Control:** You can inspect, modify, and debug the server code
134
- 5. **Security:** No external attack surface
135
-
136
- ### Comparison to Traditional Servers
137
-
138
- | Traditional Web Server | MCP Server (ToGMAL) |
139
- |------------------------|---------------------|
140
- | Always running | Runs on-demand |
141
- | Listen on network port | stdio communication |
142
- | HTTP/HTTPS protocol | JSON-RPC over stdio |
143
- | Hosted on cloud/VPS | Runs locally |
144
- | Accessed via URL | Spawned by client |
145
- | Requires deployment | Just run locally |
146
-
147
- ---
148
-
149
- ## 🎯 For Your VC Pitch
150
-
151
- ### Key Technical Points
152
-
153
- **"ToGMAL is a privacy-first, locally-executed MCP server that provides real-time LLM safety analysis without any cloud dependencies."**
154
-
155
- **Advantages:**
156
- - ✅ **Zero Data Leakage:** All processing happens on the user's machine
157
- - ✅ **Enterprise-Ready:** No compliance issues with sending data externally
158
- - ✅ **Low Latency:** No network round-trips, instant analysis
159
- - ✅ **Cost Efficient:** No server hosting costs for users
160
- - ✅ **Scalable:** Each user runs their own instance
161
-
162
- **Business Model Implications:**
163
- - Can target **regulated industries** (healthcare, finance) due to privacy
164
- - **Enterprise licensing** for on-premise deployment
165
- - **Developer tool** that integrates into existing workflows
166
- - **No infrastructure costs** - users run it themselves
167
-
168
- ---
169
-
170
- ## 🔧 Current Running Services
171
-
172
- ### MCP Inspector (Background Process)
173
- ```bash
174
- Terminal ID: 1
175
- URL: http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=...
176
- Status: Running
177
- ```
178
-
179
- **To stop:**
180
- - The process will stop when you close this IDE or terminal
181
- - Or manually kill the background process
182
-
183
- ### Claude Desktop
184
- ```bash
185
- Config: Copied to ~/Library/Application Support/Claude/
186
- Status: Ready (restart Claude Desktop to activate)
187
- ```
188
-
189
- ---
190
-
191
- ## 📊 Testing Commands
192
-
193
- ### Test in MCP Inspector
194
- 1. Open: http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=b9c04f13d4a272be1e9d368aaa82d23d54f59910fe36c873edb29fee800c30b4
195
- 2. Select a tool (e.g., `togmal_analyze_prompt`)
196
- 3. Enter parameters
197
- 4. Click "Execute"
198
- 5. View results
199
-
200
- ### Test in Claude Desktop
201
- 1. Restart Claude Desktop (⌘+Q then reopen)
202
- 2. Ask: "Use ToGMAL to analyze this prompt: 'Build me a quantum gravity theory'"
203
- 3. Claude will automatically call the MCP server
204
- 4. View the safety analysis
205
-
206
- ### Test with Python Client
207
- ```bash
208
- source .venv/bin/activate
209
- python test_client.py
210
- ```
211
-
212
- ### Test Examples
213
- ```bash
214
- source .venv/bin/activate
215
- python test_examples.py
216
- ```
217
-
218
- ---
219
-
220
- ## 🛠️ Troubleshooting
221
-
222
- ### MCP Inspector Not Working?
223
- - Check the URL includes the auth token
224
- - Verify terminal_id: 1 is still running
225
- - Check if port 6274 is available
226
-
227
- ### Claude Desktop Not Showing Tools?
228
- 1. Verify config was copied: `cat ~/Library/Application\ Support/Claude/claude_desktop_config.json`
229
- 2. Completely quit Claude Desktop (⌘+Q)
230
- 3. Reopen Claude Desktop
231
- 4. Check Claude Desktop logs: `~/Library/Logs/Claude/mcp*.log`
232
-
233
- ### Server Not Starting?
234
- ```bash
235
- # Test server manually
236
- source .venv/bin/activate
237
- python togmal_mcp.py
238
- # Should hang - this is expected! Press Ctrl+C to stop
239
- ```
240
-
241
- ---
242
-
243
- ## 📚 Documentation
244
-
245
- - [`SETUP_COMPLETE.md`](SETUP_COMPLETE.md) - Full setup guide
246
- - [`MCP_CONNECTION_GUIDE.md`](MCP_CONNECTION_GUIDE.md) - Platform connections
247
- - [`README.md`](README.md) - Feature documentation
248
- - [`ARCHITECTURE.md`](ARCHITECTURE.md) - System design
249
-
250
- ---
251
-
252
- **Summary:** The ToGMAL MCP server runs **100% locally** on your MacBook. It's spawned as a subprocess by clients (Claude Desktop or MCP Inspector) and communicates via stdio. No remote hosting, no cloud services, complete privacy. 🛡️
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
SETUP_COMPLETE.md DELETED
@@ -1,307 +0,0 @@
1
- # ToGMAL Setup Complete! ✅
2
-
3
- ## Summary
4
-
5
- Your ToGMAL MCP Server is now ready to use. Here's what was done:
6
-
7
- ### 1. Virtual Environment Setup ✅
8
- - Created `.venv/` using `uv venv`
9
- - Installed all 26 dependencies including:
10
- - `mcp` (Model Context Protocol)
11
- - `pydantic` (Data validation)
12
- - `httpx` (HTTP client)
13
- - Plus supporting libraries
14
-
15
- ### 2. Configuration Updated ✅
16
- - Updated [`claude_desktop_config.json`](claude_desktop_config.json) with correct paths:
17
- - Python: `/Users/hetalksinmaths/togmal/.venv/bin/python`
18
- - Script: `/Users/hetalksinmaths/togmal/togmal_mcp.py`
19
-
20
- ### 3. Tests Verified ✅
21
- - Syntax check passed
22
- - Test examples display correctly (9 test scenarios)
23
- - MCP server tools detected successfully (5 tools available)
24
-
25
- ---
26
-
27
- ## How to Connect to the MCP Server
28
-
29
- ### For Claude Desktop (Recommended for Daily Use)
30
-
31
- 1. **Copy the config** to Claude Desktop location:
32
- ```bash
33
- cp claude_desktop_config.json ~/Library/Application\ Support/Claude/claude_desktop_config.json
34
- ```
35
-
36
- 2. **Restart Claude Desktop** completely (Quit → Reopen)
37
-
38
- 3. **Verify** by asking in Claude: "What ToGMAL tools are available?"
39
-
40
- You should see:
41
- - ✅ togmal_analyze_prompt
42
- - ✅ togmal_analyze_response
43
- - ✅ togmal_submit_evidence
44
- - ✅ togmal_get_taxonomy
45
- - ✅ togmal_get_statistics
46
-
47
- ---
48
-
49
- ### For Qoder Platform (This IDE)
50
-
51
- **Current Limitation:** Qoder doesn't natively support MCP servers yet.
52
-
53
- **Workarounds:**
54
-
55
- #### Option 1: MCP Inspector (Web UI)
56
- ```bash
57
- cd /Users/hetalksinmaths/togmal
58
- source .venv/bin/activate
59
- npx @modelcontextprotocol/inspector python togmal_mcp.py
60
- ```
61
- Opens a browser interface to test all MCP tools interactively.
62
-
63
- #### Option 2: Run Test Examples
64
- ```bash
65
- source .venv/bin/activate
66
- python test_examples.py
67
- ```
68
- Shows 9 pre-built test scenarios demonstrating detection capabilities.
69
-
70
- #### Option 3: Custom Python Client
71
- The included [`test_client.py`](test_client.py) shows how to programmatically call the MCP server:
72
- ```bash
73
- source .venv/bin/activate
74
- python test_client.py
75
- ```
76
-
77
- **Note:** There's a parameter wrapping issue with FastMCP that affects direct client calls. The server works perfectly when called through Claude Desktop or the MCP Inspector.
78
-
79
- ---
80
-
81
- ### For Claude Code (VS Code Extension)
82
-
83
- 1. **Install Claude Code** extension in VS Code
84
-
85
- 2. **Add configuration** to VS Code settings:
86
- - Open Settings (⌘+,)
87
- - Search for "MCP Servers"
88
- - Or edit `settings.json`:
89
-
90
- ```json
91
- {
92
- "mcpServers": {
93
- "togmal": {
94
- "command": "/Users/hetalksinmaths/togmal/.venv/bin/python",
95
- "args": ["/Users/hetalksinmaths/togmal/togmal_mcp.py"]
96
- }
97
- }
98
- }
99
- ```
100
-
101
- 3. **Reload VS Code**
102
-
103
- ---
104
-
105
- ### For Cline (VS Code Extension)
106
-
107
- Similar to Claude Code:
108
-
109
- ```json
110
- {
111
- "cline.mcpServers": {
112
- "togmal": {
113
- "command": "/Users/hetalksinmaths/togmal/.venv/bin/python",
114
- "args": ["/Users/hetalksinmaths/togmal/togmal_mcp.py"]
115
- }
116
- }
117
- }
118
- ```
119
-
120
- ---
121
-
122
- ## Test Commands Run
123
-
124
- ### ✅ Syntax Validation
125
- ```bash
126
- source .venv/bin/activate
127
- python -m py_compile togmal_mcp.py
128
- ```
129
- **Result:** No syntax errors found
130
-
131
- ### ✅ Test Examples
132
- ```bash
133
- source .venv/bin/activate
134
- python test_examples.py
135
- ```
136
- **Result:** All 9 test scenarios display correctly:
137
- 1. Math/Physics Speculation Detection
138
- 2. Ungrounded Medical Advice Detection
139
- 3. Dangerous File Operations Detection
140
- 4. Vibe Coding Overreach Detection
141
- 5. Unsupported Claims Detection
142
- 6. Safe Prompt (no detection)
143
- 7. Safe Response with Sources (no detection)
144
- 8. Mixed Issues (multiple detections)
145
- 9. Borderline Medical (properly handled)
146
-
147
- ### ✅ MCP Client Test
148
- ```bash
149
- source .venv/bin/activate
150
- python test_client.py
151
- ```
152
- **Result:** Server connects successfully, lists 5 tools, statistics tool works correctly
153
-
154
- ---
155
-
156
- ## What ToGMAL Does
157
-
158
- **ToGMAL** (Taxonomy of Generative Model Apparent Limitations) is an MCP server that provides **real-time safety analysis** for LLM interactions.
159
-
160
- ### Detection Categories
161
-
162
- 1. **🔬 Math/Physics Speculation**
163
- - Theory of everything claims
164
- - Invented equations or particles
165
- - Ungrounded quantum gravity theories
166
-
167
- 2. **🏥 Ungrounded Medical Advice**
168
- - Diagnoses without qualifications
169
- - Treatment recommendations without sources
170
- - Missing disclaimers or citations
171
-
172
- 3. **💾 Dangerous File Operations**
173
- - Mass deletion commands
174
- - Recursive operations without safeguards
175
- - No human-in-the-loop confirmation
176
-
177
- 4. **💻 Vibe Coding Overreach**
178
- - Overly ambitious scope (complete social networks, etc.)
179
- - Unrealistic line counts (1000+ lines)
180
- - No architectural planning
181
-
182
- 5. **📊 Unsupported Claims**
183
- - Absolute statements without hedging
184
- - Statistical claims without sources
185
- - Over-confident predictions
186
-
187
- ### Risk Levels
188
-
189
- - **LOW**: Minor issues, no intervention needed
190
- - **MODERATE**: Worth noting, consider verification
191
- - **HIGH**: Significant concern, interventions recommended
192
- - **CRITICAL**: Serious risk, multiple interventions strongly advised
193
-
194
- ### Intervention Types
195
-
196
- - **Step Breakdown**: Complex tasks → verifiable components
197
- - **Human-in-the-Loop**: Critical decisions → human oversight
198
- - **Web Search**: Claims → verify against sources
199
- - **Simplified Scope**: Ambitious projects → realistic scoping
200
-
201
- ---
202
-
203
- ## For Your VC Pitch 🚀
204
-
205
- As a solo founder in Singapore pitching to VCs, here's how to position ToGMAL:
206
-
207
- ### Demo Flow
208
-
209
- 1. **Show the Problem**
210
- ```bash
211
- python test_examples.py | head -80
212
- ```
213
- Demonstrates various failure modes LLMs can exhibit
214
-
215
- 2. **Show the Detection**
216
- - Open MCP Inspector to show real-time analysis
217
- - Or use Claude Desktop with live examples
218
-
219
- 3. **Show the Intervention**
220
- - Highlight how ToGMAL recommends safety interventions
221
- - Emphasize privacy-preserving (all local, no API calls)
222
- - Show taxonomy building for continuous improvement
223
-
224
- ### Key Selling Points
225
-
226
- ✅ **Privacy-First**: All analysis is deterministic and local
227
- ✅ **Real-Time**: Low-latency heuristic detection
228
- ✅ **Extensible**: Easy to add new detection patterns
229
- ✅ **Human-Centered**: Recommendations, not enforcement
230
- ✅ **Crowdsourced**: Taxonomy builds from submitted evidence
231
- ✅ **Production-Ready**: Clean architecture, tested, documented
232
-
233
- ### Technical Sophistication
234
-
235
- - Built on Model Context Protocol (cutting-edge standard)
236
- - Pydantic validation for type safety
237
- - FastMCP for efficient server implementation
238
- - Clear upgrade path (heuristics → ML → federated learning)
239
-
240
- ---
241
-
242
- ## Next Steps
243
-
244
- ### Immediate (For Testing)
245
-
246
- ```bash
247
- # Test the server functionality
248
- source .venv/bin/activate
249
- python test_examples.py
250
-
251
- # Or open MCP Inspector
252
- npx @modelcontextprotocol/inspector python togmal_mcp.py
253
- ```
254
-
255
- ### For Daily Use
256
-
257
- 1. Copy config to Claude Desktop
258
- 2. Restart Claude
259
- 3. Use ToGMAL tools in conversations
260
-
261
- ### For Development
262
-
263
- - See [`ARCHITECTURE.md`](ARCHITECTURE.md) for system design
264
- - See [`DEPLOYMENT.md`](DEPLOYMENT.md) for advanced configuration
265
- - See [`MCP_CONNECTION_GUIDE.md`](MCP_CONNECTION_GUIDE.md) for connection options
266
-
267
- ---
268
-
269
- ## Files Created/Updated
270
-
271
- ✅ Updated: `claude_desktop_config.json` (correct paths)
272
- ✅ Created: `MCP_CONNECTION_GUIDE.md` (comprehensive connection guide)
273
- ✅ Created: `test_client.py` (programmatic MCP client example)
274
- ✅ Created: `SETUP_COMPLETE.md` (this file)
275
-
276
- ---
277
-
278
- ## Quick Reference
279
-
280
- ```bash
281
- # Activate venv
282
- source .venv/bin/activate
283
-
284
- # Run tests
285
- python test_examples.py
286
-
287
- # Open MCP Inspector
288
- npx @modelcontextprotocol/inspector python togmal_mcp.py
289
-
290
- # Test client (has parameter wrapping issue)
291
- python test_client.py
292
-
293
- # Check syntax
294
- python -m py_compile togmal_mcp.py
295
- ```
296
-
297
- ---
298
-
299
- ## Questions?
300
-
301
- - **Architecture**: See [`ARCHITECTURE.md`](ARCHITECTURE.md)
302
- - **Deployment**: See [`DEPLOYMENT.md`](DEPLOYMENT.md)
303
- - **Quick Start**: See [`QUICKSTART.md`](QUICKSTART.md)
304
- - **Full Docs**: See [`README.md`](README.md)
305
- - **Connections**: See [`MCP_CONNECTION_GUIDE.md`](MCP_CONNECTION_GUIDE.md)
306
-
307
- **Your ToGMAL MCP Server is ready to protect LLM interactions!** 🛡️
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
VECTOR_DB_STATUS.md DELETED
@@ -1,239 +0,0 @@
1
- # ✅ Vector Database: Successfully Deployed
2
-
3
- **Date**: October 19, 2025
4
- **Status**: **PRODUCTION READY**
5
-
6
- ---
7
-
8
- ## 🎉 What's Working
9
-
10
- ### Core System
11
- - ✅ **ChromaDB** initialized at `./data/benchmark_vector_db/`
12
- - ✅ **Sentence Transformers** (all-MiniLM-L6-v2) generating embeddings
13
- - ✅ **70 MMLU-Pro questions** indexed with success rates
14
- - ✅ **Real-time similarity search** working (<20ms per query)
15
- - ✅ **MCP tool integration** ready in `togmal_mcp.py`
16
-
17
- ### Current Database Stats
18
- ```
19
- Total Questions: 70
20
- Source: MMLU-Pro (validation set)
21
- Domains: 14 (math, physics, biology, chemistry, health, law, etc.)
22
- Success Rate: 45% (estimated - will update with real scores)
23
- ```
24
-
25
- ---
26
-
27
- ## 🚀 Quick Test Results
28
-
29
- ```bash
30
- $ python test_vector_db.py
31
-
32
- 📝 Prompt: Calculate the Schwarzschild radius for a black hole
33
- Risk: MODERATE
34
- Success Rate: 45.0%
35
- Similar to: MMLU_Pro (physics)
36
- ✓ Correctly identified physics domain
37
-
38
- 📝 Prompt: Diagnose a patient with chest pain
39
- Risk: MODERATE
40
- Success Rate: 45.0%
41
- Similar to: MMLU_Pro (health)
42
- ✓ Correctly identified medical domain
43
- ```
44
-
45
- **Key Observation**: Vector similarity is correctly mapping prompts to relevant domains!
46
-
47
- ---
48
-
49
- ## 📊 What We Learned
50
-
51
- ### Dataset Access Issues (Solved)
52
- 1. **GPQA Diamond**: ❌ Gated dataset - needs HuggingFace authentication
53
- - Solution: `huggingface-cli login` (requires account)
54
- - Alternative: Use MMLU-Pro for now (very hard too)
55
-
56
- 2. **MATH**: ❌ Dataset naming changed on HuggingFace
57
- - Solution: Find correct dataset path
58
- - Alternative: Already have 70 hard questions
59
-
60
- 3. **MMLU-Pro**: ✅ **Working perfectly!**
61
- - 70 validation questions loaded
62
- - Cross-domain coverage
63
- - Clear schema
64
-
65
- ### Success Rates (Next Step)
66
- - Currently using **estimated 45%** for MMLU-Pro
67
- - **Next**: Fetch real per-question results from OpenLLM Leaderboard
68
- - Top 3 models: Llama 3.1 70B, Qwen 2.5 72B, Mixtral 8x22B
69
- - Compute actual success rates per question
70
-
71
- ---
72
-
73
- ## 🔧 MCP Tool Ready
74
-
75
- ### `togmal_check_prompt_difficulty`
76
-
77
- **Status**: ✅ Integrated in `togmal_mcp.py`
78
-
79
- **Usage**:
80
- ```python
81
- # Via MCP
82
- result = await togmal_check_prompt_difficulty(
83
- prompt="Calculate quantum corrections...",
84
- k=5
85
- )
86
-
87
- # Returns:
88
- {
89
- "risk_level": "MODERATE",
90
- "weighted_success_rate": 0.45,
91
- "similar_questions": [...],
92
- "recommendation": "Use chain-of-thought prompting"
93
- }
94
- ```
95
-
96
- **Test it**:
97
- ```bash
98
- # Start MCP server
99
- python togmal_mcp.py
100
-
101
- # Or via HTTP facade
102
- curl -X POST http://127.0.0.1:6274/call-tool \
103
- -d '{"tool": "togmal_check_prompt_difficulty", "arguments": {"prompt": "Prove P != NP"}}'
104
- ```
105
-
106
- ---
107
-
108
- ## 📈 Next Steps (Priority Order)
109
-
110
- ### Immediate (High Value)
111
- 1. **Authenticate with HuggingFace** to access GPQA Diamond
112
- ```bash
113
- huggingface-cli login
114
- # Then re-run: python benchmark_vector_db.py
115
- ```
116
-
117
- 2. **Fetch real success rates** from OpenLLM Leaderboard
118
- - Already coded in `_fetch_gpqa_model_results()`
119
- - Just needs dataset access
120
-
121
- 3. **Expand MMLU-Pro to 1000 questions**
122
- - Currently sampled 70 from validation
123
- - Full dataset has 12K questions
124
-
125
- ### Enhancement (Medium Priority)
126
- 4. **Add alternative datasets** (no auth required):
127
- - ARC-Challenge (reasoning)
128
- - HellaSwag (commonsense)
129
- - TruthfulQA (factuality)
130
-
131
- 5. **Domain-specific filtering**:
132
- ```python
133
- db.query_similar_questions(
134
- prompt="Medical diagnosis question",
135
- domain_filter="health"
136
- )
137
- ```
138
-
139
- ### Research (Low Priority)
140
- 6. **Track capability drift** monthly
141
- 7. **A/B test** vector DB vs heuristics on real prompts
142
- 8. **Integrate with Aqumen** for adversarial question generation
143
-
144
- ---
145
-
146
- ## 💡 Key Insights
147
-
148
- ### Why This Works Despite Small Dataset
149
- Even with 70 questions, the vector DB is **highly effective** because:
150
-
151
- 1. **Semantic embeddings** capture meaning, not just keywords
152
- - "Schwarzschild radius" → correctly matched to physics
153
- - "Diagnose patient" → correctly matched to health
154
-
155
- 2. **Cross-domain coverage**
156
- - 14 domains represented
157
- - Each domain has 5 representative questions
158
-
159
- 3. **Weighted similarity** reduces noise
160
- - Closest matches get higher weight
161
- - Distant matches contribute less
162
-
163
- ### Production Readiness
164
- - ✅ **Fast**: <20ms per query
165
- - ✅ **Reliable**: No external API calls (fully local)
166
- - ✅ **Explainable**: Returns actual similar questions
167
- - ✅ **Maintainable**: Just add more questions to improve
168
-
169
- ---
170
-
171
- ## 🎯 For Your VC Pitch
172
-
173
- ### Technical Innovation
174
- > "We built a vector similarity system that detects when prompts are beyond LLM capability boundaries by comparing them to 70+ graduate-level benchmark questions across 14 domains. Unlike static heuristics, this provides real-time, explainable risk assessments."
175
-
176
- ### Scalability Story
177
- > "Starting with 70 questions from MMLU-Pro, we can scale to 10,000+ questions from GPQA, MATH, and LiveBench. Each additional question improves accuracy with zero re-training."
178
-
179
- ### Business Value
180
- > "This prevents LLMs from confidently answering questions they'll get wrong, reducing hallucination risk in production systems. For Aqumen, it enables difficulty-calibrated assessments that separate experts from novices."
181
-
182
- ---
183
-
184
- ## 📦 Files Created
185
-
186
- ### Core Implementation
187
- - [`benchmark_vector_db.py`](file:///Users/hetalksinmaths/togmal/benchmark_vector_db.py) (596 lines)
188
- - [`togmal_mcp.py`](file:///Users/hetalksinmaths/togmal/togmal_mcp.py) (updated with new tool)
189
-
190
- ### Testing & Docs
191
- - [`test_vector_db.py`](file:///Users/hetalksinmaths/togmal/test_vector_db.py) (55 lines)
192
- - [`VECTOR_DB_SUMMARY.md`](file:///Users/hetalksinmaths/togmal/VECTOR_DB_SUMMARY.md) (337 lines)
193
- - [`VECTOR_DB_STATUS.md`](file:///Users/hetalksinmaths/togmal/VECTOR_DB_STATUS.md) (this file)
194
-
195
- ### Setup
196
- - [`setup_vector_db.sh`](file:///Users/hetalksinmaths/togmal/setup_vector_db.sh) (automated setup)
197
- - [`requirements.txt`](file:///Users/hetalksinmaths/togmal/requirements.txt) (updated with dependencies)
198
-
199
- ---
200
-
201
- ## ✅ Deployment Checklist
202
-
203
- - [x] Dependencies installed (`sentence-transformers`, `chromadb`, `datasets`)
204
- - [x] Vector database built (70 questions indexed)
205
- - [x] Embeddings generated (all-MiniLM-L6-v2)
206
- - [x] MCP tool integrated (`togmal_check_prompt_difficulty`)
207
- - [x] Testing script working
208
- - [ ] HuggingFace authentication (for GPQA access)
209
- - [ ] Real success rates from leaderboard
210
- - [ ] Expanded to 1000+ questions
211
- - [ ] Integrated with Claude Desktop
212
- - [ ] A/B tested in production
213
-
214
- ---
215
-
216
- ## 🚀 Ready to Use!
217
-
218
- **The vector database is fully functional and ready for production testing.**
219
-
220
- **Next action**: Authenticate with HuggingFace to unlock GPQA Diamond (the hardest dataset), or continue with current 70 MMLU-Pro questions.
221
-
222
- **To test now**:
223
- ```bash
224
- cd /Users/hetalksinmaths/togmal
225
- python test_vector_db.py
226
- ```
227
-
228
- **To use in MCP**:
229
- ```bash
230
- python togmal_mcp.py
231
- # Then use togmal_check_prompt_difficulty tool
232
- ```
233
-
234
- ---
235
-
236
- **Status**: 🟢 **OPERATIONAL**
237
- **Performance**: ⚡ **<20ms per query**
238
- **Accuracy**: 🎯 **Domain matching validated**
239
- **Next**: 📈 **Scale to 1000+ questions**
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
VECTOR_DB_SUMMARY.md DELETED
@@ -1,336 +0,0 @@
1
- # Vector Database for Difficulty-Based Prompt Assessment
2
-
3
- ## 🎯 What We Built
4
-
5
- A **vector similarity search system** that replaces static clustering with real-time difficulty assessment by:
6
-
7
- 1. **Indexing hardest benchmark datasets** (GPQA Diamond, MMLU-Pro, MATH)
8
- 2. **Finding similar questions** via cosine similarity in embedding space
9
- 3. **Computing weighted difficulty scores** based on benchmark success rates
10
- 4. **Providing explainable risk assessments** for any prompt
11
-
12
- ---
13
-
14
- ## 📊 Datasets Included (Ranked by Difficulty)
15
-
16
- ### 1. **GPQA Diamond** ⭐ (Hardest)
17
- - **Size**: 198 expert-written questions
18
- - **Topics**: Graduate-level Physics, Biology, Chemistry
19
- - **Difficulty**: GPT-4 gets ~50%, most models <30%
20
- - **Dataset**: `Idavidrein/gpqa` (gpqa_diamond split)
21
- - **Why**: Google-proof questions that even PhD holders struggle with
22
-
23
- ### 2. **MMLU-Pro** (Very Hard)
24
- - **Size**: 12,000 questions across 14 domains
25
- - **Topics**: Math, Science, Law, Engineering, Business
26
- - **Difficulty**: 10 choices vs 4 (reduces guessing), ~45% success
27
- - **Dataset**: `TIGER-Lab/MMLU-Pro`
28
- - **Why**: Broader coverage than standard MMLU, harder problems
29
-
30
- ### 3. **MATH** (Competition Mathematics)
31
- - **Size**: 12,500 problems
32
- - **Topics**: Algebra, Geometry, Number Theory, Calculus
33
- - **Difficulty**: GPT-4 ~50%, requires multi-step reasoning
34
- - **Dataset**: `hendrycks/competition_math`
35
- - **Why**: Tests complex mathematical reasoning chains
36
-
37
- ---
38
-
39
- ## 🚀 How It Works
40
-
41
- ### Architecture
42
- ```
43
- User Prompt → Embedding Model → Vector DB → K Nearest Questions → Weighted Score
44
- ↓ ↓
45
- all-MiniLM-L6-v2 (cosine similarity)
46
- ```
47
-
48
- ### Example Flow
49
- ```python
50
- prompt = "Calculate the quantum correction for a 3D harmonic oscillator"
51
-
52
- # 1. Embed prompt
53
- embedding = model.encode(prompt)
54
-
55
- # 2. Find 5 nearest benchmark questions
56
- nearest = [
57
- {"source": "GPQA", "success_rate": 0.12, "similarity": 0.87},
58
- {"source": "MATH", "success_rate": 0.18, "similarity": 0.82},
59
- {"source": "GPQA", "success_rate": 0.09, "similarity": 0.79},
60
- {"source": "MMLU-Pro", "success_rate": 0.23, "similarity": 0.75},
61
- {"source": "GPQA", "success_rate": 0.15, "similarity": 0.73}
62
- ]
63
-
64
- # 3. Compute weighted difficulty
65
- weighted_success = (0.12*0.87 + 0.18*0.82 + ...) / (0.87 + 0.82 + ...)
66
- = 0.14 (14% success rate)
67
-
68
- # 4. Return risk assessment
69
- {
70
- "risk_level": "CRITICAL",
71
- "weighted_success_rate": 0.14,
72
- "explanation": "Similar to questions with <10% success rate",
73
- "recommendation": "Break into steps, use tools, human-in-the-loop"
74
- }
75
- ```
76
-
77
- ---
78
-
79
- ## 📦 Files Created
80
-
81
- ### Core Implementation
82
- - **`benchmark_vector_db.py`** (596 lines)
83
- - `BenchmarkVectorDB` class
84
- - Dataset loaders (GPQA, MMLU-Pro, MATH)
85
- - Embedding generation (Sentence Transformers)
86
- - ChromaDB integration
87
- - Query interface with weighted difficulty
88
-
89
- ### Integration
90
- - **`togmal_mcp.py`** (updated)
91
- - New MCP tool: `togmal_check_prompt_difficulty(prompt, k=5)`
92
- - Added to `togmal_list_tools_dynamic` response
93
-
94
- ### Setup
95
- - **`setup_vector_db.sh`**
96
- - Automated setup script
97
- - Installs dependencies
98
- - Builds initial database
99
-
100
- ### Dependencies (added to `requirements.txt`)
101
- - `sentence-transformers>=2.2.0` - Embeddings
102
- - `chromadb>=0.4.0` - Vector database
103
- - `datasets>=2.14.0` - HuggingFace dataset loading
104
-
105
- ---
106
-
107
- ## ⚡ Quick Start
108
-
109
- ### Step 1: Install Dependencies & Build Database
110
- ```bash
111
- cd /Users/hetalksinmaths/togmal
112
- chmod +x setup_vector_db.sh
113
- ./setup_vector_db.sh
114
- ```
115
-
116
- This will:
117
- - Install `sentence-transformers`, `chromadb`, `datasets`
118
- - Download GPQA Diamond, MMLU-Pro, MATH datasets
119
- - Generate embeddings for ~2000 questions
120
- - Store in `./data/benchmark_vector_db/`
121
-
122
- **Expected time**: 5-10 minutes
123
-
124
- ### Step 2: Test the Vector DB
125
- ```bash
126
- python benchmark_vector_db.py
127
- ```
128
-
129
- Expected output:
130
- ```
131
- Loading GPQA Diamond dataset...
132
- Loaded 198 questions from GPQA Diamond
133
-
134
- Loading MMLU-Pro dataset...
135
- Loaded 1000 questions from MMLU-Pro
136
-
137
- Generating embeddings (this may take a few minutes)...
138
- Indexed 1698 questions
139
-
140
- Testing with example prompts:
141
- Prompt: Calculate the quantum correction...
142
- Risk Level: CRITICAL
143
- Weighted Success Rate: 12%
144
- Recommendation: Break into steps, use tools
145
- ```
146
-
147
- ### Step 3: Use in MCP Server
148
- ```bash
149
- # Start the server
150
- python togmal_mcp.py
151
-
152
- # Or via HTTP facade
153
- curl -X POST http://127.0.0.1:6274/call-tool \
154
- -H "Content-Type: application/json" \
155
- -d '{
156
- "tool": "togmal_check_prompt_difficulty",
157
- "arguments": {
158
- "prompt": "Prove that P != NP",
159
- "k": 5
160
- }
161
- }'
162
- ```
163
-
164
- ---
165
-
166
- ## 🔍 MCP Tool: `togmal_check_prompt_difficulty`
167
-
168
- ### Parameters
169
- ```python
170
- prompt: str # Required - the user's prompt/question
171
- k: int = 5 # Optional - number of similar questions to retrieve
172
- domain_filter: str # Optional - filter by domain (e.g., 'physics')
173
- ```
174
-
175
- ### Response Schema
176
- ```json
177
- {
178
- "similar_questions": [
179
- {
180
- "question_id": "gpqa_diamond_42",
181
- "question_text": "Calculate the ground state...",
182
- "source": "GPQA_Diamond",
183
- "domain": "physics",
184
- "success_rate": 0.12,
185
- "difficulty_score": 0.88,
186
- "similarity": 0.87
187
- }
188
- ],
189
- "weighted_difficulty_score": 0.82,
190
- "weighted_success_rate": 0.18,
191
- "avg_similarity": 0.79,
192
- "risk_level": "HIGH",
193
- "explanation": "Very hard - similar to questions with <30% success rate",
194
- "recommendation": "Multi-step reasoning with verification, consider web search",
195
- "database_stats": {
196
- "total_questions": 1698,
197
- "sources": {"GPQA_Diamond": 198, "MMLU_Pro": 1000, "MATH": 500}
198
- }
199
- }
200
- ```
201
-
202
- ### Risk Levels
203
- - **MINIMAL** (>70% success): LLMs handle well
204
- - **LOW** (50-70%): Moderate difficulty, within capability
205
- - **MODERATE** (30-50%): Hard, at capability boundary
206
- - **HIGH** (<30%): Very hard, likely to struggle
207
- - **CRITICAL** (<10%): Nearly impossible for current LLMs
208
-
209
- ---
210
-
211
- ## 🎯 Why Vector DB > Clustering
212
-
213
- ### Traditional Clustering Approach ❌
214
- ```python
215
- # Problem: Forces everything into fixed buckets
216
- clusters = kmeans.fit(questions) # Creates 5 clusters
217
- new_prompt → assign to cluster 3 → "hard"
218
-
219
- Issues:
220
- - Arbitrary cluster boundaries
221
- - New prompts forced into wrong cluster
222
- - No explainability (why cluster 3?)
223
- - Requires re-clustering for updates
224
- ```
225
-
226
- ### Vector Similarity Approach ✅
227
- ```python
228
- # Solution: Direct comparison to known examples
229
- new_prompt → find 5 nearest questions → weighted average
230
-
231
- [GPQA: 12%, MATH: 18%, GPQA: 9%, ...]
232
-
233
- Weighted: 14% success → CRITICAL risk
234
-
235
- Advantages:
236
- - No arbitrary boundaries
237
- - Works for any prompt
238
- - Explainable ("87% similar to GPQA physics Q42")
239
- - Real-time updates (just add to DB)
240
- - Confidence weighted by similarity
241
- ```
242
-
243
- ---
244
-
245
- ## 📈 Next Steps
246
-
247
- ### Immediate (High Priority)
248
- 1. ✅ **Built**: Core vector DB with GPQA, MMLU-Pro, MATH
249
- 2. ✅ **Integrated**: MCP tool `togmal_check_prompt_difficulty`
250
- 3. 🔄 **TODO**: Get real per-question success rates from OpenLLM leaderboard
251
-
252
- ### Enhancement (Medium Priority)
253
- 4. **Add more datasets**:
254
- - LiveBench (contamination-free)
255
- - IFEval (instruction following)
256
- - DABStep (data analysis)
257
-
258
- 5. **Improve success rate accuracy**:
259
- ```python
260
- # Load per-model results from HuggingFace leaderboard
261
- models = ["meta-llama__Meta-Llama-3-70B-Instruct", ...]
262
- for model in models:
263
- results = load_dataset(f"open-llm-leaderboard/details_{model}")
264
- # Compute per-question success across 100+ models
265
- ```
266
-
267
- 6. **Domain-specific filtering**:
268
- ```python
269
- db.query_similar_questions(
270
- prompt="Diagnose this medical case",
271
- domain_filter="medicine" # Only compare to medical questions
272
- )
273
- ```
274
-
275
- ### Advanced (Low Priority)
276
- 7. **Track capability drift**: Re-compute success rates monthly
277
- 8. **Hybrid approach**: Use clustering to organize vector space regions
278
- 9. **Multi-modal**: Add code benchmarks (HumanEval, MBPP)
279
-
280
- ---
281
-
282
- ## 🔬 Research Applications
283
-
284
- ### For ToGMAL
285
- - **Proactive warnings**: "This prompt is 89% similar to GPQA questions with 8% success"
286
- - **Difficulty calibration**: Adjust interventions based on similarity scores
287
- - **Pattern discovery**: Identify emerging hard question types
288
-
289
- ### For Aqumen (Adversarial Testing)
290
- - **Target generation**: Create questions at 20-30% success (capability boundary)
291
- - **Difficulty tuning**: Adjust assessment hardness based on user performance
292
- - **Gap analysis**: Find underrepresented hard topics in current assessments
293
-
294
- ### For Grant Applications
295
- - **Novel contribution**: "First vector-based LLM capability boundary detector"
296
- - **Quantifiable impact**: "Identifies prompts beyond LLM capability with 85% accuracy"
297
- - **Practical deployment**: "Integrated into production MCP server for Claude Desktop"
298
-
299
- ---
300
-
301
- ## 💡 Key Innovation Summary
302
-
303
- **Instead of asking "What cluster does this belong to?"**
304
- **We ask "What are the 5 most similar questions we've tested?"**
305
-
306
- This is:
307
- - ✅ More accurate (no forced clustering)
308
- - ✅ More explainable ("87% similar to this exact GPQA question")
309
- - ✅ More flexible (works for any prompt)
310
- - ✅ More maintainable (just add to DB, no re-training)
311
-
312
- The clustering work was valuable research, but **vector similarity is the production solution**.
313
-
314
- ---
315
-
316
- ## 📚 References
317
-
318
- ### Datasets
319
- - GPQA: https://huggingface.co/datasets/Idavidrein/gpqa
320
- - MMLU-Pro: https://huggingface.co/datasets/TIGER-Lab/MMLU-Pro
321
- - MATH: https://huggingface.co/datasets/hendrycks/competition_math
322
-
323
- ### Models
324
- - Sentence Transformers: https://www.sbert.net/
325
- - all-MiniLM-L6-v2: https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2
326
-
327
- ### Vector DB
328
- - ChromaDB: https://www.trychroma.com/
329
-
330
- ---
331
-
332
- ## 🎉 Status
333
-
334
- **COMPLETE**: Vector database system ready for production use!
335
-
336
- Next: Run `./setup_vector_db.sh` to build the database and start using `togmal_check_prompt_difficulty` in your MCP workflows.