Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

PostgreSQL + OpenAI: konsekvent chattminne

Rickard Andersson Partner, Nodenordic.se

Din chatbot ”glömmer” vad en kund sa för två meddelanden sedan. Eller så minns den… men svarar med en helt annan ton nästa gång. Då slutar det med att du lappar upplevelsen manuellt, kopierar in kontext i prompts och hoppas att ingen märker inkonsekvensen.

Den här automatiseringen för Postgres-chattminne slår hårdast mot marknadsföringsleads och supportchefer. Byråteam som bygger chattupplevelser åt kunder känner också av det. Resultatet är enkelt: din bot behåller tillstånd, håller sig on-brand och slutar ställa samma frågor om och om igen.

Du får se hur flödet hämtar kontext från PostgreSQL, genererar ett svar med OpenAI, uppdaterar det löpande ”världstillståndet” och skickar tillbaka ett korrekt formaterat svar till din webbapp.

Så här fungerar automatiseringen

Se hur det här löser problemet:

n8n Workflow Template: PostgreSQL + OpenAI: konsekvent chattminne

Utmaningen: chatbottar som inte minns (eller minns fel)

En hjälpsam chatbot behöver två saker samtidigt: kreativitet (så att den kan svara naturligt) och konsekvens (så att den inte driver iväg). De flesta upplägg får till det ena men missar det andra. Om du bara skickar in det senaste meddelandet till modellen så ”nollställs” den och upprepar frågor. Om du dumpar hela konversationen i varje prompt så drar kostnaderna iväg och svaren blir röriga. Sen finns den värsta varianten: utspridd kontext i någons anteckningar, ett Google Doc eller en halvt fungerande ”minnesfunktion” som inte går att granska. Det är frustrerande, för botten känns nära – men du måste ändå sitta och passa den.

Det bygger snabbt på. Här är var det fallerar i riktiga team.

  • Användare förklarar sina preferenser på nytt varje session, vilket tyst urholkar förtroendet.
  • Er varumärkesröst skiftar beroende på vilken promptversion som råkar vara driftsatt.
  • Det finns ingen pålitlig logg över vad som ändrats i ”tillståndet”, så felsökning blir gissningslek.
  • Manuella fixar smyger in, och plötsligt kräver en ”enkel chatbot” daglig tillsyn.

Lösningen: beständigt chattminne lagrat i PostgreSQL

Det här flödet använder n8n som limmet mellan ditt webbchattgränssnitt, PostgreSQL och OpenAI. När en användare ställer en fråga tar n8n emot den via en webhook och hämtar direkt den aktuella ”världskontexten” från Postgres (preferenser, senaste händelser och senast kända status). Den kontexten matas in i en AI-agent som drivs av en OpenAI-chattmodell, så att svaret förankras i det som redan gäller. Därefter tolkar flödet AI-utdata för att plocka ut eventuella tillståndsändringar (till exempel en uppdaterad preferens eller en ny berättelsehändelse), skriver uppdateringen tillbaka till PostgreSQL och returnerar slutligen ett rensat, användarvänligt svar till webbappen.

Flödet startar med en webhook-trigger från din app. Postgres står för det beständiga minnet, medan AI-agenten genererar svaret med hjälp av det minnet. Sedan uppdateras Postgres och noden Respond to Webhook skickar tillbaka slutmeddelandet, så att din frontend kan hållas enkel.

Vad som förändras: före vs. efter

Effekt i verkligheten

Säg att ditt team driver en liten supportbot som hanterar cirka 30 konversationer per dag. Utan minne är det vanligt att lägga kanske 3 minuter per konversation på att samla in kontext igen eller kliva in när botten upprepar sig, vilket är ungefär 90 minuter per dag. Med det här flödet körs cykeln ”hämta kontext + svara + uppdatera” automatiskt efter att webhooken triggar, och den mänskliga tiden går ner till snabba stickprov (kanske 10 minuter om dagen). Det är ungefär en timme tillbaka de flesta dagar, utan att sänka svarskvaliteten.

Krav

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • PostgreSQL för att lagra chattkontext och tillstånd.
  • OpenAI för att generera svar från lagrat minne.
  • LLM API-nyckel (hämta den i din OpenAI-dashboard).

Svårighetsnivå: Medel. Du kopplar in autentiseringsuppgifter, skapar en tabell och justerar en systemprompt.

Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).

Flödet i arbetsflödet

En webhook tar emot ett chattmeddelande. Din webbapp skickar användarens fråga till n8n, tillsammans med ett ID som mappar till rätt ”minnespost” i PostgreSQL.

Postgres laddar aktuell kontext. Flödet frågar din tabell (till exempel en post som agent_fifi) och hämtar preferenser plus senast kända världshistorik, så att agenten startar från det som redan är etablerat.

En AI-agent genererar svaret och implicita uppdateringar. OpenAI-chattmodellen svarar med din systemprompt och den hämtade kontexten, samtidigt som flödet också förbereder en strukturerad ”statusutdata” som kan tolkas för uppdateringar.

Det nya tillståndet sparas och ett rensat svar returneras. n8n skriver uppdaterade fält tillbaka till PostgreSQL, snyggar till den slutliga användartexten och svarar sedan på den ursprungliga webhooken så att din app kan visa svaret direkt.

Du kan enkelt ändra de lagrade fälten (som preferenser eller kategorier) så att de matchar din verksamhet, och samtidigt behålla samma integrationsmönster Postgres + OpenAI. Se hela implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementation

Steg 1: konfigurera webhook-triggern

Sätt upp den inkommande webhooken som tar emot användarens meddelande och startar workflowet.

  1. Lägg till noden Incoming Webhook Trigger och ställ in HTTP MethodPOST.
  2. Ställ in Pathfifi-chat.
  3. Ställ in Response ModeresponseNode så att svaret hanteras av Return Webhook Reply.
  4. Bekräfta workflow-anslutningen från Incoming Webhook Trigger till Retrieve World Records.

Steg 2: anslut Postgres för world state

Hämta och uppdatera multiversums status från er Postgres-databas.

  1. Öppna Retrieve World Records och ställ in Operationselect.
  2. Ställ in Schemapublic och Tablefifi_world_context.
  3. Lägg till ett Where-filter med Column id och Value earth_fifi.
  4. Autentiseringsuppgifter krävs: Anslut era postgres-uppgifter för Retrieve World Records.
  5. Öppna Update World Records och ställ in OperationexecuteQuery.
  6. Ställ in QueryUPDATE fifi_world_context SET cat_location = '{{ $json.cat_location }}', cat_activity = '{{ $json.cat_activity }}', world_history = '{{ $json.updated_world_history }}', last_updated = NOW() WHERE id = 'earth_fifi'; .
  7. Autentiseringsuppgifter krävs: Anslut era postgres-uppgifter för Update World Records.

Steg 3: sätt upp AI-svarsmotorn

Konfigurera agenten samt dess modell/minne för att generera svar och statustaggar.

  1. Öppna Multiverse Response Agent och ställ in Text=Answer user's query in {{ $('Incoming Webhook Trigger').item.json.body.message }}.
  2. Säkerställ att systemprompten i Multiverse Response Agent innehåller de dynamiska fälten för preferenser och world history (finns redan via uttryck som {{ $json.world_history }} och {{ $json.last_updated }}).
  3. Konfigurera OpenAI Dialogue Model med Model gpt-4, Max Tokens 700, Temperature 0.7, Presence Penalty 0.4 och Frequency Penalty 0.2.
  4. Autentiseringsuppgifter krävs: Anslut era openAiApi-uppgifter på OpenAI Dialogue Model.
  5. Behåll Session Memory Buffer ansluten till Multiverse Response Agent med Session Key fifi_main_session, Session ID Type customKey och Context Window Length 6.
  6. Observera: Session Memory Buffer är en AI-undernod — lägg till eventuella nödvändiga autentiseringsuppgifter på den överordnade Multiverse Response Agent om ni blir ombedda.

Steg 4: tolka och uppdatera world status

Extrahera statustaggar från AI-utdata, komplettera world history och uppdatera databasen.

  1. Öppna Parse Status Output och behåll den angivna JS Code för att extrahera taggarna #cat_status och #world_event från agentens utdata.
  2. Verifiera att koden refererar till Retrieve World Records via $items('Retrieve World Records') för att hämta befintligt tillstånd.
  3. Bekräfta körflödet: Multiverse Response AgentParse Status OutputUpdate World Records.

⚠️ Vanlig fallgrop: Om AI-svaret inte innehåller #cat_status eller #world_event kommer uppdateringssteget att behålla tidigare värden. Säkerställ att agentens prompt behåller dessa taggar när en statusuppdatering behövs.

Steg 5: rensa svaret och skicka webhook-responsen

Ta bort systemtaggar och returnera ett rent svar till den som anropar webhooken.

  1. Öppna Clean Response Text och behåll den angivna JS Code som tar bort rader som börjar med # och rensar bort taggfragment.
  2. Säkerställ anslutningsflödet: Update World RecordsClean Response TextReturn Webhook Reply.
  3. Öppna Return Webhook Reply och ställ in Respond Withtext.
  4. Ställ in Response Body={{ $json.output }}.

Steg 6: testa och aktivera ert workflow

Validera end-to-end-flödet från webhook-inmatning till databasuppdatering och svar ut.

  1. Klicka Execute Workflow och skicka en POST-begäran till Incoming Webhook Trigger-URL:en med JSON-body som innehåller message.
  2. Bekräfta att Retrieve World Records returnerar raden earth_fifi och att Multiverse Response Agent producerar ett svar med valfria taggar.
  3. Verifiera att Parse Status Output genererar uppdaterade fält och att Update World Records skriver ändringarna till databasen.
  4. Kontrollera att Return Webhook Reply returnerar den rensade texten från $json.output.
  5. Växla workflowet till Active för att aktivera produktionsanvändning.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Se upp med

  • PostgreSQL-inloggningar kan löpa ut eller sakna behörigheter. Om inserts misslyckas, kontrollera n8n:s credential-inställningar och bekräfta att tabellen finns med förväntade kolumner.
  • Om du använder Wait-noder eller extern rendering varierar processeringstiderna. Öka väntetiden om nedströms noder fallerar på tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in er varumärkesröst tidigt, annars kommer du att redigera utdata i all evighet.

Vanliga frågor

Hur snabbt kan jag implementera den här automatiseringen för Postgres-chattminne?

Cirka en timme om din Postgres-tabell och din OpenAI-nyckel är redo.

Kan icke-tekniska team implementera den här automatiseringen för chattminne?

Ja, men de vill ha en tydlig checklista. Ingen kodning krävs i n8n, men att sätta upp Postgres-tabellen är enklare med någon som är bekväm med att köra ett SQL-skript.

Är n8n gratis att använda för det här Postgres-chattminnesflödet?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volymer. Du behöver också räkna med kostnader för OpenAI API, som vanligtvis är några cent per konversation beroende på modell och promptstorlek.

Var kan jag hosta n8n för att köra den här automatiseringen?

Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.

Hur anpassar jag den här Postgres-chattminneslösningen till mina specifika utmaningar?

Börja med fälten i Postgres-tabellen och agentens systemprompt. Du kan lägga till kolumner för saker som ”plantyp”, ”senaste köp” eller ”godkända erbjudanden” och sedan uppdatera noderna Retrieve World Records och Update World Records så att de läser/skriv dessa fält. Om dina befintliga data ligger någon annanstans kan du byta ut Postgres-noderna mot en annan databaskoppling och behålla samma mönster webhook → agent → uppdatering.

Varför misslyckas min Postgres-anslutning i det här flödet?

Oftast handlar det om inloggningsuppgifter eller nätverksåtkomst. Bekräfta att databashosten går att nå från där n8n körs och kontrollera sedan användarnamn/lösenord och databasnamn i n8n:s Postgres-credential igen. Om anslutningen fungerar men skrivningar misslyckas beror det ofta på saknade tabellbehörigheter eller att kolumnerna inte matchar (ditt SQL-skript och dina nodmappningar måste stämma överens). Rate limiting är inte vanligt här, men timeouts kan inträffa om DB:n sover eller är underdimensionerad.

Vilken kapacitet har den här Postgres-chattminneslösningen?

På self-hostad n8n handlar kapaciteten främst om din server och databas. I praktiken kör många små team hundratals konversationer per dag eftersom varje körning bara är ”hämta kontext, anropa OpenAI, skriv uppdatering, svara”. På n8n Cloud beror din månatliga exekveringsgräns på plan, så kontrollera din förväntade chattvolym och multiplicera med antal meddelanden per konversation.

Är den här automatiseringen för Postgres-chattminne bättre än att använda Zapier eller Make?

Ofta, ja. Att spara beständigt minne på ett snyggt sätt kräver vanligtvis ett riktigt databassteg, lite logik och kontrollerad prompting, och n8n klarar det utan att göra varje gren till en extra betald task. Zapier eller Make kan fungera för en enkel bot med ”fråga in, svar ut”, men beständig kontext plus tillståndsuppdateringar blir snabbt klumpigt. Med n8n kan du också self-hosta, vilket är praktiskt när användningen växer. Om du är osäker, prata med en automationsexpert så kvalitetssäkrar vi enklaste vägen för din setup.

När ditt chattminne väl ligger i PostgreSQL slutar konsekvens att vara en förhoppning och blir standard. Flödet för kontexten vidare så att du kan lägga tiden på att förbättra upplevelsen – inte på att fixa om samma saker igen.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal