Amazon Bedrock を Laravel から使ってみる

ショコラ
ショコラ

Amazon Bedrock を Laravel から使ってみる

もっさん先輩
もっさん先輩

プロジェクト名 bedrock で、Laravel の環境を用意します。

curl -s https://laravel.build/bedrock | bash

-dオプション で Laravel をバックグラウンドで実行します。

cd bedrock && ./vendor/bin/sail up -d

↓のコマンドでプロジェクトのホームから sail コマンドを使えるようにします。

echo "alias sail='[ -f sail ] && sh sail || sh vendor/bin/sail'" >> ~/.bashrc

sail コマンドで、AWSのライブラリ(aws/aws-sdk-php)をインストールします。

sail composer require aws/aws-sdk-php

AWSのアクセスキー、シークレットを設定ファイル(.env)に設定します。

vi .env
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_ACCESS_KEY_ID=XXXXXXXXXX
AWS_SECRET_ACCESS_KEY=XXXXXXXXXX

★アクセスキーとシークレットアクセスキーは、「セキュリティ認証情報」の「アクセスキーを作成」で作成することができます。

Laravelコマンドを作成します。

Commandsフォルダーを作成して

mkdir -p app/Console/Commands

AwsBedrockコマンドを作成します。

vi app/Console/Commands/AwsBedrock.php
<?php

namespace App\Console\Commands;
use Illuminate\Console\Command;

use Aws\S3\S3Client;
use Aws\Bedrock\BedrockClient;

use Aws\Sdk;
use Aws\Exception\AwsException;

class AwsBedrock extends Command
{
  protected $signature = 'bedrock';
  protected $description = '';

  public function handle()
  {
    $sdk = new Sdk([
      'region' => 'us-east-1', // 使用するリージョンを指定
    ]);

    // Amazon Bedrockのクライアントを作成
    $bedrockClient = $sdk->createBedrockRuntime();

    // Bedrock API に テキスト を渡す
    $body = [
      'inputText'  => 'ゴルフクラブ',
      'dimensions' => 256,
      'normalize'  => true,
    ];
    $result = $bedrockClient->invokeModel([
     "modelId"     => "amazon.titan-embed-text-v2:0",
     "body"        => json_encode($body),
     "contentType" => "application/json",
     "accept"      =>  "*/*",
    ]);

    // 結果の解析(ベクトルが含まれる場合)
    $output = json_decode($result['body']);
    $vector = $output->embedding;

    dd( $vector );
  }
}
~

AwsBedrockコマンドを実行します。

sail artisan bedrock

以上

Scroll to Top