😵
OpenHandsでBedrockからClaude4を手っ取り早く動かす
所管
OpenHandsをBedrock経由で動かす方法がどこにも書いてなく苦戦した件
前提条件
- MacOS on Dockerがインストール済み
- Bedrockのus-east-1リージョンで、Claude Sonnet 4をリクエスト済み
- AmazonBedrockFullAccessポリシーを持つIAMユーザーを作成して、アクセスキーを発行済み(ガバガバなのでちゃんと運用する際は、権限絞ってIAMロールで使用しましょう)
docker-composeの設定
version: "3.8"
services:
openhands:
image: docker.all-hands.dev/all-hands-ai/openhands:0.39
container_name: openhands-app
ports:
- "127.0.0.1:3000:3000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- .openhands-state:/.openhands-state
env_file:
- .env
environment:
- SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
.env設定
はまりどころ1
LLM_AWS_...の環境変数と
AWS_...の環境変数がどっちも必要っぽい
下記のDocのようにLLM_AWS_...の環境変数だけでは認識されない
はまりどころ2
LLM_MAX_INPUT_TOKENS
LLM_MAX_OUTPUT_TOKENS
がデフォルト0のため、設定しないと429でるっぽい
LLM_AWS_REGION_NAME="us-east-1"
LLM_AWS_ACCESS_KEY_ID="任意の文字列"
LLM_AWS_SECRET_ACCESS_KEY="任意の文字列"
AWS_REGION_NAME="us-east-1"
AWS_ACCESS_KEY_ID="任意の文字列"
AWS_SECRET_ACCESS_KEY="任意の文字列"
LLM_RETRY_MIN_WAIT="60"
LLM_RETRY_MAX_WAIT="120"
LLM_MAX_INPUT_TOKENS="10240"
LLM_MAX_OUTPUT_TOKENS="10240"
上記設定後
docker compose up
でOpenHandsを立ち上げ、
にアクセスする
OpenHandsでLLMにBedrockを設定
- カスタムモデル:
bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0
- ベースURL:
https://bedrock-runtime.us-east-1.amazonaws.com
- APIキー:
任意の文字列
- エージェント:
CodeActAgent
会話してみる
ようやく動く
参考
Discussion