Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
tbrandaws committed Oct 8, 2024
2 parents 6cb5e56 + 4ff94fc commit ccd92ac
Show file tree
Hide file tree
Showing 34 changed files with 5,018 additions and 2,876 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ Generative AI(生成 AI)は、ビジネスの変革に革新的な可能性
GenU のデプロイには [AWS Cloud Development Kit](https://aws.amazon.com/jp/cdk/)(以降 CDK)を利用します。Step-by-Step の解説、あるいは、別のデプロイ手段を利用する場合は以下を参照してください。
- [Workshop](https://catalog.workshops.aws/generative-ai-use-cases-jp)
- [AWS CloudShell を利用したデプロイ方法 (手元の環境を用意することが難しい場合)](/docs/DEPLOY_ON_CLOUDSHELL.md)
- [動画によるデプロイ手順の紹介](https://www.youtube.com/watch?v=9sMA17OKP1k)

まず、以下のコマンドを実行してください。全てのコマンドはリポジトリのルートで実行してください。
Expand Down Expand Up @@ -145,6 +146,7 @@ npm run cdk:deploy
- [Code Interpreter 機能を持つエージェントのデプロイ](/docs/DEPLOY_OPTION.md#Code-Interpreter-エージェントのデプロイ)
- [検索エージェントのデプロイ](/docs/DEPLOY_OPTION.md#検索エージェントのデプロイ)
- [Knowledge Bases for Amazon Bedrock エージェントのデプロイ](/docs/DEPLOY_OPTION.md#knowledge-bases-for-amazon-bedrock-エージェントのデプロイ)
- [PromptFlow チャットユースケースの有効化](/docs/DEPLOY_OPTION.md#promptflow-チャットユースケースの有効化)
- [映像分析ユースケースの有効化](/docs/DEPLOY_OPTION.md#映像分析ユースケースの有効化)
- [Amazon Bedrock のモデルを変更する](/docs/DEPLOY_OPTION.md#amazon-bedrock-のモデルを変更する)
- [us-east-1 (バージニア) の Amazon Bedrock のモデルを利用する例](/docs/DEPLOY_OPTION.md#us-east-1-バージニア-の-amazon-bedrock-のモデルを利用する例)
Expand All @@ -170,7 +172,6 @@ npm run cdk:deploy
- [アップデート方法](/docs/UPDATE.md)
- [ローカル開発環境構築手順](/docs/DEVELOPMENT.md)
- [リソースの削除方法](/docs/DESTROY.md)
- [AWS 上で完結するデプロイ方法 (手元に環境を用意することが難しい場合)](/docs/DEPLOY_ON_AWS.md)
- [ネイティブアプリのように利用する方法](/docs/PWA.md)
- [ブラウザ拡張機能を利用する](/browser-extension/README.md)

Expand Down
63 changes: 63 additions & 0 deletions deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#!/bin/bash

set -e

echo "--------------------------"
echo " _____ _ _ "
echo " / ____| | | | |"
echo "| | __ ___ _ __ | | | |"
echo "| | |_ |/ _ \ '_ \| | | |"
echo "| |__| | __/ | | | |__| |"
echo " \_____|\___|_| |_|\____/ "
echo "--------------------------"

# コマンド引数の処理
while [[ $# -gt 0 ]]; do
case "$1" in
-c|--cdk-context)
cdk_context_path="$2"
shift 2
;;
-h|--help)
echo "-c, --cdk-context ... Path to the cdk.json file"
echo "-h, --help ... Show this message"
exit 0
;;
*)
echo "Unknown option: $1"
exit 1
;;
esac
done

pushd /tmp

# /tmp に存在するリポジトリを念の為削除
rm -rf generative-ai-use-cases-jp

# GenU を clone
git clone https://github.com/aws-samples/generative-ai-use-cases-jp

pushd generative-ai-use-cases-jp

# npm パッケージのインストール
npm ci

# cdk.json が指定されている場合は上書きする
if [[ -n "$cdk_context_path" ]]; then
echo "Overwrite the cdk.json by $cdk_context_path"
cp -f $cdk_context_path packages/cdk/cdk.json
fi

# CDK の bootstrap
npx -w packages/cdk cdk bootstrap

# デプロイの実行
npm run cdk:deploy

# デプロイした CloudFront の url を取得
weburl=`aws cloudformation describe-stacks --stack-name GenerativeAiUseCasesStack --output json | jq -r ".Stacks[0].Outputs[] | select(.OutputKey==\"WebUrl\") | .OutputValue"`

echo "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
echo "Welcome to GenU: $weburl"
echo "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"
7 changes: 6 additions & 1 deletion docs/DEPLOY_ON_AWS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
# AWS 上で完結するデプロイ方法 (手元に環境を用意することが難しい場合)
# (DEPRECATED) AWS 上で完結するデプロイ方法 (手元に環境を用意することが難しい場合)

> [!Caution]
> この手順は AWS Cloud9 が新規のお客様向けアクセスを閉じたことを受け、非推奨手順となりました。
> AWS 上で完結するデプロイ方法については [CloudShell を利用したデプロイ方法](/docs/DEPLOY_ON_CLOUDSHELL.md) をご参照ください。
> また、AWS Cloud9 からの移行については [こちら](https://aws.amazon.com/jp/blogs/news/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/) のブログをご参照ください。
AWS CloudShell と AWS Cloud9 を利用することで、手元の環境に依存しないデプロイが可能です。(デプロイが AWS 上で完結します。)

Expand Down
47 changes: 47 additions & 0 deletions docs/DEPLOY_ON_CLOUDSHELL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# AWS CloudShell を利用したデプロイ方法 (手元の環境を用意することが難しい場合)

## cdk.json の編集

GenU では cdk.json の context 以下をカスタマイズすることで、デプロイオプションを指定できます。
利用可能なデプロイオプションについては [デプロイオプション](/docs/DEPLOY_OPTION.md) をご参照ください。
一旦、[デフォルトの cdk.json](/packages/cdk/cdk.json) で構わないという場合は、こちらの手順をスキップしていただいて構いません。

デプロイオプションを指定する場合は、[デフォルトの cdk.json](/packages/cdk/cdk.json) をダウンロード (GitHub ページ右上のダウンロードボタンからファイルをダウンロードできます) し、context 以下を変更してファイルを保存してください。

## CloudShell の起動

[CloudShell](https://console.aws.amazon.com/cloudshell/home) を起動します。
前述した手順で cdk.json をカスタマイズした場合は、右上 Actions の Upload file からカスタマイズした cdk.json をアップロードしてください。

## deploy.sh のダウンロードと実行権限の付与

CloudShell 上で以下のコマンドを実行し、`deploy.sh` というスクリプトをダウンロードします。
また、ダウンロード後に deploy.sh に実行権限を付与しています。

```bash
wget https://raw.githubusercontent.com/aws-samples/generative-ai-use-cases-jp/refs/heads/main/deploy.sh -O deploy.sh
chmod +x deploy.sh
```

## deploy.sh の実行

以下のコマンドで `deploy.sh` を実行します。
なお、`--cdk-context` オプションでカスタマイズした cdk.json へのパスを指定しています。(特に何もせず前述した手順で Upload files した場合はこのパスになります。)
cdk.json が別のパスにある場合は、適宜引数の値を変更してください。

```bash
./deploy.sh --cdk-context ~/cdk.json
```

なお、cdk.json のカスタマイズが必要ない場合は `--cdk-context` の指定は不要です。
その場合、[デフォルトの cdk.json](/packages/cdk/cdk.json) の設定でデプロイされます。

```bash
./deploy.sh
```

デプロイ途中に確認プロンプトが表示されるので、`y` と入力して Enter して進めてください。
デプロイ完了時に CloudFront の URL が表示されます。その URL をブラウザで開くことで GenU にアクセスできます。

なお、これらの手順を実行する場合も [Amazon Bedrock の Model access](https://console.aws.amazon.com/bedrock/home#/modelaccess) から利用するモデルの有効化が必要です。
デフォルトの cdk.json を使っている場合は、[デフォルトの cdk.json](/packages/cdk/cdk.json) の modelRegion において modelIds と imageGenerationModelIds で指定されたモデルが有効化されているかを確認してください。
57 changes: 54 additions & 3 deletions docs/DEPLOY_OPTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,44 @@ Knowledge Base プロンプト例: キーワードで検索し情報を取得し
}
```

### PromptFlow チャットユースケースの有効化

PromptFlow チャットユースケースでは、作成済みの Prompt Flow を呼び出すことができます。

プロジェクトのルートディレクトリにある `cdk.json` ファイルを開き、`context` セクション内に `promptFlows` 配列を追加または編集します。

[Prompt Flows の AWS コンソール画面](https://console.aws.amazon.com/bedrock/home#/prompt-flows) から手動で Prompt Flows を作成します。その後、Alias を作成し、作成済みの Prompt Flow の `flowId``aliasId`, `flowName` を追加します。`description` にはユーザーの入力を促すための説明文章を記載します。この説明文章は Prompt Flow チャットのテキストボックスに記載されます。以下はその例です。

**[packages/cdk/cdk.json](/packages/cdk/cdk.json) を編集**
```json
{
"context": {
"promptFlows": [
{
"flowId": "XXXXXXXXXX",
"aliasId": "YYYYYYYYYY",
"flowName": "WhatIsItFlow",
"description": "任意のキーワードをウェブ検索して、説明を返すフローです。文字を入力してください"
},
{
"flowId": "ZZZZZZZZZZ",
"aliasId": "OOOOOOOOOO",
"flowName": "RecipeFlow",
"description": "与えられたJSONをもとに、レシピを作成します。\n{\"dish\": \"カレーライス\", \"people\": 3} のように入力してください。"
},
{
"flowId": "PPPPPPPPPP",
"aliasId": "QQQQQQQQQQQ",
"flowName": "TravelPlanFlow",
"description": "与えられた配列をもとに、旅行計画を作成します。\n[{\"place\": \"東京\", \"day\": 3}, {\"place\": \"大阪\", \"day\": 2}] のように入力してください。"
}
]
}
}
```



### 映像分析ユースケースの有効化

映像分析ユースケースでは、映像の画像フレームとテキストを入力して画像の内容を LLM に分析させます。
Expand All @@ -335,6 +373,8 @@ Knowledge Base プロンプト例: キーワードで検索し情報を取得し
"eu.anthropic.claude-3-5-sonnet-20240620-v1:0",
"eu.anthropic.claude-3-sonnet-20240229-v1:0",
"eu.anthropic.claude-3-haiku-20240307-v1:0",
"us.meta.llama3-2-90b-instruct-v1:0",
"us.meta.llama3-2-11b-instruct-v1:0",
```

これらのいずれかが `cdk.json``modelIds` に定義されている必要があります。
Expand All @@ -353,6 +393,8 @@ Knowledge Base プロンプト例: キーワードで検索し情報を取得し
"eu.anthropic.claude-3-5-sonnet-20240620-v1:0",
"eu.anthropic.claude-3-sonnet-20240229-v1:0",
"eu.anthropic.claude-3-haiku-20240307-v1:0",
"us.meta.llama3-2-90b-instruct-v1:0",
"us.meta.llama3-2-11b-instruct-v1:0",
]
```

Expand All @@ -379,6 +421,10 @@ Knowledge Base プロンプト例: キーワードで検索し情報を取得し
"eu.anthropic.claude-3-sonnet-20240229-v1:0",
"eu.anthropic.claude-3-haiku-20240307-v1:0",
"amazon.titan-text-premier-v1:0",
"us.meta.llama3-2-90b-instruct-v1:0",
"us.meta.llama3-2-11b-instruct-v1:0",
"us.meta.llama3-2-3b-instruct-v1:0",
"us.meta.llama3-2-1b-instruct-v1:0",
"meta.llama3-1-405b-instruct-v1:0",
"meta.llama3-1-70b-instruct-v1:0",
"meta.llama3-1-8b-instruct-v1:0",
Expand Down Expand Up @@ -460,8 +506,10 @@ Knowledge Base プロンプト例: キーワードで検索し情報を取得し
"us.anthropic.claude-3-opus-20240229-v1:0",
"us.anthropic.claude-3-sonnet-20240229-v1:0",
"us.anthropic.claude-3-haiku-20240307-v1:0",
"meta.llama3-1-70b-instruct-v1:0",
"meta.llama3-1-8b-instruct-v1:0",
"us.meta.llama3-2-90b-instruct-v1:0",
"us.meta.llama3-2-11b-instruct-v1:0",
"us.meta.llama3-2-3b-instruct-v1:0",
"us.meta.llama3-2-1b-instruct-v1:0",
"cohere.command-r-plus-v1:0",
"cohere.command-r-v1:0",
"mistral.mistral-large-2407-v1:0"
Expand Down Expand Up @@ -596,7 +644,7 @@ context の allowedSignUpEmailDomains に 許可するドメインのリスト

#### IP アドレスによる制限

Web アプリへのアクセスを IP で制限したい場合、AWS WAF による IP 制限を有効化することができます[packages/cdk/cdk.json](/packages/cdk/cdk.json)`allowedIpV4AddressRanges` では許可する IPv4 の CIDR を配列で指定することができ、`allowedIpV6AddressRanges` では許可する IPv6 の CIDR を配列で指定することができます。
Web アプリへのアクセスを IP アドレスで制限したい場合、AWS WAF による IP アドレス制限を有効化することができます[packages/cdk/cdk.json](/packages/cdk/cdk.json)`allowedIpV4AddressRanges` では許可する IPv4 の CIDR を配列で指定することができ、`allowedIpV6AddressRanges` では許可する IPv6 の CIDR を配列で指定することができます。

```json
"context": {
Expand All @@ -609,6 +657,9 @@ Web アプリへのアクセスを IP で制限したい場合、AWS WAF によ

Web アプリへのアクセスをアクセス元の国で制限したい場合、AWS WAF による地理的制限を有効化することができます。[packages/cdk/cdk.json](/packages/cdk/cdk.json) の `allowedCountryCodes` で許可する国を Country Code の配列で指定することができます。
指定する国の Country Code は[ISO 3166-2 from wikipedia](https://en.wikipedia.org/wiki/ISO_3166-2)をご参照ください。

「IP アドレスによる制限」も同時に設定している場合は、「送信元の IP アドレスが許可された IP アドレスに含まれている**かつ**、許可された国からのアクセス」のみ許可されます。

```json
"context": {
"allowedCountryCodes": ["JP"], // null から、許可国リストを指定することで有効化
Expand Down
2 changes: 2 additions & 0 deletions docs/UPDATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
GenU は頻繁にアップデートされています。
機能追加・改善に加え、セキュリティ文脈のアップデートが入ることもありますので、定期的にリポジトリの main ブランチを pull して再デプロイすることをお勧めします。

[AWS CloudShell を利用したデプロイ方法](/docs/DEPLOY_ON_CLOUDSHELL.md) を利用している場合、常に最新の main ブランチをデプロイするため、再度 `deploy.sh` を実行するとアップデートされます。(以下の手順は不要です。)

## main ブランチを pull する

すでにリポジトリを clone 済みで、初回デプロイが完了していることを想定しています。
Expand Down
Binary file modified imgs/arch.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit ccd92ac

Please sign in to comment.