#!/usr/bin/env python3
"""
Script de vérification du mode thinking d'Ollama
Vérifie que le thinking mode est bien désactivé pour optimiser les performances.
"""
import asyncio
import aiohttp
import requests
import time
async def test_thinking_mode_disabled():
"""Test que le thinking mode est désactivé."""
print("🔍 Vérification du mode thinking...")
endpoint = "http://localhost:11434"
# Vérifier que Ollama est disponible
try:
response = requests.get(f"{endpoint}/api/tags", timeout=5)
if response.status_code != 200:
print("❌ Ollama non disponible")
return False
except Exception as e:
print(f"❌ Ollama non disponible: {e}")
return False
print("✅ Ollama disponible")
# Test avec /nothink (méthode officielle Qwen3)
payload = {
"model": "qwen3-vl:8b",
"prompt": "/nothink What is 2+2? Answer with just the number.",
"stream": False,
"options": {
"temperature": 0.0,
"num_predict": 50
}
}
print(f"📤 Envoi requête avec /nothink...")
start_time = time.time()
try:
response = requests.post(
f"{endpoint}/api/generate",
json=payload,
timeout=30
)
elapsed = time.time() - start_time
if response.status_code == 200:
data = response.json()
response_text = data.get("response", "")
# Vérifier qu'il n'y a pas de balises de thinking
thinking_indicators = [
"",
"",
"",
"",
"Let me think",
"I need to think"
]
has_thinking = any(indicator.lower() in response_text.lower()
for indicator in thinking_indicators)
if has_thinking:
print(f"⚠️ Thinking mode détecté dans la réponse!")
print(f" Réponse: {response_text[:200]}...")
return False
else:
print(f"✅ Thinking mode désactivé")
print(f" Réponse: '{response_text.strip()}'")
print(f" Temps: {elapsed:.2f}s")
print(f" Tokens: {data.get('eval_count', 0)}")
return True
else:
print(f"❌ Erreur HTTP: {response.status_code}")
return False
except Exception as e:
print(f"❌ Erreur: {e}")
return False
def test_ollama_manager_options():
"""Vérifier que OllamaManager utilise les bonnes options."""
print("\n⚙️ Vérification des options dans OllamaManager...")
try:
from core.gpu.ollama_manager import OllamaManager
# Lire le code source pour vérifier les options
import inspect
source = inspect.getsource(OllamaManager.load_model)
if '/nothink' in source or 'nothink' in source:
print("✅ OllamaManager.load_model() utilise /nothink")
else:
print("⚠️ OllamaManager.load_model() n'utilise pas /nothink")
return False
return True
except Exception as e:
print(f"❌ Erreur: {e}")
return False
def test_ollama_client_options():
"""Vérifier que OllamaClient utilise les bonnes options."""
print("\n⚙️ Vérification des options dans OllamaClient...")
try:
from core.detection.ollama_client import OllamaClient
# Lire le code source pour vérifier les options
import inspect
source = inspect.getsource(OllamaClient.generate)
if '/nothink' in source or 'nothink' in source:
print("✅ OllamaClient.generate() utilise /nothink")
return True
else:
print("⚠️ OllamaClient.generate() n'utilise pas /nothink")
return False
except Exception as e:
print(f"❌ Erreur: {e}")
return False
def main():
"""Test principal."""
print("🚀 Test de désactivation du thinking mode Ollama\n")
results = []
# Test 1: Vérifier les options dans le code
results.append(("OllamaManager options", test_ollama_manager_options()))
results.append(("OllamaClient options", test_ollama_client_options()))
# Test 2: Vérifier thinking mode en pratique
thinking_ok = asyncio.run(test_thinking_mode_disabled())
results.append(("Thinking mode désactivé", thinking_ok))
print("\n📊 Résultats:")
all_ok = True
for name, ok in results:
status = "✅" if ok else "❌"
print(f" {status} {name}")
if not ok:
all_ok = False
if all_ok:
print("\n🎉 Tous les tests passent - Ollama optimisé !")
else:
print("\n⚠️ Certains tests ont échoué")
return all_ok
if __name__ == "__main__":
success = main()
exit(0 if success else 1)