この記事の目的
ChatGPTクローンを手軽に立ち上げる際に「LibreChat」は有力な選択肢になります。
実はLibreChatは「LiteLLM」というライブラリーを通じて、Amazon Bedrockを使うことも可能です。
しかし日本語の記事がほとんど見当たらないため、この記事でその手順を記します。
LibreChatとは?
LibreChat は、複数のプロバイダーの最先端言語モデルを単一のインターフェースで利用できるようにする、無料のオープンソースAIチャットプラットフォームです。幅広いカスタマイズオプション、革新的な機能強化、AIサービスのシームレスな統合により、LibreChatは比類のない会話体験を提供します。
LibreChatを選ぶ理由
🔓 オープンソースかつ無料
LibreChatは完全にオープンソースのプロジェクトであるため、制限や有料サブスクリプションなしに、ソフトウェアを自由に使用、変更、配布できます。
🤖 複数プロバイダーのAIサポート
LibreChatは、OpenAI、Azure、Anthropic、Googleなど、幅広いAIプロバイダーをサポートしています。異なるモデル間をシームレスに切り替え、それぞれの独自の機能を活用できます。
💻 カスタマイズ可能で拡張性が高い
モジュール設計と幅広いカスタマイズオプションにより、LibreChatは特定のニーズに合わせて調整できます。カスタムプリセットの作成と共有、プラグインの統合、プロジェクト開発への貢献も可能です。
LibreChatのAmazon Bedrockサポート状況
前述のように、LibreChatは、OpenAI、Azure、Anthropic、GoogleなどのAIプロバイダーをサポートしています。
一方で、Amazon Bedrockを直接的にはサポートしていません。
これについては、以下のIssueのやりとりが参考になると思います。
https://github.com/danny-avila/LibreChat/issues/2620
このissueによると Yup, adding native bedrock support is planned!
ということなので、対応予定はあるようです。
一方で、You may could use LiteLLM as a temporary workaround. https://docs.litellm.ai/docs/providers/bedrock
というコメントもあり、当面はLiteLLMを使う方法が紹介されています。
この記事では、LiteLLMを使っていきます。
手順の概要
まず前提として、今回の手順ではローカル環境にDockerを用いてLibreChatを立ち上げます。
もちろん、クラウドサービスにデプロイすることも可能ですが、その部分については触れません。(Bedrock固有の内容ではなくなるため)
手順としては、大きく2段階になります。
- AWSでBedrockのモデルを有効化する
- LibreChatに対してAmazon Bedrock接続の設定を行う
手順の詳細
1. AWSでBedrockのモデルを有効化する
この手順はここで詳細は説明せずに関連するリンクだけ提示します。
まずAWS公式のページはこちらです。
しかし、モデルを有効化するだけの場合にはこれを読んでも目的に到達することが難しいと思います。
したがって、みのるんさんのQiita記事#モデル有効化も貼っておきます。
2. LibreChatに対してAmazon Bedrock接続の設定を行う
以下のファイルを作成・編集して設定を行います。
- docker-compose.override.yml
- litellm/config.yaml
- librechat.yaml
- .env
docker-compose.override.yml
ここでは、
- apiサービスの設定ファイルのsourceを追加
- litellmサービスの定義
を行います。
version: '3.4'
# Please consult our docs for more info: https://www.librechat.ai/docs/configuration/docker_override
services:
# USE LIBRECHAT CONFIG FILE
api:
volumes:
- type: bind
source: ./librechat.yaml
target: /app/librechat.yaml
# configure LiteLLM
litellm:
image: ghcr.io/berriai/litellm:main-latest
environment:
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
- AWS_REGION_NAME=${AWS_REGION_NAME}
volumes:
- ./litellm/config.yaml:/app/config.yaml
ports:
- "127.0.0.1:3000:3000"
command:
- /bin/sh
- -c
- |
pip install async_generator
litellm --config '/app/config.yaml' --host 0.0.0.0 --port 3000 --num_workers 8
entrypoint: []
litellm/config.yaml
Bedrock Claude3のモデルリストを定義します。
model_list:
- model_name: claude-3-opus
litellm_params:
model: bedrock/anthropic.claude-3-opus-20240229-v1:0
max_tokens: 4096
- model_name: claude-3-sonnet
litellm_params:
model: bedrock/anthropic.claude-3-sonnet-20240229-v1:0
max_tokens: 4096
- model_name: claude-3-haiku
litellm_params:
model: bedrock/anthropic.claude-3-haiku-20240307-v1:0
max_tokens: 4096
litellm_settings:
drop_params: True
set_verbose: True
general_settings:
master_key: sk-1234
librechat.yaml
customのエンドポイントとしてAmazon Bedrockを設定します。
model_list:
- model_name: claude-3-opus
litellm_params:
model: bedrock/anthropic.claude-3-opus-20240229-v1:0
max_tokens: 4096
- model_name: claude-3-sonnet
litellm_params:
model: bedrock/anthropic.claude-3-sonnet-20240229-v1:0
max_tokens: 4096
- model_name: claude-3-haiku
litellm_params:
model: bedrock/anthropic.claude-3-haiku-20240307-v1:0
max_tokens: 4096
litellm_settings:
drop_params: True
set_verbose: True
general_settings:
master_key: sk-1234
.env
当然ながら.envはgitにコミットしないでください。(.gitigonreにもともと含まれています)
なお、アクセスキーについては、「Bedrockの読み取り権限のみを保持するポリシーをアタッチする」など最小限の権限にすることを強くお勧めします。
.env.exampleをコピーし、以下の記述を追加してください。
# 追加箇所だけ記載(XXXXXXXXXの箇所は適宜変更してください)
#==================================================#
# AWS configuration #
#==================================================#
AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXX
AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXX
AWS_REGION_NAME=XXXXXXXXXX
動作の様子
以下のようにChatGPTクローンとして最低限のチャット機能が動作します。
参考記事