47 lines
1.3 KiB
PHP
47 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\Frontend;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\SendPromptRequest;
|
|
use App\Services\AiProviderService;
|
|
use Illuminate\Http\JsonResponse;
|
|
|
|
class PromptController extends Controller
|
|
{
|
|
private AiProviderService $ai_provider_service;
|
|
|
|
public function __construct(AiProviderService $ai_provider_service)
|
|
{
|
|
$this->ai_provider_service = $ai_provider_service;
|
|
}
|
|
|
|
/**
|
|
* 處理並發送提示到活躍的 AI 提供者
|
|
*
|
|
* @param SendPromptRequest $request
|
|
* @return JsonResponse
|
|
*/
|
|
public function sendPrompt(SendPromptRequest $request): JsonResponse
|
|
{
|
|
try {
|
|
$response = $this->ai_provider_service->processPrompt($request->prompt);
|
|
|
|
if (!$response['success']) {
|
|
return response()->json([
|
|
'error' => $response['error'] ?? '處理提示失敗。請稍後再試。'
|
|
], 500);
|
|
}
|
|
|
|
return response()->json([
|
|
'response' => $response['response']
|
|
], 200);
|
|
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'error' => '處理提示失敗。請稍後再試。',
|
|
'details' => config('app.debug') ? $e->getMessage() : null
|
|
], 500);
|
|
}
|
|
}
|
|
}
|