2026/02/14

OpenHandsをローカルLLMで動かす(その2)

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 Modelopenai/devstral-small-2-16k:latest
Base URLhttp://192.168.xxx.yyy:11434/v1
API Keyollamaで動いているので何でも良い
以上が設定できると、会話画面にて
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程度では全然足りていないのかもしれません。

0 件のコメント :