Spaces:
Build error
Build error
| import os | |
| import traceback | |
| def get_temperature(): | |
| """ | |
| Récupère la température depuis la variable d'environnement ou utilise une valeur par défaut. | |
| Returns: | |
| La température à utiliser pour les modèles (float entre 0 et 1) | |
| """ | |
| try: | |
| temp_str = os.environ.get("MODEL_TEMPERATURE", "0.2") | |
| temp = float(temp_str) | |
| # Limiter la température entre 0 et 1 | |
| temp = max(0.0, min(1.0, temp)) | |
| return temp | |
| except ValueError: | |
| print(f"AVERTISSEMENT: La valeur MODEL_TEMPERATURE '{temp_str}' n'est pas un nombre valide. Utilisation de la valeur par défaut 0.2.") | |
| return 0.2 | |
| def get_hf_model(): | |
| """ | |
| Initialise et retourne un modèle Hugging Face via un endpoint personnalisé. | |
| Returns: | |
| Le modèle configuré ou None en cas d'erreur | |
| """ | |
| hf_endpoint_url = os.environ.get("HUGGING_FACE_INFERENCE_ENDPOINT_URL") | |
| hf_token = os.environ.get("HUGGING_FACE_HUB_TOKEN") | |
| hf_model_name = os.environ.get("HUGGING_FACE_MODEL_NAME", "google/gemma-3-12b-it") | |
| temperature = get_temperature() | |
| # Vérifier que les variables d'environnement sont définies | |
| if not hf_endpoint_url or not hf_token: | |
| print("ERREUR: HUGGING_FACE_INFERENCE_ENDPOINT_URL ou HUGGING_FACE_HUB_TOKEN non configuré.") | |
| return None | |
| print(f"Utilisation du modèle {hf_model_name} via endpoint personnalisé: {hf_endpoint_url}") | |
| print(f"Température configurée: {temperature}") | |
| try: | |
| # Utiliser OpenAIServerModel qui est plus adapté pour les endpoints d'inférence | |
| from smolagents import OpenAIServerModel | |
| model = OpenAIServerModel( | |
| model_id=hf_model_name, | |
| api_base=hf_endpoint_url, | |
| api_key=hf_token, | |
| temperature=temperature | |
| ) | |
| print("Modèle OpenAIServerModel initialisé avec succès!") | |
| return model | |
| except Exception as e: | |
| error_trace = traceback.format_exc() | |
| print(f"ERREUR lors de l'initialisation de OpenAIServerModel: {e}") | |
| print(f"Traceback complet: {error_trace}") | |
| return None | |
| def get_openai_model(): | |
| """ | |
| Initialise et retourne un modèle OpenAI GPT-4o. | |
| Returns: | |
| Le modèle configuré ou None en cas d'erreur | |
| """ | |
| openai_api_key = os.environ.get("OPENAI_API_KEY") | |
| temperature = get_temperature() | |
| if not openai_api_key: | |
| print("ERREUR: OPENAI_API_KEY non configuré.") | |
| return None | |
| try: | |
| # Configuration pour OpenAI | |
| from smolagents import LiteLLMModel | |
| print("Utilisation du modèle OpenAI GPT-4o") | |
| print(f"Température configurée: {temperature}") | |
| return LiteLLMModel( | |
| "gpt-4o", | |
| temperature=temperature, | |
| api_key=openai_api_key | |
| ) | |
| except Exception as e: | |
| error_trace = traceback.format_exc() | |
| print(f"ERREUR lors de l'initialisation de LiteLLMModel: {e}") | |
| print(f"Traceback complet: {error_trace}") | |
| return None | |
| def get_model(): | |
| """ | |
| Retourne le modèle à utiliser en fonction de MODEL_PROVIDER. | |
| Returns: | |
| Un modèle configuré ou None en cas d'erreur | |
| """ | |
| # Récupérer le modèle à utiliser depuis les variables d'environnement | |
| model_provider = os.environ.get("MODEL_PROVIDER", "openai").lower() | |
| if model_provider == "huggingface": | |
| model = get_hf_model() | |
| if model: | |
| return model | |
| print("Passage à OpenAI suite à l'erreur.") | |
| model_provider = "openai" | |
| if model_provider == "openai": | |
| return get_openai_model() | |
| # Si on arrive ici, c'est que MODEL_PROVIDER n'est ni huggingface ni openai | |
| print(f"ERREUR: MODEL_PROVIDER '{model_provider}' non reconnu. Utiliser 'huggingface' ou 'openai'") | |
| return None |