ホストOS
本サンプルは macOS をホスト OS として動作確認しています。% sw_versProductName: macOSProductVersion: 14.5BuildVersion: 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}