LoginSignup
1
0
生成AIに関する記事を書こう!
Qiita Engineer Festa20242024年7月17日まで開催中!

【生成AI】Amazon Bedrockを使用してJupyterNotebookのコードを解説させてみた

Last updated at Posted at 2024-06-27

どうもこんにちは。

今回は、Amazon BedrockのAPIを使用して、Jupyter Notebook(SageMakerノートブックインスタンス)のコードを解説させてみました。

使用したモデル

新しいClaude3を使用したかったのですが、東京リージョンでは7月から使えるようなので、今回は我慢します。
なので、Claude2.1を使用します。

AWSコンソールのAmazon Bedrock > モデルアクセスのページからアクセスをリクエストしておきましょう。

スクリーンショット 2024-06-26 19.02.55.png

IAMポリシーについて

今回は、SageMakerノートブックインスタンスからBedrockへアクセスする必要があるので、ノートブックインスタンスに紐づいているIAMロール > ポリシーを変更する必要があります。

紐づいているポリシーにBedrockのInvokeModelアクションを許可すればOKです。

スクリーンショット 2024-06-26 19.01.56.png

手順

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までご連絡ください!

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