{"id":46598,"date":"2024-09-30T19:53:28","date_gmt":"2024-09-30T19:53:28","guid":{"rendered":"https:\/\/fabricegrinda.com\/?p=46598"},"modified":"2024-10-01T14:01:41","modified_gmt":"2024-10-01T14:01:41","slug":"fabrice-ai-huidige-technische-implementatie","status":"publish","type":"post","link":"https:\/\/grinda.org\/nl\/fabrice-ai-huidige-technische-implementatie\/","title":{"rendered":"Fabrice AI: huidige technische implementatie"},"content":{"rendered":"\n<p>In de vorige post, <a href=\"https:\/\/fabricegrinda.com\/nl\/fabrice-ai-de-technische-reis\/\" data-type=\"link\" data-id=\"https:\/\/fabricegrinda.com\/fabrice-ai-the-technical-journey\/\" target=\"_blank\" rel=\"noreferrer noopener\">Fabrice AI: The Technical Journey<\/a>, heb ik uitgelegd hoe we Fabrice AI gebouwd hebben door een volledige cirkel te maken.\nIk begon met het gebruik van Chat GPT 3 en 3.5.\nTeleurgesteld in de resultaten probeerde ik het <a href=\"https:\/\/www.langchain.com\/\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/www.langchain.com\/\" rel=\"noreferrer noopener\">Langchain Framework<\/a> te gebruiken om mijn eigen AI-model erop te bouwen, voordat ik terugkeerde naar Chat GPT toen ze vectordatabases gingen gebruiken en de resultaten met 4o enorm verbeterden.  <\/p>\n\n<p>Dit is het huidige proces voor het trainen van Fabrice AI:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>De trainingsgegevens (blogberichten, Youtube-URL&#8217;s, podcast-URL&#8217;s, PDF-URL&#8217;s en URL&#8217;s van afbeeldingen) worden opgeslagen in onze <a href=\"https:\/\/wordpress.com\/\" data-type=\"link\" data-id=\"https:\/\/wordpress.com\/\" target=\"_blank\" rel=\"noopener\">WordPress-database<\/a>.<\/li>\n\n\n\n<li>We extraheren de gegevens en structureren ze.<\/li>\n\n\n\n<li>We leveren de gestructureerde gegevens aan Open AI voor training met behulp van de <a href=\"https:\/\/platform.openai.com\/docs\/assistants\/overview\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/platform.openai.com\/docs\/assistants\/overview\" rel=\"noreferrer noopener\">Assistants API<\/a>.<\/li>\n\n\n\n<li>Open AI maakt vervolgens een vectoropslagdatabase en slaat deze op.<\/li>\n<\/ul>\n\n<p>Hier is een voorbeeld van gestructureerde gegevens. Elk stuk inhoud heeft zijn eigen JSON-bestand. We zorgen ervoor dat we de limiet van 32.000 tokens niet overschrijden.<\/p>\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p>{<\/p>\n\n\n\n<p>  &#8220;id&#8221;: &#8220;1&#8221;,<\/p>\n\n\n\n<p>  &#8220;datum&#8221;: &#8221; &#8220;,<\/p>\n\n\n\n<p>  &#8220;link&#8221;:&#8221;https:\/\/fabricegrinda.com\/&#8221;,<\/p>\n\n\n\n<p>  &#8220;title&#8221;: {<\/p>\n\n\n\n<p>  &#8220;weergegeven&#8221;: &#8220;Wat is Fabrice AI?&#8221;<\/p>\n\n\n\n<p>\u00a0 },<\/p>\n\n\n\n<p>  &#8220;Categorie&#8221;: &#8220;Over Fabrice&#8221;,<\/p>\n\n\n\n<p>  &#8220;featured_media&#8221;: &#8220;https:\/\/fabricegrinda.com\/wp-content\/uploads\/2023\/12\/About-me.png&#8221;,<\/p>\n\n\n\n<p>  &#8220;andere_media&#8221;: &#8220;&#8221;,<\/p>\n\n\n\n<p>  &#8220;kennis_type&#8221;: &#8220;blog&#8221;,<\/p>\n\n\n\n<p>  &#8220;contentUpdated&#8221;: &#8220;Fabrice AI is een digitale weergave van Fabrice&#8217;s gedachten op basis van zijn blog posts en geselecteerde getranscribeerde podcasts en interviews met behulp van ChatGPT.Gezien het feit dat veel van de transcripties onvolmaakt zijn getranscribeerd en dat de blog slechts een beperkte weergave is van Fabrice de persoon, verontschuldigen wij ons voor onnauwkeurigheden en ontbrekende informatie. Desalniettemin is dit een goed startpunt voor Fabrice&#8217;s gedachten over veel onderwerpen.&#8221;<\/p>\n\n\n\n<p>}<\/p>\n<\/div><\/div>\n\n\n\n<p>Dit is de huidige technische implementatie:<\/p>\n<\/div><\/div>\n\n<ul class=\"wp-block-list\">\n<li>De website voor consumenten wordt gehost op <a href=\"https:\/\/aws.amazon.com\/amplify\/\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/aws.amazon.com\/amplify\/\" rel=\"noreferrer noopener\">AWS Amplify<\/a>.<\/li>\n\n\n\n<li>De integratie tussen de openbare site en Open AI gebeurt via een API-laag, die wordt gehost op AWS als een Python API-server.<\/li>\n\n\n\n<li>We gebruiken <a href=\"https:\/\/www.mongodb.com\/\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/www.mongodb.com\/\" rel=\"noreferrer noopener\">MongoDB<\/a> als logboek om alle vragen op te slaan die door het publiek zijn gesteld, de antwoorden die zijn gegeven door Chat GPT en de URL&#8217;s van de bronnen.<\/li>\n\n\n\n<li>We gebruiken verschillende scripts om de gegevens van de blog, YouTube, enz. te structureren en door te geven aan Open AI voor training.<\/li>\n\n\n\n<li>We gebruiken <a href=\"https:\/\/www.npmjs.com\/package\/react-speech-recognition\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/www.npmjs.com\/package\/react-speech-recognition\" rel=\"noreferrer noopener\">React-Speech Recognition<\/a> om gesproken vragen om te zetten in tekst.<\/li>\n\n\n\n<li>We gebruiken ook Google Analytics om het websiteverkeer bij te houden.<\/li>\n<\/ul>\n\n<p>Het is belangrijk om te weten dat we twee assistenten gebruiken:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>E\u00e9n voor het beantwoorden van vragen.<\/li>\n\n\n\n<li>E\u00e9n voor het verkrijgen van metadata URL&#8217;s, de blog URL&#8217;s die de originele inhoud hebben om de bronnen onderaan de antwoorden weer te geven.<\/li>\n<\/ul>\n\n<p><strong>Wat nu?<\/strong><\/p>\n\n<ol class=\"wp-block-list\">\n<li><strong>Spraak-naar-tekst verbeteringen<\/strong><\/li>\n<\/ol>\n\n<p>Open AI&#8217;s <a href=\"https:\/\/openai.com\/index\/whisper\/\" data-type=\"link\" data-id=\"https:\/\/openai.com\/index\/whisper\/\" target=\"_blank\" rel=\"noreferrer noopener\">Whisper-model<\/a> voor <a href=\"https:\/\/platform.openai.com\/docs\/guides\/speech-to-text\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/platform.openai.com\/docs\/guides\/speech-to-text\" rel=\"noreferrer noopener\">spraak naar tekst<\/a> is nauwkeuriger dan React.\nHet ondersteunt ook direct meerdere talen en is goed in het verwerken van spraak in verschillende talen, accenten en dialecten.\nDaarom zal ik er de komende maanden waarschijnlijk op overstappen.\nDat gezegd hebbende, het is complexer om in te stellen, dus het kan even duren.\nJe moet omgaan met het model, afhankelijkheden beheren (bijv. Python, bibliotheken) en ervoor zorgen dat je voldoende hardware hebt voor effici\u00ebnte prestaties.\nWhisper is ook niet ontworpen voor direct gebruik in browsers.\nAls je een web app bouwt, moet je een backend service maken om de transcriptie af te handelen, wat complexiteit toevoegt.      <\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Fabrice AI Avatar<\/strong><\/li>\n<\/ul>\n\n<p>Ik wil een Fabrice AI Avatar maken die eruitziet en klinkt als ik en waarmee je een gesprek kunt voeren.\nIk heb <a href=\"\" data-type=\"\" data-id=\"\" target=\"\" rel=\"noopener\">D-iD<\/a> ge\u00ebvalueerd maar vond het veel te duur voor mijn doeleinden. <a href=\"\" data-type=\"\" data-id=\"\" target=\"\" rel=\"noopener\">Eleven Labs<\/a> is alleen geschikt voor spraak. <a href=\"\" data-type=\"\" data-id=\"\" target=\"\" rel=\"noopener\">Synthesia<\/a> is geweldig, maar maakt momenteel geen video&#8217;s in realtime.\nUiteindelijk besloot ik <a href=\"\" target=\"\" data-type=\"\" data-id=\"\" rel=\"noopener\">HeyGen<\/a> te gebruiken vanwege de betere prijs en functionaliteit.  <\/p>\n\n<p>Ik vermoed dat Open AI op een gegeven moment zijn eigen oplossing zal uitbrengen, zodat dit werk voor niets is geweest.\nIk voel me daar goed bij en zal overstappen naar de Open AI oplossing als die er komt.\nIn dit stadium is het doel van deze hele oefening om te leren wat er mogelijk is met AI en hoeveel werk het vereist om me te helpen de ruimte beter te begrijpen.  <\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Aangepast dashboard<\/strong><\/li>\n<\/ul>\n\n<p>Op dit moment moet ik een MongoDB query uitvoeren om een extract van de vragen en antwoorden van de dag te krijgen.\nIk ben een eenvoudig dashboard aan het bouwen waar ik extracties en eenvoudige statistieken kan opvragen over het aantal query&#8217;s per taal, het aantal spraak-naar-tekst verzoeken, enz. <\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Aanvullende gegevensbronnen<\/strong><\/li>\n<\/ul>\n\n<p>We hebben zojuist de <a href=\"https:\/\/fabricegrinda.com\/portfolio\/\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/fabricegrinda.com\/portfolio\/\" rel=\"noreferrer noopener\">FJ Labs Portfolio<\/a> ge\u00fcpload naar Fabrice AI.\nJe kunt nu vragen of een bedrijf deel uitmaakt van het portfolio.\nFabrice AI antwoordt met een korte beschrijving van het bedrijf en een link naar de website.  <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1492\" height=\"1458\" src=\"https:\/\/fabricegrinda.com\/wp-content\/uploads\/2024\/09\/portfolio3.jpg\" alt=\"\" class=\"wp-image-46459\" style=\"width:650px\" srcset=\"https:\/\/grinda.org\/wp-content\/uploads\/2024\/09\/portfolio3.jpg 1492w, https:\/\/grinda.org\/wp-content\/uploads\/2024\/09\/portfolio3-768x750.jpg 768w, https:\/\/grinda.org\/wp-content\/uploads\/2024\/09\/portfolio3-1200x1173.jpg 1200w, https:\/\/grinda.org\/wp-content\/uploads\/2024\/09\/portfolio3-1320x1290.jpg 1320w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n<\/div>\n<p>Gezien het aantal persoonlijke vragen dat Fabrice AI kreeg waar het geen antwoord op had, nam ik de tijd om elke spreker in mijn <a href=\"https:\/\/www.youtube.com\/watch?v=79BKGNv7TMQ\" target=\"_blank\" data-type=\"link\" data-id=\"https:\/\/www.youtube.com\/watch?v=79BKGNv7TMQ\" rel=\"noreferrer noopener\"><sup>50e <\/sup>Verjaardagsvideo<\/a> handmatig te taggen om de inhoud te geven die het nodig had.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1508\" height=\"1633\" src=\"https:\/\/fabricegrinda.com\/wp-content\/uploads\/2024\/09\/Family3.jpg\" alt=\"\" class=\"wp-image-46484\" style=\"width:650px\" srcset=\"https:\/\/grinda.org\/wp-content\/uploads\/2024\/09\/Family3.jpg 1508w, https:\/\/grinda.org\/wp-content\/uploads\/2024\/09\/Family3-768x832.jpg 768w, https:\/\/grinda.org\/wp-content\/uploads\/2024\/09\/Family3-1418x1536.jpg 1418w, https:\/\/grinda.org\/wp-content\/uploads\/2024\/09\/Family3-1200x1299.jpg 1200w, https:\/\/grinda.org\/wp-content\/uploads\/2024\/09\/Family3-1320x1429.jpg 1320w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n<\/div>\n<p><strong>Conclusie<\/strong><\/p>\n\n<p>Met al het werk dat ik de afgelopen twaalf maanden heb gedaan aan alles wat met AI te maken heeft, lijkt er een duidelijke universele conclusie te zijn: hoe meer je wacht, hoe goedkoper, gemakkelijker en beter het wordt, en hoe waarschijnlijker dat Open AI het zal aanbieden!\nLaat het me in de tussentijd weten als je vragen hebt. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>In de vorige post, Fabrice AI: The Technical Journey, heb ik uitgelegd hoe we Fabrice AI gebouwd hebben door een volledige cirkel te maken. Ik begon met het gebruik van &hellip; <a href=\"https:\/\/fabricegrinda.com\/nl\/fabrice-ai-huidige-technische-implementatie\/\" class=\"more-link\">Lees verder <span class=\"screen-reader-text\">&#8220;Fabrice AI: huidige technische implementatie&#8221;<\/span><\/a><\/p>\n","protected":false},"author":9,"featured_media":46748,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[605,942],"tags":[],"class_list":["post-46598","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-persoonlijke-overpeinzingen","category-technische-gadgets-nl"],"acf":[],"contentUpdated":"Fabrice AI: huidige technische implementatie. Categories - Persoonlijke overpeinzingen, Technische gadgets. Date-Posted - 2024-09-30T19:53:28 . \n In de vorige post, Fabrice AI: The Technical Journey, heb ik uitgelegd hoe we Fabrice AI gebouwd hebben door een volledige cirkel te maken.\n Ik begon met het gebruik van Chat GPT 3 en 3.5.\n Teleurgesteld in de resultaten probeerde ik het Langchain Framework te gebruiken om mijn eigen AI-model erop te bouwen, voordat ik terugkeerde naar Chat GPT toen ze vectordatabases gingen gebruiken en de resultaten met 4o enorm verbeterden.  \n Dit is het huidige proces voor het trainen van Fabrice AI:\n De trainingsgegevens (blogberichten, Youtube-URL&#8217;s, podcast-URL&#8217;s, PDF-URL&#8217;s en URL&#8217;s van afbeeldingen) worden opgeslagen in onze WordPress-database.\n We extraheren de gegevens en structureren ze.\n We leveren de gestructureerde gegevens aan Open AI voor training met behulp van de Assistants API.\n Open AI maakt vervolgens een vectoropslagdatabase en slaat deze op.\n Hier is een voorbeeld van gestructureerde gegevens. Elk stuk inhoud heeft zijn eigen JSON-bestand. We zorgen ervoor dat we de limiet van 32.000 tokens niet overschrijden.\n {\n   &#8220;id&#8221;: &#8220;1&#8221;,\n   &#8220;datum&#8221;: &#8221; &#8220;,\n   &#8220;link&#8221;:&#8221;https:\/\/fabricegrinda.com\/&#8221;,\n   &#8220;title&#8221;: {\n   &#8220;weergegeven&#8221;: &#8220;Wat is Fabrice AI?&#8221;\n \u00a0 },\n   &#8220;Categorie&#8221;: &#8220;Over Fabrice&#8221;,\n   &#8220;featured_media&#8221;: &#8220;https:\/\/fabricegrinda.com\/wp-content\/uploads\/2023\/12\/About-me.png&#8221;,\n   &#8220;andere_media&#8221;: &#8220;&#8221;,\n   &#8220;kennis_type&#8221;: &#8220;blog&#8221;,\n   &#8220;contentUpdated&#8221;: &#8220;Fabrice AI is een digitale weergave van Fabrice&#8217;s gedachten op basis van zijn blog posts en geselecteerde getranscribeerde podcasts en interviews met behulp van ChatGPT.Gezien het feit dat veel van de transcripties onvolmaakt zijn getranscribeerd en dat de blog slechts een beperkte weergave is van Fabrice de persoon, verontschuldigen wij ons voor onnauwkeurigheden en ontbrekende informatie. Desalniettemin is dit een goed startpunt voor Fabrice&#8217;s gedachten over veel onderwerpen.&#8221;\n }\n Dit is de huidige technische implementatie:\n De website voor consumenten wordt gehost op AWS Amplify.\n De integratie tussen de openbare site en Open AI gebeurt via een API-laag, die wordt gehost op AWS als een Python API-server.\n We gebruiken MongoDB als logboek om alle vragen op te slaan die door het publiek zijn gesteld, de antwoorden die zijn gegeven door Chat GPT en de URL&#8217;s van de bronnen.\n We gebruiken verschillende scripts om de gegevens van de blog, YouTube, enz. te structureren en door te geven aan Open AI voor training.\n We gebruiken React-Speech Recognition om gesproken vragen om te zetten in tekst.\n We gebruiken ook Google Analytics om het websiteverkeer bij te houden.\n Het is belangrijk om te weten dat we twee assistenten gebruiken:\n E\u00e9n voor het beantwoorden van vragen.\n E\u00e9n voor het verkrijgen van metadata URL&#8217;s, de blog URL&#8217;s die de originele inhoud hebben om de bronnen onderaan de antwoorden weer te geven.\n Wat nu?\n Spraak-naar-tekst verbeteringen\n Open AI&#8217;s Whisper-model voor spraak naar tekst is nauwkeuriger dan React.\n Het ondersteunt ook direct meerdere talen en is goed in het verwerken van spraak in verschillende talen, accenten en dialecten.\n Daarom zal ik er de komende maanden waarschijnlijk op overstappen.\n Dat gezegd hebbende, het is complexer om in te stellen, dus het kan even duren.\n Je moet omgaan met het model, afhankelijkheden beheren (bijv. Python, bibliotheken) en ervoor zorgen dat je voldoende hardware hebt voor effici\u00ebnte prestaties.\n Whisper is ook niet ontworpen voor direct gebruik in browsers.\n Als je een web app bouwt, moet je een backend service maken om de transcriptie af te handelen, wat complexiteit toevoegt.      \n Fabrice AI Avatar\n Ik wil een Fabrice AI Avatar maken die eruitziet en klinkt als ik en waarmee je een gesprek kunt voeren.\n Ik heb D-iD ge\u00ebvalueerd maar vond het veel te duur voor mijn doeleinden. Eleven Labs is alleen geschikt voor spraak. Synthesia is geweldig, maar maakt momenteel geen video&#8217;s in realtime.\n Uiteindelijk besloot ik HeyGen te gebruiken vanwege de betere prijs en functionaliteit.  \n Ik vermoed dat Open AI op een gegeven moment zijn eigen oplossing zal uitbrengen, zodat dit werk voor niets is geweest.\n Ik voel me daar goed bij en zal overstappen naar de Open AI oplossing als die er komt.\n In dit stadium is het doel van deze hele oefening om te leren wat er mogelijk is met AI en hoeveel werk het vereist om me te helpen de ruimte beter te begrijpen.  \n Aangepast dashboard\n Op dit moment moet ik een MongoDB query uitvoeren om een extract van de vragen en antwoorden van de dag te krijgen.\n Ik ben een eenvoudig dashboard aan het bouwen waar ik extracties en eenvoudige statistieken kan opvragen over het aantal query&#8217;s per taal, het aantal spraak-naar-tekst verzoeken, enz. \n Aanvullende gegevensbronnen\n We hebben zojuist de FJ Labs Portfolio ge\u00fcpload naar Fabrice AI.\n Je kunt nu vragen of een bedrijf deel uitmaakt van het portfolio.\n Fabrice AI antwoordt met een korte beschrijving van het bedrijf en een link naar de website.  \n Gezien het aantal persoonlijke vragen dat Fabrice AI kreeg waar het geen antwoord op had, nam ik de tijd om elke spreker in mijn 50e Verjaardagsvideo handmatig te taggen om de inhoud te geven die het nodig had.\n Conclusie\n Met al het werk dat ik de afgelopen twaalf maanden heb gedaan aan alles wat met AI te maken heeft, lijkt er een duidelijke universele conclusie te zijn: hoe meer je wacht, hoe goedkoper, gemakkelijker en beter het wordt, en hoe waarschijnlijker dat Open AI het zal aanbieden!\n Laat het me in de tussentijd weten als je vragen hebt. \n ","Category":["Persoonlijke overpeinzingen","Technische gadgets"],"_links":{"self":[{"href":"https:\/\/grinda.org\/nl\/wp-json\/wp\/v2\/posts\/46598","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/grinda.org\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/grinda.org\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/grinda.org\/nl\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/grinda.org\/nl\/wp-json\/wp\/v2\/comments?post=46598"}],"version-history":[{"count":4,"href":"https:\/\/grinda.org\/nl\/wp-json\/wp\/v2\/posts\/46598\/revisions"}],"predecessor-version":[{"id":46809,"href":"https:\/\/grinda.org\/nl\/wp-json\/wp\/v2\/posts\/46598\/revisions\/46809"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/grinda.org\/nl\/wp-json\/wp\/v2\/media\/46748"}],"wp:attachment":[{"href":"https:\/\/grinda.org\/nl\/wp-json\/wp\/v2\/media?parent=46598"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/grinda.org\/nl\/wp-json\/wp\/v2\/categories?post=46598"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/grinda.org\/nl\/wp-json\/wp\/v2\/tags?post=46598"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}