BedRock - Claud3 を試そう
(更新日時 )
-->
Amazon BedrockでAnthropic Claude3が2月末に使えるようなったのでちょっと試してみました。
画像からコードを生成する
Claud3は画像解析に対応しているので、よくあるAWSの配置図(あそこではあれをアーキテクチャー図と呼んでるが)から、図と同等のAWS CDKのTypeScriptを生成させるコマンドを作ってみました。
サンプルなので、以下は割り切っています。
- 画像はPNG形式決め打ち。
- 認証情報はソースに埋め込み -> (2024/03/8 .envファイルから読むように修正しました)
- エラー処理は端折っている
以下、サンプルです。
APIのセットアップと呼び出し部分さえ作れば、あとは日本語で「お願い」を書くだけなのであんまり意味はありませんが・・・
#!/usr/bin/env python # -*- coding: utf-8 -*- # AWS のアーキテクチャー図から CDKのTypeScript定義を生成する import boto3 import json import base64 import sys import os from dotenv import load_dotenv import click # コマンドライン引数の設定 @click.command() @click.option('--debug','-D',is_flag=True, help='Debug mode') @click.option('--file', '-f',prompt='AWS Architecture Image Filename',help='Input Image Filename') def generate(debug,file): """This tool generate Typescript from AWS figure""" # .envからAPIキーを取得する。 # .envファイルには、DEEPL_API_KEY="APIキー"のように記載する。 load_dotenv() access_key = os.environ["AWS_ACCESS_KEY"] secret_key = os.environ["AWS_SECRET_KEY"] image = open(file, "rb").read() b64 = base64.b64encode(image).decode("utf-8") # 指定可能なリージョンはバージニア北部(us-east-1)またはオレゴン(us-west-2) # デフォルトリージョンで良い場合はリージョン指定省略可 # サンプルのため認証情報が直接書き込まれています。適切な方法で取得するようにしてください。 bedrock = boto3.client('bedrock-runtime', aws_access_key_id = access_key, aws_secret_access_key = secret_key, region_name = "us-west-2") body = json.dumps( { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1000, "messages": [ { "role": "user", "content": [ { "type": "image", "source": { "type": "base64", "media_type": "image/png", "data": b64 } }, { "type": "text", "text": "画像の構成を実現するAWS CDKのコードをTypeScriptで書いて提示してください。" } ] } ] } ) modelId = 'anthropic.claude-3-sonnet-20240229-v1:0' accept = 'application/json' contentType = 'application/json' response = bedrock.invoke_model(body=body, modelId=modelId, accept=accept, contentType=contentType) response_body = json.loads(response.get('body').read()) answer = response_body["content"][0]["text"] print(answer) if __name__ == '__main__': generate()
実行してみた
以下が実行してみた様子です。
OpenAIよりも進んでいるらしいので、何かもっと色々出来そうです。
(2024-03-18追記) サンプルコード週を作ってみました。
関連記事
- 2024-09-21 18:13 Amazon BedRock要らなくね?
- 2024-02-09 04:58 AI Commitsにコミットメッセージを書かせる
- 2023-09-10 04:11 NeoVimからDeepLを呼び出す
- 2023-06-12 20:20 OpenAI Whisper APIを試す
- 2023-06-04 11:16 OpenAIとStreamlitを活用したチャットBotを作ってみた