LoginSignup
9
8

More than 1 year has passed since last update.

新規開発や新技術の検証、導入にまつわる記事を投稿しよう!

Amazon Kendra + Chat GPT 社内情報検索アプリ開発のサンプルを試してみた

Last updated at Posted at 2023-06-27

はじめに

AWSから生成系AI + Amazon Kendraを用いて、回答を社内情報のみに限定することが可能なチャットアプリケーションのサンプルが公開されていたので試してみた。
↓↓
高精度な生成系 AI アプリケーションを Amazon Kendra、LangChain、大規模言語モデルを使って作る

本記事ではサンプルを試してみるのみ。
次回以降のどっかで自分用に改造してみようと思うよー。

作るもの

こういうのができます!!
アプリはStreamlitで作られていて、テキストを入力するとKendraが呼び出されて情報を検索、検索された情報を生成系AIで文章を作成している感じですね。
9.PNG

サンプルアプリケーションを構築していく。

元ネタ:高精度な生成系 AI アプリケーションを Amazon Kendra、LangChain、大規模言語モデルを使って作る

↑↑の手順通り進めていけば構築できます。(はずです)

Amazon Kendraインデックス作成

サンプルに含まれるCloudFormationのテンプレートを利用してAmazon Kendraを作成します。
3.PNG
サンプルファイル内に"kendra-docs-index.yaml"があります。
・AWSオンラインドキュメントを取り込んだKendraインデックス
・データ同期用のLambda
・上記関連のIAMロール
が作成されます。
AWS CloudShellにアップロードして以下コマンドを実行すれば作成されます。

aws cloudformation create-stack --region ap-northeast-1 --stack-name demo-kendora --template-body file://kendra-docs-index.yaml --capabilities CAPABILITY_NAMED_IAM

アプリ構築

Cloud 9構築

アプリケーションはCloud 9で実行させます。(個人PCでも問題ありません)
とりあえずVPC作成します。
1.PNG

Cloud 9を構築します。
インスタンスタイプはt2.microで問題なくいけました。
2.PNG

諸々のインストール

Cloud 9に以下をインストールします。
・Python(3.9以上)
・Boto3
・Streamlit
・OpenAI
・LangChain

#Cloud 9って初期ではPython 3.7とかなのでアップデートします。
$ pyenv install 3.9

$ pyenv global 3.9

$ python --version
  Python 3.9

#Boto3をインストールします。
$ pip3 install boto3

#Streamlitをインストールします。
#PythonのWeb開発用のフレームワークですね。
$ pip3 install streamlit

#OpenAIをインストールします。
$ pip3 install openai

#LangChainをインストールします。
$ pip3 install langchain

このタイミングでWebサイトが閲覧できるか試しておきましょう。。

$ streamlit hello --server.port 8080

7.PNG

サンプルをクローンする

サンプルの中にサンプルアプリケーション"kendra_retriever_samples"があります。

$ git clone https://github.com/aws-samples/amazon-kendra-langchain-extensions.git
$ cd amazon-kendra-langchain-extensions

環境変数を設定

サンプルアプリケーションを実行する前に使用するKendraインデックスのIDとOpenAIのAPIが必要になります。
(今回はOpenAIを利用しますが、Flan-T5-XL等を利用する場合はそれらの環境変数にAPIを代入します)
AWS_REGION:構築したリージョン
KENDRA_INDEX_ID:KendraインデックスのID
OPENAI_API_KEY:OpenAIのAPI(各自で取得する必要あり)

export AWS_REGION="<YOUR-AWS-REGION>"
export KENDRA_INDEX_ID="<YOUR-KENDRA-INDEX-ID>"
export FLAN_XL_ENDPOINT="<YOUR-SAGEMAKER-ENDPOINT-FOR-FLAN-T-XL>"
export FLAN_XXL_ENDPOINT="<YOUR-SAGEMAKER-ENDPOINT-FOR-FLAN-T-XXL>"
export OPENAI_API_KEY="<YOUR-OPEN-AI-API-KEY>"
export ANTHROPIC_API_KEY="<YOUR-ANTHROPIC-API-KEY>"

サンプルアプリケーションの実行

$ cd kendra_retriever_samples
$ streamlit run app.py openai --server.port 8080

適当に検索してみました。
8.PNG

Kendraインデックスの検索で引っかからない内容に対しては「知りません」と回答するようにプロンプトが書かれていました。笑笑
この辺りちょっと変更を加えて、Kendraに読み込ますデータを変えるだけで自由に生成系AIを用いたアプリケーションが開発できそうです。
この辺りは次回試してみようかと、、

おわり

終わりです~。
アプリをコンテナ化してECSに乗せるだけで実際に使えそうなレベルのアプリだったんじゃないですか?
(まだそこまでしっかり見きれていないのでわかりませんが、、)
生成系AIや機械学習はいつかどこかでしっかりと触れてみたいところ。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8