This commit is contained in:
ct
2025-07-01 20:54:26 +08:00
parent 70898ccd4c
commit 79e7d7a49e
42 changed files with 2742 additions and 97 deletions

View File

@@ -12,7 +12,7 @@ public static function getMemeKeywords(string $name, string $description)
$response = Http::withHeaders([
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . $apiKey,
'Authorization' => 'Bearer '.$apiKey,
])->post('https://api.openai.com/v1/responses', [
'model' => 'gpt-4.1-nano',
'input' => [
@@ -56,70 +56,68 @@ public static function getSingleMemeGenerator($user_prompt)
$captions = [
[
'caption_description' => 'A humorous, funny one-liner meme caption that starts with "When you", describes a specific visual or situational moment, avoids vagueness, and ends with no punctuation',
'caption_style' => 'Relatable one-liners starting with "When you"'
'caption_style' => 'Relatable one-liners starting with "When you"',
],
[
'caption_description' => 'A POV meme that starts with "POV: ", clearly describes a specific scenario or feeling with high context, and ends with no punctuation',
'caption_style' => 'POV-style captions (e.g., "POV: finally logging off after pretending to work for 3 hours")'
'caption_style' => 'POV-style captions (e.g., "POV: finally logging off after pretending to work for 3 hours")',
],
[
'caption_description' => 'A humorous, funny one-liner meme caption that starts with "I", grounded in a relatable, situational experience with visual context, and ends with no punctuation',
'caption_style' => 'Relatable one-liners starting with "I"'
'caption_style' => 'Relatable one-liners starting with "I"',
],
[
'caption_description' => 'A humorous, funny one-liner meme caption that starts with "You", focused on a clear, specific reaction or moment, and ends with no punctuation',
'caption_style' => 'Relatable one-liners starting with "You"'
'caption_style' => 'Relatable one-liners starting with "You"',
],
[
'caption_description' => 'A humorous, funny one-liner meme caption with no punctuation that describes a vivid, realistic scenario or reaction in a clearly defined context',
'caption_style' => 'Visual punchlines (e.g., "Wearing a suit and contemplating my life in the elevator")'
'caption_style' => 'Visual punchlines (e.g., "Wearing a suit and contemplating my life in the elevator")',
],
[
'caption_description' => 'A juxtaposition-style one-liner meme caption expressing a contrast or contradiction in a witty, punchy way, often revealing irony or absurdity, and ends with no punctuation (e.g., "I want a salary without a job"). Start with "I" or "You" to create a sense of contrast',
'caption_style' => 'Juxtaposition (e.g., "I want a salary without a job")'
'caption_style' => 'Juxtaposition (e.g., "I want a salary without a job")',
],
[
'caption_description' => 'A meme caption that starts with "TIL: ", presents a short, punchy, and ironic realization about work or life that feels meme-worthy, clearly sets up a visual or exaggerated truth, and ends with no punctuation (e.g., "TIL: rent is just a subscription to be alive")',
'caption_style' => 'TIL captions (e.g., "TIL: rent is just a subscription to be alive")'
'caption_style' => 'TIL captions (e.g., "TIL: rent is just a subscription to be alive")',
],
[
'caption_description' => 'A meme caption that starts with "TL;DR: ", provides a blunt, dry, or brutally honest summary of a situation, ideally workplace- or life-related, and ends with no punctuation (e.g., "TL;DR: we had a meeting about having fewer meetings")',
'caption_style' => 'TL;DR captions (e.g., "TL;DR: we had a meeting about having fewer meetings")'
'caption_style' => 'TL;DR captions (e.g., "TL;DR: we had a meeting about having fewer meetings")',
],
[
'caption_description' => 'A meme caption that starts with "The moment you realize", sets up an unexpected or awkward realization in a relatable work or life setting, and ends with no punctuation',
'caption_style' => 'The moment you realize... (e.g., "The moment you realize your boss joined the call 5 minutes ago")'
'caption_style' => 'The moment you realize... (e.g., "The moment you realize your boss joined the call 5 minutes ago")',
],
[
'caption_description' => 'A meme caption that uses the "Nobody:" format to exaggerate a reaction or absurd behavior, often with a silent or empty setup followed by an over-the-top response, and ends with no punctuation',
'caption_style' => 'Nobody: ... (e.g., "Nobody: \nMe: sends 3 follow-up emails and panics")'
'caption_style' => 'Nobody: ... (e.g., "Nobody: \nMe: sends 3 follow-up emails and panics")',
],
[
'caption_description' => 'A meme caption that starts with "Me trying to", describes a personal struggle or awkward attempt to do something relatable, and ends with no punctuation',
'caption_style' => 'Me trying to... (e.g., "Me trying to stay calm after 2 hours on hold")'
'caption_style' => 'Me trying to... (e.g., "Me trying to stay calm after 2 hours on hold")',
],
[
'caption_description' => 'A meme caption that starts with "It\'s giving", followed by a cultural, emotional, or exaggerated vibe that humorously labels the situation, and ends with no punctuation',
'caption_style' => 'It\'s giving... (e.g., "It\'s giving corporate despair in HD")'
'caption_style' => 'It\'s giving... (e.g., "It\'s giving corporate despair in HD")',
],
[
'caption_description' => 'A meme caption that starts with "Meanwhile", contrasts expected behavior with a chaotic or unexpected reality, and ends with no punctuation',
'caption_style' => 'Meanwhile... (e.g., "Meanwhile: I\'m Googling how to quit politely")'
'caption_style' => 'Meanwhile... (e.g., "Meanwhile: I\'m Googling how to quit politely")',
],
[
'caption_description' => 'A meme caption that starts with "My toxic trait is", followed by an ironic or self-aware confession that highlights flawed logic or behavior, and ends with no punctuation',
'caption_style' => 'My toxic trait is... (e.g., "My toxic trait is checking Slack and getting mad")'
'caption_style' => 'My toxic trait is... (e.g., "My toxic trait is checking Slack and getting mad")',
],
];
//$random_caption = $captions[rand(0, count($captions) - 1)];
// $random_caption = $captions[rand(0, count($captions) - 1)];
$random_caption = $captions[count($captions) - 1];
$response = Http::withHeaders([
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . env('OPENAI_API_KEY'),
'Authorization' => 'Bearer '.env('OPENAI_API_KEY'),
])
->post('https://api.openai.com/v1/responses', [
'model' => 'gpt-4.1-nano',
@@ -231,11 +229,10 @@ public static function getSingleMemeGenerator($user_prompt)
if ($response->successful()) {
return $data;
} else {
throw new \Exception('API request failed: ' . $response->body());
throw new \Exception('API request failed: '.$response->body());
}
}
public static function getOpenAIOutput($data)
{
// dump($data);