Arkitekturen

En produktions-AI-chatbot har fyra komponenter:

1. **Chatt-UI**: Inmatningsfält, meddelandehistorik, laddningstillstånd, felhantering 2. **Konversationstillstånd**: En array av meddelanden (roll + innehåll) lagrad i frontend-tillståndet 3. **Backend-proxy**: En Supabase Edge Function eller Xano-endpoint som anropar OpenAI 4. **Systemprompt**: Instruktionsuppsättningen som definierar din chatbots persona, kunskap och begränsningar

Konversationstillståndet är det viktigaste konceptet. OpenAIs API är tillståndslöst — varje förfrågan måste inkludera hela konversationshistoriken. Din frontend underhåller denna historik och skickar den med varje meddelande. För svenska B2B-appar: lagra konversationer i Supabase EU-region för GDPR-efterlevnad.

Bygga chatt-UI i WeWeb

I WeWeb, skapa en sidnivåvariabel `messages` (array, standard tom). Lägg till två komponenter:

**Meddelandelista**: En Repeating Group bunden till `messages`. Varje element har ett villkorligt utseende — användarmeddelanden högerjusterade med primärfärg bakgrund, assistentmeddelanden vänjusterade med neutral bakgrund. Bind texten till `item.content`.

**Inmatningsarea**: En textinmatning bunden till en `userInput`-variabel, plus en "Skicka"-knapp. Vid knapptryck: (1) lägg till `{roll: "user", content: userInput}` i `messages`, (2) rensa `userInput`, (3) anropa API-åtgärden, (4) lägg till svaret som `{roll: "assistant", content: response}`.

Lägg till en laddningsspinner som visas medan API-anropet pågår. Bra UX-detalj som förväntas av svenska B2B-användare.

Skriva en effektiv systemprompt

Systemprompten bestämmer allt om din chatbots beteende. En bra produktionssystemprompt inkluderar:

- **Roll**: "Du är en kundsupportagent för Acme SaaS, ett projekthanteringsverktyg." - **Kunskap**: "Du hjälper användare med: skapa projekt, bjuda in teammedlemmar, konfigurera integrationer och faktureringsfrågor." - **Begränsningar**: "Svara bara på frågor om Acme SaaS. Nämn aldrig konkurrentprodukter. Hitta aldrig på funktioner som inte finns." - **Format**: "Håll svaren under 100 ord. Använd punktlistor för steg. Svara på svenska om inte användaren skriver på annat språk." - **Eskalering**: "Om användaren uttrycker frustration eller nämner ett faktureringsfel, säg: 'Jag kopplar dig till vårt team' och utlös eskaleringsflödet."

För svenska appar: inkludera instruktionen att svara på svenska som standard, med möjlighet att byta språk.

Lägga till persistent kontext

Den grundläggande chatboten glömmer allt när sidan uppdateras. För att göra den smartare:

**Användarkontext-injektion**: När chatbottssessionen startar, hämta användarens kontodata (plan, användning, senaste aktivitet) och lägg till den i systemprompten: "Användarens nuvarande plan är Pro. Deras senaste aktivitet var för 3 dagar sedan. De har 2 aktiva projekt."

**Konversationspersistens**: Spara meddelanden till en Supabase-tabell (chatbot_sessions) med user_id och session_id. Vid sidladdning, hämta de senaste N meddelandena och fyll i förväg messages-arrayen.

**Kunskapsbas**: För produktdokumentation, lagra artiklar i Supabase med inbäddningar (med pgvector). Innan du anropar GPT-4o, kör en likhetsökning och injicera de mest relevanta artiklarna i systemprompten. Detta kallas RAG (Retrieval Augmented Generation) och förbättrar dramatiskt svarsnoggrannheten.

Kostnader och prestanda i produktion

För ett SaaS med 500 aktiva användare som var och en skickar 10 meddelanden per dag:

- Genomsnittligt meddelande: 50 tokens input + 100 tokens output - GPT-4o-prissättning: 2,50 USD/M input + 10 USD/M output - Daglig kostnad: 500 × 10 × 150 tokens = 750 000 tokens = ~2,50 USD/dag = ~750 SEK/månad

För att hantera kostnader: implementera ett sessions-tokenbudget (sluta lägga till historikmeddelanden när konversationen överskrider 2 000 tokens, börja sammanfatta gamla meddelanden). Använd GPT-4o mini för enkla förfrågningar (0,15 USD/M input) och reservera GPT-4o för komplexa.

Svarstid: GPT-4o svarar på 1–3 sekunder. Lägg till en skrivindikator för att sätta förväntningar. För under-sekundsupplevelse, implementera strömning.

Reglering och GDPR för AI-chatbottar

För svenska appar finns det extra hänsyn för AI-chatbottar:

**Dataminimering**: Lagra inte mer konversationshistorik än nödvändigt. Implementera automatisk radering av konversationer äldre än ditt behov (t.ex. 90 dagar).

**Transparens**: Informera användare om att de pratar med en AI. EU:s AI-förordning kräver tydlig märkning av AI-interaktioner från och med 2026.

**Ingen känslig data**: Konfigurera systemprompten att aktivt avvisa om användare delar känsliga personuppgifter, personnummer (personnummer), bankuppgifter eller hälsodata i chattten.

**Datacentralisering i EU**: Alla konversationsloggar i Supabase EU-region. Din Edge Function i EU-region. OpenAI behandlar data utanför EU — dokumentera detta i din integritetspolicy och Data Processing Agreement med OpenAI.