⛳
Amazon Bedrock実装①:Python3(boto3)で実装してみる
Bedrock勉強中
Bedrockの使い方の勉強メモ
事前準備
BedrockのModel Accessは設定済みとします。ここでは、Claudeを利用可能にしました。
構成
以下の構成でBedrockの動作検証しました。
Windows(Python)環境のセットアップ
Bedrockを使えるように環境をセットアップする
モジュールの準備
Pythonスクリプトは以下のバージョンを使用
PS C:\Users\user01> python --version
Python 3.10.11
pipバージョンを最新にしておく
python.exe -m pip install --upgrade pip
boto3をインストールする
pip install boto3
AWS CLIのプロファイル作成
今回は、バージニアリージョン(us-east-1)のBedrockを使うため、バージニアリージョン指定のプロファイルを作成する。
(AwsLLM) PS C:\Users\user01\repo\AWS-Bedrock> aws configure --profile useast1
AWS Access Key ID [None]: AKIAYYVS2BMXKEKWQPNL
AWS Secret Access Key [None]: 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
Default region name [None]: us-east-1
Default output format [None]:
仮想環境の作成
python -m venv C:/Users/user01/.venv/AwsLLM
仮想環境の有効化
PS C:\Users\user01> .\.venv\AwsLLM\Scripts\Activate.ps1
(AwsLLM) PS C:\Users\user01>
Bedrockに必要なモジュールをインストール
pip install --no-build-isolation --force-reinstall `
"boto3>=1.28.57" `
"awscli>=1.29.57" `
"botocore>=1.31.57" `
"langchain==0.0.320"
Pythonスクリプトの準備
Bedrockを実行し結果を出力するPython3スクリプト
test.py
import boto3
import json
# Boto3 セッションの作成
session = boto3.Session(profile_name='useast1')
# Bedrock クライアントの作成
bedrock_client = session.client(service_name='bedrock')
bedrock_runtime_client = session.client(service_name='bedrock-runtime')
# 利用可能な基盤モデル一覧の表示
foundation_models = bedrock_client.list_foundation_models()
print("Available foundation models:")
for model in foundation_models.get("modelSummaries", []):
print(f"Model ID: {model['modelId']}, Model Name: {model['modelName']}")
# モデルの同期的呼び出し(Anthropic Claude-v2 の場合)
prompt = "Human:VPCをデプロイするCDK v2 TypeScriptを書いて?\nAssistant:"
body = json.dumps({
"prompt": prompt,
"max_tokens_to_sample": 300,
"temperature": 0.1,
"top_k": 1,
"stop_sequences": ["\n\nHuman"]
})
model_id = "anthropic.claude-v2"
accept = "application/json"
content_type = "application/json"
response = bedrock_runtime_client.invoke_model(
body=body,
modelId=model_id,
accept=accept,
contentType=content_type
)
response_body = json.loads(response.get('body').read())
print("Generated completion:")
print(response_body.get('completion'))
動作検証
Pythonスクリプトの実行結果
(AwsLLM) PS C:\Users\user01\repo\AWS-Bedrock> python test.py
Generated completion:
はい、VPCをデプロイするCDK v2のTypeScriptコードを書くことができます。
簡単な例は以下のようになります。
"""typescript
import { Vpc, SubnetType } from 'aws-cdk-lib/aws-ec2';
import { Construct } from 'constructs';
export class MyStack extends Stack {
constructor(scope: Construct, id: string) {
super(scope, id);
const vpc = new Vpc(this, 'MyVpc', {
cidr: '10.0.0.0/16',
subnetConfiguration: [
{
name: 'public',
subnetType: SubnetType.PUBLIC,
cidrMask: 24
},
{
name: 'private',
subnetType: SubnetType.PRIVATE,
cidrMask: 24
}
]
});
}
}
"""
これはVPCとpublic、privateの2つのサブネットを作成します。
CIDRブロックやサブネットの数などを変更することで、必要な構成のVPCを定義できます。
(AwsLLM) PS C:\Users\user01\repo\AWS-Bedrock>
今回はここまで、次はこれをDockerで実装してみる。
===
- Bedrock実装関連の記事
- Amazon Bedrock実装①:Python3(boto3)で実装してみる
- Amazon Bedrock実装②:Docker on Cloud9で実装してみる
- Webサーバーを立てずにlambdaを実行するhtml+JavaScript on Cloud9
- Amazon Bedrock実装③:Lambda(Python3)で実装してみる
- Amazon Bedrock実装④:Cloud9環境のhtmlプレビューでBedrockを使えるようにする
Discussion