mirror of
https://github.com/R0m1k3/Priceflow.git
synced 2026-10-13 18:26:20 +02:00
Modifications majeures: 1. Rebranding: Pricecious → PriceFlow - Mise à jour du titre, logo et noms de projet 2. Intégration OpenRouter - Ajout comme provider IA avec filtres (chat, vision, code, reasoning, free) - Récupération dynamique des modèles et coûts - Service et router dédiés (/api/openrouter/models) 3. Internationalisation (i18n) - Installation i18next + react-i18next - Application entièrement traduite en français - Fichier de traduction: fr.json 4. Configuration Docker - docker-compose.yml avec réseau nginx_default (external) - PostgreSQL sur port 5488:5432 - Browserless sur port 3012:3000 - init.sql pour initialisation de la base de données - .env.example avec variables documentées 5. Favicon - Documentation ajoutée dans index.html pour faciliter le remplacement
58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
"""
|
|
Router pour les endpoints OpenRouter.
|
|
Permet de récupérer la liste des modèles et leurs coûts.
|
|
"""
|
|
|
|
from fastapi import APIRouter, Query
|
|
|
|
from app.services.openrouter_service import OpenRouterService
|
|
|
|
router = APIRouter(prefix="/openrouter", tags=["openrouter"])
|
|
|
|
|
|
@router.get("/models")
|
|
def get_openrouter_models(
|
|
api_key: str | None = Query(None, description="Clé API OpenRouter (optionnelle)"),
|
|
category: str | None = Query(None, description="Filtrer par catégorie: chat, vision, code, reasoning, free")
|
|
):
|
|
"""
|
|
Récupère la liste des modèles OpenRouter disponibles.
|
|
|
|
- **api_key**: Clé API OpenRouter (optionnelle pour la liste publique)
|
|
- **category**: Filtrer par catégorie (chat, vision, code, reasoning, free)
|
|
|
|
Retourne la liste des modèles avec:
|
|
- id: Identifiant du modèle
|
|
- name: Nom affiché
|
|
- description: Description du modèle
|
|
- context_length: Longueur de contexte maximale
|
|
- pricing: Coûts (prompt et completion par token)
|
|
- categories: Liste des catégories du modèle
|
|
"""
|
|
if category:
|
|
models = OpenRouterService.get_models_by_category(api_key, category)
|
|
else:
|
|
models = OpenRouterService.get_models(api_key)
|
|
|
|
return {
|
|
"models": models,
|
|
"total": len(models),
|
|
"categories": ["chat", "vision", "code", "reasoning", "free"]
|
|
}
|
|
|
|
|
|
@router.get("/categories")
|
|
def get_categories():
|
|
"""
|
|
Retourne la liste des catégories disponibles pour filtrer les modèles.
|
|
"""
|
|
return {
|
|
"categories": [
|
|
{"id": "chat", "name": "Chat", "description": "Modèles de conversation générale"},
|
|
{"id": "vision", "name": "Vision", "description": "Modèles avec capacités d'analyse d'images"},
|
|
{"id": "code", "name": "Code", "description": "Modèles spécialisés en programmation"},
|
|
{"id": "reasoning", "name": "Raisonnement", "description": "Modèles avec capacités de raisonnement avancé"},
|
|
{"id": "free", "name": "Gratuit", "description": "Modèles gratuits"}
|
|
]
|
|
}
|