getActiveProvider(); if (!$active_provider) { throw new \Exception('No active AI provider available.'); } return $this->sendToProvider($active_provider, $prompt); } catch (\Exception $e) { Log::error('AI Provider Error', [ 'error' => $e->getMessage(), 'prompt' => $prompt ]); return [ 'success' => false, 'error' => $e->getMessage() ]; } } /** * 獲取當前活躍的 AI 提供者 * * @return ApiProvider|null */ private function getActiveProvider(): ?ApiProvider { return ApiProvider::where('active', true)->first(); } /** * 向指定的 AI 提供者發送提示 * * @param ApiProvider $provider * @param string $prompt * @return array */ private function sendToProvider(ApiProvider $provider, string $prompt): array { $response = Http::withHeaders([ 'Authorization' => 'Bearer ' . $provider->api_key, 'Content-Type' => 'application/json', ])->post($provider->endpoint, [ 'prompt' => $prompt, 'max_tokens' => 1000, ]); if (!$response->successful()) { throw new \Exception('AI provider request failed: ' . $response->body()); } return [ 'success' => true, 'response' => $response->json('choices.0.text') ?? $response->json('response') ]; } }