File size: 2,349 Bytes
970eef1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import time
import signal
from huggingface_hub import InferenceClient

# Configuration - Modèles et leurs providers
MODELS = [
    ("Qwen/Qwen2.5-72B-Instruct", "sambanova"),
    ("meta-llama/Llama-3.3-70B-Instruct", "sambanova"),
    ("deepseek-ai/DeepSeek-R1-Distill-Llama-70B", "sambanova"),
    ("Qwen/QwQ-32B", "novita"),
    # ("mistralai/Mistral-Small-24B-Instruct-2501", "novita")
]
QUESTION = "What is the capital of France?"
TIMEOUT = 10  # secondes


class TimeoutException(Exception):
    pass


def timeout_handler(signum, frame):
    raise TimeoutException("Timeout")


def test_model(model, provider):
    client = InferenceClient(provider=provider)
    
    # Configure le timeout
    signal.signal(signal.SIGALRM, timeout_handler)
    signal.alarm(TIMEOUT)
    
    start_time = time.time()
    try:
        response = client.chat_completion(
            model=model,
            messages=[{"role": "user", "content": QUESTION}]
        )
        result = response.choices[0].message.content
        success = True
    except TimeoutException:
        result = f"TIMEOUT ({TIMEOUT}s)"
        success = False
    except Exception as e:
        result = str(e)
        success = False
    finally:
        # Désactive l'alarme
        signal.alarm(0)
    
    execution_time = time.time() - start_time
    
    status = "✅" if success else "❌"
    print(f"{status} {model} ({provider}) - Temps: {execution_time:.2f}s")
    if success:
        print(f"  Réponse: {result[:80]}..." if len(result) > 80 else f"  Réponse: {result}")
    else:
        print(f"  Erreur: {result}")
    
    return success, execution_time, result


def main():
    print(f"\nTest de {len(MODELS)} modèles avec leurs providers spécifiques")
    print(f"Question: {QUESTION}")
    print(f"Timeout: {TIMEOUT}s\n")
    
    results = []
    for model, provider in MODELS:
        success, time_taken, response = test_model(model, provider)
        results.append({
            "model": model,
            "provider": provider,
            "success": success,
            "time": time_taken
        })
    
    print("\n=== RÉSUMÉ ===")
    for result in results:
        status = "✅" if result["success"] else "❌"
        print(f"{status} {result['model']} ({result['provider']}): {result['time']:.2f}s")


if __name__ == "__main__":
    main()