Aller directement au contenu principal

LLM Local avec Ollama

Assurez-vous que le serveur Ollama est en cours d'exécution. Pour des instructions détaillées de démarrage, consultez 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 pourraient devoir être modifiées. Veuillez noter que si vous utilisez WSL, la configuration par défaut de ollama bloque les requêtes des conteneurs docker. Voir ici.

Télécharger des modèles

Les noms des modèles Ollama peuvent être trouvés ici. Pour un petit exemple, vous pouvez utiliser le modèle codellama:7b. Des modèles plus grands offriront généralement de meilleures performances.

ollama pull codellama:7b

vous pouvez vérifier quels modèles vous avez téléchargés de cette manière :

~$ 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

Démarrer OpenDevin

Docker

Utilisez les instructions ici pour démarrer OpenDevin en utilisant Docker. Mais lors de l'exécution de docker run, vous devrez ajouter quelques arguments supplémentaires :

--add-host host.docker.internal:host-gateway \
-e LLM_API_KEY="ollama" \
-e LLM_BASE_URL="http://host.docker.internal:11434" \

Par exemple :

# Le répertoire que vous souhaitez qu'OpenDevin 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_API_KEY="ollama" \
-e LLM_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/opendevin/opendevin:main

Vous devriez maintenant pouvoir vous connecter à http://localhost:3000/

Compiler à partir des sources

Utilisez les instructions dans Development.md pour compiler OpenDevin. Assurez-vous que config.toml soit présent en exécutant make setup-config qui en créera un pour vous. Dans config.toml, saisissez les éléments suivants :

LLM_MODEL="ollama/codellama:7b"
LLM_API_KEY="ollama"
LLM_EMBEDDING_MODEL="local"
LLM_BASE_URL="http://localhost:11434"
WORKSPACE_BASE="./workspace"
WORKSPACE_DIR="$(pwd)/workspace"

Remplacez LLM_MODEL par celui de votre choix si nécessaire.

Fini ! Vous pouvez maintenant démarrer Devin avec : make run sans Docker. Vous devriez maintenant pouvoir vous connecter à http://localhost:3000/

Sélection de votre modèle

Dans l'interface OpenDevin, cliquez sur l'icône des paramètres en bas à gauche. Ensuite, dans l'entrée Model, saisissez ollama/codellama:7b, ou le nom du modèle que vous avez téléchargé précédemment. S'il n'apparaît pas dans un menu déroulant, ce n'est pas grave, tapez-le simplement. Cliquez sur Enregistrer lorsque vous avez terminé.

Et maintenant, vous êtes prêt à démarrer !

Configuration du service ollama (WSL)

La configuration par défaut pour ollama sous WSL ne sert que localhost. Cela signifie que vous ne pouvez pas l'atteindre depuis un conteneur docker, par exemple, il ne fonctionnera pas avec OpenDevin. Testons d'abord que ollama est en cours d'exécution correctement.

ollama list # obtenir la liste des modèles installés
curl http://localhost:11434/api/generate -d '{"model":"[NAME]","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 optionnel s'il n'y en a qu'un seul

Une fois cela fait, testez qu'il accepte les requêtes "externes", comme celles provenant d'un conteneur docker.

docker ps # obtenir la liste des conteneurs docker en cours d'exécution, pour un test le plus précis choisissez le conteneur de sandbox open devin.
docker exec [CONTAINER ID] curl http://host.docker.internal:11434/api/generate -d '{"model":"[NAME]","prompt":"hi"}'
#ex. docker exec cd9cc82f7a11 curl http://host.docker.internal:11434/api/generate -d '{"model":"codellama","prompt":"hi"}'

Correction

Maintenant faisons en sorte que cela fonctionne. Modifiez /etc/systemd/system/ollama.service avec les 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 la section [Service], ajoutez ces lignes

Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=*"

Ensuite, sauvegardez, rechargez la configuration et redémarrez le service.

sudo systemctl daemon-reload
sudo systemctl restart ollama

Enfin, testez que 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 le plus précis choisissez le conteneur de sandbox open devin.
docker exec [CONTAINER ID] curl http://host.docker.internal:11434/api/generate -d '{"model":"[NAME]","prompt":"hi"}'