Laravel13のAI SDKを調べてみた
目次
Laravel内部でAIの呼び出しができるって?
Laravel13からAI SDKが正式リリースされたと知りました。
曖昧検索的なことができるらしい?AIのエージェントを作成できるらしい?くらいしか知らなかったので詳しく調べてみました。
laravel/ai
https://packagist.org/packages/laravel/ai
というライブラリを導入することで実現できそうです。
どうでもいい話ですが以前からある
laravel/ui
https://packagist.org/packages/laravel/ui
と混同してしまいそうです(笑)
導入手順は次の通りです。
ライブラリの導入とマイグレーションファイルの作成
マイグレーション実行で、AIとの対話の履歴を保存するためのテーブルが2つ作成されます。
composer require laravel/ai
php artisan vendor:publish --provider="Laravel\Ai\AiServiceProvider"
php artisan migrate
APIキーの設定
.envに使用するAIのAPIキーを指定し
config/ai.php に使用したいAIを指定します。
#.env
GEMINI_API_KEY=hogehogehoge
#config/ai.php
'gemini' => [
'driver' => 'gemini',
'key' => env('GEMINI_API_KEY'),
],
あとはagentを定義すれば利用可能になります。
AI SDKのagentとは?
従来はAIごとのAPIに則ったように調整する必要がありましたが、laravel/aiがそのあたりを吸収してくれるので気にせずAIに質問を投げることが可能です。
エージェントは以下のように定義します。
<?php
namespace App\Ai\Agents;
use Laravel\Ai\Concerns\RemembersConversations;
use Laravel\Ai\Contracts\Agent;
use Laravel\Ai\Contracts\Conversational;
use Laravel\Ai\Promptable;
use Stringable;
class QuestionAgent implements Agent, Conversational
{
use Promptable;
usE RemembersConversations; #このトレイトで追加したテーブルに会話履歴を保存する
/**
* AIに指示する基本ルール
*/
public function instructions(): Stringable|string
{
return <<< '__EOL__'
以下を厳守してください。
- 必ず日本語で返答してください。
- 回答は簡潔にしてください。
- 内容を理解できない場合は憶測で回答せずに必ず理解できない旨を回答してください。
__EOL__;
}
}
Controller側からは次のようにAgentを呼び出せます。
<?php
public function send(Request $request)
{
$user = Auth::user();
$agent = new QuestionAgent();
// 会話途中か新規かのチェック
$last_conversation_id = DB::table('agent_conversations')
->where('user_id', $user->id)
->orderByDesc('updated_at')
->value('id');
if ($last_conversation_id) {
$agent->continue($last_conversation_id, as: $user);
} else {
$agent->forUser($user);
}
// エージェントに質問を投げて履歴を保存
$response = $agent->prompt($request->input('message'), provider: 'gemini');
return response()->json(['message' => (string) $response]);
}
またエージェント呼び出しの際、仮にgeminiが落ちていたらchatGPTに切り替えるといった指定も可能になっています。
他にどういったことが出来るの?
エージェント機能の他にも、次のように専用の機能ももっています。
- Images:テキストから画像を生成
- Audio:テキストを音声に変換(読み上げ)
- Transcription:音声からテキストに変換(文字起こし)
- Embeddings:文字列をベクター化してDBに保存しセマンティック検索に利用する
- Reranking:検索結果を意味の近さで並び替え
- Files:ファイルをAIプロバイダーに保存して会話で使う
- Vector Stores:ファイルをベクター化して検索可能なナレッジベースを構築
- Queueing:時間のかかるAI処理をバックグラウンドで実行
セマンティック検索
セマンティック検索
先ほどのEmbeddingsにも出てきましたが、AI SDKの機能を利用してセマンティック検索を利用可能になっています。
これまではイチゴを検索したい場合はイチゴと検索する必要がありましたが、「果物」「ショートケーキ」「ジャム」といった関係しそうなワードであっても検索が可能になります。
「いちご」「苺」といった表記揺れにも対応できます。
例えばFAQ検索を実装する場合で、も完全一致したQAだけではなく、関連しそうなQAも列挙することができます。
これはかなりPythonを意識した実装なのではないでしょうか?
まとめ
開発という立場の人間として、AIエージェントが実装されて開発のお手伝いやコードの生成などをしてくれるものかと勝手に思いました(切実な希望でした)が、そうではなく各AIの垣根を越えて質問やプロンプトを投げられるという機能でした。
これからAIを利用したシステム開発も増えてきます。AI利用のパッケージを構築して顧客が契約しているAIにあわせてカスタマイズ不要で納品できるというメリットにもなりそうですね。



















