option('batch'); $jobs = $this->getJobs($batchSize); foreach ($jobs as $job) { $this->processJob($job); } } private function getJobs(int $batchSize) { return Job::whereNUll('summary') ->limit($batchSize) ->orderBy('created_at', 'desc') ->get(); } private function processJob(mixed $job) { $summary = $this->generateSummary($job); if ($summary) { $summary = str_replace('Summary:', "", $summary); $job->summary = trim($summary); $job->save(); } } private function generateSummary(Job $job) { $apiUrl = 'https://olm.c0rrup7.net/api/generate'; $body = 'This is the content of a job ad, you need to read it and extract a short and RELEVANT summary from it. Respond only with the summary, NO OTHER TEXT BEFORE OR AFTER THE SUMMARY.'; $body .= 'Title: '. htmlentities($job->title); $body .= 'Description: '. htmlentities($job->description); $body .= 'RETURN ONLY THE SUMMARY, NO TEXT BEFORE OR AFTER!'; $response = Http::timeout(130) ->withHeaders([ 'Accept' => 'application/json', 'CF-Access-Client-Id' => '8c4cc272c7f08f8d7911a28eb5d7db44.access', 'CF-Access-Client-Secret' => 'adeeed2f75236053953cc9dd898c7756bab5e00f7d0901bf7d488b6db8aba336', ]) ->post($apiUrl, [ 'model' => 'mixtral', 'stream' => false, 'prompt' => $body, ]); if ($response->successful()) { $responseArray = $response->json(); return $responseArray['response']; } return null; } }