ホストOS
本サンプルは macOS をホスト OS として動作確認しています。
% sw_vers
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79
ホスト OS には以下のパッケージを導入する必要があります。インストールに関してはリンクにある内容に従ってください。
aws-cli ( AWS CLI の最新バージョンのインストールまたは更新)
Docker Descktop (「Docker Desktop のインストール」)
シェルスクリプト
いくつかのシェルスクリプトをつかっています。 Windows などの場合、PowerShell スクリプトに書き換えるなどする必要があります。
Docker イメージ(tool)
Python のなどの実行は以下のようにホスト OS で Docker イメージを起動して行います。
docker compose run --rm tool コマンド
基本イメージ
Python の公式イメージ の最新版をベースとしています。
Poetry
Python パッケージの管理に Poetryをつかっているので、Docker イメージにインストールしています。
bedrag
本サンプルで使っていいる機能の共通部分を bedrag (Bedrock RAG) というパッケージに実装してあります。 Docker イメージにも入れたいので COPY してあります。
bedrag の詳細に関しては後のセクションで説明します。
プロジェクトルートの共有
git clone したディレクトリを /home/tofu として Docker コンテナの working_dir としてマウントします。 よって、本ディレクトリ以下のファイルが共有されます。
.env
プロジェクトルートに .env を用意して Docker コンテナなどの動作条件を指定するようになっています。
以下の環境変数が設定されます:
環境変数 | 内容 |
AWS_ACCESS_KEY_ID | AWS アクセスキー |
AWS_SECRET_ACCESS_KEY | AWS アクセスシークレット |
AWS_REGION | AWS リージョン ( us-west-2 など) |
AWS_ADMIN_REGION | .tfstate を管理するリソースリージョン(us-west-2 など) |
DATABASE_TABLE_NAME | RAG で使うデータベーステーブル名 (データベース.スキーマ.テーブル の書式) |
DATABASE_USER | RAG でアクセスするデータベースユーザークレデンシャル(ユーザー名 パスワードの書式) |
DATABASE_MASTER_USER | PostgreSQL の管理ユーザークレデンシャル(ユーザー名 パスワードの書式) |
BEDROCK_LLM_MODEL_ID | Bedrock から利用する生成 AI モデル ID("anthropic.claude-3-sonnet-20240229-v1:0" など) |
LANGCHAIN_TRACING_V2 | LangChain Tracing (true など) |
LANGCHAIN_API_KEY | LangSmithのアクセスキー |
LANGCHAIN_ENDPOINT | LangSmith のエンドポイント (https://api.smith.langchain.com など) |
LANGCHAIN_PROJECT | LangSmith に設定したプロジェクト名 |
DOMAIN_NAME | Web API のドメイン名 (spin-dd.com など) |
これらの.env の変数ならびにシェルの環境変数は、以下のように docker compose で起動されるコンテナに渡されます。:
environment:
- AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
- AWS_REGION=$AWS_REGION
- TF_VAR_service=${SERVICE:-sample}
- TF_VAR_env=${ENV:-ai}
- TF_VAR_region=$AWS_REGION
- TF_VAR_admin_region=$AWS_ADMIN_REGION
- TF_VAR_admin_targets=${ADMIN_ENVS:-ai}
- TF_VAR_database_table_name=${DATABASE_TABLE_NAME}
- TF_VAR_database_user=${DATABASE_USER}
- TF_VAR_database_master_user=${DATABASE_MASTER_USER}
- TF_VAR_domain_name=${DOMAIN_NAME}
- BEDROCK_LLM_MODEL_ID=${BEDROCK_LLM_MODEL_ID}
- LANGCHAIN_TRACING_V2=${LANGCHAIN_TRACING_V2:-true}
- LANGCHAIN_API_KEY=${LANGCHAIN_API_KEY}
- LANGCHAIN_ENDPOINT=${LANGCHAIN_ENDPOINT:-https://api.smith.langchain.com}
- LANGCHAIN_PROJECT=${LANGCHAIN_PROJECT}
Comments