国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

從入門到精通:如何在React中構(gòu)建人工智能驅(qū)動(dòng)的梗圖生成器

譯文 精選
人工智能
?本文將介紹如何使用OpenAI、React、Fabric.js和DALL-E 3構(gòu)建人工智能梗圖生成器,并創(chuàng)建配文,設(shè)計(jì)梗圖畫布,以及優(yōu)化成本和性能。

譯者 | 李睿

審校 | 重樓

為什么要構(gòu)建人工智能梗圖生成器?

梗圖(Meme)堪稱互聯(lián)網(wǎng)時(shí)代的“全民語言”。無論是想調(diào)侃朋友,還是想表達(dá)編程讓人崩潰的無奈,梗圖總能精準(zhǔn)地表達(dá)其意境。然而,人工制作一張梗圖需要花費(fèi)很長時(shí)間。首先需要找到合適的圖片,然后構(gòu)思出幽默并且貼合情境的配文,還要巧妙地將圖片與文字融為一體,并且看起來不能像孩子的隨意涂鴉。

不過好在已經(jīng)有了OpenAI和DeepSeek等工具,不僅可以自動(dòng)化創(chuàng)作幽默內(nèi)容,還能自動(dòng)化生成當(dāng)前流行的格式,讓用戶幾秒鐘內(nèi)就能創(chuàng)作出梗圖。以下是生成梗圖的方法:

  • 為了從梗圖中生成引人入勝的配文,采用了一種特定于情境的方法。
  • 構(gòu)建了一個(gè)超級(jí)簡單直觀的拖放式設(shè)計(jì)界面。
  • 找到降低API費(fèi)用的新方法,能夠有效地控制預(yù)算。
  • 允許用戶保存他們最喜歡的梗圖,并添加了文本轉(zhuǎn)圖片的功能。

用戶喜歡使用的工具

在深入研究代碼的細(xì)節(jié)之前,首先探討技術(shù)堆棧。在不知道需要使用什么工具的情況下就開始制造是不切實(shí)際的行為。

  • React + TypeScript。React為用戶帶來了流暢、響應(yīng)迅速的用戶界面,而TypeScript 可以幫助制作者捕捉到許多以前可能會(huì)出現(xiàn)的錯(cuò)誤。
  • OpenAI/DeepSeek API。只要有預(yù)算,其他問題就不足為慮,因?yàn)镈ivision-04能夠使用GPT-4 Turbo隨心所欲地生成犀利而有趣的配文。當(dāng)預(yù)算有限時(shí),DeepSeek就能發(fā)揮重要的作用。
  • Fabric.js。使用Fabric.js庫,可以輕松地拖動(dòng)包含文本的圖像,而不是感覺難以掌控。
  • Vercel。在部署項(xiàng)目時(shí),即使處在業(yè)務(wù)高峰時(shí)段,Vercel的邊緣緩存功能也能很好地緩解壓力。
  • Redis。Redis的入門門檻較低,實(shí)現(xiàn)過程簡便易行,同時(shí)還能有效防范API濫用現(xiàn)象,避免觸發(fā)速率限制 。

步驟1:設(shè)置自己的人工智能大腦

顯然,人工智能從互聯(lián)網(wǎng)上復(fù)制的短語并不適用于梗圖。梗圖需要將態(tài)度、措辭和一定程度的克制相結(jié)合。這就引出了一個(gè)更根本的問題——究竟該如何引導(dǎo)人工智能學(xué)會(huì)講笑話。其答案或許在于調(diào)整人工智能本身的提示。

以下是用于創(chuàng)建字幕的代碼片段:

1 // src/services/aiService.ts 
2 type MemePrompt = { 
3 template: string; // e.g., "Distracted Soul" 
4 context: string; // e.g., "When your code works on the first try" 
5 }; 
6
7 const generateMemeCaption = async ({ template, context }: MemePrompt) => { 
8 const prompt = ` 
9 Generate a sarcastic meme caption for the "${template}" template about "${context}". 
10 Rules: 
11 - Use Gen-Z slang (e.g., "rizz", "sigma") 
12 - Max 12 words 
13 - Add emojis related to the context 
14 `; 
15
16 const response = await openai.chat.completions.create({ 
17 model: "gpt-4-turbo", 
18 messages: [{ role: "user", content: prompt }], 
19 temperature: 0.9, // Higher = riskier jokes 
20 max_tokens: 50, 
21 }); 
22
23 return stripEmojis(response.choices[0].message.content); // No NSFW stuff allowed 
24 };

專業(yè)提示:如果為了營造幽默效果,可將相關(guān)參數(shù)值設(shè)定在0.7至0.9的范圍內(nèi),但出于安全考慮,需要確保始終通過OpenAI的調(diào)節(jié)端點(diǎn)來調(diào)節(jié)反應(yīng)。

步驟2:構(gòu)建梗圖畫布

如果使用過 HTML5 Canvas API,就會(huì)明白處理它們并非易事。幸運(yùn)的是,F(xiàn)abric.js可以實(shí)現(xiàn)這一功能。它直接在React中提供了類似photoshop的控件,并額外附帶了拖放功能。

以下是簡化版的Canvas組件:

1 // src/components/MemeCanvas.tsx 
2 import { FabricJSCanvas, useFabricJSEditor } from "fabricjs-react"; 
3
4 export default function MemeCanvas() { 
5 const { editor, onReady } = useFabricJSEditor(); 
6 const [textColor, setTextColor] = useState("#FFFFFF"); 
7
8 const addTextLayer = (text: string) => { 
9 editor?.addText(text, { 
10 fill: textColor, 
11 fontFamily: "Impact", 
12 fontSize: 40, 
13 stroke: "#000000", 
14 strokeWidth: 2, 
15 shadow: "rgba(0,0,0,0.5) 2px 2px 2px", 
16 }); 
17 }; 
18
19 return ( 
20 <> 
21 <button onClick={() => addTextLayer("Why React, why?!")}>Add Default Text</button> 
22 <input type="color" onChange={(e) => setTextColor(e.target.value)} /> 
23 <FabricJSCanvas className="canvas" onReady={onReady} /> 
24 </> 
25 ); 
26 }

該功能有以下一些優(yōu)勢(shì):

  • 釋放文本圖層,以便在文檔的任何位置拖動(dòng)。
  • 使用高級(jí)顏色選擇器添加描邊和陰影效果。
  • 雙擊可以編輯文本,以簡化編輯過程。

步驟3:速率限制

試想一下這樣的場景:在應(yīng)用程序發(fā)布之后,很多人也萌生了制作梗圖的想法,這聽起來是不是很有趣?然而,當(dāng)看到 OpenAI 的賬單竟超過比特幣價(jià)格時(shí),或許就不會(huì)這么認(rèn)為。

為了解決這個(gè)問題,在Redis中設(shè)置了滑動(dòng)窗口速率限制。以下介紹在Vercel Edge Functions上的具體實(shí)現(xiàn)方法:

1 // src/app/api/generate-caption/route.ts 
2 import { Ratelimit } from "@upstash/ratelimit"; 
3 import { Redis } from "@upstash/redis"; 
4
5 const ratelimit = new Ratelimit({ 
6 redis: Redis.fromEnv(), 
7 limiter: Ratelimit.slidingWindow(15, "86400s"), // 15 requests/day per IP 
8 }); 
9
10 export async function POST(request: Request) { 
11 const ip = request.headers.get("x-forwarded-for") ?? "127.0.0.1"; 
12 const { success } = await ratelimit.limit(ip); 
13
14 if (!success) { 
15 return new Response("Slow down, meme lord! Daily limit reached.", { 
16 status: 429, 
17 }); 
18 } 
19
20 // Proceed with OpenAI call 
21 }

節(jié)省成本的妙招

  • 緩存流行的提示,例如“熱線來電”以及“拉取請(qǐng)求獲得批準(zhǔn)”等。
  • 使用CloudFlare緩存生成的圖像。

由DALL-E 3生成的人工智能梗圖

有時(shí)候,人們會(huì)認(rèn)識(shí)到選擇完美的梗圖模板是一項(xiàng)不可能完成的任務(wù)。

1 // src/services/aiService.ts 
2 const generateCustomMemeImage = async (prompt: string) => { 
3 const response = await openai.images.generate({ 
4 model: "dall-e-3", 
5 prompt: ` 
6 A meme template about "${prompt}". 
7 Style: Flat vector, bold outlines, no text. 
8 Background: Solid pastel color. 
9 `, 
10 size: "1024x1024", 
11 quality: "hd", 
12 }); 
13
14 return response.data[0].url; 
15 }

更改輸出

  • 提示:“兩個(gè)開發(fā)人員就采用Redux和Zustand框架進(jìn)行爭辯。”
  • 最終產(chǎn)品:將Redux和Zustand這兩個(gè)卡通人物的爭論,以兩個(gè)在紫色背景上動(dòng)態(tài)呈現(xiàn)的圖標(biāo)形式進(jìn)行展示。

梗圖的歷史記錄功能(Zustad + LocalStorage)

為了讓用戶能夠保存梗圖,在Zustand的幫助下添加了梗圖的歷史記錄功能。

1 // src/stores/memeHistory.ts 
2 import { create } from "zustand"; 
3 import { persist } from "zustand/middleware"; 
4
5 type Meme = { 
6 id: string; 
7 imageUrl: string; 
8 caption: string; 
9 timestamp: number; 
10 }; 
11
12 interface MemeHistoryState { 
13 memes: Meme[]; 
14 saveMeme: (meme: Omit<Meme, "id" | "timestamp">) => void; 
15 } 
16
17 export const useMemeHistory = create<MemeHistoryState>()( 
18 persist( 
19 (set, get) => ({ 
20 memes: [], 
21 saveMeme: (meme) => { 
22 const newMeme = { 
23 ...meme, 
24 id: crypto.randomUUID(), 
25 timestamp: Date.now(), 
26 }; 
27 set({ memes: [newMeme, ...get().memes].slice(0, 100) }); 
28 }, 
29 }), 
30 { name: "meme-history" } 
31 ) 
32);

用戶操作指引

  • 首先創(chuàng)建一個(gè)梗圖,然后點(diǎn)擊保存。
  • 梗圖將在本地保存,并將以網(wǎng)絡(luò)格式呈現(xiàn)。
  • 已經(jīng)保存的梗圖可以通過點(diǎn)擊在編輯器中重新加載。

結(jié)束語

構(gòu)建人工智能梗圖生成器,不僅可以幫助開發(fā)人員加深對(duì)編程的理解,還可以幫助他們掌握應(yīng)對(duì)各類突發(fā)狀況的技巧。然而,從實(shí)施嚴(yán)格的速率限制到承受Reddit網(wǎng)站的流量激增,這一過程并不輕松。

因此,開發(fā)人員可以從零基礎(chǔ)起步,根據(jù)收到的反饋不斷改進(jìn)人工智能梗圖生成器。也許他們制作的梗圖會(huì)大受歡迎,并從中獲得令人滿意的回報(bào)。

原文標(biāo)題From Zero to Meme Hero: How I Built an AI-Powered Meme Generator in React,作者:Mohit Menghnani

責(zé)任編輯:姜華 來源: 51CTO內(nèi)容精選
相關(guān)推薦

2025-11-11 09:54:38

2023-08-04 09:00:00

人工智能GPT-4語言模型

2023-12-05 14:31:17

人工智能

2022-06-20 11:28:20

人工智能數(shù)據(jù)生成器

2024-03-28 14:29:52

人工智能

2021-12-16 10:59:52

云計(jì)算人工智能云應(yīng)用

2022-06-04 14:46:27

人工智能醫(yī)療保健數(shù)據(jù)

2022-12-15 08:49:58

ReactQR生成器

2023-08-07 07:48:47

2024-02-28 08:00:00

人工智能Slackbot

2024-12-23 08:00:00

2025-04-02 08:55:13

人工智能帖子生成器事件驅(qū)動(dòng)

2023-08-14 10:38:39

2009-03-19 13:36:53

SSH安全通道遠(yuǎn)程

2011-10-26 20:47:36

ssh 安全

2021-01-04 11:10:08

人工智能存儲(chǔ)云計(jì)算

2024-01-09 13:34:35

2024-01-26 10:47:55

2023-05-05 14:02:59

人工智能聊天機(jī)器人

2023-10-12 10:14:54

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲奶水xxxx哺乳期| 精品久久久久久最新网址| 综合久久国产九一剧情麻豆| 欧美另类久久久品| 国产一区自拍视频| 欧美久久久久久一卡四| 91久久精品美女| 琪琪五月天综合婷婷| 日本在线一区二区| 不卡的av在线播放| 97国产精品视频人人做人人爱| 可以免费看污视频的网站| 日韩欧美大片| 久久久久资源| 中文日本在线观看| 三级欧美在线一区| 精品一区电影国产| 午夜视频免费在线观看| 人妖欧美1区| 免费欧美一区| 久久综合资源网| 国产精品久久久久久久久久久不卡| 成人免费高清观看| 国产精品福利在线| 国产成人精品电影| 欧美男gay| 国产精品白丝jk喷水视频一区| 99久久婷婷国产综合精品青牛牛| 免费97视频在线精品国自产拍| 在线观看欧美| 欧美激情精品久久久久久大尺度| 久久影院一区二区三区| 欧美日本精品在线| 林ゆな中文字幕一区二区| 日本精品一区二区三区在线播放视频| 亚州国产精品| 亚洲综合大片69999| 在线成人国产| 一区二区精品国产| 国产91精品久久久久久久网曝门| 国产91在线视频观看| 中文字幕日韩av资源站| 在线视频se| 欧美调教femdomvk| 91在线中文| 这里只有精品在线观看| www.爱久久| 国产在线播放不卡| 亚洲制服少妇| xxxx18hd亚洲hd捆绑| 亚洲欧美激情在线| 欧美激情免费| 久久亚洲精品中文字幕冲田杏梨| 国产伦一区二区三区| 国产日韩欧美亚洲一区| 国产精品99久久久久久久vr| 免费一级特黄录像| 欧美视频在线观看一区二区| 免费成人美女女| 欧美一级黄色网| 可以看av的网站久久看| 无码内射中文字幕岛国片| 欧美日韩裸体免费视频| 欧美极品影院| 91精品久久久久久久久久久久久久| 日韩黄色免费电影| 国产美女av| 亚洲电影在线看| 网友自拍一区| 国产欧美一区二区在线播放| 欧美色中文字幕| 亚洲精品三级| 亚洲成人黄色影院| 成a人片在线观看| 欧美激情一级精品国产| 精品嫩草影院| 成人黄色图片网站| 国产www精品| 老司机精品视频在线| 99热在线免费播放| 欧美精品在线视频| 日韩精品欧美大片| 91亚洲一区精品| 宅男噜噜噜66国产日韩在线观看| 国产玉足脚交久久欧美| 国产精品网站导航| 黄色在线免费观看大全| 夜夜躁日日躁狠狠久久88av| 日韩大片在线播放| 成人性免费视频| 在线精品国精品国产尤物884a| 国产另类xxxxhd高清| 四季av在线一区二区三区| 欧美精品性视频| 综合久久十次| 亚洲欧美日本国产有色| 成人av在线播放网站| 91在线不卡| 亚洲看片网站| 成人亚洲欧美一区二区三区| 成人黄色片在线| 国产精品1区二区.| 在线日本中文字幕| 国产成人av在线| 久久久一区二区| 精品无人国产偷自产在线| 欧美人与物videos另类xxxxx| 中国人体摄影一区二区三区| 色哟哟精品一区| 国产伦精品一区二区三区视频| 给我免费播放片在线观看| 欧美一区二区美女| 欧美片第1页综合| 色老板在线视频| 高清欧美性猛交| 北岛玲一区二区三区四区| 精品三级久久| 伊人久久青草| 日韩欧美一区中文| 麻豆免费在线视频| 欧洲中文字幕国产精品| 国产婷婷色一区二区三区四区| 人人草在线视频| 亚洲一区二区三区午夜| 日韩亚洲国产中文字幕欧美| 一本色道精品久久一区二区三区 | 麻豆视频在线免费观看| 91老司机精品视频| 天天综合日日夜夜精品| 97色伦图片97综合影院| 亚洲热app| 国产一区二区在线播放| 亚洲成在人线免费| 婷婷综合在线| 成人网视频在线观看| 亚洲一区二区三区sesese| 91激情五月电影| 在线亚洲一区| heyzo高清在线| 欧美亚洲色图视频| 欧美成人性色生活仑片| 亚洲人一二三区| 99久久精品国产亚洲精品| 男男激情在线| 日韩精品资源| 中文字幕国产精品| 国产日产欧美精品一区二区三区| www.欧美视频| 国产对白在线| 97人人澡人人爽| 精品欧美黑人一区二区三区| 麻豆freexxxx性91精品| 久久久亚洲影院你懂的| 亚洲高清视频的网址| 久久久91精品国产一区二区三区| 亚洲高清二区| 欧美三级电影在线| 国产精品nxnn| 久久青青色综合| 黄色美女网站在线观看| 国内自拍在线观看| 日韩欧美国产二区| 91一区二区三区| 亚洲最大av在线| 国产精品久久久久久久久久小说| 亚洲国产精品美女| 亚洲精品在线观看网站| 欧美午夜一区二区| 在线观看91精品国产入口| 成人欧美一区二区三区黑人麻豆 | 亚洲综合在线五月| 国产亚洲一区二区三区| 捆绑调教一区二区三区| 91麻豆精品国产91久久久更新资源速度超快| 97超碰人人模人人爽人人看| 欧美日韩日日摸| 性久久久久久久久| 日韩三级影视基地| 日韩精品免费一区| 免费av高清| 久久久久亚洲精品| 欧美三区在线观看| 国产成人精品亚洲午夜麻豆| 成人另类视频| 成年人在线看| 91国视频在线| 97免费资源站| 色婷婷综合久久久久中文字幕1| 夜夜嗨av一区二区三区四季av| 视频一区视频二区在线观看| av综合网站| 日本中文字幕在线播放| 任你操这里只有精品| 丁香五月网久久综合| 久久精品成人动漫| 欧美色窝79yyyycom| 久久久久久毛片| 免费成人av在线| 久久精品青草| 久久精品国产亚洲5555|