Gebruikershulpmiddelen

Site-hulpmiddelen


a3d_ai_template

A3D AI Template

๐Ÿ—‚๏ธ Terug naar start

๐Ÿƒ Naast deze template is er ook een basis streamlit template met dynamische content lader, pagina's en zijpaneel menu.

๐Ÿšง 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

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).

Het "A3D AI Template" project op GitHub


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 de knieโ€ 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 getest en zullen werken zodra je de keys en andere os variabelen hebt aangepast in het .env en .streamlit/secrets.toml bestand (pas de naam van de bestanden aan door de toevoeging โ€œ_templateโ€ in beide bestandsnamen weg te halen)

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
De Controler wordt altijd gestart door vanuit de view de run functie in de controler aan te roepen.

Views:
Alle views zijn op de zelfde manier opgebouwd. Na het initialiseren worden twee view functies uitgevoerd die samen de gehele GUI bouwen. Eerst wordt in de โ€œbuildSidebarViewโ€ functie het zijpaneel gebouwd en daarna in de โ€œbuildMainViewโ€ functie het hoofd GUI gedeelte van de module. Onder de view functies zijn de โ€œWorkersโ€ te vinden. Dat zijn functies die op de een of andere manier onderdelen van de view laden of opslaan.

Controlers:
Alle Controlers hebben een init, reset en run functie. Daaronder zijn de Workers van de controler te vinden. De actie van de controler wordt altijd gestart door vanuit de view de run functie in de controler aan te roepen.

๐Ÿช„ Omdat de views en de controllers altijd de zelfde format hebben en op de zelfde manier zijn ingericht zijn deze heel makkelijk en snel aan te passen om desgewenst een nieuwe OOPs module te bouwen.


๐Ÿค– Basic AI Chatbot Module

Deze Module 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.


๐Ÿงฎ Simple Graph Module

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


โ™ป๏ธ ReAct Agent

Deze module (LangGraph ReAct Mini Agent) maakt gebruik van tools. Er zijn diverse reken tools en er is een zoek tool die gebruik maakt van de DuckDuckGo tool. Als er een vervolgvraag wordt gesteld, wordt van de laatste vraag en het antwoord daarop een samenvatting gemaakt en als een string (met de nieuwe vraag daarin verwerkt) als nieuwe vraag naar de ReAct Agent (llm) gestuurd. De module is gebaseerd op:

Youtube: Building a LangGraph ReAct Mini Agent - Orginele tutorial
LangGraph ReAct Function Calling Pattern


๐Ÿ—„๏ธ Embedding

Deze module (Embedding) laad de content van .txt bestanden uit de map โ€œfiles/to_db/โ€ in en embed de conntent in een Pincone database.

๐Ÿ“ De content in de .txt bestanden zijn stukken tekst die per onderwerp speciaal zijn geschreven om zonder ruis en dataverlies stukken tekst te kunnen embedden.
๐Ÿ“ De tekst is opgedeeld in stukken van tussen de 1000 en 2000 lettertekens (inclusief spaties) en gescheiden door een dubbele zachte enter, Daar wordt in het script de tekst ook op gesplitst.
๐Ÿ“ Een voorbeeld van de indeling van de tekst in de .txt bestanden is te vinden in het voorbeeld bestand: files/to_db_collection/voorbeeld.txtโ€

โš ๏ธ De manier van teksten maken is behoorlijk tijdrovend maar zeer doeltreffend!


๐Ÿ˜บ CATja RAG Chatbot

๐Ÿ”ธ CATja (de CATviseur) is een AI chatbot die in de productieomgeving van kwaliteitsysteem.nl draait met als doel vragen van therapeuten die een account hebben in deze omgeving te beantwoorden.
๐Ÿ”ธ De RAG Chatbot haalt informatie (op verschillende manieren) uit een Pinecone database en stuurt de resultaten door naar een llm om een antwoord te creรซren.
๐Ÿ”ธ De documenten die worden opgehaald in de database zijn de documenten die eerder door de ๐Ÿ—„๏ธ Embedding module in de database zijn gezet

Meer over deze applicatie in de kennisbank van kwaliteitsysteem.nl


๐Ÿ‘ฅ Multi Agents

Test Module met meerdere samenwerkende AI Agenten. Kijken hoever we hier mee komen en at we er mee kunnen doen. Hier eerst wat bronnen die ik voor deze module heb gebruikt:

LangGraph Quick Start Tutorials


๐Ÿ’ถ E-boekhouden test

Een simpele test met de API van e-boekhouden. Haalt alle facturen van een bepaalde relatie op. Gebruikt geen AI


a3d_ai_template.txt ยท Laatst gewijzigd: 2025/02/08 15:02 door a3dijke