Dieses Cloudflare Workers AI Tutorial zeigt Ihnen, wie Sie Modelle für maschinelles Lernen direkt auf dem globalen Edge-Netzwerk von Cloudflare bereitstellen und ausführen können. Mit Cloudflare Workers AI können Sie Large Language Models (LLMs), Textübersetzungen, Bildgenerierungen und Audiotranskriptionen in der Nähe Ihrer Benutzer ausführen, ohne komplexe GPU-Server verwalten zu müssen. Die folgenden Schritte beschreiben, wie Sie Wrangler konfigurieren, einen Fetch-Handler schreiben, ein Llama-Modell ausführen und die API-Kosten an der Edge optimieren.

TL;DR

  • KI-Modelle serverlos ausführen: Cloudflare Workers AI verwaltet die zugrundeliegende GPU-Infrastruktur und berechnet Ihnen nur die aktive Rechenleistung.
  • Konfiguration von Bindings in wrangler.toml: Verbinden Sie Ihren Worker direkt mit dem AI-Binding, ohne API-Schlüssel verwalten zu müssen.
  • Einen Fetch-Handler schreiben, um Benutzeranfragen zu empfangen, das Modell auszuführen und JSON-Antworten zu streamen.
  • Optimierte Modelle auswählen: Nutzen Sie den Katalog von Cloudflare (wie Llama 3, Whisper oder Stable Diffusion), um Geschwindigkeit und Genauigkeit abzuwägen.
  • Abrechnung und Ratenbegrenzung trennen, um Ihren Endpunkt in der Produktion vor Missbrauch durch hohe Token-Kosten zu schützen.

Warum KI-Modelle auf der Edge ausführen?

Traditionell erforderte die Integration von KI-Funktionen den Aufruf externer APIs (wie OpenAI) oder das Hosten von Open-Source-Modellen auf teuren Cloud-Servern.

Der Aufruf externer APIs bringt Latenzzeiten und Bedenken hinsichtlich des Datenschutzes mit sich. Das Betreiben eigener GPU-Server führt zu Wartungsherausforderungen und lässt sich nur schwer skalieren. Cloudflare Workers AI löst dieses Dilemma. Die Plattform hostet Open-Source-Modelle auf GPUs, die im globalen Netzwerk von Cloudflare verteilt sind. Ihr Code läuft als leichtgewichtiger Worker und führt Modelle in der Nähe Ihrer Benutzer mit minimaler Latenz aus. Für eine Einführung in grundlegende Edge-Strukturen lesen Sie unseren Leitfaden zum Erstellen einer serverlosen API mit Cloudflare Workers .


Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass folgende Voraussetzungen erfüllt sind:

  • Ein Cloudflare-Konto mit aktivierten Workers. Der kostenlose Tarif enthält ein tägliches Kontingent für Inferenz, das für diesen Leitfaden völlig ausreicht.
  • Node.js 18 oder neuer lokal installiert, um die Tools und den lokalen Entwicklungsserver auszuführen.
  • Wrangler, das Workers CLI, installiert und authentifiziert. Installieren Sie es mit npm install -g wrangler und führen Sie dann wrangler login aus, um es mit Ihrem Konto zu verknüpfen.
  • Grundkenntnisse in JavaScript und dem fetch-Request/Response-Modell, auf dem jeder Worker aufbaut.

Wenn Sie bei Null anfangen, erstellen Sie ein Projekt mit dem Tool create-cloudflare (C3). Es generiert einen einsatzbereiten Worker, eine wrangler.toml und ein passendes compatibility_date:

1npm create cloudflare@latest my-edge-ai
2cd my-edge-ai

Wählen Sie bei der Eingabeaufforderung die Vorlage “Hello World” Worker aus. Dies bietet Ihnen einen sauberen Ausgangspunkt, dem Sie im nächsten Schritt das AI-Binding hinzufügen können.


Schritt 1: Konfiguration von wrangler.toml

Um auf KI-Modelle zuzugreifen, müssen Sie zunächst das AI-Binding in der Konfigurationsdatei Ihres Projekts definieren.

Öffnen Sie Ihre wrangler.toml (oder wrangler.json) und fügen Sie den folgenden Block hinzu:

1[ai]
2binding = "AI"

Dieses Binding macht den AI-Dienst über das Umgebungsargument (env.AI) in Ihrem Worker-Code verfügbar. Sie müssen keine API-Schlüssel verwalten, Endpunkte konfigurieren oder sich mit Verbindungszeichenfolgen befassen. Wrangler übernimmt die Authentifizierung automatisch bei der Bereitstellung.

Eine vollständige wrangler.toml für dieses Projekt sieht so aus:

1name = "my-edge-ai"
2main = "src/index.js"
3compatibility_date = "2025-01-01"
4
5[ai]
6binding = "AI"

Das compatibility_date ist wichtig: Es fixiert das Laufzeitverhalten, sodass zukünftige Plattformänderungen die Ausführung Ihres Workers nicht unbemerkt verändern können. Wenn Sie es weglassen, schlägt das Deployment mit einem Konfigurationsfehler fehl – eine der häufigsten Hürden beim ersten Start.


Schritt 2: Schreiben des Worker-Codes

Sobald das Binding konfiguriert ist, können Sie den AI-Dienst von Ihrem fetch-Handler aus aufrufen. Das folgende Beispiel zeigt, wie Sie einen JSON-Payload mit einem Benutzer-Prompt empfangen und mithilfe von Llama 3 eine Textvervollständigung generieren.

 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};

Diese einfache Struktur ermöglicht es Ihnen, Textzusammenfassungen, Sentiment-Analyse-Tools oder Content-Generatoren zu erstellen. Wenn Sie diese Funktionen mit Ihrer Datenbank verbinden möchten, können Sie eine Verknüpfung zu einer serverlosen SQL-Datenbank herstellen; Details finden Sie im Tutorial zum Einrichten einer Cloudflare D1-Datenbank .

Verwendung des Chat-Nachrichtenformats

Das Feld prompt ist praktisch für einmalige Vervollständigungen, aber Konversationsmodelle verhalten sich am besten mit einem strukturierten messages-Array. Dies ermöglicht es Ihnen, Systemanweisungen festzulegen, die den Ton des Modells bestimmen, und diese von den Eingaben des Benutzers zu trennen:

 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 });

Beachten Sie, dass Textgenerierungsmodelle ihre Ausgabe in ein response-Feld einbetten, sodass der vervollständigte Text unter response.response liegt und nicht auf der obersten Ebene. Dies überrascht viele Erstbenutzer, die das rohe Objekt protokollieren und eine unerwartete Struktur sehen.


Auswahl des richtigen Modells

Der Katalog von Cloudflare umfasst Dutzende von Modellen, und die richtige Auswahl ist ein Kompromiss zwischen Geschwindigkeit, Qualität und Kosten. Kleinere Modelle antworten schneller und verbrauchen weniger Ressourcen; größere Modelle können besser logisch argumentieren, kosten aber mehr pro Anfrage. Die folgende Tabelle vergleicht einige beliebte Optionen für die Textgenerierung.

ModellBestens geeignet fürRelative GeschwindigkeitRelative Kosten
@cf/meta/llama-3-8b-instructAllgemeiner Chat, ZusammenfassungenSchnellNiedrig
@cf/meta/llama-3.1-70b-instructKomplexe Logik, längere AntwortenLangsamerHöher
@cf/mistral/mistral-7b-instruct-v0.2Leichtgewichtige Anweisungen, EntwürfeSchnellNiedrig
@cf/meta/llama-guard-3-8bModerieren und Klassifizieren von InhaltenSchnellNiedrig

Als Faustregel gilt: Beginnen Sie mit einem 8B-Modell wie Llama 3 8B Instruct. Es bewältigt den Großteil der Zusammenfassungs-, Klassifizierungs- und Chat-Workflows bei einem Bruchteil der Latenz und Kosten eines 70B-Modells. Wechseln Sie erst dann zu einem größeren Modell, wenn Ihre eigenen Auswertungen zeigen, dass das kleinere Modell tatsächlich nicht ausreicht.


Schritt 3: Antworten für eine bessere Benutzererfahrung streamen

Bei Chat-Anwendungen kann das Warten auf die vollständige Generierung der Antwort zu einer schlechten Benutzererfahrung führen.

Sie können das AI-Binding so konfigurieren, dass die Antwort Token für Token gestreamt wird, während sie generiert wird. Übergeben Sie dazu in Ihren Anfrageoptionen stream: true. Der Worker gibt einen ReadableStream zurück, den Sie direkt an den Browser-Client weiterleiten können, wodurch eine schnelle, interaktive Chat-Schnittstelle entsteht. Um diesen Edge-Laufzeitansatz mit traditionellem Cloud-Hosting zu vergleichen, lesen Sie unseren Vergleich von Cloudflare Workers vs. AWS Lambda .

Hier ist ein vollständiger Streaming-Handler. Anstatt geparstes JSON zurückzugeben, leiten Sie den Stream mit dem korrekten content-type an den Client weiter, sodass der Browser ihn als Server-Sent Events verarbeiten kann:

 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};

Der Hauptunterschied zur Nicht-Streaming-Version ist die Antwort selbst: Sie leiten den Stream direkt in new Response() weiter und setzen den content-type auf text/event-stream. Wenn Sie stattdessen einen Stream in Response.json() verpacken, wird er nicht korrekt serialisiert, sodass der Client einen leeren Body erhält.


Testen und Bereitstellen Ihres Workers

Führen Sie den Worker nach der Einrichtung von Binding und Handler lokal aus, bevor Sie ihn bereitstellen:

1npx wrangler dev

Da die Inferenz auf den GPUs von Cloudflare und nicht auf Ihrem lokalen Rechner läuft, greift das AI-Binding auch während der lokalen Entwicklung auf das Netzwerk zu. Wrangler verwaltet dies für Sie, aber es bedeutet, dass lokale Tests eine Internetverbindung und einen gültigen Login erfordern.

Senden Sie eine Testanfrage mit curl, während wrangler dev läuft:

1curl -X POST http://localhost:8787 \
2  -H "Content-Type: application/json" \
3  -d '{"prompt": "Summarise the benefits of edge computing in one sentence."}'

Sobald Sie mit dem Ergebnis zufrieden sind, stellen Sie den Worker im globalen Netzwerk bereit:

1npx wrangler deploy

Wrangler lädt Ihren Worker hoch und gibt eine *.workers.dev-URL zurück. Ihr Endpunkt ist nun in jedem Cloudflare-Rechenzentrum aktiv, und jede Anfrage wird automatisch an den Standort weitergeleitet, der dem Benutzer am nächsten ist.


Häufige Fehlerquellen und Fehlerbehebung

Einige Probleme treten immer wieder auf, wenn Teams zum ersten Mal Inferenz an der Edge bereitstellen. Wenn Sie die Lösung im Voraus kennen, spart dies Stunden beim Debuggen.

  • Cannot read properties of undefined (reading 'run') – das env.AI-Binding ist nicht definiert. Dies bedeutet fast immer, dass der Block [ai] in der wrangler.toml fehlt, oder Sie haben die Datei bearbeitet, aber wrangler dev nicht neu gestartet (oder nicht neu bereitgestellt). Vergewissern Sie sich, dass der Name des Bindings genau übereinstimmt.
  • No such model oder ein 400-Fehler bei run – der Modellbezeichner ist falsch. Modellnamen unterscheiden zwischen Groß- und Kleinschreibung und müssen den vollständigen Pfad enthalten, z. B. @cf/meta/llama-3-8b-instruct. Kopieren Sie sie aus dem Modellkatalog, anstatt sie aus dem Gedächtnis einzutippen.
  • Leere oder fehlerhafte gestreamte Antworten – Sie haben den Stream über Response.json() anstelle von new Response(stream, ...) zurückgegeben. Streams müssen weitergeleitet und dürfen nicht serialisiert werden.
  • Kapazitäts- oder 429-Fehler unter Last – das Modell ist vorübergehend ausgelastet oder Sie haben ein Kontolimit erreicht. Fügen Sie einen kurzen Retry-Mechanismus mit Back-Off hinzu und ziehen Sie ein kleineres Modell für Traffic-Spitzen in Betracht.
  • Abgeschnittene Antworten – die Antwort bricht mitten im Satz ab, weil max_tokens zu niedrig eingestellt ist. Erhöhen Sie das Limit, aber denken Sie daran, dass größere Werte sowohl die Latenz als auch die Kosten erhöhen.

Wenn eine Anfrage stillschweigend fehlschlägt, können Sie die Live-Protokolle mit npx wrangler tail überwachen, während Sie eine Testanfrage senden. Dies streamt Laufzeitfehler und console.log-Ausgaben des bereitgestellten Workers.


Optimierung von Produktionskosten und Sicherheit

Obwohl Workers AI sehr kosteneffizient ist, erfordert die Ausführung von Modellinferenz in der Produktion sorgfältige Kontrollen.

  • Ratenbegrenzung implementieren: Begrenzen Sie, wie oft ein Client Ihren Endpunkt aufrufen kann. Die GPU-Rechenkosten skalieren mit der Nutzung.
  • Prompts bereinigen: Validieren Sie Eingaben, um Injection-Angriffe zu verhindern und sicherzustellen, dass die Modellausgaben zum Brand-Image passen.
  • Kontextgröße begrenzen: Halten Sie Prompt-Verläufe kurz. Das Senden großer Kontext-Puffer bei jedem Aufruf erhöht die Token-Verarbeitungskosten.

Eine detaillierte Betrachtung des Kontextmanagements finden Sie in unserem Leitfaden zum Erstellen eines OpenAI API-Chatbots .


Wichtige Erkenntnisse

  • Cloudflare Workers AI bietet serverlosen Zugriff auf Open-Source-Modelle ohne GPU-Wartung.
  • Konfigurieren Sie den Zugriff, indem Sie den Binding-Block [ai] in Ihre wrangler.toml einfügen.
  • Schreiben Sie Fetch-Handler, um Textgenerierungs-, Übersetzungs- oder Bildverarbeitungsaufgaben direkt an der Edge auszuführen.
  • Aktivieren Sie das Streamen von Token mit stream: true, um das Erlebnis für Mobilgeräte und Chats zu optimieren.
  • Implementieren Sie Ratenbegrenzungen und Prompt-Bereinigungen, um Ihre Edge-Endpunkte in der Produktion zu schützen.

Erstellen Sie Ihre KI-Anwendungen auf der Edge

Das Erstellen zuverlässiger KI-Integrationen erfordert Expertenwissen über serverlose Architekturen. Mecanik ist spezialisiert auf KI-Integrationsdienste und maßgeschneiderte API-Setups über unseren OpenAI API-Integrationsservice . Wir entwickeln Edge-native Tools, die sich nahtlos skalieren lassen und gleichzeitig Kosten und Benutzererfahrung optimieren. Kontaktieren Sie uns noch heute, um Ihr Projekt zu besprechen.


Häufig gestellte Fragen (FAQ)

Was ist Cloudflare Workers AI? Es ist eine serverlose Plattform, mit der Sie Modelle für maschinelles Lernen (Textgenerierung, Übersetzung, Speech-to-Text, Bildgenerierung) auf dem globalen GPU-Netzwerk von Cloudflare ausführen können.

Benötige ich einen API-Schlüssel, um Workers AI zu verwenden? Nein. Sobald Sie das AI-Binding in Ihrer wrangler.toml-Datei deklarieren, verwaltet Cloudflare die Anmeldeinformationen intern, sodass der Dienst über env.AI zugänglich ist.

Welche Modelle sind auf Cloudflare Workers AI verfügbar? Die Plattform hostet beliebte Open-Source-Modelle, darunter Meta Llama, Mistral, OpenAI Whisper und Stable Diffusion, die regelmäßig in ihrem Modellkatalog aktualisiert werden.

Kann ich Textantworten von Workers AI streamen? Ja. Wenn Sie in den Parametern Ihres env.AI.run-Aufrufs stream: true setzen, gibt der Worker einen standardmäßigen ReadableStream zurück, um Text an den Browser zu streamen.

Wie funktioniert die Abrechnung für Workers AI? Die Abrechnung basiert auf der Anzahl der verarbeiteten Token (bei Textmodellen) oder der Dauer der Rechenzeit (bei anderen Modellen) und bietet ein kostengünstiges Pay-as-you-go-Modell.