皆様、ごきげんよう。
今回は、大人気のチャットアプリケーション
Open WebUI のモデルとして Amazon Bedrock を使用しようという内容です。
Open WebUI とは?#
Open WebUI は、LLM チャットアプリケーションのユーザーインターフェースを提供する包括的なアプリケーションであり、執筆時点で GitHub Stars を 100k 以上獲得している稀有なプロジェクトです。
アーキテクチャ#
Open WebUI は、
OpenAI 互換の API エンドポイントのモデルプロバイダーをサポートしています。今回は、この機能を利用して Open WebUI 上から Amazon Bedrock を呼び出したいと思います。
LiteLLM の使用#
LiteLLM には多くの機能がありますが、その中でも大きな機能として様々なモデルプロバイダーの API を OpenAI 互換の API に変換する機能があります。
この機能を使用すれば、コーディングをせずに Amazon Bedrock の API を OpenAI 互換の API に変換することが可能となります。
Open WebUI の使用#
Open WebUI は、セッション管理やデータベース管理、ベクターストアなどを外部に持つことができますが、単一インスタンスでも実行可能です。詳細は
ドキュメントを参照してください。
今回は最小例として単一インスタンスでの実行とします。
Open WebUI と LiteLLM の接続#
Open WebUI は、OpenAI 互換の API エンドポイントであれば、URL を指定するのみですぐにモデル呼び出しを開始できます。
準備#
モデルアクセスの確認#
使用したいモデルがアクセスできるようになっているか確認します。東京リージョンであれば、こちらのリンクから確認できます。
docker-compose での起動#
設定の簡略化のため、docker-compose を使用します。Docker のデーモンが起動していることと、docker-compose がインストールされていることを確認してください。
LiteLLM の設定ファイルの作成#
LiteLLM の設定ファイルを作成します。こちらで使用するモデルを指定できます。詳細はドキュメントをご覧ください。
以下は一例ですが、東京リージョンのリージョンエンドポイントのモデル ID を指定しています。
model_list:
- model_name: Amazon Nova Pro
litellm_params:
model: bedrock/apac.amazon.nova-pro-v1:0
- model_name: Amazon Nova Lite
litellm_params:
model: bedrock/apac.amazon.nova-lite-v1:0
- model_name: Amazon Nova Micro
litellm_params:
model: bedrock/apac.amazon.nova-micro-v1:0
- model_name: Anthropic Claude 3.5 Sonnet
litellm_params:
model: bedrock/apac.anthropic.claude-3-5-sonnet-20240620-v1:0
- model_name: Anthropic Claude 3.5 Sonnet v2
litellm_params:
model: bedrock/apac.anthropic.claude-3-5-sonnet-20241022-v2:0
- model_name: Anthropic Claude 3.7 Sonnet
litellm_params:
model: bedrock/apac.anthropic.claude-3-7-sonnet-20250219-v1:0
- model_name: Anthropic Claude Sonnet 4
litellm_params:
model: bedrock/apac.anthropic.claude-sonnet-4-20250514-v1:0
docker-compose の設定#
LiteLLM 内で Amazon Bedrock の API 呼び出しをするため、何らかの形で認証情報を LiteLLM のコンテナに渡します。今回は、SSO プロファイルに設定して渡すこととしています。
# docker-compose.yml
version: "3.9"
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
ports:
- "8080:8080"
environment:
WEBUI_AUTH: "False" # シングルユーザーモードで稼働
OPENAI_API_BASE_URL: "http://litellm:4000" # モデルプロバイダーの API ルートを指定 (GUIから変更可能)
volumes:
- open-webui:/app/backend/data
litellm:
image: ghcr.io/berriai/litellm:main-latest
container_name: litellm
ports:
- "4000:4000"
environment:
# 今回は SSO プロファイルを使用します
AWS_PROFILE: examples
AWS_REGION: ap-northeast-1
volumes:
- ./litellm-config.yaml:/app/litellm-config.yaml:ro
- ~/.aws:/root/.aws:rw
command: ["--config", "/app/litellm-config.yaml"]
volumes:
open-webui:起動#
以下のコマンドで起動します:
docker-compose up -d起動にはしばらく時間がかかります。何度か http://localhost:8080 にアクセスして状況を確認してください。
起動して GUI にアクセスできたら、左上からモデル一覧が表示されていることを確認してください。
試しに何か語り掛けてみましょうか。回答が返ってくるかどうか確認します。
以下のコマンドで終了します:
docker-compose down