Ez a Cloudflare Workers AI útmutató bemutatja, hogyan telepíthet és futtathat gépi tanulási modelleket közvetlenül a Cloudflare globális edge hálózatán. A Cloudflare Workers AI segítségével nagy nyelvi modelleket (LLM), szövegfordítást, képgenerálást és hangátírást futtathat a felhasználók közelében, összetett és drága GPU szerverek üzemeltetése nélkül. Az alábbi lépésekből megtudhatja, hogyan konfigurálhatja a Wrangler-t, hogyan írhat fetch handlert, futtathat Llama modellt, és hogyan optimalizálhatja az API költségeket az edge hálózaton.
TL;DR
- MI modellek futtatása szerver nélkül: A Cloudflare Workers AI kezeli a mögöttes GPU infrastruktúrát, és csak az aktív számítási időért számláz.
- Kötések (bindings) konfigurálása a wrangler.toml fájlban: Csatlakoztassa Workerét közvetlenül az AI kötéshez API kulcsok kezelése nélkül.
- Fetch handler írása a felhasználói kérések fogadására, a modell futtatására és a JSON válaszok streamelésére.
- Optimalizált modellek kiválasztása a Cloudflare katalógusából (például Llama 3, Whisper vagy Stable Diffusion) a sebesség és a pontosság egyensúlyának megteremtéséhez.
- Lekérdezési korlátok bevezetése a végpontok védelmére, elkerülve a magas token-költségű visszaéléseket éles környezetben.
Miért érdemes MI modelleket az edge hálózaton futtatni?
Hagyományosan az MI-funkciók integrálásához külső API-kat (például OpenAI) kellett meghívni, vagy saját nyílt forráskódú modelleket kellett futtatni drága felhőszervereken.
A külső API-k hívása késleltetést okoz és adatvédelmi aggályokat vet fel. A saját GPU-szerverek üzemeltetése karbantartási nehézségekkel jár, és nehezen skálázható. A Cloudflare Workers AI megoldja ezt a dilemmát. A platform nyílt forráskódú modelleket hosztol a Cloudflare globális hálózatán telepített GPU-kon. A kódja könnyű Worker-ként fut, és a modelleket a felhasználók közelében hajtja végre, szinte nulla késleltetéssel. Az alapvető edge-struktúrák felépítéséről olvassa el a szerver nélküli API-k Cloudflare Workers-szel történő létrehozásáról szóló útmutatónkat.
Előfeltételek
Mielőtt elkezdené, győződjön meg arról, hogy rendelkezik a következőkkel:
- Egy Cloudflare-fiók bekapcsolt Workers funkcióval. Az ingyenes csomag tartalmaz egy napi következtetési (inference) keretet, ami bőségesen elegendő az útmutató követéséhez.
- Node.js 18 vagy újabb helyben telepítve a fejlesztői eszközök és a helyi fejlesztőszerver futtatásához.
- Wrangler (a Workers CLI) telepítve és hitelesítve. Telepítse az
npm install -g wranglerparanccsal, majd futtassa awrangler loginparancsot a fiókja összekapcsolásához. - Alapvető JavaScript ismeretek és a
fetchkérés/válasz modell megértése, amelyre minden Worker épül.
Ha teljesen üres lappal indul, hozzon létre egy projektet a create-cloudflare (C3) eszközzel. Ez létrehoz egy azonnal telepíthető Worker-t, a wrangler.toml fájlt és a megfelelő compatibility_date-et:
1npm create cloudflare@latest my-edge-ai
2cd my-edge-ai
Válassza a “Hello World” Worker sablont, amikor a rendszer kéri. Ez egy tiszta kiindulópontot biztosít, amelyhez a következő lépésben hozzáadhatja az AI kötést.
1. lépés: A wrangler.toml konfigurálása
Az MI modellek eléréséhez először meg kell határoznia az AI kötést a projekt konfigurációs fájljában.
Nyissa meg a wrangler.toml (vagy wrangler.json) fájlt, és adja hozzá a következő blokkot:
1[ai]
2binding = "AI"
Ez a kötés elérhetővé teszi az AI szolgáltatást a környezeti argumentumban (env.AI) a Worker kódjában. Nem kell API kulcsokat kezelnie, végpontokat konfigurálnia vagy kapcsolatleírókkal bajlódnia. A Wrangler automatikusan kezeli a hitelesítést a telepítés során.
A projekt teljes wrangler.toml fájlja így néz ki:
1name = "my-edge-ai"
2main = "src/index.js"
3compatibility_date = "2025-01-01"
4
5[ai]
6binding = "AI"
A compatibility_date fontos: rögzíti a futtatókörnyezet viselkedését, így a jövőbeli platformváltozások nem módosíthatják váratlanul a Worker működését. Ha kihagyja, a telepítés konfigurációs hibával meghiúsul – ez az egyik leggyakoribb hiba az első futtatáskor.
2. lépés: A Worker kód megírása
A kötés konfigurálása után meghívhatja az AI szolgáltatást a fetch handlerből. Az alábbi példa bemutatja, hogyan fogadhat egy felhasználói promptot tartalmazó JSON-t, és hogyan generálhat szöveges választ a Llama 3 segítségével.
1export default {
2 async fetch(request, env) {
3 if (request.method !== "POST") {
4 return new Response("Method not allowed", { status: 405 });
5 }
6
7 try {
8 const { prompt } = await request.json();
9 if (!prompt) {
10 return Response.json({ error: "Missing prompt" }, { status: 400 });
11 }
12
13 // Call the model using the AI binding
14 const response = await env.AI.run("@cf/meta/llama-3-8b-instruct", {
15 prompt: prompt,
16 max_tokens: 256
17 });
18
19 return Response.json(response);
20 } catch (err) {
21 return Response.json({ error: err.message }, { status: 500 });
22 }
23 }
24};
Ez az egyszerű struktúra lehetővé teszi szöveges összegzők, érzelemelemző eszközök vagy tartalomgenerátorok építését. Ha szeretné összekapcsolni ezeket a funkciókat az adatbázisával, hozzákapcsolhatja egy szerver nélküli SQL-adatbázishoz; a részletekért lásd a Cloudflare D1 adatbázis beállítását .
A chat üzenetformátum használata
A prompt mező kényelmes az egyszeri válaszokhoz, de a társalgási modellek a strukturált messages tömbbel működnek a legjobban. Ez lehetővé teszi, hogy beállítson egy rendszerutasítást (system prompt), amely meghatározza a modell stílusát, és elkülöníti azt a felhasználó bemenetétől:
1const messages = [
2 { role: "system", content: "You are a concise technical assistant." },
3 { role: "user", content: prompt }
4];
5
6const response = await env.AI.run("@cf/meta/llama-3-8b-instruct", {
7 messages,
8 max_tokens: 512
9});
10
11// Text models return the generated text on the `response` property
12return Response.json({ answer: response.response });
Vegye figyelembe, hogy a szöveggeneráló modellek a kimenetüket egy response mezőbe csomagolják, így a kész szöveg a response.response alatt érhető el, nem pedig a legfelső szinten. Ez sok első alkalommal fejlesztőt megtéveszt, akik a nyers objektum kiíratásakor váratlan struktúrát látnak.
A megfelelő modell kiválasztása
A Cloudflare katalógusa több tucat modellt tartalmaz, és a választás a sebesség, a minőség és a költség közötti kompromisszum. A kisebb modellek gyorsabban válaszolnak és kevesebb erőforrást fogyasztanak; a nagyobb modellek jobban gondolkodnak, de lekérdezésenként többe kerülnek. Az alábbi táblázat összehasonlít néhány népszerű szöveggenerálási lehetőséget.
| Modell | Legjobb felhasználási terület | Relatív sebesség | Relatív költség |
|---|---|---|---|
@cf/meta/llama-3-8b-instruct | Általános chat, összegzés | Gyors | Alacsony |
@cf/meta/llama-3.1-70b-instruct | Összetett logikai feladatok, hosszú válaszok | Lassabb | Magasabb |
@cf/mistral/mistral-7b-instruct-v0.2 | Könnyű utasítások, piszkozatok | Gyors | Alacsony |
@cf/meta/llama-guard-3-8b | Tartalom moderálása és osztályozása | Gyors | Alacsony |
Ökölszabályként kezdjen egy 8B modellel, mint például a Llama 3 8B Instruct. Ez kezeli az összegzési, osztályozási és chat feladatok többségét egy 70B modell késleltetésének és költségének töredékéért. Csak akkor váltson nagyobb modellre, ha a saját tesztjei alapján a kisebb modell valóban alulteljesít.
3. lépés: Válaszok streamelése a jobb felhasználói élményért
Chat-alkalmazások esetében a teljes válasz generálására való várakozás rossz felhasználói élményt eredményezhet.
Konfigurálhatja az AI kötést úgy, hogy a választ tokenenként streamelje generálás közben. Ehhez adja át a stream: true paramétert a kérés beállításaiban. A Worker egy ReadableStream-et ad vissza, amelyet közvetlenül továbbíthat a böngészőnek, így egy gyors, interaktív chat-felületet hozhat létre. Az edge futtatókörnyezet és a hagyományos felhőalapú hosztolás összehasonlításához olvassa el a Cloudflare Workers vs. AWS Lambda
elemzésünket.
Itt egy teljes streamelő handler. Ahelyett, hogy feldolgozott JSON-t adna vissza, a streamet közvetlenül továbbítja a kliensnek a megfelelő content-type beállítással, így a böngésző Server-Sent Events-ként tudja azt fogadni:
1export default {
2 async fetch(request, env) {
3 const { prompt } = await request.json();
4
5 const stream = await env.AI.run("@cf/meta/llama-3-8b-instruct", {
6 prompt,
7 max_tokens: 512,
8 stream: true
9 });
10
11 return new Response(stream, {
12 headers: { "content-type": "text/event-stream" }
13 });
14 }
15};
A kulcsfontosságú különbség a nem streamelő verzióhoz képest maga a válasz: a streamet közvetlenül átadja a new Response()-nak, és a content-type fejlécet text/event-stream értékre állítja. Ha a streamet a Response.json() fájlba csomagolná, az nem szerializálódna megfelelően, és a kliens üres választ kapna.
A Worker tesztelése és telepítése
A kötés és a handler beállítása után futtassa a Worker-t helyben, mielőtt élesítené:
1npx wrangler dev
Mivel a következtetés (inference) a Cloudflare GPU-in fut, nem pedig a saját gépén, az AI kötés a hálózathoz kapcsolódik a helyi fejlesztés során is. A Wrangler ezt kezeli Ön helyett, de ez azt jelenti, hogy a helyi teszteléshez internetkapcsolatra és érvényes bejelentkezésre van szükség.
Küldjön egy tesztkérést a curl segítségével, miközben a wrangler dev fut:
1curl -X POST http://localhost:8787 \
2 -H "Content-Type: application/json" \
3 -d '{"prompt": "Summarise the benefits of edge computing in one sentence."}'
Ha elégedett az eredménnyel, telepítse a globális hálózatra:
1npx wrangler deploy
A Wrangler feltölti a Worker-t, és visszaad egy *.workers.dev URL-t. A végpontja mostantól a Cloudflare minden adatközpontjában él, és minden kérés automatikusan a felhasználóhoz legközelebbi helyre irányítódik.
Gyakori hibák és hibaelhárítás
Néhány probléma gyakran előfordul, amikor a fejlesztők először telepítenek következtetési folyamatokat az edge hálózaton. A megoldások ismerete órákig tartó hibakeresést takaríthat meg.
Cannot read properties of undefined (reading 'run')– azenv.AIkötés nincs definiálva. Ez szinte mindig azt jelenti, hogy az[ai]blokk hiányzik awrangler.tomlfájlból, vagy módosította a fájlt, de nem indította újra awrangler devparancsot. Ellenőrizze, hogy a kötés neve pontosan egyezik-e.No such modelvagy 400-as hiba arunsorán – a modell azonosítója hibás. A modellnevek megkülönböztetik a kis- és nagybetűket, és tartalmazniuk kell a teljes elérési utat, például@cf/meta/llama-3-8b-instruct. Másolja ki őket a modellkatalógusból, ahelyett, hogy fejből gépelné be őket.- Üres vagy hibás streamelt válaszok – a streamet a
Response.json()segítségével adta vissza anew Response(stream, ...)helyett. A streameket továbbítani kell, nem pedig szerializálni. - Kapacitási vagy 429-es hibák terhelés alatt – a modell átmenetileg túlterhelt, vagy elérte a fiók korlátját. Adjon hozzá egy rövid újrapróbálkozási logikát késleltetéssel (back-off), és fontolja meg egy kisebb modell használatát a forgalmi csúcsok idejére.
- Csonka válaszok – a válasz mondat közben leáll, mert a
max_tokenstúl alacsony. Emelje meg a korlátot, de ne feledje, hogy a nagyobb értékek növelik a késleltetést és a költségeket is.
Ha egy kérés hiba nélkül leáll, ellenőrizze a naplókat az npx wrangler tail paranccsal, miközben tesztkérést küld. Ez valós időben közvetíti a futásidejű hibákat és a console.log kimeneteket a telepített Workerből.
Költségoptimalizálás és biztonság éles környezetben
Bár a Workers AI rendkívül költséghatékony, az éles környezetben történő futtatás gondos kontrollt igényel.
- Lekérdezési korlátozás (Rate Limiting): Korlátozza, hogy egy kliens milyen gyakran hívhatja meg a végpontot. A GPU számítási költségek a használattal arányosan skálázódnak.
- Promptek ellenőrzése: Validálja a bemeneteket a prompt injection támadások megelőzése érdekében, és biztosítsa, hogy a modell kimenetei megfeleljenek a márka elvárásainak.
- Kontextusméret korlátozása: Tartsa röviden a prompt előzményeket. A hatalmas kontextuspufferek küldése minden hívásnál növeli a tokenfeldolgozási költségeket.
A kontextuskezelés részletes leírását megtalálja az OpenAI API chatbot készítéséről szóló útmutatónkban.
Legfontosabb tanulságok
- A Cloudflare Workers AI szerver nélküli hozzáférést biztosít a nyílt forráskódú modellekhez GPU karbantartás nélkül.
- Konfigurálja a hozzáférést az
[ai]kötési blokk hozzáadásával awrangler.tomlfájlhoz. - Írjon fetch handlereket szöveggenerálási, fordítási vagy képalkotási feladatok végrehajtásához közvetlenül az edge hálózaton.
- Engedélyezze a token streamelést a
stream: trueparaméterrel a mobil- és chat-élmény optimalizálásához. - Alkalmazzon sebességkorlátozásokat és prompt-ellenőrzéseket a végpontok védelme érdekében éles környezetben.
Építse fel MI-alkalmazásait az edge hálózaton
A megbízható MI-integrációk kiépítése szakértői ismereteket igényel a szerver nélküli architektúrák terén. A Mecanik professzionális MI integrációs szolgáltatásokra és egyedi API-megoldásokra szakosodott az OpenAI API integrációs szolgáltatásunkon keresztül. Olyan edge-natív eszközöket építünk, amelyek zökkenőmentesen skálázódnak, optimalizálva a költségeket és a felhasználói élményt. Vegye fel velünk a kapcsolatot a részletek egyeztetéséhez.
Gyakran ismételt kérdések (GYIK)
Mi az a Cloudflare Workers AI? Ez egy szerver nélküli platform, amely lehetővé teszi gépi tanulási modellek (szöveggenerálás, fordítás, hang-szöveg átalakítás, képgenerálás) futtatását a Cloudflare globális GPU hálózatán.
Szükségem van API kulcsra a Workers AI használatához?
Nem. Miután deklarálta az AI kötést a wrangler.toml fájlban, a Cloudflare belsőleg kezeli a hitelesítést, így a szolgáltatás elérhetővé válik az env.AI segítségével.
Milyen modellek érhetők el a Cloudflare Workers AI-n? A platform népszerű nyílt forráskódú modelleket hosztol, beleértve a Meta Llama, Mistral, OpenAI Whisper és Stable Diffusion modelleket, amelyeket rendszeresen frissítenek a modellkatalógusban.
Streamelhetek szöveges válaszokat a Workers AI-ról?
Igen. Ha az env.AI.run hívás paramétereiben beállítja a stream: true értéket, a Worker egy szabványos ReadableStream-et ad vissza a szöveg böngészőbe történő streameléséhez.
Hogyan működik a számlázás a Workers AI esetében? A számlázás a feldolgozott tokenek számán (szöveges modellek esetén) vagy a számítási idő hosszán (más modellek esetén) alapul, költséghatékony használatalapú modellt kínálva.
Hozzászólások