Was Supabase Edge Functions sind

Edge Functions sind serverlose Deno-TypeScript-Funktionen, die global im Supabase Edge Network ausgeführt werden. Wenn ein Nutzer eine Aktion in deiner WeWeb- oder FlutterFlow-App auslöst, ruft das Frontend deine Edge Function auf — diese enthält Geschäftslogik, ruft externe APIs auf und gibt Ergebnisse zurück.

Für KI-Integrationen sind Edge Functions unverzichtbar: sie sind die Schicht, in der dein OpenAI API-Key sicher gespeichert wird, niemals dem Client exponiert. Kein Frontend-Code enthält je Geheimnisse.

Wichtig für den deutschen Markt: Supabase bietet EU-Regionen (eu-west-1 Frankfurt, eu-west-2 Irland). Edge Functions, die in diesen Regionen deployt werden, verarbeiten Daten innerhalb der EU — ein zentrales Anforderung für DSGVO-Konformität, insbesondere wenn du personenbezogene Daten an KI-Dienste weiterleitest.

Grundlegende Edge Function für OpenAI

Eine einfache Edge Function, die OpenAI aufruft, hat diese Struktur:

```typescript import { OpenAI } from "https://deno.land/x/openai/mod.ts";

Deno.serve(async (req) => { const { prompt, userId } = await req.json(); const openai = new OpenAI({ apiKey: Deno.env.get("OPENAI_API_KEY") }); const response = await openai.chat.completions.create({ model: "gpt-4o", messages: [{ role: "user", content: prompt }], max_tokens: 500 }); return new Response(JSON.stringify({ result: response.choices[0].message.content })); }); ```

Deploy mit `supabase functions deploy ai-handler`. Key setzen mit `supabase secrets set OPENAI_API_KEY=sk-...`. Der Key ist verschlüsselt gespeichert und niemals im Code sichtbar.

Für die Produktion: füge Authentifizierungs-Validierung hinzu (prüfe JWT des Nutzers), Ratenlimitierung (wie viele Anfragen pro Stunde pro Nutzer) und Nutzungsprotokollierung (speichere jeden Aufruf in Supabase für Abrechnung und Monitoring).

RAG mit Supabase pgvector implementieren

RAG (Retrieval Augmented Generation) ermöglicht KI-Antworten basierend auf deinen eigenen Daten — nicht auf OpenAIs allgemeinem Wissen. Die Architektur:

1. **Ingest**: Dokumente in Chunks aufteilen → OpenAI Embeddings generieren → in Supabase mit pgvector-Extension speichern 2. **Retrieve**: Nutzerfrage mit OpenAI einbetten → Ähnlichkeitssuche in Supabase → relevante Chunks zurückgeben 3. **Generate**: Relevante Chunks + Nutzerfrage → GPT-4o → faktisch korrekte Antwort

Die pgvector-Extension aktivieren: `create extension vector in extensions schema;`. Dann eine Tabelle mit einem Vektor-Spalte erstellen: `embedding vector(1536)`. Für die Suche eine Funktion `match_documents` erstellen, die Kosinus-Ähnlichkeit berechnet.

Für deutsche B2B-Apps, die auf internen Dokumenten trainiert werden: dieser Ansatz hält sensible Unternehmensdaten in Supabase EU-Region und sendet nur nicht-identifizierbare Embedding-Vektoren an OpenAI — eine DSGVO-freundlichere Architektur als rohes Dokument-Sharing.

Streaming-Antworten implementieren

Streaming zeigt KI-Antworten token-für-token an — wie ChatGPT. Das verbessert die wahrgenommene Performance deutlich: Nutzer sehen sofort, dass etwas passiert, anstatt 3–8 Sekunden auf eine vollständige Antwort zu warten.

In der Edge Function: setze `stream: true` im OpenAI-Aufruf und gib den Stream als SSE (Server-Sent Events) zurück. In WeWeb: nutze einen `EventSource`-Aufruf oder einen Custom Action mit Fetch-Streaming.

Für FlutterFlow-Mobile: Streaming ist komplexer zu implementieren (Flutter hat keine native SSE-Unterstützung), aber machbar mit dem `http`-Package und einem Custom Dart-Decoder. Für die meisten Mobile-KI-Features ist nicht-streaming ausreichend — die 3-Sekunden-Latenz ist mit einem Ladeindikator akzeptabel.

Für deutsche B2B-Apps mit professionellen Nutzern, die täglich viele KI-Anfragen stellen, ist Streaming ein erheblicher UX-Vorteil und kann die wahrgenommene App-Qualität deutlich verbessern.

DSGVO-konforme KI-Verarbeitung

Wenn deine App KI nutzt und DSGVO-relevant ist (also immer für deutsche Unternehmen mit EU-Nutzern), gibt es konkrete Anforderungen:

**Auftragsverarbeitungsvertrag (AVV)**: OpenAI muss als Auftragsverarbeiter eingestuft werden. Schließe einen AVV über die OpenAI-Unternehmens-Einstellungen ab.

**Datensparsamkeit**: Sende niemals mehr Daten an OpenAI als nötig. Anonymisiere oder pseudonymisiere personenbezogene Daten vor dem Senden, wenn möglich.

**Verarbeitungsverzeichnis**: Dokumentiere in deinem DSGVO-Verarbeitungsverzeichnis, welche Daten du für welchen Zweck an OpenAI sendest.

**Drittlandübermittlung**: OpenAI verarbeitet in den USA. Dokumentiere dies in deiner Datenschutzrichtlinie mit Hinweis auf Standardvertragsklauseln (SCCs).

Für besonders sensible Daten (Gesundheit, Finanz, Rechtliches) erwäge Azure OpenAI mit EU-Region oder Mistral AI (französisches Unternehmen, EU-Infrastruktur) als DSGVO-freundlichere Alternativen.

Edge Functions in WeWeb und FlutterFlow aufrufen

In WeWeb: erstelle eine REST API Resource, die auf deine Edge Function URL zeigt (`https://[project-id].supabase.co/functions/v1/[function-name]`). Konfiguriere den Authorization-Header mit dem Supabase-Anon-Key. Erstelle eine Action, die die Resource aufruft und das Ergebnis in einer Variablen speichert.

In FlutterFlow: nutze eine Custom Action oder einen API-Call in den Backend-Calls-Einstellungen. Füge deine Edge Function URL als POST-Endpunkt hinzu, konfiguriere den Authorization-Header und parse die JSON-Antwort in FlutterFlow-Variablen.

Für beide: füge Loading States hinzu (Spinner während des API-Aufrufs), Error States (Fehlermeldung wenn die Edge Function 500 zurückgibt) und Rate-Limit-Handling (Hinweis an den Nutzer wenn 429 zurückgegeben wird). Diese Details machen den Unterschied zwischen einer App, die sich professionell anfühlt, und einer, die sich unfertig anfühlt.