1年くらい前にOpenHandsをローカルLLMで動かしてみましたが、ローカルLLMの能力が低くて今ひとつでした。
ローカルLLMの能力も少し上がってきたようですので、再度試してみることにしました。ollmaの準備
前回と基本的には同じです。 今回はモデルにdevstral-small-2:latestを使ってみることにしました。 気をつける点は、コンテキスト長をデフォルトから変更するというところです。 まずollamaのdockerコンテナ内で /root/.ollama/models/DevstralSmall2Ctx16k というファイルを作ります。中身は
FROM devstral-small-2:latest PARAMETER num_ctx 16384です。作成後、
$ ollama create devstral-small-2-16k -f /root/.ollama/models/DevstralSmall2Ctx16k.Modelfileにて、ollamaにモデルを認識させます。すると
$ ollama list NAME ID SIZE MODIFIED devstral-small-2-16k:latest 3360cd1e87b5 15 GB 5 hours agoのような行が追加されるはずです。 これでollamaの準備は完了です。
OpenHandsの準備
https://docs.openhands.dev/openhands/usage/run-openhands/local-setup に従って進めるだけです。 具体的には
$ uv tool install openhands --python 3.12 $ openhands serveだけで完了です。事前にuvの準備は必要です。 次に、 http://localhost:3000/settings にアクセスして、AdvancedをONにしたうえで、以下のように設定します。 https://docs.openhands.dev/openhands/usage/llms/local-llmsを参考にしています。
| 設定名 | 設定値 |
|---|---|
| Custom Model | openai/devstral-small-2-16k:latest |
| Base URL | http://192.168.xxx.yyy:11434/v1 |
| API Key | ollamaで動いているので何でも良い |
helloと入力すると、
Hello! How can I assist you today?のように出力されます。 注意するところは、Custom Modelの設定値の最初をollama/ではなくopenai/とする点と、Base URLの最後を:11434ではなく:11434/v1にする点です。 もし間違うと、中途半端に動きます。指示を出す画面で例えば
helloと入力すると、
{"name": "finish", "message": "Hello! How can I assist you today?"}
のようにjsonの文字列がそのまま画面上に出力されてしまいます。
以上でとりあえずは動くようになりました。しかし、なかなか言うことを聞いてくれません。コマンドを特定できているのに実行しなかった場合に「実行して!」と頼んでも
I cannot execute commands without a specific task or context. Please provide me with a clear instruction or task so I can assist you effectively.とか言われるので、コンテキスト長が16k程度では全然足りていないのかもしれません。
