{"id":6245,"date":"2026-05-08T13:39:34","date_gmt":"2026-05-08T13:39:34","guid":{"rendered":"https:\/\/smultron.software\/?p=6245"},"modified":"2026-05-08T14:38:38","modified_gmt":"2026-05-08T14:38:38","slug":"asystent-ai-z-rag-na-prywatnej-infrastrukturze","status":"publish","type":"post","link":"https:\/\/smultron.software\/pl\/blog\/asystent-ai-z-rag-na-prywatnej-infrastrukturze","title":{"rendered":"Asystent AI z RAG na prywatnej infrastrukturze"},"content":{"rendered":"\n<p>Wieloj\u0119zyczny chatbot AI dzia\u0142aj\u0105cy w ca\u0142o\u015bci na serwerze klienta. Zewn\u0119trzne API AI nie s\u0105 u\u017cywane, a dane nie opuszczaj\u0105 infrastruktury.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Cel projektu<\/h4>\n\n\n\n<p>Instytucja finansowa w EU potrzebowa\u0142a <strong>asystenta konwersacyjnego<\/strong> na swoj\u0105 platform\u0119 webow\u0105. Asystent mia\u0142 odpowiada\u0107 na pytania u\u017cytkownik\u00f3w w <strong>wielu j\u0119zykach<\/strong> na podstawie <strong>dw\u00f3ch \u017ar\u00f3de\u0142 danych<\/strong>: codziennego feedu ustrukturyzowanych rekord\u00f3w z zewn\u0119trznego API oraz biblioteki dokument\u00f3w polityk i procedur.<\/p>\n\n\n\n<p>G\u0142\u00f3wnym ograniczeniem by\u0142a <strong>prywatno\u015b\u0107 danych<\/strong> &#8211; przetwarzanie musia\u0142o odbywa\u0107 si\u0119 on-site, a system musia\u0142 funkcjonowa\u0107 w ramach ograniczonych zasob\u00f3w sprz\u0119towych. Rozwi\u0105zanie zosta\u0142o zbudowane w architekturze <strong>RAG (Retrieval-Augmented Generation)<\/strong>.<\/p>\n\n\n\n<p><strong>Klient:<\/strong> Organizacja sektora publicznego w EU<br><strong>Czas realizacji:<\/strong> 8 tygodni <br><strong>Zesp\u00f3\u0142:<\/strong> 2 deweloper\u00f3w, QA i PM <br><strong>Status:<\/strong> W produkcji<\/p>\n\n\n\n<div class=\"py-[32px] px-[24px] tablet:px-[32px] bg-gray-1 rounded-[8px]\ncta-small\">\n\t<div class=\"flex flex-wrap gap-[24px] justify-between\n\titems-center\">\n\t\t<div class=\"hm5 desktop:h5 basis-[417px] max-w-[496px]\">\n\t\t\tSzukasz do\u015bwiadczonego zespo\u0142u programistycznego? Porozmawiajmy o konkretach.\t\t<\/div>\n\t\t<div>\n\t\t\t\n<div class=\"person-contact flex gap-[16px] items-center\">\n\t<div class=\"person-contact__image\">\n\t\t\t\t\t<img decoding=\"async\" data-src=\"https:\/\/smultron.software\/content\/uploads\/2024\/02\/jakub-kozak-1-56x56.png\"\n\t\t\t\tclass=\"size-[56px] rounded-full object-cover lazyload\"\n\t\t\t\talt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 56px; --smush-placeholder-aspect-ratio: 56\/56;\">\n\t\t\t<\/div>\n\t<div class=\"person-contact__details label-md\">\n\t\t<div class=\"person-contact__email\">\n\t\t\t<a href=\"mailto:hello@smultron.pl\">\n\t\t\t\thello@smultron.pl\t\t\t<\/a>\n\t\t<\/div>\n\t\t<div class=\"person-contact__phone\">\n\t\t\t<a href=\"tel:+48 533 097 111\">\n\t\t\t\t+48 533 097 111\t\t\t<\/a>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Wyzwania i ograniczenia<\/h2>\n\n\n\n<p>Cztery ograniczenia ukszta\u0142towa\u0142y nasze decyzje techniczne:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Prywatno\u015b\u0107 danych.<\/strong> <br>Profile u\u017cytkownik\u00f3w, historia konwersacji i dokumenty \u017ar\u00f3d\u0142owe nie mog\u0142y opuszcza\u0107 serwer\u00f3w klienta. To wykluczy\u0142o hostowane API AI.<\/li>\n\n\n\n<li><strong>Bud\u017cet sprz\u0119towy.<\/strong> <br>System musia\u0142 dzia\u0142a\u0107 na ograniczonych zasobach GPU, co ogranicza\u0142o rozmiar wykorzystywanych modeli.<\/li>\n\n\n\n<li><strong>Wieloj\u0119zyczno\u015b\u0107.<\/strong> <br>Asystent musia\u0142 obs\u0142ugiwa\u0107 wiele j\u0119zyk\u00f3w &#8211; prze\u0142\u0105czaj\u0105c si\u0119 naturalnie w zale\u017cno\u015bci od danych wej\u015bciowych u\u017cytkownika.<\/li>\n\n\n\n<li><strong>Dane na \u017cywo.<\/strong> <br>Asystent musia\u0142 pracowa\u0107 z codziennie aktualizowanymi rekordami, a nie ze statycznymi informacjami.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Architektura: cztery warstwy<\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th>Warstwa<\/th><th>Funkcja<\/th><\/tr><\/thead><tbody><tr><td><strong>Warstwa aplikacji<\/strong><\/td><td>Obs\u0142uguje routing, uwierzytelnianie i zarz\u0105dzanie sesjami<\/td><\/tr><tr><td><strong>Platforma AI<\/strong><\/td><td>Uruchamia modele j\u0119zykowe lokalnie, bez zewn\u0119trznych wywo\u0142a\u0144 sieciowych<\/td><\/tr><tr><td><strong>Baza wektorowa<\/strong><\/td><td>Przechowuje reprezentacje dokument\u00f3w i wyszukuje podobie\u0144stwa w celu pobrania kontekstu<\/td><\/tr><tr><td><strong>Transport czasu rzeczywistego<\/strong><\/td><td>Strumieniuje odpowiedzi AI na frontend, zapewniaj\u0105c responsywno\u015b\u0107 interfejsu<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Przep\u0142yw RAG<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"800\" height=\"570\" data-src=\"https:\/\/smultron.software\/content\/uploads\/2026\/05\/RAG-pipeline-flow-pl.png\" alt=\"Diagram przedstawiaj\u0105cy przep\u0142yw RAG: wiadomo\u015b\u0107 u\u017cytkownika, walidacja, wyb\u00f3r \u017ar\u00f3d\u0142a, wyszukiwanie wektorowe, budowa promptu, generowanie odpowiedzi, stream na bie\u017c\u0105co.\" class=\"wp-image-6237 lazyload\" data-srcset=\"https:\/\/smultron.software\/content\/uploads\/2026\/05\/RAG-pipeline-flow-pl.png 800w, https:\/\/smultron.software\/content\/uploads\/2026\/05\/RAG-pipeline-flow-pl-300x214.png 300w, https:\/\/smultron.software\/content\/uploads\/2026\/05\/RAG-pipeline-flow-pl-768x547.png 768w, https:\/\/smultron.software\/content\/uploads\/2026\/05\/RAG-pipeline-flow-pl-46x33.png 46w, https:\/\/smultron.software\/content\/uploads\/2026\/05\/RAG-pipeline-flow-pl-56x40.png 56w, https:\/\/smultron.software\/content\/uploads\/2026\/05\/RAG-pipeline-flow-pl-528x376.png 528w, https:\/\/smultron.software\/content\/uploads\/2026\/05\/RAG-pipeline-flow-pl-76x54.png 76w, https:\/\/smultron.software\/content\/uploads\/2026\/05\/RAG-pipeline-flow-pl-505x360.png 505w\" data-sizes=\"(max-width: 800px) 100vw, 800px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 800px; --smush-placeholder-aspect-ratio: 800\/570;\" \/><figcaption class=\"wp-element-caption\">Przep\u0142yw pipeline RAG<\/figcaption><\/figure>\n\n\n\n<ol class=\"wp-block-list\">\n<li>1. U\u017cytkownik <strong>wysy\u0142a wiadomo\u015b\u0107<\/strong>. <\/li>\n\n\n\n<li>2. Warstwa guardrail <strong>waliduje dane wej\u015bciowe<\/strong> pod k\u0105tem bezpiecze\u0144stwa. <\/li>\n\n\n\n<li>3. Model <strong>okre\u015bla potrzeby wyszukiwania<\/strong> &#8211; u\u017cywa narz\u0119dzi, aby zdecydowa\u0107, kt\u00f3re \u017ar\u00f3d\u0142o danych odpyta\u0107. <\/li>\n\n\n\n<li>4. Zastosowanie narz\u0119dzia wyszukiwania:\n<ul class=\"wp-block-list\">\n<li>Zapytanie jest <strong>konwertowane na wektor<\/strong> (<strong>embedding<\/strong>).<\/li>\n\n\n\n<li>System wykonuje <strong>wyszukiwanie wektorowe<\/strong>, aby znale\u017a\u0107 odpowiednie dokumenty lub rekordy.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>5. <strong>Sk\u0142adanie promptu <\/strong>&#8211; pobrany kontekst, profil u\u017cytkownika i historia czatu \u0142\u0105czone s\u0105 w jeden prompt. <\/li>\n\n\n\n<li>6. <strong>Generowanie odpowiedzi <\/strong>&#8211; model generuje odpowied\u017a na podstawie po\u0142\u0105czonych danych. <\/li>\n\n\n\n<li>7. <strong>Strumieniowanie w czasie rzeczywistym<\/strong> &#8211; odpowied\u017a jest wysy\u0142ana na frontend natychmiast w miar\u0119 generowania.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Wyzwania techniczne i ich rozwi\u0105zania<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Produkcyjne AI na ograniczonych zasobach<\/h3>\n\n\n\n<p>Wi\u0119kszo\u015b\u0107 zaawansowanych modeli wymaga znacznych zasob\u00f3w sprz\u0119towych. Wybrali\u015bmy kompaktowy model z silnym wsparciem wieloj\u0119zycznym i wydajnym dzia\u0142aniem na ograniczonym sprz\u0119cie. Architektura RAG kompensuje mniejszy rozmiar modelu, wstrzykuj\u0105c konkretny kontekst w momencie zapytania.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Obrona przed prompt injection<\/h3>\n\n\n\n<p>Mniejsze modele mog\u0105 by\u0107 bardziej podatne na manipulacj\u0119 ze strony u\u017cytkownik\u00f3w. Wdro\u017cyli\u015bmy wielowarstwow\u0105 obron\u0119, w tym guardrails oparte na wektorach, kt\u00f3re sprawdzaj\u0105 zapytania na podstawie list dozwolonych\/zabronionych zanim trafi\u0105 do modelu, oraz specjalistyczne techniki zabezpieczania prompt\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Zarz\u0105dzanie oknem kontekstu<\/h3>\n\n\n\n<p>Aby zmie\u015bci\u0107 si\u0119 w limitach danych, ka\u017cdy komponent zosta\u0142 skompresowany. Obejmowa\u0142o to ograniczenie historii konwersacji, wst\u0119pne streszczanie dokument\u00f3w na etapie indeksowania oraz usuwanie zb\u0119dnych p\u00f3l z wynik\u00f3w narz\u0119dzi.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jako\u015b\u0107 embedding\u00f3w i przetwarzanie danych<\/h3>\n\n\n\n<p>Rekordy \u017ar\u00f3d\u0142owe r\u00f3\u017cni\u0142y si\u0119 jako\u015bci\u0105 i d\u0142ugo\u015bci\u0105. Wdro\u017cyli\u015bmy automatyczne parsowanie i filtrowanie w celu oczyszczania danych, zastosowali\u015bmy ustrukturyzowane streszczanie przed wektoryzacj\u0105 oraz r\u0119czn\u0105 segmentacj\u0119 du\u017cych dokument\u00f3w wed\u0142ug temat\u00f3w, aby zapewni\u0107 lepsz\u0105 trafno\u015b\u0107 wyszukiwania.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Co zbudowali\u015bmy<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Zarz\u0105dzanie sesjami.<\/strong> <br>Systemy do obs\u0142ugi profili u\u017cytkownik\u00f3w i historii czatu w ramach \u015bcis\u0142ych ogranicze\u0144.<\/li>\n\n\n\n<li><strong>Indeksowanie dokument\u00f3w.<\/strong> <br>Zautomatyzowane narz\u0119dzia do \u0142adowania i wektoryzacji plik\u00f3w polityk.<\/li>\n\n\n\n<li><strong>Pipeline synchronizacji rekord\u00f3w.<\/strong> <br>Codzienny import i czyszczenie danych z zewn\u0119trznego API.<\/li>\n\n\n\n<li><strong>Narz\u0119dzia wyszukiwania.<\/strong> <br>Specjalistyczne funkcje wyszukiwania dost\u0119pne dla agenta AI.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Stack technologiczny<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-fixed-layout\"><thead><tr><th>Komponent<\/th><th>Technologia<\/th><\/tr><\/thead><tbody><tr><td><strong>Framework backendowy<\/strong><\/td><td>Nowoczesny framework enterprise Symfony 8<\/td><\/tr><tr><td><strong>Platforma AI<\/strong><\/td><td>Ollama &#8211; lokalne \u015brodowisko hostingu modeli (alternatywnie Bedrock)<\/td><\/tr><tr><td><strong>Modele<\/strong><\/td><td>Wieloj\u0119zyczne modele j\u0119zykowe i embeddingowe<\/td><\/tr><tr><td><strong>Baza danych<\/strong><\/td><td>PostgreSQL z pgvector &#8211; rozwi\u0105zanie bazodanowe z obs\u0142ug\u0105 wektor\u00f3w<\/td><\/tr><tr><td><strong>Komunikacja<\/strong><\/td><td>Server-Sent Events &#8211; strumieniowanie w czasie rzeczywistym i asynchroniczna obs\u0142uga wiadomo\u015bci<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Efekt<\/strong><\/h2>\n\n\n\n<p><strong>Wydajne czasy odpowiedzi<\/strong> i codzienna synchronizacja 20-30k rekord\u00f3w (1-6k aktualizowacji dziennie).<br>Pe\u0142ne wsparcie <strong>wieloj\u0119zyczne<\/strong>. Wsp\u00f3lna przestrze\u0144 wektorowa dla j\u0119zyk\u00f3w umo\u017cliwia rozmow\u0119 w dowolnym j\u0119zyku niezale\u017cnie od j\u0119zyka \u017ar\u00f3d\u0142a danych (niepotrzebna warstwa translacji).<br><strong>Pe\u0142na suwerenno\u015b\u0107 danych.<\/strong> Nic nie opuszcza infrastruktury klienta.<br><strong>Przewidywalne i ustalone koszty.<\/strong> Brak op\u0142at za tokeny zewn\u0119trznych API &#8211; klient ponosi jedynie koszt serwera. <br><br>Ten projekt pokazuje, \u017ce <strong>produkcyjnej jako\u015bci asystent RAG<\/strong> mo\u017ce dzia\u0142a\u0107 na ograniczonym, prywatnym sprz\u0119cie. Sukces zale\u017cy od in\u017cynierii w ramach ogranicze\u0144: inteligentnego zarz\u0105dzania kontekstem, solidnych warstw bezpiecze\u0144stwa i wydajnych pipeline&#8217;\u00f3w danych.<\/p>\n<div class=\"full-width container-grid gap-y-[32px] section-scrollspy  bg-gray-1 pt-[60px] desktop:pt-[120px] pb-[60px] desktop:pb-[120px]\"\n\tid=\"skontaktuj-sie\">\n\t<div class=\"hm2 desktop:h2\"\n\t\tdata-aos=\"animate__fadeInUp\"\n\t>\n\t\tSkontaktuj si\u0119 z nami\t<\/div>\n\t<div class=\"grid desktop:grid-cols-12 gap-y-[60px] items-start\">\n\t\t\n<div class=\"desktop:col-span-6 grid tablet:grid-cols-2\n\t\ttablet:gap-x-[24px] tablet:gap-y-[32px]\">\n\t<div class=\"\">\n\t\t<div class=\"\">\n\t\t\t<img decoding=\"async\" data-src=\"https:\/\/smultron.software\/content\/uploads\/2024\/01\/681c046dafbd67a84a6a2820a207caa9-e1706629988730-768x515.jpeg\"\n\t\t\t\twidth=\"327\"\n\t\t\t\theight=\"204\"\n\t\t\t\tclass=\"w-full aspect-[390\/243] object-cover rounded-t-[10px] lazyload\"\n\t\t\t\talt=\"Marcin Stawowiak\"\n\t\t\t\tdata-aos=\"animate__fadeInUp\"\n\t\t\t src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 327px; --smush-placeholder-aspect-ratio: 327\/204;\" \/>\n\t\t\t<div class=\"p-[24px] tablet:border-l-[1px] tablet:border-b-[1px]\n\t\t\tborder-gray-2 tablet:rounded-bl-[10px] max-tablet:border-x-[1px]\n\t\t\tgrid gap-[16px]\">\n\t\t\t\t<div class=\"h6\"\n\t\t\t\t\tdata-aos=\"animate__fadeInUp\"\n\t\t\t\t>Marcin Stawowiak<\/div>\n\t\t\t\t<div class=\"label-xs font-bold\"\n\t\t\t\t\tdata-aos=\"animate__fadeInUp\"\n\t\t\t\t>\n\t\t\t\t\tCo-founder, Executive Manager\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"pl-[24px] pb-[24px] pr-[24px] tablet:ml-[-24px]\n\t\t\ttablet:pt-[24px] grid gap-[16px] tablet:self-end tablet:border-[1px] tablet:border-l-0\n\t\t\tborder-gray-2 tablet:rounded-r-[10px] max-tablet:border-x-[1px]\n\t\t\tmax-tablet:border-b-[1px] max-tablet:rounded-b-[10px]\n\t\t\tgap-y-[60px]\">\n\t\t<div class=\"label-md max-tablet:hidden\" data-aos=\"animate__fadeInUp\">\n\t\t\tSzukasz do\u015bwiadczonego zespo\u0142u programistycznego? <br \/>Porozmawiajmy o konkretach.\t\t<\/div>\n\t\t<div class=\"grid body-md\" data-aos=\"animate__fadeInUp\">\n\t\t\t<a href=\"mailto:hello@smultron.pl\">hello@smultron.pl<\/a>\n\t\t\t<a href=\"tel:+48 791 991 797\">+48 791 991 797<\/a>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"tablet:col-span-2 body-md grid gap-[16px] mt-[32px]\n\ttablet:mt-0\" data-aos=\"animate__fadeInUp\">\n\t\t<div class=\"label-md\">\n\t\t\tSmultron Web Development\t\t<\/div>\n\t\t<div class=\"\">\n\t\t\tul. S\u0142awkowska 12\t\t\t<br\/>\n\t\t\t31-014 Krak\u00f3w\t\t<\/div>\n\t\t<div>\n\t\t\tNIP:&nbsp;6762482785\t\t<\/div>\n\t<\/div>\n<\/div>\n\t\t\n<div class=\"desktop:col-start-8 desktop:col-span-5 contact-form-footer\">\n\t\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f224-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"224\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/pl\/wp-json\/wp\/v2\/posts\/6245#wpcf7-f224-o1\" method=\"post\" class=\"wpcf7-form init wpcf7-acceptance-as-validation\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"224\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.5\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f224-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/fieldset>\n<div class=\"desktop:col-start-8 desktop:col-span-5\">\n  <div class=\"grid gap-[32px]\">\n    <div class=\"label-md\">\n\t\t\tWype\u0142nij poni\u017cszy formularz\n    <\/div>\n    <div class=\"grid gap-[24px]\">\n      <div class=\"form-row\">\n        <label class=\"label-xs\" for=\"msg-email\">Tw\u00f3j e-mail*<\/label>\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email form-control\" id=\"msg-email\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"email\" name=\"email\" \/><\/span>\n      <\/div>\n      <div class=\"form-row\">\n        <label class=\"label-xs\" for=\"msg-content\">Twoja wiadomo\u015b\u0107*<\/label>\n        <span class=\"wpcf7-form-control-wrap\" data-name=\"message\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2500\" class=\"wpcf7-form-control wpcf7-textarea wpcf7-validates-as-required form-control form-control-textarea\" id=\"msg-content\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Podziel si\u0119 szczeg\u00f3\u0142ami swojego projektu\" name=\"message\"><\/textarea><\/span>\n        <div class=\"form-text\">\n          Max. 2500 znak\u00f3w\n        <\/div>\n      <\/div>\n      <div class=\"form-row label-sm\">\n<span class=\"wpcf7-form-control-wrap\" data-name=\"acceptance-69\"><span class=\"wpcf7-form-control wpcf7-acceptance\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"acceptance-69\" value=\"1\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\"><span><\/span><span>Zapozna\u0142em si\u0119 i akceptuj\u0119 <a href=\"\/pl\/polityka-prywatnosci\/\" class=\"underline\" target=\"_blank\" rel=\"nofollow\">Regulamin i Polityk\u0119 Prywatno\u015bci Smultron<\/a>.*<\/span><\/span><\/label><\/span><\/span><\/span>\n      <\/div>\n      <div>\n        <button type=\"submit\" class=\"button button--gradient-red\n                button--with-icon\">\n                    <span>Wy\u015blij<\/span>\n                    <span class=\"icon-arrow-right\"><\/span>\n                <\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n\t<div class=\"contact-form-footer__success flex bg-green-2\n\t\t\t\t\t\tborder-green-3 p-[16px] gap-[16px] rounded-[8px]\n\t\t\t\t\t\tmt-[30px]\">\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\"\n\t\t\tviewBox=\"0 0 24 24\" fill=\"none\">\n\t\t\t<path d=\"M12 2C17.51 2 22 6.49 22 12C22 17.51 17.51 22 12 22C6.49 22 2 17.51 2 12C2 6.49 6.49 2 12 2ZM12 0C5.37 0 0 5.37 0 12C0 18.63 5.37 24 12 24C18.63 24 24 18.63 24 12C24 5.37 18.63 0 12 0ZM18.25 8.89L16.83 7.48L10.73 13.7L7.65 10.76L6.25 12.2L10.75 16.52L18.25 8.89Z\"\n\t\t\t\t\tfill=\"#104121\"><\/path>\n\t\t<\/svg>\n\t\t<div class=\"body-md text-green-4\">\n\t\t\t<strong>Dzi\u0119kujemy za przes\u0142anie formularza!<\/strong> Odpowiemy w ci\u0105gu 24 godzin.\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Wieloj\u0119zyczny chatbot AI dzia\u0142aj\u0105cy w ca\u0142o\u015bci na serwerze klienta. Zewn\u0119trzne API AI nie s\u0105 u\u017cywane, a dane nie opuszczaj\u0105 infrastruktury. Cel projektu Instytucja finansowa w EU potrzebowa\u0142a asystenta konwersacyjnego na swoj\u0105 platform\u0119 webow\u0105. Asystent mia\u0142 odpowiada\u0107 na pytania u\u017cytkownik\u00f3w w wielu j\u0119zykach na podstawie dw\u00f3ch \u017ar\u00f3de\u0142 danych: codziennego feedu ustrukturyzowanych rekord\u00f3w z zewn\u0119trznego API oraz [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":6235,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[40,1753,3],"tags":[],"class_list":["post-6245","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologie","category-ai","category-programowanie"],"acf":[],"_links":{"self":[{"href":"https:\/\/smultron.software\/pl\/wp-json\/wp\/v2\/posts\/6245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smultron.software\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/smultron.software\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/smultron.software\/pl\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/smultron.software\/pl\/wp-json\/wp\/v2\/comments?post=6245"}],"version-history":[{"count":0,"href":"https:\/\/smultron.software\/pl\/wp-json\/wp\/v2\/posts\/6245\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/smultron.software\/pl\/wp-json\/wp\/v2\/media\/6235"}],"wp:attachment":[{"href":"https:\/\/smultron.software\/pl\/wp-json\/wp\/v2\/media?parent=6245"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/smultron.software\/pl\/wp-json\/wp\/v2\/categories?post=6245"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/smultron.software\/pl\/wp-json\/wp\/v2\/tags?post=6245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}