Ajout de retry et de délai dans le LLM#7
Conversation
| continue # Réessaye | ||
|
|
||
| else: | ||
| raise Exception( |
|
|
||
| return content # Succès | ||
|
|
||
| except Exception as e: |
There was a problem hiding this comment.
Récupérer le type exacte de l'exception (surement quelque chose comme openai.Exception)
Tu peux faire print(repr(e)), print(e.class)
| ): | ||
| if attempt < max_retries - 1: | ||
| wait_time = retry_delay * (attempt + 1) | ||
| print(f"Erreur 429 détectée, retry dans {wait_time:.1f}s (tentative {attempt+1}/{max_retries})") |
There was a problem hiding this comment.
Remplacer par un logger.warning.
| from app.ai_models.config_albert import API_KEY_ALBERT, BASE_URL_PROD | ||
|
|
||
|
|
||
| def test_rate_limiting(): |
There was a problem hiding this comment.
Mettre dans le le dossier docia/tests/data/
| f"Erreur de rate limiting per minute détectée dans la réponse malgré {max_retries} tentatives : {str(e)[:200]}" | ||
| ) | ||
|
|
||
| raise Exception(f"Erreur lors de l'appel au LLM : {str(e)}") |
| """ | ||
| Script pour tester le rate limiting de l'API LLM en effectuant | ||
| plus de 100 appels par minute. | ||
| """ |
There was a problem hiding this comment.
Ne pas faire un vrai appel d'api. Utiliser mock.patch pour patcher self.client.chat.completions.create et raise l'exception du rate limit.
Penser aussi à patch time.sleep pour éviter de sleep pendant le test.
Tu peux récupérer le nombre d'appels sur le mock pour savoir si ça a été appelé plusieurs fois. Tu peux aussi récupérer l'output des loggers et voir si il y a le texte du retry (https://docs.pytest.org/en/stable/how-to/capture-stdout-stderr.html#accessing-captured-output-from-a-test-function)
| ) | ||
|
|
||
| # Histoire de contexte (environ 5000 caractères) | ||
| contexte_histoire = """ |
There was a problem hiding this comment.
J'ai l'impression que c'est toujours vide ? C'est encore utilisé ?
|
Réintégrée dans #11 |
Contournement simple de la limitation à 100 requête par minute par l'API Albert. Modificaiton de la fonction ask_llm dans processor analyze content. Je n'ai pas modifié d'autres fonctions, car celle-ci est la fonction coeur. Elle ne levait pas d'exception, elle en lève désormais. Les exceptions sont rattrappées ensuite dans la fonction df_analyze_content.
J'ai ajouté un fichier test qui permet de tester la fonction ask_llm avec un peu plus de 100 appels à Albert large