Aller directement au contenu principal

🤖 Backends LLM

OpenHands peut se connecter à n'importe quel LLM pris en charge par LiteLLM. Cependant, il nécessite un modèle puissant pour fonctionner.

Recommandations de modèles​

Sur la base d'une évaluation récente des modèles de langage pour les tâches de codage (en utilisant le jeu de données SWE-bench), nous pouvons fournir quelques recommandations pour la sélection des modèles. L'analyse complète se trouve dans cet article de blog.

Lors du choix d'un modèle, tenez compte à la fois de la qualité des sorties et des coûts associés. Voici un résumé des résultats :

  • Claude 3.5 Sonnet est le meilleur d'une bonne marge, atteignant un taux de rĂ©solution de 27% avec l'agent par dĂ©faut dans OpenHands.
  • GPT-4o est Ă  la traĂ®ne, et o1-mini a en fait obtenu des rĂ©sultats lĂ©gèrement infĂ©rieurs Ă  ceux de GPT-4o. Nous avons analysĂ© les rĂ©sultats un peu, et brièvement, il semblait que o1 "rĂ©flĂ©chissait trop" parfois, effectuant des tâches de configuration d'environnement supplĂ©mentaires alors qu'il aurait pu simplement aller de l'avant et terminer la tâche.
  • Enfin, les modèles ouverts les plus puissants Ă©taient Llama 3.1 405 B et deepseek-v2.5, et ils ont obtenu des rĂ©sultats raisonnables, surpassant mĂŞme certains des modèles fermĂ©s.

Veuillez vous référer à l'article complet pour plus de détails.

Sur la base de ces résultats et des commentaires de la communauté, il a été vérifié que les modèles suivants fonctionnent raisonnablement bien avec OpenHands :

  • claude-3-5-sonnet (recommandĂ©)
  • gpt-4 / gpt-4o
  • llama-3.1-405b
  • deepseek-v2.5
prudence

OpenHands enverra de nombreuses invites au LLM que vous configurez. La plupart de ces LLM sont payants, alors assurez-vous de définir des limites de dépenses et de surveiller l'utilisation.

Si vous avez réussi à exécuter OpenHands avec des LLM spécifiques qui ne figurent pas dans la liste, veuillez les ajouter à la liste vérifiée. Nous vous encourageons également à ouvrir une PR pour partager votre processus de configuration afin d'aider les autres utilisant le même fournisseur et LLM !

Pour une liste complète des fournisseurs et des modèles disponibles, veuillez consulter la documentation litellm.

remarque

La plupart des modèles locaux et open source actuels ne sont pas aussi puissants. Lorsque vous utilisez de tels modèles, vous pouvez constater de longs temps d'attente entre les messages, des réponses médiocres ou des erreurs concernant du JSON malformé. OpenHands ne peut être aussi puissant que les modèles qui le pilotent. Cependant, si vous en trouvez qui fonctionnent, veuillez les ajouter à la liste vérifiée ci-dessus.

Configuration LLM​

Les éléments suivants peuvent être définis dans l'interface utilisateur d'OpenHands via les paramètres :

  • Fournisseur LLM
  • Modèle LLM
  • ClĂ© API
  • URL de base (via Paramètres avancĂ©s)

Certains paramètres peuvent être nécessaires pour certains LLM/fournisseurs qui ne peuvent pas être définis via l'interface utilisateur. Au lieu de cela, ceux-ci peuvent être définis via des variables d'environnement passées à la commande docker run en utilisant -e :

  • LLM_API_VERSION
  • LLM_EMBEDDING_MODEL
  • LLM_EMBEDDING_DEPLOYMENT_NAME
  • LLM_DROP_PARAMS
  • LLM_DISABLE_VISION
  • LLM_CACHING_PROMPT

Nous avons quelques guides pour exécuter OpenHands avec des fournisseurs de modèles spécifiques :

Nouvelles tentatives d'API et limites de débit​

Les fournisseurs de LLM ont généralement des limites de débit, parfois très basses, et peuvent nécessiter de nouvelles tentatives. OpenHands réessaiera automatiquement les requêtes s'il reçoit une erreur de limite de débit (code d'erreur 429), une erreur de connexion API ou d'autres erreurs transitoires.

Vous pouvez personnaliser ces options selon vos besoins pour le fournisseur que vous utilisez. Consultez leur documentation et définissez les variables d'environnement suivantes pour contrôler le nombre de nouvelles tentatives et le temps entre les tentatives :

  • LLM_NUM_RETRIES (Par dĂ©faut 8)
  • LLM_RETRY_MIN_WAIT (Par dĂ©faut 15 secondes)
  • LLM_RETRY_MAX_WAIT (Par dĂ©faut 120 secondes)
  • LLM_RETRY_MULTIPLIER (Par dĂ©faut 2)

Si vous exécutez OpenHands en mode développement, vous pouvez également définir ces options dans le fichier config.toml :

[llm]
num_retries = 8
retry_min_wait = 15
retry_max_wait = 120
retry_multiplier = 2