ποΈ Terug naar start
π§ Onder Constructie
Ik heb een Python project aangemaakt op GitHub waar ik een template wil maken om snel en simpel een AI gestuurde applicatie mee te kunnen bouwen. Diverse onderdelen worden als modules pas geladen als ze nodig zijn om de applicatie zo ligt mogelijk te houden. Er zijn verschillende voorbeelden ingebouwd als aparte modules. Gebruikte software en bibliotheken:
πΈ Python
πΈ OpenAI
πΈ LangChain
πΈ LangGraph
πΈ LangSmith
πΈ Streamlit
Project op GitHub
A3D AI Template: GitHub Opslagplaats (a3dsysteemtemplate)
Het idee achter dit project is om een online applicatie te bouwen die opgebouwd is uit verschillende modules. De applicatie maakt gebruik van Streamlit om de gebruikersinterface te maken. Om de applicatie zo snel (ligt) mogelijk te houden wordt een module pas geladen als deze echt nodig is. De modules op zich zijn losse onderdelen die gebruik maken van verschillende technieken en bibliotheken die ik op deze manier wil leren kennen/gebruiken. Voor mij is het dus leer, test en naslagmateriaal. I.v.m. tijdgebrek zal de uitleg summier zijn maar ik denk dat de code best wel begrijpelijk/logisch ingedeeld is. De applicatie is zo veel mogelijk OOPS opgebouwd met classes (klassen).
πΈ Ik heb in de applicatie verschillende modules ingebouwd die via het zijpaneel zijn op te starten. Ik heb de modules gemaakt met het doel diverse onderdelen te testen en onder controle te krijgen. De modules zijn zo opgezet dat ze met zo weinig mogelijk inspanning op te pakken en aan te passen zijn. Alle modules zijn verdeeld in verschillende Classes. Onderdelen worden pas dynamisch geladen op het moment dat ze daadwerkelijk nodig zijn.
Alle modules zijn opgebouwd met minimaal 2 onderdelen (bestanden):
πΉ De View: Streamlit GUI: Die wordt geladen vanuit app.py n.a.v. de waarde in βst.session_state['appState']β
πΉ De Controler: De logica van de module. De controler wordt gestart vanuit de view en verwerkt de vraag of opdracht van de gebruiker
Het "A3D AI Template" project op GitHub
πΈ Dit is de module die standaard bij het opstarten van de applicatie geladen wordt. Het is een simpele chatbot met een geheugen en een systeemprompt die gebruik maakt van de OpenAI API. De systeemprompt is (voor testdoeleinden) in het zijpaneel (tijdelijk) aan te passen.
Deze module heb ik gebouwd om LangGraph State te testen in een Streamlit omgeving. Ik heb de code die hier in deze video wordt besproken daarvoor aangepast. Het punt is dat Streamlit iedere keer als er een actie (zoals een knop klik) plaats vind de gehele aplicatie opnieuw geladen wordt. Dit maakt het noodzakelijk om in een Streamlit applicatie gebruik te maken van st.session_state om o.a. het geheugen en de StateGraph op te slaan.
Youtube: LangGraph State in Less Than 10 Minutes - Orginele tutorial
Orginele code op GitHub