🙄

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/Directory501 のところは適宜読み替えてください。

株式会社ソニックムーブ

Discussion