====== A3D AI Template ====== 🗂️ [[start|Terug naar start]]\\ 🚧 **Onder Constructie**\\ Ik heb een [[https://github.com/AdrieVanDijke/a3dsysteemtemplate|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 [[#modules|aparte modules]]. Gebruikte software en bibliotheken: 🔸 [[python|Python]]\\ 🔸 [[ai-ki#openai|OpenAI]]\\ 🔸 [[longchain_home|LangChain]]\\ 🔸 [[langgraph|LangGraph]]\\ 🔸 [[langsmith|LangSmith]]\\ 🔸 [[steamlit_home|Streamlit]] **Project op GitHub**\\ [[https://github.com/AdrieVanDijke/a3dsysteemtemplate|A3D AI Template: GitHub Opslagplaats (a3dsysteemtemplate)]] ---- ===== Het Idee ===== 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)//. ---- ===== Modules ===== 🔸 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 [[https://github.com/AdrieVanDijke/a3dsysteemtemplate|Het "A3D AI Template" project op GitHub]] ---- ==== 🗨️ Basic AI Chatbot Module ==== 🔸 Dit is de module die standaard bij het opstarten van de applicatie geladen wordt. Het is [[https://platform.openai.com/docs/guides/text-generation|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. ---- ==== 🔗 Simple Graph Module ==== [[https://github.com/AdrieVanDijke/a3dsysteemtemplate/blob/main/a3d/controlers/c_simple_graph.py|Deze module]] heb ik gebouwd om [[langgraph|LangGraph]] State te testen in een [[steamlit_home|Streamlit]] omgeving. Ik heb de code die hier in [[https://www.youtube.com/watch?v=BDFP6VSOARk|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 [[https://docs.streamlit.io/develop/api-reference/caching-and-state/st.session_state|st.session_state]] om o.a. het geheugen en de StateGraph op te slaan. [[https://www.youtube.com/watch?v=BDFP6VSOARk|Youtube: LangGraph State in Less Than 10 Minutes - Orginele tutorial]]\\ [[https://github.com/aidev9/tuts/blob/main/langgraph/state/tutorial-1/state.py|Orginele code op GitHub]] ---- ==== ♻️ ReAct Agent ==== [[https://www.youtube.com/watch?v=pEMhPBQMNjg|Youtube: Building a LangGraph ReAct Mini Agent - Orginele tutorial]]\\ [[https://colab.research.google.com/drive/14ncV0nviLcP9IDzmFSRGSXb7Bgpz212v?usp=sharing|LangGraph ReAct Function Calling Pattern]] ----