:::warning Lors de l'utilisation d'un LLM local, OpenHands peut avoir des fonctionnalités limitées. :::
Assurez-vous que le serveur Ollama est opérationnel. Pour des instructions détaillées sur le démarrage, référez-vous à ici.
Ce guide suppose que vous avez démarré ollama avec ollama serve. Si vous exécutez ollama différemment (par exemple, à l'intérieur de docker), les instructions peuvent nécessiter des modifications. Veuillez noter que si vous utilisez WSL, la configuration par défaut d'ollama bloque les requêtes provenant des conteneurs docker. Voir ici.
Les noms des modèles Ollama peuvent être trouvés ici. Pour un petit exemple, vous pouvez utiliser le modèle codellama:7b. Les modèles plus grands auront généralement de meilleures performances.
ollama pull codellama:7b
Vous pouvez vérifier quels modèles vous avez téléchargés comme ceci :
~$ ollama list
NAME ID SIZE MODIFIED
codellama:7b 8fdf8f752f6e 3.8 GB 6 weeks ago
mistral:7b-instruct-v0.2-q4_K_M eb14864c7427 4.4 GB 2 weeks ago
starcoder2:latest f67ae0f64584 1.7 GB 19 hours ago
Utilisez les instructions ici pour démarrer OpenHands en utilisant Docker.
Mais lorsque vous exécutez docker run, vous devrez ajouter quelques arguments supplémentaires :
--add-host host.docker.internal:host-gateway \
-e LLM_OLLAMA_BASE_URL="http://host.docker.internal:11434" \
LLM_OLLAMA_BASE_URL est facultatif. Si vous le définissez, il sera utilisé pour afficher les modèles installés disponibles dans l'interface utilisateur.
Exemple :
# Le répertoire que vous voulez qu'OpenHands modifie. DOIT être un chemin absolu !
export WORKSPACE_BASE=$(pwd)/workspace
docker run \
-it \
--pull=always \
--add-host host.docker.internal:host-gateway \
-e SANDBOX_USER_ID=$(id -u) \
-e LLM_OLLAMA_BASE_URL="http://host.docker.internal:11434" \
-e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
-v $WORKSPACE_BASE:/opt/workspace_base \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 3000:3000 \
ghcr.io/all-hands-ai/openhands:main
Vous devriez maintenant pouvoir vous connecter à http://localhost:3000/
Lors de l'exécution d'openhands, vous devrez définir les éléments suivants dans l'interface utilisateur d'OpenHands via les paramètres :
http://host.docker.internal:11434ollama.Utilisez les instructions dans Development.md pour construire OpenHands.
Assurez-vous que config.toml est présent en exécutant make setup-config qui en créera un pour vous. Dans config.toml, entrez ce qui suit :
[core]
workspace_base="./workspace"
[llm]
embedding_model="local"
ollama_base_url="http://localhost:11434"
Terminé ! Vous pouvez maintenant démarrer OpenHands avec : make run. Vous devriez maintenant pouvoir vous connecter à http://localhost:3000/
Dans l'interface utilisateur d'OpenHands, cliquez sur la roue des paramètres dans le coin inférieur gauche.
Ensuite, dans le champ Model, entrez ollama/codellama:7b, ou le nom du modèle que vous avez récupéré précédemment.
S'il n'apparaît pas dans le menu déroulant, activez Advanced Settings et tapez-le. Veuillez noter : vous avez besoin du nom du modèle tel qu'il est listé par ollama list, avec le préfixe ollama/.
Dans le champ API Key, entrez ollama ou n'importe quelle valeur, puisque vous n'avez pas besoin d'une clé particulière.
Dans le champ Base URL, entrez http://localhost:11434.
Et maintenant vous êtes prêt à démarrer !
La configuration par défaut pour ollama dans WSL ne sert que localhost. Cela signifie que vous ne pouvez pas y accéder depuis un conteneur docker. Par ex. cela ne fonctionnera pas avec OpenHands. Testons d'abord qu'ollama fonctionne correctement.
ollama list # obtenir la liste des modèles installés
curl http://localhost:11434/api/generate -d '{"model":"[NOM]","prompt":"hi"}'
#ex. curl http://localhost:11434/api/generate -d '{"model":"codellama:7b","prompt":"hi"}'
#ex. curl http://localhost:11434/api/generate -d '{"model":"codellama","prompt":"hi"}' #le tag est facultatif s'il n'y en a qu'un seul
Une fois cela fait, testez qu'il autorise les requêtes "extérieures", comme celles provenant d'un conteneur docker.
docker ps # obtenir la liste des conteneurs docker en cours d'exécution, pour un test plus précis, choisissez le conteneur sandbox OpenHands.
docker exec [ID CONTENEUR] curl http://host.docker.internal:11434/api/generate -d '{"model":"[NOM]","prompt":"hi"}'
#ex. docker exec cd9cc82f7a11 curl http://host.docker.internal:11434/api/generate -d '{"model":"codellama","prompt":"hi"}'
Maintenant, faisons en sorte que cela fonctionne. Modifiez /etc/systemd/system/ollama.service avec des privilèges sudo. (Le chemin peut varier selon la distribution Linux)
sudo vi /etc/systemd/system/ollama.service
ou
sudo nano /etc/systemd/system/ollama.service
Dans le crochet [Service], ajoutez ces lignes
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=*"
Ensuite, enregistrez, rechargez la configuration et redémarrez le service.
sudo systemctl daemon-reload
sudo systemctl restart ollama
Enfin, testez qu'ollama est accessible depuis le conteneur
ollama list # obtenir la liste des modèles installés
docker ps # obtenir la liste des conteneurs docker en cours d'exécution, pour un test plus précis, choisissez le conteneur sandbox OpenHands.
docker exec [ID CONTENEUR] curl http://host.docker.internal:11434/api/generate -d '{"model":"[NOM]","prompt":"hi"}'
Étapes pour configurer LM Studio :
Définissez les configurations suivantes :
LLM_MODEL="openai/lmstudio"
LLM_BASE_URL="http://localhost:1234/v1"
CUSTOM_LLM_PROVIDER="openai"
docker run \
-it \
--pull=always \
-e SANDBOX_USER_ID=$(id -u) \
-e LLM_MODEL="openai/lmstudio" \
-e LLM_BASE_URL="http://host.docker.internal:1234/v1" \
-e CUSTOM_LLM_PROVIDER="openai" \
-e WORKSPACE_MOUNT_PATH=$WORKSPACE_BASE \
-v $WORKSPACE_BASE:/opt/workspace_base \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 3000:3000 \
ghcr.io/all-hands-ai/openhands:main
Vous devriez maintenant pouvoir vous connecter à http://localhost:3000/
Dans l'environnement de développement, vous pouvez définir les configurations suivantes dans le fichier config.toml :
[core]
workspace_base="./workspace"
[llm]
model="openai/lmstudio"
base_url="http://localhost:1234/v1"
custom_llm_provider="openai"
Terminé ! Vous pouvez maintenant démarrer OpenHands avec : make run sans Docker. Vous devriez maintenant pouvoir vous connecter à http://localhost:3000/
Pour WSL, exécutez les commandes suivantes dans cmd pour configurer le mode réseau en mode miroir :
python -c "print('[wsl2]\nnetworkingMode=mirrored',file=open(r'%UserProfile%\.wslconfig','w'))"
wsl --shutdown