どうもこんにちは。
今回は、Amazon BedrockのAPIを使用して、Jupyter Notebook(SageMakerノートブックインスタンス)のコードを解説させてみました。
使用したモデル
新しいClaude3を使用したかったのですが、東京リージョンでは7月から使えるようなので、今回は我慢します。
なので、Claude2.1を使用します。
AWSコンソールのAmazon Bedrock > モデルアクセス
のページからアクセスをリクエストしておきましょう。
IAMポリシーについて
今回は、SageMakerノートブックインスタンスからBedrockへアクセスする必要があるので、ノートブックインスタンスに紐づいているIAMロール > ポリシー
を変更する必要があります。
紐づいているポリシーにBedrockのInvokeModel
アクションを許可すればOKです。
手順
1. SageMakerノートブックインスタンス内で適当にコードを書く
本当に適当でいいです。自分は機械学習を行なっていたので、それを使用しました。
とりあえず、今回は以下のコードを読ませるとしましょう。
print("test")
2. 必要なライブラリをインストール
ノートブックのコードを読ませるためのライブラリをインストールします。
# ノートブックを読ませることができるライブラリ
!pip install nbformat
import nbformat
# Bedrockで使用するライブラリ
import boto3
import json
3. ノートブックを読ませるための関数を記述
def get_notebook_code(notebook_path):
with open(notebook_path, 'r', encoding='utf-8') as f:
notebook = nbformat.read(f, as_version=4)
code_cells = [cell['source'] for cell in notebook['cells'] if cell['cell_type'] == 'code']
return '\n\n'.join(code_cells)
4. ノートブックを読ませて変数に保存
notebook_path = 'test_notebook.ipynb'
code = get_notebook_code(notebook_path)
5. Bedrockクライアントを作成
client = boto3.client('bedrock-runtime')
6. プロンプトを作成
prompt_message = f'あなたはPythonコードのスペシャリストです。以下にpythonのコードを示しますので、何を行なっているコードなのか分かりやすく教えてください。\n\n{code}'
body = json.dumps({
"prompt": f'\n\nHuman:{prompt_message}\n\nAssistant:',
"max_tokens_to_sample": 300,
"temperature": 0.1,
"top_p": 0.9,
})
7. 必要な情報を定義して解説実行!
modelId = 'anthropic.claude-v2:1'
accept = 'application/json'
contentType = 'application/json'
response = client.invoke_model(body=body, modelId=modelId, accept=accept, contentType=contentType)
response_body = json.loads(response.get('body').read())
print(response_body.get('completion'))
ちょっと時間かかるので、気長に待っているとログ出力されます。
はい、こちらのPythonコードは非常にシンプルな処理を行っています。
print("test")
この1行のコードは、「test」という文字列を出力するだけの処理です。
print関数は、括弧内のオブジェクトを標準出力(通常はコンソールやターミナル)に出力する組み込み関数です。ここでは「test」という文字列オブジェクトをprint関数に渡しているため、「test」と出力されます。
つまり、このコードはコンソールに「test」と表示するだけの簡単な処理を行うサンプル的なコードだと考えられます。
プログラミングを学習する際に、print関数を使って文字列などを出力し、処理の動作確認を行うことが多いです。そのような意味で、典型的な学習用のサンプルコードだと思います。
以上
インターンシップ募集中!
弊社では、この夏、2種類のインターンシップを行います!
対象は、26,27,28卒の大学生の方です。
1day 機械学習体験インターンシップ
日程: 7/17(水)、7/31(水)、8/6(火) いずれか選択
時間: 13:00 ~ 17:30
5days Webアプリ開発体験インターンシップ
日程: 8/20(火)、21(水)、22(木)、26(月)、27(火)
時間: 10:00 ~ 18:00
参加をご希望の方は、internship@pdc-ds.com
までご連絡ください!