こんにちは寒い日が続いております。最近AI と遊ぶ時間が多くなってAI と共に頑張ることが目標になりつつあります。理解できないところもまだまだ多いので、AIにいっぱい助けてもらおうと思います。
前回までEC2 にDify をインストールして、画面を確認したと思うのですが、今回はBedrock と接続してナレッジを実際に入れてみようと思います。Dify の画面を表示するまでは前回やっているので以下を参照してみてください
今回の設定の流れ
- EC2 とbedrock を接続できるようにIAM role の設定
- bedrock からモデルの選択とDify に入力
- Dify でchatbot を作成
- 実際に使ってみる
今回は手軽に最低限のコストで触っていきたいので、bedrock のナレッジベースなどは作成せずに進めていきたいと思います。他の記事ではナレッジベースを作成して実際に試していきたいと思います。
IAM role の設定
EC2 からbedrock に対してアクセスができるように、設定していきましょう。必要なポリシーとしては、以下になるので、これさえあればapi の通信はできるようになります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "bedrock:InvokeModel*",
"Resource": [
"*"
]
}
]
}
内容としては、bedrock:InvokeModel をアクションとして登録しているのと、Resource を ワイルドカード(*) としているので、全てのリソースからbedrock のモデルを実行することが可能になっています。今回検証のために、ワイルドカードでリソースを指定していますが、本来は最低限のリソースで指定することがセキュリティ的にもAWS のポリシーとしても好ましいので、そちらを推奨かと思います!
手順としては
① 上の内容でポリシーを作成
② role を作成する
③ 上で作成したポリシーを紐づける
④ 作成したrole をEC2 に紐づける
になります。ここまで来たら、IAM Role の準備は完了になります。
次にモデルに対してアクセスを許可して、モデルの接続設定をDify 側で実施していきます。
Dify でLLM を実行できるようにするためにモデルのアクセス許可
次にモデルの設定をしていきます。最初にベースモデルを使うために、AWS コンソールにてベースモデルの許可設定を実施します。ポチポチで終わります!!
モデルアクセスを選択して、使いたいモデルを選択して、次へを押してください。そうすれば、
許可の設定に進むので、許可されるまで待機してください。
(下の画面は、僕は既に許可設定を前にしていたので緑になってますが、本来は「リクエスト可能」の表記がされています。

上のように「アクセスが付与されました」になると使える状態になっていますので、これで利用可能な状態になります。
なので、次はDify 側の設定を実施していきましょう!
Dify でのモデルの連携設定
Dify の画面を開くと右上に自分の設定したユーザ名が表示されていると思います。それを押して、設定のボタンを押してください。そうすると以下のような画面が表示されます。
そこから、モデルプロバイダー > AWS Bedrock を見つけてポチっとしてください

そうすると、以下のようなどのモデルをどのリージョンで使いますか??の入力が求められるので、今回はap-northeast-1 とモデル名だけ入力していきます。今回はBedrock のendpointは必要ないです。

登録できたら、モデルの一番上に表示されると思います!!

これでモデルの登録も完了です!!
次に、遂にアプリを作成していきます!
chatbot のアプリを作成していきます!
今回は最初から作っていくので、チャットボットを選択して、適当に名前を付けます。

次にオーケストレーションです。ここは最初なので、モデルのみを変更していきます!

これで公開するを押すと、アプリが使えるようになります。もし社内のドキュメントを読ましたいとかであれば、ナレッジが必要になるので、ナレッジもDify 側で設定する必要ががあります。この画面でいうところの、コンテキストになります。
最後にコンテキスト(ナレッジ)を設定していこう
ナレッジのボタンを押すとナレッジの作成の画面に遷移します。ナレッジを作成していきましょう!

今回はテキストファイルから、インポートしていこうと思うので、適当にテキストを読み込ませます。
今回はgemini に日本の文化について聞いてみたので、その内容をテキストにコピペして登録していきます。

今回は特に何もチューニングを考えてないので、デフォルトのままで設定します

そして、登録します!作成されましたね!!

登録できたので、さっき作成したchatbot でコンテクストとして読み込ませてみましょう!

公開して、実際に日本の文化について聞いてみます!
ちゃんと引用された内容が出力されていそうですね

デバッグとプレビューの画面でやりましたが、公開したアプリでも使用可能だと思うので、そこでも使ってみてください。今回はちゃんと引用できているのを確認したかったので、デバッグプレビュー画面で実施しています。
今回の検証はこれで終わりとします。
まとめ
これは社内でも使えそうな印象をかなり受けました。社内で使う場合は、SSL 化などの設定もした上でIP 限定して使うなどセキュリティには気を配る必要はあると感じました。そうじゃないと情報が漏れてしまうとそれはよくないですね。。。センシティブな情報は読み込ませてないのであれば、大丈夫かと思います。
今回はチューニングなどは考慮しませんでしたが、チューニングが必要になる場面もいずれ来ると思うので、その時は使ってみたいと思います。設定自体はかなり簡単なので、ぜひ皆さんも使ってみてください。EC2 の削除などはお忘れなく実施してください。
その他
AI にはそれなりにお金が発生してきますが、今回やった検証では頻繫にtoken を消費しない限り、費用はそんなに発生しないと思います。EC2 でホスティングしてる場合は、EC2 の起動のコストとネットワークのコストが発生するので、個人で使用している場合は、絶対に停止or 削除しましょう!
前に使ったやつを残したいということであれば、AMI とsnapshot を取得しておき、次に使えるようにしておきましょう。EC2 が常時起動よりかはコストは大分ましになりますので、そのやり方で残してみてください。