Bedrock Claude Chatを使ってみよう!
こんにちは。
小学生の子供二人が夏休みまっただ中で、学童に通わせているために毎日弁当を作っている、かめでございます。
子供が幼稚園の時にも毎日弁当を作っていたのですが、子供が大きくなっており食べる量も変わってきているので、量の調整がなかなか難しいですね。
今回は、私が最近業務で関わっている生成AIに関する内容になります。
Amazon Bedrockについて
まずAmazon Bedrockについて説明させて頂きます。
AWSから提供される生成AIサービスのとして、Bedrockがあります。BedrockといえばClaudeシリーズが有名で、最近ではClaude3.5 Sonnetがリリースされました。このモデルは性能と速さを兼ね備えており、現在のBedrockの中で最も使いやすいモデルとしておすすめです。
Bedrock Claude Chatとは
AWSより公式でOSSとして提供されている、Bedrock Claudeシリーズを利用したチャットシステムです。これを使うことで、AWS上に閉じた状態でプライベートなチャットシステムを構築することができます。また、AWSのサーバレス技術を中心に構成されており、ミニマムコストで始めることができます。
Bedrock Claude Chatは、基本的な会話機能に加え、ボットのパーソナライズ、管理者ダッシュボード、LLMを活用したエージェント機能、RAG(検索拡張生成)機能などが含まれています。認証機構としてCognitoのOIDCもサポートしており、既に利用されているID基盤と連携することも簡単です。
Bedrock Claude Chatのデプロイ
最初に、利用するAWSアカウントでBedrockのモデルを有効化する必要が有ります。AWSマネージドコンソールにログインし、us-east-1 のBedrockモデルアクセス の画面から、以下のモデルの有効化を行ってください。
- Anthropic
- Claude 3 Haiku
- Claude 3 Sonnet
- Claude 3.5 Sonnet
- Cohere
- Embed Multilingual
まずはGitHubよりレポジトリをクローンします。
git clone https://github.com/aws-samples/bedrock-claude-chat.git
cd bedrock-claude-chat
npm ci
cdkのCLIをインストールします。
npm i -g aws-cdk
CDKのBootstrapを実行します。<account id>
の部分は自分のアカウントIDに置き換えてください。
cdk bootstrap aws://<account id>/us-east-1
お試しだけなら不要ですが、cdk/cdk.json
を以下の修正を行う事によりIP制限をかけておくことをお勧めします。
"allowedIpV4AddressRanges": ["0.0.0.0/1", "128.0.0.0/1", "自分のパブリックIP/32"],
デフォルトではus-east-1に設定されており、Claude3.5 Sonnetを利用することができますが、もしClaude3 Opusを利用したい場合はcdk/cdk.json
の以下の行をus-west-2に変えましょう。その場合、先ほど説明したBedrockモデルアクセスによるモデルの有効化は、us-west-2リージョンで行ってください。
"bedrockRegion": "us-west-2",
設定が終わったら、以下のコマンドでデプロイを行います。
cdk deploy --require-approval never --all
デプロイが終わったら、AWS マネージドコンソールよりCloudFrontを開き、ドメイン名に表示されている文字列をブラウザのURLに入力して移動すれば、Bedrock Claude Chatのログイン画面が表示されます。
ここで「アカウントを作る」タブよりアカウントを作成し、ログインすればいよいよ利用することが可能になります。何か適当に質問してみると、回答が返ってくるはずです。
ボットを利用してみる
Bedrock Claude Chatにおけるボット機能とは、一般的に生成AIにおけるエージェント機能、RAG機能が合わさったもののようなイメージです。
ボットを自分で好きなように作成し、カスタマイズを行う事で、自分のタスクに合った形で生成AIをチューニングすることが出来ます。
RAG機能を利用してみよう
Bedrock Claude Chatでは、ボット作成時にPDF等のドキュメントを登録しておくことで、そのドキュメントをナレッジとして利用するエージェントを構築することが出来ます。具体的に使ってみましょう。
ボットコンソールからボットを新規作成ボタンを押します。名前は今回は「テストボット」賭します。
例では、昔のAWSサミットの講演資料のPDFを登録してみます。こちらのPDFでは「AWSクラウドマイグレーション成功への道」というタイトルで、マイグレーション成功のためのAWSにおけるノウハウや関連プログラムが紹介されています。このPDFをダウンロードし、ファイルの欄にドラッグすることで登録ができます。
いったんこの状態でボットを作成してみましょう。ボット一覧画面で状態が「同期待ち」から「同期完了」に変わったら準備完了です。ボットを選択し、質問してみましょう。
試しに、以下の質問をしてみましょう。
クラウドマイグレーションにおける課題は何?
すると、以下の回答が返ってきました。
クラウドマイグレーションにおいては、いくつかの主要な課題があります:
技術スキルの不足: 多くの企業では、社内にクラウド活用の技術スキルが不足しているか、習得が進んでいません[1]
。これにより、システムインテグレーターに全面的に依存せざるを得ない状況が生じています。新技術への不安: 新しいものへの不安感から、クラウドの利用が進まないケースがあります[1]
。これは組織全体でクラウド技術の理解と受け入れが進んでいないことを示しています。プロジェクト推進の困難さ: 全社的なクラウド移行プロジェクトを推進する相談役や専門家が不在であることが多く、これがプロジェクトの進行を妨げる要因となっています[1]
。組織的な取り組みの不足: クラウド推進組織(Cloud Center of Excellence, CCoE)の確立や、クラウドコアメンバーの育成が十分に行われていないケースが多いです[1]
。経験不足: クラウド移行の経験やノウハウが不足していることも大きな課題です。パイロット移行の実施を通じて、成功体験を得ることが重要です[1]
。これらの課題に対処するためには、組織的な取り組み、人材育成、経験の蓄積が重要となります。AWSのITトランスフォーメーションパッケージ2.0などのサポートプログラムを活用することで、これらの課題に効果的に対応することができます[1]
[2]
。
回答はアップロードしたPDFの内容に基づいており、引用元のリンクも確認出来ると思います。
ボットの振る舞いをカスタマイズしてみよう
ボット作成時に「インストラクション」という欄が合ったと思います。こちらのインストラクションでは、予めボットに対する指示を与えることが出来ます。例えば、先ほどのボットを更新してインストラクションに
ユーザーからのリクエストに関西弁で回答してください。
と入力してみましょう。そうすると、先ほどと同じ「クラウドマイグレーションにおける課題は何?」という質問に対して以下のように、関西弁で回答が返ってくるようになります。
おおきに!クラウドマイグレーションの課題についてお答えさせていただきますわ。
まずはんな、技術スキルの問題やねん。社内にクラウド活用の技術スキルがないとか、習得が進まへんのが大きな課題やで[1]
。システムインテグレーターに丸投げしてまうケースも多いんやけど、それやとあかんのや。次に、新しいもんへの不安感があるんよ。クラウドの利用がなかなか進まへん理由の一つやねん[1]
。せやけど、これらの課題を乗り越えるためにAWSさんが「ITトランスフォーメーションパッケージ2.0」っちゅうプログラムを用意してはるんや[2]
。このプログラムでは、クラウド推進組織の確立やクラウドコアメンバーの育成、パイロット移行の実施なんかをサポートしてくれはるんやで[1]
。最後に、全社的なクラウド移行プロジェクトの相談役がおらんのも課題やねん。でもな、AWSのCustomer Solutions Managerさんが移行プロジェクトの推進をサポートしてくれはるから安心やで[1]
。要するに、技術スキルの獲得と不安感の解消、そして適切なサポートを得ることが大事なんや。これらをうまくやっていけば、クラウドマイグレーションもスムーズに進むはずやで!
ツールを使ってみよう
ボットはエージェント機能が組み込まれています。エージェント機能では、「ツール」(AIシステムが特定のタスクを実行したり情報にアクセスしたりするために使用する機能や能力のこと)を利用することができ、Bedrock Claude Chatではデフォルトでインターネット検索ツールが組み込まれています。
ちなみに生成AIは、モデルを作成した時点で入力した情報しか持っていないため、最新の情報に関して質問しても正しい回答が得られません。そこで、インターネット検索ツールを生成AIに組み合わせて、生成AIを利用しつつも最新の情報を得ると言った使い方はよくされています。
このインターネット検索ツールを使ってみましょう。再度新しいボットを作成し、今度はエージェントの項目内にある「インターネット検索」にチェックを入れてください。
このボットに対して以下の質問をなげてみます。
今日の時点でのパリ五輪日本代表の獲得金メダル数はいくつ?
丁度今パリ五輪が開催中なので、最新のメダル数が答えることができれば正解ですね。以下の回答が得られました。調べたところ、金銀銅メダル全ての数が合ってましたので、インターネット検索ツールによって最新の情報を取得することが出来ていることが確認出来ました。
今日の時点(2024年8月9日現在)で、パリオリンピックにおける日本代表の獲得金メダル数は13個です。この情報は最新のニュース記事から確認できました。日本は金メダル13個、銀メダル7個、銅メダル13個の合計33個のメダルを獲得しており、メダルの総数では6位、金メダルの数ではイギリスと韓国と並んで5位となっています。パリオリンピックはまだ終了していないため、この数字は今後さらに変動する可能性があります。
調べたところ、その時点での金銀銅メダル全ての数が合ってましたので、インターネット検索ツールによって最新の情報を取得することが出来ていることが確認出来ました。
まとめ
以上、簡単でしたがBedrock Claude Chatの紹介になります。
Bedrock Claude ChatはAWSアカウントさえ持っていれば低価格でプライベートなAIチャットボット環境が構築出来てしまうので、まず社内で小さく生成AIの利用を始めるのにうってつけです。
こちらはOSSにて公開されているプロジェクトであるため、カスタマイズすることも可能です。DWSとしてもカスタマイズして使っていますが、今後そちらについてもご紹介しようと思います。