3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

せっかくのGWなのでAmazon bedrockのハンズオンを行ってみた

Last updated at Posted at 2024-05-14

はじめに

文系ITエンジニアになって2年半がたったまだ駆け出しのAWSのBedrockをさわる記事です。
私は、AWS SAAまで持ってますが、業務ではEC2,RDSなど基本的なところだけ触ってるくらいの知識です。

今回は、 みのるんさん AWSの生成AI最新機能ハンズオン!BedrockのKnowledge BaseとAgentsに入門しよう を行ってみる。

※この方は6月末に本を出してしまうくらい生成AI関係について発信しているのでおすすめです。

前回は、このハンズオンだと 2. Knowledge BaseでRAGに挑戦! までだったから、そこからさらに一歩進んでみます。

作業概要

0.環境準備
1.まずはBedrockを使ってみよう!
2.Knowledge BaseでRAGに挑戦!
3.AgentsでコードやRAGをAIに使わせよう!

※詳細は、ぜひハンズオンを!!

0.環境準備

こちらは前回行っていたので、割愛します。IAMのユーザー作成や、Cloud9の作成については比較的簡単にできました。
特にIAMについては、個人開発だと触らないことがほとんど(もちろんAWSはrootユーザーでの通常運用を非推奨にしている)ので、実際にさわって学べるといいと思います。

※私も、会社で使わなかったら権限管理はしなかったと思います。

1. まずはBedrockを使ってみよう!

今回でてきた boto3 というライブラリにおどろかされました。

boto3 は、AWS SDK for Pythonのことで、ドキュメンテーションを確認するとEC2の起動から、S3のオブジェクトをとってくるところまでできるみたいです。

本旨とはずれますけど、マネコン上から毎回EC2起動したりS3さわったりするのももちろんいいですが、IaCにも挑戦してみたいです。

マネコンのチャット上からBedrockを使うときには、応答生成の長さ(返答の文字数制限)や可能性の高い結果に出力を制限したり、返答のランダム性?を決定できて、Pythonで行う際も細かく指定できるみたいなので、この辺りは用途に応じて設計が必要そうです。難易度的に、生成AIの概念確認と、Bedrockの公式ドキュメンテーションを読み込むことが必要ですね。

2. Knowledge BaseでRAGに挑戦!

こちらについても、2-3までは実際に行ったことがあるので、2-4からと思っていたのですが2点つまりました。

 
1.リージョン選択

なんどもバージニア北部リージョン(以下、バ北)で作成してって書いてあるのに、ほとんどを東京リージョンでつくってました、、。

5月3日から東京リージョン(ap-northeast-1)にナレッジベース機能が追加されていたみたいで、4月末に行った前回はなかったからナレッジベースがある=バ北と思ってたのに。
クラスメソッドさんの記事を参考

Cloud9についてもリージョン別で作成していると、ナレッジベースがないという下記のエラーがでたので改めてバ北で作り直ししたら成功。

botocore.errorfactory.ResourceNotFoundException: An error occurred (ResourceNotFoundException) when calling the RetrieveAndGenerate operation: Knowledge Base with id XXXXXXXXXX does not exist

リージョン管理は大切です。

 
2.モデルの選択について

ハンズオンの手順書には有効化してって書いているのに、Cohere の Embed Multilingal v3 を選択していたのですが、モデル管理で有効化していなかったので使用できずつまりました。
※「One or more data sources have not been synced.」はモデル管理から有効化すると「The system is syncing your data source. Wait for the sync to complete before starting next sync job.」とちゃんと同期してくれるようになります。それまではずっと同期ボタンを押しても「One or more data sources have not been synced.」のままです。
 
有効化していないモデルもナレッジベース作成時には選択できるので、注意するように覚えておきます。
あと、ちゃんと手順通りに行います。

メモ

S3バケットの費用を考えると、容量が少ないhtmlやjsonなど文字だけで構成される文書を参考にさせるのがいいみたいです。
実際に運用を考慮すると、

  • 文字だけの資料を用意する
  • 追記した文書を更新する周期(仕組み)をつくる
  • ドキュメントの更新者の権限管理
    などを考慮したいです。

運用はじめた会社さんなどでどのような構成をしているのかが気になります(EFSとか使えるのかな...?)。
※文字データの形式を指定すれば汎用性があがりそうです

理解が甘かった用語は後日改めて調べます。
・埋め込み専用モデルとは?
・OpenSerach Serverlessとは?

 
Cloud9について、環境作成時にタイムアウトを選択できるので30分など設定できるので、ブラウザを削除して接続オフして問題なさそう

3.AgentsでコードやRAGをAIに使わせよう!

こちらは、ハンズオン通りに行いました!
天気確認のAgentが作成できるのは面白かったです!

Lambda関数を久しぶりにつかったので、
少し手間取りましたがうまくいきました。

ここをどうやって転用できるかは、もっとさわってみます!

感想

みのるんさんも続々Qiitaの記事を出していただいているので追いかけつつ、他のかたのハンズオンも行ってみます🙇‍♂️
ありがとうございました。

※OpenSerach Serverlessを1週間放置して100ドル請求されたので、、、お片付け本当に大事です。。

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?