ショコラ
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
以上