Skip to content

第3章 Amazon Bedrockによる生成AIの活用

3.1 Amazon Bedrockの基本概念とメリット

Amazon Bedrock(アマゾン・ベッドロック)は、世界中の有名なAI開発会社(Anthropic、Meta、Mistral AIなど)が作成したさまざまな超高性能AIモデルを、共通の接続口(API)を通して簡単に利用できるサーバーレスサービスです。

自分たちで巨大なAIを動かすための高性能なサーバーを購入して管理する必要がなく、インターネット経由でAIに文字を送信し、返答を受け取ることができます。また、セキュリティ対策が非常に厳格であり、AIに送信した質問内容や社内データが、外部のAIの学習用データとして勝手に再利用されることがありません。これにより、企業の機密情報を扱う場合でも、安心して高性能な生成AIをシステムに組み込むことができます。

3.2 boto3を使用したモデル呼び出しコード

PythonプログラムからAmazon Bedrockを利用するには、AWSが公式に提供しているライブラリである boto3 を使用します。

以下は、推奨されている最新の converse(会話用)APIを使用して、高性能AIモデルである「Anthropic Claude 3.5 Sonnet」を呼び出してテキストを生成させるためのPythonコード例です。

python
import boto3

# 1. Amazon Bedrock用のクライアント(通信窓口)を初期化します
# ※AWSのクレデンシャル(認証情報)が設定されている環境を前提とします
client = boto3.client(
    service_name="bedrock-runtime",
    region_name="us-east-1"  # Bedrockが利用可能な地域を指定します
)

# 2. 使用するAIモデルの識別番号(モデルID)を指定します
# ここではAnthropic社のClaude 3.5 Sonnetを指定しています
model_id = "anthropic.claude-3-5-sonnet-20240620-v1:0"

# 3. 送信するメッセージのリストを組み立てます
messages = [
    {
        "role": "user",
        "content": [{"text": "Amazon Bedrockのメリットを、中学生にもわかるように短く箇条書きで教えて。"}]
    }
]

try:
    # 4. モデルを呼び出して推論を実行します(Converse API)
    response = client.converse(
        modelId=model_id,
        messages=messages,
        inferenceConfig={
            "maxTokens": 500,     # 出力する最大のトークン数(文字量の目安)
            "temperature": 0.5    # 回答のランダムさ(低いほど実用的で安定します)
        }
    )
    
    # 5. 返ってきた応答データから回答文のテキストを取り出して表示します
    output_text = response["output"]["message"]["content"][0]["text"]
    print(output_text)

except Exception as e:
    print(f"エラーが発生しました: {e}")

このコードを実行することで、AWS上の安全な通信を経由して、最新のAIモデルからの的確な回答を取得することができます。