2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon Bedrockをいろいろお試し(Step Functionsの連携・ナレッジベースの利用)

Last updated at Posted at 2024-06-19

アジェンダ

1. 概要
2. 検証前提
3. Bedrockの基本操作検証
4. Step Functionsの連携検証
5. ナレッジベースの利用検証
6. 所感


1. 概要

Amazon Bedrock(以下Bedrock)とAWS Step Functions(以下Step Functions)との連携ができるようになりました。(2023/11)
また、Bedrock内で、Anthropic の Claude 3 Haiku 基盤モデルがナレッジベースで一般利用可能となりました。(2024/4)

本記事ではBedrockの基本的な使用方法や、
Step Functionsの連携方法、ナレッジベースの使用方法を検証していきます。


Bedrockとは

Amazon Bedrock は、主要な AI スタートアップや Amazon が提供する高パフォーマンスな基盤モデル (FM) を、統合 API を通じて利用できるようにするフルマネージド型サービスです。さまざまな基盤モデルから選択して、ユースケースに最適なモデルを見つけることができます。Amazon Bedrock には、セキュリティ、プライバシー、責任のある AI を備えた生成 AI アプリケーションを構築するためのさまざまな機能も用意されています。Amazon Bedrock を使用すると、ユースケースに適した最善の基盤モデルを簡単に試して評価したり、ファインチューニングや検索拡張生成 (RAG) などの手法を使用して基盤モデルをデータでプライベートにカスタマイズしたり、エンタープライズシステムやデータソースを使用してタスクを実行するエージェントを構築したりできます。
Amazon Bedrock のサーバーレスエクスペリエンスを使用すると、インフラストラクチャを管理することなく、すばやく開始し、独自のデータを使用して基盤モデルをプライベートにカスタマイズし、 AWS ツールを使用して簡単かつ安全に統合してアプリケーションにデプロイできます。
AWS公式サイトから引用

簡単にまとめます。
・Amazon Bedrockとは、AIが使えるサービス
・ユースケースに合わせて複数の選択肢から最適な基盤モデルを選択できる
(日本語未対応モデルもあり)
・サーバーレスを利用することにより簡単に使用を開始できる
・細かい設定や拡張機能の使用も可能で、自由にカスタマイズできる
・AWSの他のサービスとの連携も可能


AWS Step Functionsとは

AWS Step Functions は、分散アプリケーションの構築、プロセスの自動化、マイクロサービスのオーケストレーション、データおよび機械学習 (ML) パイプラインの作成に役立つビジュアルワークフローサービスです。
AWS公式サイトから引用

今回の検証にあたり触ってみた部分も含めてまとめると、以下の通りです。
・AWS Step FunctionsからはLambda等のAWSサービスを呼び出してタスクを実行できる
・独自のワークフローをゼロから作成するだけではなく、用意されたテンプレートも使用できるため、GUIベースで簡単にワークフローを作成できる
・2023年11月の公式アナウンスで、AWS Step FunctionsからAmazon Bedrockを実行することでワークフロー機能の中にAI機能を組み込むことが可能になったことが発表された


Amazon Bedrock のナレッジベースとは

Amazon Bedrock のナレッジベースでは、データソースを情報のリポジトリにまとめることができます。ナレッジベースを使用すると、検索拡張生成 (RAG) を活用したアプリケーションを簡単に構築できます。RAG は、データソースから情報を取得することでモデルレスポンスの生成を強化する手法です。
ナレッジベースは、ユーザークエリへの回答やドキュメントの分析だけでなく、プロンプトにコンテキストを提供することで基盤モデルに提供されるプロンプトを強化するためにも使用できます。ナレッジベースのレスポンスには引用も付いているため、ユーザーはレスポンスの基になっているテキストを正確に調べることで詳細な情報を見つけたり、そのレスポンスが意味のあるもので事実に基づく正確なものかどうかを確認したりできます。
AWS公式サイトから引用

簡単にまとめます。
・ナレッジベースを使用することで、LLMとRAGを組み合わせてより正確な回答をAIが返せるようになる
・コンテキスト(外部情報や追加の文脈)も追加でき、さらに正確な回答をAIが返せるようになる
・AIの回答には引用元が含まれているため、回答の基になっている情報にアクセスすることで正確性を確認できる

詳しくはこの後の検証で動作を確認します。


2. 検証前提

・AWSにアクセスできる環境があること
 ※ユーザのセットアップなどは省略
・使用リージョン:米国西部 (オレゴン)
 ※Amazon BedrockナレッジベースのClaude 3 Haikuモデルは、
  米国東部 (バージニア北部) および米国西部 (オレゴン)のみ利用可能 (2024/6現在)


3. Bedrockの基本操作検証

①AWSマネジメントコンソールからBedrockにアクセス
image.png


②モデルアクセスページに移動して、「モデルアクセルを管理」
image.png


③使用したいモデルを選択して「モデルアクセスをリクエスト」
 ※リクエストから許可まで時間がかかる場合があります。
 ※リージョンによって対応しているモデルが異なります。
image.png


④モデルアクセスが許可されたら、「使用を開始」
image.png

image.png


⑤使いたいプレイグランウンドを選択して「モデルを選択」
 ※今回はチャットを使用
image.png


⑥許可されたモデルの中から使用するモデルを選択して「適用」
image.png


⑦プロンプトを入力したり、設定を変更してLLMの利用ができる
 ※設定内容はモデルによって異なるため、公式サイトを参照して検証してみると面白いと思います。
image.png


参考)札幌 名古屋間の移動手段を聞いてみました。
image.png


⑧CloudTrailに利用状況は記録される
image.png

image.png

JSON形式のイベントレコードを確認すると、以下が記載されていました。
・実行日時
・実行者(IAMユーザー情報)
・呼び出しモデル


⑨CloudWatchへのログ記録をONにする
 ※Bedrockの設定から指定でき、出力先としてはCloudWatchとS3が使用可能
image.png


⑩CloudWatchから記録されたログを確認
image.png

JSON形式のメッセージを確認すると、以下が記載されていました。
・実行日時
・実行者(IAMユーザー情報)
・呼び出しモデル
・プロンプト内容
・回答内容


4. Step Functionsの連携検証

①マネジメントコンソールからAWS Step Functionsにアクセスして「今すぐ始める」
image.png


②「テンプレートを選択」
 ※「自分で作成する」を選択すると、ワークフローを用途に合わせてカスタムメイクできる
image.png


③テンプレートの中から「Bedrockでプロンプト…」を選択して「次へ」
image.png


参考)プロンプトチェイニングとは何か、Bedrockの基本操作方法を用いて聞いてみました。
image.png


④「デモの実行」を選択して「テンプレートの使用」

 このテンプレートでは、3つのプロンプトを連続で実行して、
 前のプロンプトの回答の情報をもとに次のプロンプト回答を生成するフローになっています。
image.png


⑤テンプレート通りに3つのプロンプトからなるワークフローが作成されたので、「デプロイと実行」
image.png


⑥プロンプトを入力して「実行を開始」
image.png


⑦実行に成功したので結果を確認
image.png

image.png


⑧テンプレートの中身を確認

⑧-1 アクション「Invoke Invoke model with first prompt」
 設定:使用するモデルや、プロンプトをパラメータとして渡すためのJSONを指定
image.png

 入力:前のステップの出力を入力値に組み込む場合に設定(今回は設定なし)
image.png

 出力:出力結果のハンドリング方法を指定
   (今回はプロンプトの回答を戻り値として出力する設定がされている)
image.png

 エラー処理:エラーハンドリング方法を指定(今回は設定なし)
image.png


⑧-2 フロー「Add first result to conversation history」
 設定:パスステートのため特に設定なし
image.png

 入力:次のステップに入力値を渡すための変換方法を設定
image.png

 出力:変換された入力値を次のステップに渡す方法を設定
image.png


⑧-3 アクション「Invoke model with second prompt」
 ⑧-1とほぼ同一のため省略

⑧-4 フロー「Add second result to conversation history」
 ⑧-2とほぼ同一のため省略

⑧-5 アクション「Invoke model with third prompt」
 ⑧-1とほぼ同一のため省略


5. ナレッジベースの利用検証

①ナレッジベースとするファイルをS3に格納
 ※今回は労働基準法全文を格納
image.png


②Bedrock内で「ナレッジベースを作成」
ナレッジベース作成.png


③ナレッジベースの詳細を入力し「次へ」を押下
 ※今回はIAMロールを新規作成
ナレッジベースの詳細を入力.png


④データソースとして①のS3のURIを指定して「次へ」
データソースを設定.png


⑤埋め込みモデルとベクトルデータベースの選択
 ※埋め込みモデル:データソースから取得した情報を変換する際に使用されるモデル
 ※ベクトルデータベース:埋め込みを保存、更新、管理するためのベクトルストア
 ※ベクトルデータベースで「新しいベクトルストアをクイック作成」とすると、
  Amazon OpenSearch Serverlessの新規ドメインが作成され、別途料金が発生する

image.png


⑥内容を確認して「ナレッジベースを作成」
最終確認.png


⑦ナレッジベースをテストから「モデルを選択」
テスト.png


⑧モデルを選択して「適用」
 ※今回は2024年4月から一般利用可能となった、Claude 3 Haikuを選択
Haikuを選択.png


⑨ナレッジベースをテストから「データソースを同期」して①で格納したファイルを⑤で指定したベクトルストアに読み込み
同期.png


⑩実際にプロンプトを投げて回答を確認
 ⇒S3に格納した労働基準法全文から回答を生成し、引用元に遷移可能なリンクも回答に含まれる
実行.png


参考)Bedrockの基本操作方法を用いて同じプロンプトを投げてみます。
 ⇒回答に含まれる情報はほとんど同じ
 ⇒ナレッジベースを利用すると、情報源から引用されていてより正確な情報が得られる
image.png

今回は労働基準法を用いましたが、プロンプト実行者が所属する組織の規則等をナレッジベースに格納することで、プロンプト実行者の属性に合わせた回答が得られます。
これにより、LLMとRAGを効果的に掛け合わせることができ、回答の精度が上がります。


6. 所感

AWSのサービス全体的に見ても、AI関連に力を入れていることは感じます。
その一部として、Bedrockも徐々に機能が広がっており、Step Functionsで使えるテンプレートやアクションも増えてきています。
一方で、リージョンや日本語に対応しているモデルが限定的であるなど、まだ日本のユーザーが本格的に使うためには壁がありそうです。
検証してみて感じたことは、Bedrockに限らずAWS全般への知識がない人が触ってみるのはハードルが高い、ということです。
他のサービスと連携させるときはもちろんですが、Bedrockだけを利用するときも料金体系等、AWS関連で何かしら触ったことがある人でないとすぐに理解するのは難しいと思います。
すでにAWSのサービスを何かしらの用途で使っていて、それと連携したAI機能に興味があるという方は、検証として触ってみるのは面白いのではないでしょうか。


さいごに

株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください:

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?