Spaces:
Build error
Build error
| --- | |
| title: Overview | |
| description: OpenHands can connect to any LLM supported by LiteLLM. However, it requires a powerful model to work. | |
| --- | |
| <Note> | |
| This section is for users who want to connect OpenHands to different LLMs. | |
| </Note> | |
| ## Model Recommendations | |
| Based on our evaluations of language models for coding tasks (using the SWE-bench dataset), we can provide some | |
| recommendations for model selection. Our latest benchmarking results can be found in [this spreadsheet](https://docs.google.com/spreadsheets/d/1wOUdFCMyY6Nt0AIqF705KN4JKOWgeI4wUGUP60krXXs/edit?gid=0). | |
| Based on these findings and community feedback, these are the latest models that have been verified to work reasonably well with OpenHands: | |
| - [anthropic/claude-sonnet-4-20250514](https://www.anthropic.com/api) (recommended) | |
| - [openai/o4-mini](https://openai.com/index/introducing-o3-and-o4-mini/) | |
| - [gemini/gemini-2.5-pro](https://blog.google/technology/google-deepmind/gemini-model-thinking-updates-march-2025/) | |
| - [deepseek/deepseek-chat](https://api-docs.deepseek.com/) | |
| - [all-hands/openhands-lm-32b-v0.1](https://www.all-hands.dev/blog/introducing-openhands-lm-32b----a-strong-open-coding-agent-model) -- available through [OpenRouter](https://openrouter.ai/all-hands/openhands-lm-32b-v0.1) | |
| <Warning> | |
| OpenHands will issue many prompts to the LLM you configure. Most of these LLMs cost money, so be sure to set spending | |
| limits and monitor usage. | |
| </Warning> | |
| If you have successfully run OpenHands with specific providers, we encourage you to open a PR to share your setup process | |
| to help others using the same provider! | |
| For a full list of the providers and models available, please consult the | |
| [litellm documentation](https://docs.litellm.ai/docs/providers). | |
| <Note> | |
| Most current local and open source models are not as powerful. When using such models, you may see long | |
| wait times between messages, poor responses, or errors about malformed JSON. OpenHands can only be as powerful as the | |
| models driving it. However, if you do find ones that work, please add them to the verified list above. | |
| </Note> | |
| ## LLM Configuration | |
| The following can be set in the OpenHands UI through the Settings: | |
| - `LLM Provider` | |
| - `LLM Model` | |
| - `API Key` | |
| - `Base URL` (through `Advanced` settings) | |
| There are some settings that may be necessary for some LLMs/providers that cannot be set through the UI. Instead, these | |
| can be set through environment variables passed to the docker run command when starting the app | |
| using `-e`: | |
| - `LLM_API_VERSION` | |
| - `LLM_EMBEDDING_MODEL` | |
| - `LLM_EMBEDDING_DEPLOYMENT_NAME` | |
| - `LLM_DROP_PARAMS` | |
| - `LLM_DISABLE_VISION` | |
| - `LLM_CACHING_PROMPT` | |
| We have a few guides for running OpenHands with specific model providers: | |
| - [Azure](/usage/llms/azure-llms) | |
| - [Google](/usage/llms/google-llms) | |
| - [Groq](/usage/llms/groq) | |
| - [Local LLMs with SGLang or vLLM](/usage/llms/local-llms) | |
| - [LiteLLM Proxy](/usage/llms/litellm-proxy) | |
| - [OpenAI](/usage/llms/openai-llms) | |
| - [OpenRouter](/usage/llms/openrouter) | |
| ### API retries and rate limits | |
| LLM providers typically have rate limits, sometimes very low, and may require retries. OpenHands will automatically | |
| retry requests if it receives a Rate Limit Error (429 error code). | |
| You can customize these options as you need for the provider you're using. Check their documentation, and set the | |
| following environment variables to control the number of retries and the time between retries: | |
| - `LLM_NUM_RETRIES` (Default of 4 times) | |
| - `LLM_RETRY_MIN_WAIT` (Default of 5 seconds) | |
| - `LLM_RETRY_MAX_WAIT` (Default of 30 seconds) | |
| - `LLM_RETRY_MULTIPLIER` (Default of 2) | |
| If you are running OpenHands in development mode, you can also set these options in the `config.toml` file: | |
| ```toml | |
| [llm] | |
| num_retries = 4 | |
| retry_min_wait = 5 | |
| retry_max_wait = 30 | |
| retry_multiplier = 2 | |
| ``` | |