项目文件夹

文件
2025-10-15 17:08:31 -07:00

279 行
6.3 KiB
Markdown

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
# Original vs Revised Plan - Side-by-Side Comparison
## CLI Approach
### Original Plan ❌
```bash
# Separate cost command
llm "Hello" -m gpt-4
llm logs cost -1
# Multiple new commands
llm cost-update
llm cost-models
llm logs cost --total --group-by model
```
**Issues:**
- More commands to learn
- Separate workflow
- Extra code to maintain
- Less intuitive
### Revised Plan ✅
```bash
# Integrated with usage
llm "Hello" -m gpt-4 -u
# Shows tokens AND cost together
# Same for logs
llm logs -1 -u
# Shows tokens AND cost together
```
**Benefits:**
- Natural integration
- Users already know -u flag
- Less code
- Better UX
## Architecture Comparison
### Original Plan
```mermaid
graph TD
A[User] -->|llm prompt| B[Response]
A -->|llm logs cost| C[Cost Command]
C -->|query DB| D[(Database)]
C -->|calculate| E[CostEstimator]
E -->|display| A
style C fill:#ffcccc
style D fill:#ffcccc
```
### Revised Plan
```mermaid
graph TD
A[User] -->|llm prompt -u| B[Response]
B -->|token_usage_string| C[Utils]
C -->|calculate cost| D[CostEstimator]
D -->|return| C
C -->|format| E[Display]
E -->|show| A
style C fill:#ccffcc
style D fill:#ccffcc
style E fill:#ccffcc
```
## Code Changes
### Original Plan
| File | Lines Changed | New Commands |
|------|---------------|--------------|
| llm/costs.py | ~300 | - |
| llm/models.py | ~30 | - |
| llm/cli.py | **~200** | **3 new** |
| llm/utils.py | ~0 | - |
| **Total** | **~530** | **3 new** |
### Revised Plan
| File | Lines Changed | New Commands |
|------|---------------|--------------|
| llm/costs.py | ~300 | - |
| llm/models.py | ~30 | - |
| llm/cli.py | **~20** | **0 new** |
| llm/utils.py | **~40** | - |
| **Total** | **~390** | **0 new** |
**26% less code, no new commands!**
## User Experience
### Original Plan
```
User: How much did that cost?
1. Run: llm "prompt" -m gpt-4
2. Remember to check cost
3. Run: llm logs cost -1
4. See the cost
Total: 2 commands
```
### Revised Plan
```
User: How much did that cost?
1. Run: llm "prompt" -m gpt-4 -u
2. See tokens AND cost immediately
Total: 1 command
```
## Feature Comparison
| Feature | Original | Revised | Notes |
|---------|----------|---------|-------|
| Cost calculation | ✅ | ✅ | Core feature |
| Response.cost() API | ✅ | ✅ | Python API |
| Show cost in CLI | ✅ | ✅ | Different approach |
| Historical pricing | ✅ | ✅ | Unchanged |
| Fuzzy model matching | ✅ | ✅ | Unchanged |
| Cached token support | ✅ | ✅ | Unchanged |
| `llm logs cost` | ✅ | ❌ | Use -u instead |
| `llm cost-update` | ✅ | ❌ | Future feature |
| `llm cost-models` | ✅ | ❌ | Future feature |
| Cost aggregation | ✅ | ❌ | Future feature |
| Auto-update cache | ✅ | ❌ | Start simple |
## What You Get With -u Flag
### Before (current behavior)
```bash
$ llm "Hello" -m gpt-4 -u
Hello! How can I help you today?
Token usage: 10 input, 5 output
```
### After (revised plan)
```bash
$ llm "Hello" -m gpt-4 -u
Hello! How can I help you today?
Token usage: 10 input, 5 output, Cost: $0.000450 ($0.000300 input, $0.000150 output)
```
**Exactly what users want to know!**
## Implementation Complexity
### Original Plan
```
Phase 1: Core ████████░░ 80%
Phase 2: Integration ████████░░ 80%
Phase 3: CLI Commands █████████░ 90% ← Complex!
Phase 4: Polish ██████░░░░ 60%
Overall: ████████░░ 80%
```
### Revised Plan
```
Phase 1: Core ████████░░ 80%
Phase 2: Integration ████████░░ 80%
Phase 3: CLI Enhancement ████░░░░░░ 40% ← Simpler!
Phase 4: Polish ██████░░░░ 60%
Overall: ██████░░░░ 65%
```
## Maintenance Burden
### Original Plan
**New commands to maintain:**
- `llm logs cost` - Argument parsing, formatting, filtering
- `llm cost-update` - Network requests, error handling
- `llm cost-models` - Listing, filtering, formatting
**Result:** 3 new command surfaces × ongoing maintenance
### Revised Plan
**Modified existing behavior:**
- `token_usage_string()` - Add optional parameters
- Already tested, already documented
- Small incremental change
**Result:** Minimal maintenance increase
## Testing Effort
### Original Plan
```
Unit tests: ████████░░ 40 tests
CLI tests: ██████████ 15 tests ← 3 new commands
Integration: ████░░░░░░ 8 tests
Total: ~63 tests
```
### Revised Plan
```
Unit tests: ████████░░ 40 tests
CLI tests: ████░░░░░░ 5 tests ← Modify existing
Integration: ████░░░░░░ 8 tests
Total: ~53 tests
```
**16% fewer tests needed!**
## Documentation Impact
### Original Plan
**New pages:**
- CLI reference for 3 new commands
- Usage examples for each command
- Integration guide
**Updates:**
- README with new commands
- CLI reference
- Logging docs
### Revised Plan
**Updates only:**
- Update -u/--usage documentation
- Add cost examples to existing pages
- README with -u example
**No new pages needed!**
## Decision Matrix
| Criteria | Original | Revised | Winner |
|----------|----------|---------|--------|
| Code simplicity | 3/5 | 5/5 | ✅ Revised |
| User experience | 3/5 | 5/5 | ✅ Revised |
| Maintenance | 2/5 | 5/5 | ✅ Revised |
| Features | 5/5 | 4/5 | Original |
| Testing | 3/5 | 5/5 | ✅ Revised |
| Documentation | 3/5 | 5/5 | ✅ Revised |
| **Total** | **19/30** | **29/30** | **🏆 Revised** |
## Summary
### Why Revised Plan Wins
1. **26% less code** - Fewer bugs, easier maintenance
2. **Better UX** - Cost appears when users want it
3. **0 new commands** - Nothing new to learn
4. **16% fewer tests** - Faster to implement
5. **Natural fit** - Enhances existing feature
### What We're NOT Losing
- Core cost calculation ✅
- Python API ✅
- Historical pricing ✅
- Fuzzy matching ✅
- All essential features ✅
### What We're Deferring
- Cost aggregation → Future
- Auto-updates → Future
- Model listing → Future
- Advanced reporting → Future
**All can be added later without breaking changes!**
## Recommendation
**Implement the Revised Plan**
It delivers the core value (cost estimation) with significantly less complexity, better UX, and easier maintenance. Advanced features can be added later based on user feedback.
---
**Winner: Revised Plan** 🎉