🙄
OpenHandsでgpt-ossを使う
OpenHandsのモデルにgpt-ossを使おうとすると、
<|channel|>commentary to=execute_bash code<|message|>{"command":"ls -R","timeout": 100000,"security_risk":"LOW"}
のようなレスポンスが表示されてしまい、コマンドの実行ができないようで、一旦諦めて他のモデルを使っていたのですが、解決方法がわかりました。
OpenHandsのdockerコンテナの環境変数に
LLM_NATIVE_TOOL_CALLING=true
を設定するだけでした。(OpenHands Issues #10112 Test with GPT-OSS)
OpenHandsのドキュメントの「Getting Started / Option 2: Using Docker Directly」のコマンドに -e LLM_NATIVE_TOOL_CALLING=true
を足して次のようにします。
$ docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.55-nikolaik \
-e LOG_ALL_EVENTS=true \
-e LLM_NATIVE_TOOL_CALLING=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands:/.openhands \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.55
しかし、OpenHandsのドキュメントではdockerコマンドを直接使うより、uvxコマンドで次のようにする方法を推奨しています。
$ uvx --python 3.12 --from openhands-ai openhands serve
こちらの方法でdockerコンテナに環境変数を渡す方法を自分はわかっていません。ご存知の方いましたら教えていただけると助かります。
また、ホストマシン側のカレントディレクトリをdockerコンテナ内にマウントするためには --mount-cwd
オプションをつけて次のようにしますが、
$ uvx --python 3.12 --from openhands-ai openhands serve --mount-cwd
これに相当するdockerコマンドは、次のオプションを追加します。
-e SANDBOX_VOLUMES=/Users/UserName/Path/To/Directory:/workspace:rw \
-e SANDBOX_USER_ID=501 \
/Users/UserName/Path/To/Directory
と 501
のところは適宜読み替えてください。
Discussion