


{"id":4059,"date":"2024-12-19T22:50:20","date_gmt":"2024-12-19T22:50:20","guid":{"rendered":"https:\/\/yininit.nl\/?post_type=blossom-portfolio&#038;p=4059"},"modified":"2024-12-20T19:00:21","modified_gmt":"2024-12-20T19:00:21","slug":"implementatie-detailoverzicht","status":"publish","type":"blossom-portfolio","link":"https:\/\/yininit.nl\/index.php\/portfolio\/implementatie-detailoverzicht\/","title":{"rendered":"KBA Setup (versie 1)"},"content":{"rendered":"\n<p>Hier is een <strong>samenvatting<\/strong> met details van wat ik zoal heb gedaan om mijn <strong>KBA (Knowledge Base Agent)<\/strong> te laten draaien met <strong>Python<\/strong>, <strong>Flask<\/strong>, <strong>FAISS<\/strong>, en <strong>Render<\/strong>.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>KBA-project Setup<\/strong><\/h1>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Samenvatting<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Maak een nieuwe projectmap.<\/li>\n\n\n\n<li>Kopieer alle bestanden zoals hierboven beschreven.<\/li>\n\n\n\n<li>Push je project naar GitHub en redeploy op Render.<\/li>\n<\/ol>\n\n\n\n<p><code><em><strong>git add .<\/strong><\/em><\/code><\/p>\n\n\n\n<p><code><em><strong>git commit -m \"Initial KBA project setup als commentaar van wijziging\"<\/strong><\/em><\/code><\/p>\n\n\n\n<p><code><em><strong>git push -u origin main<\/strong><\/em><\/code><\/p>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>app.py<\/code><\/strong>: De Flask-server en je KBA-functionaliteit.<\/li>\n\n\n\n<li><strong><code>requirements.txt<\/code><\/strong>: Alle Python dependencies.<\/li>\n\n\n\n<li><strong><code>Procfile<\/code><\/strong>: Startscript voor Render.<\/li>\n\n\n\n<li><strong><code>.gitignore<\/code><\/strong>: Om <strong>node_modules<\/strong> of andere ongewenste bestanden uit te sluiten.<\/li>\n\n\n\n<li><strong>GitHub Repository<\/strong>: Voor versiebeheer en integratie met Render.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. Benodigde bestanden<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">a. <strong>Bestandstructuur<\/strong><\/h3>\n\n\n\n<p>CMD (command line)<\/p>\n\n\n\n<p>Mijn projectstructuur ziet er als volgt uit:<\/p>\n\n\n\n<p>c:\\KBA-project&gt; <\/p>\n\n\n\n<p><code>\u2502-- app.py # Hoofdbestand met Flask-code <\/code><\/p>\n\n\n\n<p><code>\u2502-- requirements.txt # Lijst met afhankelijkheden <\/code><\/p>\n\n\n\n<p><code>\u2502-- Procfile # Start de app op Render <\/code><\/p>\n\n\n\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. De Python Code (app.py)<\/strong><\/h2>\n\n\n\n<p>Maak een bestand <strong><code>app.py<\/code><\/strong> en kopieer de volgende code erin:<\/p>\n\n\n\n<p>In eerste instantie geprogrammeerd in Colab. Hierna heb ik de code aangepast om op een productieserver te kunnen draaien (dmv Waitress). <\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Dependencies: requirements.txt<\/strong><\/h2>\n\n\n\n<p>Aan het bestand genaamd <strong><code>requirements.txt<\/code><\/strong> de volgende afhankelijkheden toegevoegd:<\/p>\n\n\n\n<p><code>flask flask-cors waitress sentence-transformers langchain langchain-community transformers faiss-cpu torch<\/code><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Render Startinstellingen: Procfile<\/strong><\/h2>\n\n\n\n<p>Het <strong><code>Procfile<\/code><\/strong> (zonder extensie) eerst met (Colab) en daarna zonder Waitress in Start Command (setting Render, zie 6. Deploy op Render) gedefinieerd:<\/p>\n\n\n\n<p>zonder: <code><em>web: python app.py<\/em><\/code><\/p>\n\n\n\n<p>met: <em>python -m waitress &#8211;host=0.0.0.0 &#8211;port=5000 app:app<\/em><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong><em>web: <\/em>alleen in Procfile opnemen. Bij Start commando in Render moet je web: WEGLATEN, dus de regel laten beginnen met python.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. Git Setup en Commit<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Initialiseer Git<\/strong> in mijn projectmap: <code><em>git init<\/em><\/code><\/li>\n\n\n\n<li>Controleer door: <strong><em>git status<\/em><\/strong><\/li>\n\n\n\n<li><strong>Alle bestanden toegevoegd<\/strong>: <code><em><strong>git add .<\/strong><\/em><\/code><\/li>\n\n\n\n<li><strong>Commit mijn wijzigingen<\/strong>: <code><em><strong>git commit -m \"Initial KBA project setup als commentaar van wijziging\"<\/strong><\/em><\/code><\/li>\n\n\n\n<li><strong>Push naar GitHub<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Nieuwe repository aangemaakt op GitHub.<\/li>\n\n\n\n<li>Repository lokaal gekoppeld: <code>git remote add origin https:\/\/github.com\/&lt;mijn gebruikersnaam&gt;\/KBA-project.git<\/code><\/li>\n\n\n\n<li>Push de code: <code><em><strong>git push -u origin main<\/strong><\/em><\/code><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>6. Deploy op Render<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Log in op Render.<\/li>\n\n\n\n<li>Nieuwe <strong>Web Service<\/strong> aangemaakt.<\/li>\n\n\n\n<li>GitHub repository aan Render gekoppeld.<\/li>\n\n\n\n<li>Settings in Render goed instellen:\n<ul class=\"wp-block-list\">\n<li><strong>Build command<\/strong>: <code>pip install -r requirements.txt<\/code><\/li>\n\n\n\n<li><strong>Start command<\/strong>: <code>python app.py<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Klik op <strong>Manual Deploy<\/strong>.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>7. Testen van de KBA API<\/strong><\/h2>\n\n\n\n<p>Ik gebruik <strong>cURL<\/strong> om de API te testen:n<\/p>\n\n\n\n<p><code>curl -X POST -H \"Content-Type: application\/json\" -d \"{\\\"vraag\\\":\\\"Hoe laat is het lunchpauze?\\\"}\" https:\/\/mijn-app-url.onrender.com\/kba<\/code><\/p>\n\n\n\n<p>Let op: -k toegevoegd om certificaat te omzeilen:<\/p>\n\n\n\n<p><code>curl <code><strong>-k<\/strong><\/code><\/code> <code>-X POST -H \"Content-Type: application\/json\" -d \"{\\\"vraag\\\":\\\"Hoe laat is het lunchpauze?\\\"}\" https:\/\/mijn-app-url.onrender.com\/kba<\/code><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>8. Probleemoplossing<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>&#8220;No open ports detected&#8221;<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Zorg dat je dynamisch <strong><code>os.environ[\"PORT\"]<\/code><\/strong> gebruikt in je code.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Out of Memory<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Ik heb een klein model (<strong><code>BLOOMZ<\/code><\/strong>) gebruikt in plaats van grote modellen.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Logs controleren<\/strong>:\n<ul class=\"wp-block-list\">\n<li>In Render Dashboard &gt; <strong>Logs<\/strong> controle op eventuele foutmeldingen.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n","protected":false},"excerpt":{"rendered":"<p>Hier is een samenvatting met details van wat ik zoal heb gedaan om mijn KBA (Knowledge Base Agent) te laten draaien met Python, Flask, FAISS, en Render. KBA-project Setup Samenvatting git add . git commit -m &#8220;Initial KBA project setup als commentaar van wijziging&#8221; git push -u origin main 1. Benodigde bestanden a. Bestandstructuur CMD [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"template":"","blossom_portfolio_categories":[17],"class_list":["post-4059","blossom-portfolio","type-blossom-portfolio","status-publish","hentry","blossom_portfolio_categories-kba"],"_links":{"self":[{"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/blossom-portfolio\/4059","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/blossom-portfolio"}],"about":[{"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/types\/blossom-portfolio"}],"author":[{"embeddable":true,"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/media?parent=4059"}],"wp:term":[{"taxonomy":"blossom_portfolio_categories","embeddable":true,"href":"https:\/\/yininit.nl\/index.php\/wp-json\/wp\/v2\/blossom_portfolio_categories?post=4059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}