laravel 12 中接入 ai 助手 sdk 的核心是封装为服务类并依赖注入,需安装 sdk、创建 aiservice 类、配置 services.php 和 .env、控制器中注入调用,可选注册 facade。

在 Laravel 12 中接入 AI 助手 SDK(如通义千问、文心一言、Kimi、或 OpenAI 官方 SDK),核心是将 SDK 封装为可复用的服务类,并通过 Laravel 的依赖注入和配置管理进行解耦。不建议直接在控制器里 new SDK 实例或硬编码 API Key。
1. 安装 SDK 并注册为 Laravel 服务
以 OpenAI PHP SDK(openai-php/client)为例:
- 执行命令安装:
composer require openai-php/client - 在
app/Services/AiService.php创建服务类:
namespace App\Services;
use OpenAI\Client;
class AiService
{
protected Client $client;
public function __construct()
{
$this->client = Client::builder()
->withApiKey(config('services.openai.api_key'))
->withOrganization(config('services.openai.organization') ?? null)
->withHttpOptions(['timeout' => 30])
->build();
}
public function chat(string $prompt, array $options = []): array
{
$response = $this->client->chat()->create([
'model' => $options['model'] ?? 'gpt-4o',
'messages' => [['role' => 'user', 'content' => $prompt]],
'temperature' => $options['temperature'] ?? 0.7,
]);
return [
'content' => $response->choices[0]->message->content,
'usage' => $response->usage->toArray(),
];
}
}
2. 配置服务与密钥(安全方式)
在 config/services.php 中添加:
'openai' => [
'api_key' => env('OPENAI_API_KEY'),
'organization' => env('OPENAI_ORG_ID'),
],
然后把 OPENAI_API_KEY 写入 .env(切勿提交到 Git):
OPENAI_API_KEY=sk-xxxxxx...
3. 在控制器中调用(依赖注入)
在控制器构造函数或方法中注入服务:
namespace App\Http\Controllers;
use App\Services\AiService;
use Illuminate\Http\Request;
class AiController extends Controller
{
public function ask(AiService $ai, Request $request)
{
$prompt = $request->input('prompt', '你好');
try {
$result = $ai->chat($prompt, [
'model' => 'gpt-4o-mini',
'temperature' => 0.5,
]);
return response()->json(['reply' => $result['content']]);
} catch (\Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
}
}
4. 可选:封装成 Facade 或辅助函数(按需)
若多处高频调用,可注册为 Facade:
- 创建
app/Facades/Ai.php继承Illuminate\Support\Facades\Facade - 在
app/Providers/AppServiceProvider.php的boot()中绑定:$this->app->singleton('ai', AiService::class); - 然后就能在任意地方用
Ai::chat(...)调用
其他 SDK(如 Qwen、ERNIE Bot)逻辑类似:下载对应包 → 封装客户端 → 统一配置 → 注入使用。关键是把认证、超时、重试等通用逻辑收口到服务层,避免散落在各处。











