はじめに
Amazon Bedrockとは、生成AIの基盤モデルが利用できる、AWSのサービスです。
本記事では、VSCodeを用いて、Jupyter NotebookでBedrockが提供するLLMを呼び出します。
割と初心者向けです。
前提条件
- AWSのアカウントを作成済み
- 以下がインストール済み
- AWS CLI
- python 3系
- VSCode
Bedrockによる生成AIの利用には、料金が発生します。詳しくはこちら。
1. IAMユーザーに許可を追加
本記事の手順を行うために、Bedrockへのアクセス権限を持ったIAMユーザーが必要です。
AWSマネジメントコンソールなどで、任意のIAMユーザーにAmazonBedrockFullAccess
というポリシーをアタッチします。(ユーザーがない場合は作成して下さい。)

2. AWSの認証情報を設定
IAMユーザーの認証情報を、ローカルの環境に設定します。既に設定済みの場合は3.の手順へ。
まず、IAMユーザーのアクセスキーを作成します。
次に、以下のコマンドで認証情報を設定します。
aws configure
-
公式ドキュメントにあるように、ダイアログで先程作成したアクセスキーの値を入力します
- リージョンや出力フォーマットの設定値はお好みでどうぞ
-
--profile
オプションでプロファイル名を指定して設定できます(指定しない場合はdefault
) - 設定ファイルが、
~/.aws/
またはC:\Users\USERNAME\.aws\
フォルダ内に作成されます
3. 基盤モデルへのアクセスを有効化
Bedrockでは、使用するモデルへのアクセスを予め有効化しておく必要があります。
-
マネジメントコンソールの「Amazon Bedrock」を開く1
-
サイドメニューから「モデルアクセス」を選択
-
有効化したいモデルにチェックを入れて、ページ下部の「次へ」ボタンを押す
- 今回はAmazonの"Titan Text G1 - Express"を選択します2
リージョンによって選択できるモデルの種類が異なります
- 今回はAmazonの"Titan Text G1 - Express"を選択します2
-
確認画面で「送信」ボタンを押す
送信されたリクエストが通ると、モデルの「アクセスのステータス」が「アクセスが付与されました」になり、有効化が確認できます。
4. 実行ファイルの作成と環境構築
では、コードを実装するJupyter Notebookファイルの作成と、実行に必要な環境の設定をVSCodeで行います。
ファイルの作成
適当なフォルダの配下に、Notebookファイルを作成します。
mkdir bedrock
cd bedrock
touch sample.ipynb
上記のフォルダをVSCodeで開きます。
VSCodeの拡張機能のインストール
必要なVSCodeの拡張機能をインストールしましょう。
仮想環境の作成
Jupyter Notebookのコードを実行するには、Jupyterカーネルが必要です。今回は、現在のワークスペースにPythonの仮想環境を作成し、それをカーネルとして選択します。
- Notebookファイルの右上にある「カーネルの選択」を押す
- 表示されたポップアップで、次のように選択する
- すると、ローカルにインストールされているPythonの一覧が表示されるので、使用するバージョンのPythonを選択する
以上の手順が終わると、ワークスペースの中に.venv
フォルダが作成され、その仮想環境がNotebookファイルのカーネルとして選択されています。
この方法ではワークスペースごとに仮想環境が用意されるため、プロジェクトごとに環境を分けることができます。
これで、Jupyter Notebookファイルを実行する準備が整いました。
5. LLMモデルを呼び出すコードの実装
上記手順で作成したNotebookファイルに、SDKを用いてBedrockのLLMを呼び出すコードを実装していきます。
まず、最初のセルを追加してSDK用のライブラリをインストールします。
%pip install boto3
以下のコードで、BedrockのAPIを呼び出す用のクライアントを作成します。
import boto3
bedrock_client = boto3.client('bedrock-runtime')
実行すると、AWSのデフォルトのプロファイルのリージョン設定が読み込まれます。
設定に失敗していると、NoRegionError
もしくは、InvalidRegionError
になります
デフォルト以外のプロファイルを指定したい場合
環境変数AWS_PROFILE
に、プロファイル名を設定する必要があります。
Notebookファイルに環境変数を設定するには、pythonライブラリのpython-dotenvを使うのが良いでしょう。
-
.env
ファイルをルートフォルダに作成.envAWS_PROFILE=your-profile
-
Notebookファイルでライブラリのインストール
sample.ipynb%pip install python-dotenv
-
コード内で
.env
ファイルを読み込むsample.ipynbimport os %load_ext dotenv %dotenv # 環境変数を表示 print(os.environ.get('AWS_PROFILE'))
-
上記コードの後にクライアントを作成すれば、自動的に環境変数が読まれ、指定したプロファイルの情報が利用される
もちろん、セル内で直接環境変数を指定してもよい
続いて、以下がBedrockのモデルの呼び出しに必要な引数の設定です。input_text
がLLMに送られるユーザーの入力になります。
import json
input_text = """
AWSのSDKとは何ですか?
"""
body = json.dumps({
"inputText": input_text,
"textGenerationConfig": {
"maxTokenCount": 8192,
"stopSequences": [],
"temperature": 0,
"topP": 1
}
})
modelId = 'amazon.titan-text-express-v1'
accept = 'application/json'
contentType = 'application/json'
そして、invoke_model
メソッドを用いてモデルに回答を生成させましょう。
response = bedrock_client.invoke_model(
body = body,
modelId = modelId,
accept = accept,
contentType = contentType
)
AWSの認証情報の設定が間違っていると、上のコードの実行が失敗します。
成功したら、LLMモデルが生成した回答を表示してみましょう。
response_body = json.loads(response.get('body').read())
outputText = response_body.get('results')[0].get('outputText')
print(outputText)
AWSのSDKとは、AWSのサービスを簡単に利用できるようにするためのソフトウェア開発キットです。AWSのSDKには、さまざまな言語に対応したライブラリやツールが含まれており、これらのライブラリやツールを使用することで、AWSのサービスを簡単に利用することができます。AWSのSDKは、AWSのサービスをより効率的に利用するために開発されたものであり、開発者にとって非常に便利なツールです。
Bedrockのモデルを呼び出すことができました。
おわり
本記事では、VSCodeを使ってJupyter Notebookの環境を作成し、Bedrockのモデルを呼び出すコードを実行してみました。
ぜひ入力する質問を変えてみたりして、生成AIで遊んでみて下さい。
参考リンク