Pular para o conteúdo principal

🤖 Backends de LLM

nota

Esta seção é para usuários que desejam conectar o OpenHands a diferentes LLMs.

O OpenHands pode se conectar a qualquer LLM suportado pelo LiteLLM. No entanto, requer um modelo poderoso para funcionar.

Recomendações de Modelos

Com base em nossas avaliações de modelos de linguagem para tarefas de codificação (usando o conjunto de dados SWE-bench), podemos fornecer algumas recomendações para seleção de modelos. Nossos resultados de benchmarking mais recentes podem ser encontrados nesta planilha.

Com base nessas descobertas e feedback da comunidade, os seguintes modelos foram verificados e funcionam razoavelmente bem com o OpenHands:

atenção

O OpenHands enviará muitos prompts ao LLM que você configurar. A maioria desses LLMs custa dinheiro, então certifique-se de definir limites de gastos e monitorar o uso.

Se você executou com sucesso o OpenHands com LLMs específicos que não estão na lista, adicione-os à lista verificada. Também incentivamos que você abra um PR para compartilhar seu processo de configuração e ajudar outros que usam o mesmo provedor e LLM!

Para uma lista completa dos provedores e modelos disponíveis, consulte a documentação do litellm.

nota

A maioria dos modelos locais e de código aberto atuais não são tão poderosos. Ao usar esses modelos, você pode observar longos tempos de espera entre mensagens, respostas ruins ou erros sobre JSON malformado. O OpenHands só pode ser tão poderoso quanto os modelos que o impulsionam. No entanto, se você encontrar modelos que funcionem, adicione-os à lista verificada acima.

Configuração de LLM

O seguinte pode ser configurado na interface do OpenHands através das Configurações:

  • Provedor LLM
  • Modelo LLM
  • Chave API
  • URL Base (através das configurações Avançadas)

Existem algumas configurações que podem ser necessárias para alguns LLMs/provedores que não podem ser definidas através da interface. Em vez disso, estas podem ser definidas através de variáveis de ambiente passadas para o comando docker run ao iniciar o aplicativo usando -e:

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

Temos alguns guias para executar o OpenHands com provedores de modelos específicos:

Novas tentativas de API e limites de taxa

Provedores de LLM geralmente têm limites de taxa, às vezes muito baixos, e podem exigir novas tentativas. O OpenHands automaticamente tentará novamente as solicitações se receber um Erro de Limite de Taxa (código de erro 429).

Você pode personalizar essas opções conforme necessário para o provedor que está usando. Verifique a documentação deles e defina as seguintes variáveis de ambiente para controlar o número de tentativas e o tempo entre elas:

  • LLM_NUM_RETRIES (Padrão de 4 vezes)
  • LLM_RETRY_MIN_WAIT (Padrão de 5 segundos)
  • LLM_RETRY_MAX_WAIT (Padrão de 30 segundos)
  • LLM_RETRY_MULTIPLIER (Padrão de 2)

Se você estiver executando o OpenHands no modo de desenvolvimento, também pode definir essas opções no arquivo config.toml:

[llm]
num_retries = 4
retry_min_wait = 5
retry_max_wait = 30
retry_multiplier = 2