Amazon Bedrock入門!ジェネレーティブAIを構築・スケールする最も簡単な方法

Amazon Bedrock入門!ジェネレーティブAIを構築・スケールする最も簡単な方法

皆さん、こんにちは!近頃、話題のジェネレーティブAI。その中でも注目を集めているのが、Amazon Bedrockです。
「ジェネレーティブAIってなんだ?」「Amazon Bedrockってどんなサービス?」「使い方は?」
そんな疑問をお持ちのエンジニアの皆さんへ、Amazon Bedrockの概要、使い方、料金、そして実際にコードを書いて試してみた結果まで、分かりやすく解説します!

Amazon Bedrockとは

Amazon Bedrockは、AWSが提供するフルマネージドサービスで、AIスタートアップやAmazonが開発したFoundation Models(FM)と呼ばれる基盤モデルをAPI経由で利用することができます。
Foundation Modelsって聞き慣れない言葉ですよね。
Foundation Modelsとは、テキスト生成、画像生成など、様々なタスクに適用できる汎用的なAIモデルのことです。
Amazon Bedrockでは、現在、以下の企業が提供するFoundation Modelsが利用可能です。

企業モデル名
AI21 LabsJurassic-2シリーズ
AmazonTitan
AnthropicClaude
CohereCommand
MetaLlama 2
Stability AIStable Diffusion

今後、さらに多くの企業やモデルが追加される予定です。

Amazon Bedrockは、これらのFoundation ModelsをAPIとして利用できるため、開発者はAIモデルの構築やスケーリング、デプロイなどを意識することなく、ジェネレーティブAIアプリケーションを簡単に開発することができます。

Amazon Bedrockのメリット

Amazon Bedrockを利用するメリットは、以下の点が挙げられます。

  • スケーラビリティ: AWSのサーバーレスアーキテクチャを活用しているため、アプリケーションの規模に合わせて自動的にスケーリングできます。
  • 開発の迅速化: API経由でFoundation Modelsを利用できるため、AIモデルの構築やトレーニングに必要な時間とコストを大幅に削減できます。
  • コスト効率: 利用した分だけ課金される従量課金制なので、無駄なコストを抑えることができます。
  • セキュリティ: AWSのセキュリティ機能を活用することで、AIアプリケーションのセキュリティを確保できます。

Amazon Bedrock (Python) の使い方

Amazon Bedrockの使い方をステップごとにご紹介します。

      1. Python環境の構築

        Pythonと必要なライブラリをインストールします。 boto3とjsonライブラリは必須です。 boto3はAWS SDK for Pythonで、AWSのサービスにアクセスするためのライブラリです。Amazon BedrockをPythonから操作する場合に必要となります。jsonライブラリは、JSON形式のデータを扱うためのライブラリです。Amazon BedrockのAPIリクエストやレスポンスは、JSON形式でやり取りされます。

        2. APIリクエストの作成

          利用するFoundation Model、タスク、パラメータなどを指定してAPIリクエストを作成します。
          例えば、Llama 2を使って「機械学習に関する詩」を生成する場合は、以下のようなAPIリクエストを作成します。

          {
            "modelId": "meta-llama2-70b-chat",
            "contentType": "application/json",
            "accept": "application/json",
            "body": {
              "text": {
                "prompt": "INSTあなたはシェイクスピアのように振る舞い、機械学習に関する詩を書いてください",
                "max_gen_length": 512,
                "temperature": 0.5,
                "top_p": 0.9
              }
            }
          }
          • modelId : 利用するFoundation ModelのID
          • contentType : リクエストボディのコンテンツタイプ
          • accept : レスポンスのコンテンツタイプ
          • body : リクエストボディ。ここにタスクやパラメータを指定する。
          • prompt: モデルに与える指示(プロンプト)
          • max_gen_length : 生成するテキストの最大長
          • temperature : 生成されるテキストのランダム性の度合い
          • top_p : 生成されるテキストの多様性の度合い

          3. APIリクエストの送信

            作成したAPIリクエストをAWS CLIまたはboto3を使ってAmazon Bedrockに送信します。

            import boto3
            import json
            bedrock = boto3.client(service_name='bedrock-runtime')
            
            body = json.dumps({
                "prompt": "プロンプトを入力",
                "max_tokens_to_sample": 300,
                "temperature": 0.1,
                "top_p": 0.9,
            })
            
            modelId = 'anthropic.claude-v2'
            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())
            
            print(response_body.get('completion'))

              Amazon Bedrockの料金

              Amazon Bedrockは、利用したFoundation Modelsやタスク、リクエスト量などに応じて課金されます。
              料金は、以下の要素によって決まります。

              • Foundation Model: 利用するFoundation Modelによって料金が異なります。
              • タスク: テキスト生成、画像生成など、実行するタスクによって料金が異なります。
              • 入力トークン数: APIリクエストで送信するテキストの長さ(トークン数)によって料金が異なります。
              • 出力トークン数: APIレスポンスで返されるテキストの長さ(トークン数)によって料金が異なります。

              最新の料金表は、Amazon Bedrockの料金ページをご覧ください。

              まとめ

              本記事では、Amazon Bedrockの概要、使い方、料金などを解説しました。
              Amazon Bedrockは、最新のジェネレーティブAI技術を手軽に利用できる、強力なサービスです。
              ぜひ、本記事を参考に、Amazon Bedrockを使って革新的なAIアプリケーションを開発してみてください。

              AWSモダナイズ開発データ分析基盤構築とデータ活用支援基幹業務システムのUI.UX刷新はお気軽にお問い合わせください。