Comparer différents modèles et mesurer l’impact sur les coûts et la qualité.
Lancer OpenCode avec verbeux :
opencode --verbose 2>&1 | tee session.log
Travailler sur une tâche :
> Add pagination to the GET /users endpoint
Analyser les logs :
# Extraire les tokens consommés
grep -i "token" session.log
grep -i "cost" session.log
Noter :
Configurer 3 modèles :
# ~/.config/opencode/config.yaml
models:
frugal:
model: google/gemini-2.0-flash
balanced:
model: anthropic/claude-3.5-haiku
premium:
model: anthropic/claude-3.5-sonnet
Même tâche, 3 modèles :
Tâche: "Add input validation to the POST /users endpoint"
Model A (Gemini Flash): ?? tokens, $0.???, qualité ?
Model B (Claude Haiku): ?? tokens, $0.???, qualité ?
Model C (Claude Sonnet): ?? tokens, $0.???, qualité ?
Grille d’évaluation qualité/prix :
| Critère | Modèle A (Flash) | Modèle B (Haiku) | Modèle C (Sonnet) |
|---|---|---|---|
| Vitesse (1-5) | |||
| Pertinence (1-5) | |||
| Précision (1-5) | |||
| Suggestions utiles (1-5) | |||
| Tokens consommés | |||
| Coût estimé | |||
| Score qualité (moyenne) |
Formula du score qualité :
Score = (Pertinence + Précision + Suggestions) / 3
Critères de qualité détaillés :
Mesurer le même prompt compressé :
# Prompt long (~500 tokens)
Contexte: Ce projet est une API REST dévelopée avec FastAPI...
Objectif: Ajouter une validation des entrées pour le endpoint...
Contraintes: Respecter les conventions définies dans AGENTS.md...
[etc.]
# Prompt compressé (~100 tokens)
Project: FastAPI REST API
Task: Add input validation to POST /users
Check: AGENTS.md for conventions
Require: email format, password strength, no duplicates
Comparer les tokens et la qualité du résultat.
Scénario A : Tout premium
Tâches/jour: 20
Tokens/tâche: 5000 input + 2000 output
Coût/tâche: $0.015 (Sonnet)
Coût/jour: $0.30
Coût/mois: $9
Scénario B : Frugal first
Tâches/jour: 20
Tokens/tâche: 5000 input + 2000 output
Coût/tâche: $0.0005 (Gemini Flash)
Coût/jour: $0.01
Coût/mois: $0.30
Plus 5 tâches critiques en Sonnet: $0.75/jour
Total/mois: $22.50
Économie : 75%
Configuration OpenCode avec routing :
# ~/.config/opencode/config.yaml
default_model: google/gemini-2.0-flash
routing:
complex_tasks:
- "refactor"
- "architecture"
- "security"
model: anthropic/claude-3.5-sonnet
simple_tasks:
- "fix typo"
- "add comment"
- "format"
model: google/gemini-2.0-flash
Identifier les patterns répétitifs :
# Mêmes prompts, réponses similaires
"Quelle est la structure de ce projet ?"
"Explique ce fichier"
"Ajoute des tests pour cette fonction"
Mettre en cache les réponses :
# OpenCode supporte le caching des conversations
# Les réponses identiques sont servies depuis le cache
À la fin de ce TP :
Question clé : À quel moment vaut-il la peine de payer premium ?
Pattern retenu : Frugal first, premium pour les décisions critiques.
Module 6 : Multimodal - screenshots, images, et au-delà.