Postgres-adatbázist kapott a LangGraph AI-ügynök, így megjegyzi a foglalásokat
A LangGraph AI-ügynök immár képes megjegyezni a foglalásokat, miután a fejlesztő Postgres-adatbázist integrált a rendszerébe. A Dockerrel vagy felhőalapú Postgres-szel tesztelhető megoldás egy valós ügyfélszolgálati folyamatot szimulál.

Az AI-ügynök teljes foglalási folyamatot kezel, ahogy egy valós ügyfélszolgálati képviselő tenné. A LangGraph keretrendszerre épülő ügynök képes reagálni az ügyfelek kérdéseire, megérteni igényeiket, kiszámítani a szolgáltatás árát, kezelni az ajánlat elfogadását vagy elutasítását, optimalizált időpontokat javasolni, majd végül megerősíteni és rögzíteni a foglalást. (Towards Data Science)
A korábbi cikkekben már elkészült egy állapotkövető LangGraph ügynök, amely egy 15 perces foglalási folyamatot kezel, és egy Streamlit UI-val is ellátták a jobb felhasználói élmény érdekében. Az új fejlesztés a Postgres-adatbázis integrálásával teszi tartóssá a tárolt adatokat.
Az ügynök a beszélgetés állapotát a LangGraph `AgentState`-ben tárolja, és ellenőrzőpontokként menti. Amikor az ügynök időpontokat ajánl, az adatbázisból olvassa ki a már meglévő foglalásokat, hogy ne javasoljon foglalt időpontot. Az ügyfél visszaigazolása után pedig egy új foglalási sort ír az adatbázisba (technikus, időtartomány, cím, ár).
Az ügynök kétféle tárolási móddal rendelkezik: memóriabeli (in-memory) és Postgres. Az in-memory mód gyors tesztelésre és demózásra szolgál, ekkor nincsenek táblák létrehozva. A tartós adattároláshoz a `DATABASE_URL` környezeti változóban kell megadni a Postgres-kapcsolat sztringjét. A fejlesztő a GitHubon tette közzé a teljes forráskódot a `customer-service-agent` repóban.
A projekt Dockerrel is tesztelhető, ami lehetővé teszi a Postgres-adatbázis helyi futtatását anélkül, hogy azt külön telepíteni kellene a gépre. A `docker-compose.yml` fájl egy PostgreSQL 16-os verziójú tárolót indít, amelyhez a Streamlit alkalmazás helyileg csatlakozik. Az adatbázisfájlok egy Docker volume-ban tárolódnak, így az adatok megmaradnak a tároló újraindítása vagy leállítása után is.
A `docker compose up -d` paranccsal indítható a tároló, majd a `.env` fájlban kell beállítani a `DATABASE_URL`-t, például: `postgresql://booking:booking@localhost:5432/booking_agent`. Ezt követően a `poetry run streamlit run customer_service_agent/streamlit_app.py` paranccsal indítható a Streamlit UI.
A Docker használata biztosítja, hogy az adatbázis izoláltan fusson, és a tesztelés reprodukálható legyen. Miután egy foglalást elvégeztek a Streamlit UI-ban, egy második böngészőablakban lekérdezve ugyanazt a szolgáltatást, már nem ajánlja fel az előzőleg lefoglalt időpontot. A Postgres-konténer külön fut a Streamlit alkalmazástól, és az adatok a Docker volume-ban maradnak, még akkor is, ha a Streamlit alkalmazást újraindítják. Az adatvesztés csak a konténer és a volume törlésével következik be (`docker compose down -v`).
A felhőalapú Postgres használata hasonlóan egyszerű: ha a szolgáltató (pl. Supabase, RDS) biztosít egy Postgres-adatbázist, annak kapcsolati sztringjét kell a `DATABASE_URL`-be másolni. Az alkalmazás viselkedése megegyezik a Dockerrel tesztelt változattal, csupán a Postgres futtatásának helye változik. A fejlesztő tervei szerint a jövőben további csatornák, például WhatsApp integrációja, valamint egy biztonsági réteg a prompt injection kockázatának csökkentésére is bekerülhet a rendszerbe.