<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AI Archives - ConnectPoint</title>
	<atom:link href="https://connectpointpl.connectpoint.smallhost.pl/pl/category/ai/feed/" rel="self" type="application/rss+xml" />
	<link>https://connectpointpl.connectpoint.smallhost.pl/pl/category/ai/</link>
	<description></description>
	<lastBuildDate>Mon, 30 Mar 2026 08:40:17 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/01/favicon.png</url>
	<title>AI Archives - ConnectPoint</title>
	<link>https://connectpointpl.connectpoint.smallhost.pl/pl/category/ai/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Sekretarka AI z LlamaIndex i Google Calendar</title>
		<link>https://connectpointpl.connectpoint.smallhost.pl/pl/sekretarka-ai-z-llamaindex-i-google-calendar/</link>
		
		<dc:creator><![CDATA[Jakub Celewicz]]></dc:creator>
		<pubDate>Wed, 02 Apr 2025 10:23:57 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Aktualności]]></category>
		<guid isPermaLink="false">https://connectpointpl.connectpoint.smallhost.pl/?p=3579</guid>

					<description><![CDATA[<p>Sekretarka, która uporządkuje organizacyjny bałagan, odciąży od nękających telefonów i poukłada wszystko tak, że patrząc na codzienny grafik, pomyślimy sobie: "Dobra robota!".</p>
<p>The post <a href="https://connectpointpl.connectpoint.smallhost.pl/pl/sekretarka-ai-z-llamaindex-i-google-calendar/">Sekretarka AI z LlamaIndex i Google Calendar</a> appeared first on <a href="https://connectpointpl.connectpoint.smallhost.pl/pl/home">ConnectPoint</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p id="bh-alp1JMPvyzhRMvk_uX-7c" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true">Brak odpowiedniej organizacji często prowadzi do marnowania czasu i stresu, a problem ten dotyka wielu z nas. To idealne zadanie dla AI, które z pewnością wkrótce stanie się standardem w tego typu podobnych problemach.</p>
<p id="bh-Z4Fowr1LxsOU3-tURbn5K" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Taka funkcjonalność może okazać się niezwykle pomocna w różnych branżach, np. dla mechaników samochodowych, lekarzy, fizjoterapeutów, makijażystek i wielu innych, gdzie zarządzanie grafikiem jest kluczowe. A grafik to rzecz święta! Ustalanie, odwoływanie, przesuwanie terminów&#8230; to wyzwanie, które potrafi spędzać sen z powiek.</p>
<p id="bh-Z4Fowr1LxsOU3-tURbn5K" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Taka funkcjonalność może okazać się niezwykle pomocna w różnych branżach, np. dla mechaników samochodowych, lekarzy, fizjoterapeutów, makijażystek i wielu innych, gdzie zarządzanie grafikiem jest kluczowe. A grafik to rzecz święta! Ustalanie, odwoływanie, przesuwanie terminów&#8230; to wyzwanie, które potrafi spędzać sen z powiek.</p>
<p id="bh--r17N_lFtXXqWrCGh6bds" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true">Wykorzystując czas przeznaczony na rozwój, który zapewnia mi firma Connect Point, postanowiłem stworzyć prototyp sekretarki AI, która pomoże w zarządzaniu kalendarzem.<br />
Do tego celu wykorzystałem framework LlamaIndex, który pozwala na tworzenie aplikacji AI integrujących modele językowe z prywatnymi danymi. Aplikacje tego typu nazywana jest<strong>: RAG (Retrieval-Augmented Generation)</strong> &#8211; czyli generowanie wspomagane wyszukiwaniem. Technika ta polega na połączeniu zdolności modelu językowego z zewnętrznymi źródłami danych, aby zapewnić bardziej precyzyjne i kontekstowe odpowiedzi. Dzięki temu AI może nie tylko generować tekst, ale również korzystać z danych dostarczonych przez użytkownika.</p>
<h2 id="bh-phezzUBp7v2ihMgE1O5eQ" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 3 []">Założenia:</h2>
<p id="bh--LWCaD9iSISN5jQABzQPu" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true">Chcąc stworzyć moją wersję sekretarki AI, postawiłem sobie kilka założeń:</p>
<ol id="bh-KmsIzAtnOu-wRA5oMebGK" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true">
<li id="bh-lVLjT_HunfcbV2jL_V_Li" data-hook-type="blockHook">
<p id="bh-aqn4aLSRYYE4_x4WEUsOL" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true"><strong>Wgląd w Google Calendar</strong><br />
Sekretarka powinna mieć dostęp do mojego kalendarza Google, aby móc zarządzać spotkaniami. Dzięki API Google Calendar mogłem zintegrować aplikację z kalendarzem, umożliwiając AI odczytywanie dostępnych terminów i tworzenie nowych wydarzeń.</p>
</li>
<li id="bh-gJOEGsU4NdKnPm4COj8cT" data-hook-type="blockHook">
<p id="bh-r6akRIrD2XeJOZDWUpUBl" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true"><strong>Komunikacja za pomocą chatu</strong><br />
Sekretarka będzie komunikować się z otoczeniem za pomocą chatu, co pozwala na naturalną interakcję z użytkownikiem. Skorzystałem z LlamaIndex, aby zintegrować model językowy z interfejsem chatowym, co zapewnia intuicyjną komunikację bez potrzeby korzystania z dodatkowych aplikacji.</p>
</li>
<li id="bh-ShkmdSj0kj8EKo0o54ByW" data-hook-type="blockHook">
<p id="bh-FiRR0MpPzeOmmLdO56d8I" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true"><strong>Umawianie spotkań w sugerowanych terminach</strong><br />
Sekretarka powinna umawiać spotkania w terminie zasugerowanym przez klienta. Aplikacja analizuje propozycje terminów i dopasowuje je do dostępnych okienek w kalendarzu.</p>
</li>
<li id="bh-451V1OsfrWWpsiWM0Fa4P" data-hook-type="blockHook">
<p id="bh-oRjtM0RWHupcZ-_bk-wxp" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true"><strong>Tworzenie wydarzeń w kalendarzu</strong><br />
Jeśli termin jest dostępny, sekretarka tworzy nowe wydarzenie w kalendarzu. Jeśli termin jest zajęty, AI proponuje inne dostępne okienka czasowe.</p>
</li>
</ol>
<h2 dir="ltr" data-hook-type="blockHook" data-bubble-menu="true">Jak to działa</h2>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Każdy dostępny model LLM (Large Language Model) posiada ogólną wiedzę, która powstała w wyniku trenowania sieci neuronowej na dużych zbiorach danych. Najmniejsze modele, takie jak np. <a href="https://huggingface.co/KingNish/Qwen2.5-0.5b-Test-ft/tree/main" target="_blank" rel="noopener noreferrer nofollow"><strong>KingNish/Qwen2.5-0.5b-Test-ft</strong></a>, to pliki o wielkości około 1 GB. Z kolei największe ogólnie dostępne modele LLM (<a href="https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard" target="_blank" rel="noopener noreferrer nofollow">więcej tutaj</a>) mogą zajmować setki gigabajtów i wymagają niezwykle wydajnych, a co za tym idzie, kosztownych komputerów do ich uruchomienia.<br />
Najprostszym sposobem przekazania modelowi dodatkowych informacji jest użycie tzw. <strong>promptu</strong>. W tym artykule pomijamy bardziej zaawansowane techniki, takie jak fine-tuning (to temat na osobny wpis), i skupiamy się na metodzie <strong>RAG</strong> (Retrieval-Augmented Generation), która opiera się na promptach.<br />
<strong>Prompt</strong> to nic innego jak tekst, którym rozpoczynamy interakcję z modelem. Aby model mógł zrozumieć prompt, przetwarza go na swój &#8222;język&#8221; poprzez konwersję tekstu na tzw. <strong>embeddings</strong> – numeryczne reprezentacje danych ułożone w logiczny sposób.</p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Oto przykład:</p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []"><span style="font-family: inherit;">Zastosujemy dynamiczny prompt:<br />
</span><em>( funkcja JS która uzupełni treść o dane z kalendarz google za pomocą </em><a href="https://developers.google.com/calendar/api/guides/overview?hl=pl" target="_blank" rel="noopener noreferrer nofollow"><em>google calendar api</em></a><em> za pomocą funkcji getFormattedDate() ):</em></p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []"><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-3581" src="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-1.png" alt="" width="691" height="296" srcset="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-1.png 691w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-1-300x129.png 300w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-1-384x164.png 384w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-1-114x49.png 114w" sizes="(max-width: 691px) 100vw, 691px" /></p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Tokenizacja:</p>
<p id="bh-tKx3uMgVChpVd7b4rHf3T" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Biblioteka llamaindex dzieli dane na tokeny. Tą wartość można konfigurować per model<br />
Nasza aplikacja korzysta z modelu OpenAI GPT 3.5 i dla takiego modelu zalecana jest wartość tak jak poniżej:</p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []"><img decoding="async" class="alignnone wp-image-3582" src="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Tokenizacja.jpg" alt="" width="645" height="67" srcset="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Tokenizacja.jpg 838w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Tokenizacja-300x31.jpg 300w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Tokenizacja-768x80.jpg 768w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Tokenizacja-384x40.jpg 384w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Tokenizacja-221x23.jpg 221w" sizes="(max-width: 645px) 100vw, 645px" /></p>
<p>Pod tym <a href="https://platform.openai.com/tokenizer" target="_blank" rel="noopener noreferrer nofollow">linkiem </a>można przetestować jak OpenAi tokenizuje zapytanie.</p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []"><img decoding="async" class="alignnone size-full wp-image-3583" src="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-2.png" alt="" width="671" height="328" srcset="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-2.png 671w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-2-300x147.png 300w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-2-384x188.png 384w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-2-100x49.png 100w" sizes="(max-width: 671px) 100vw, 671px" /></p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []"><em>Należy pamiętać, że poniższy opis jest mocno uproszczony. Ale chodzi tutaj o podstawowe zrozumienie działania takich aplikacji.</em></p>
<p id="bh-_xbtqbkOq3o5ciX97ibSF" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Najpierw prompt dzielony jest na porcje chunki:</p>
<p id="bh-OmhWfV6-KVfeTiNZoSfJS" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">[&#8222;Two&#8221;, &#8222;##ja&#8221;, &#8222;rola&#8221;, &#8222;to&#8221;, &#8222;asystent&#8221;, … &#8222;.&#8221;]<br />
(Znak &#8222;#&#8221; wskazuje na pod-słowo kontynuujące poprzedni token.)<br />
Następnie odbywa się mapowanie tokenów na indeksy:<br />
Każdy token jest zamieniany na unikalny identyfikator liczbowy zgodnie ze słownikiem modelu, który w praktyce wygląda tak:</p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []"><img loading="lazy" decoding="async" class="alignnone wp-image-3584" src="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/mapowanie-tokenow.jpg" alt="" width="714" height="47" srcset="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/mapowanie-tokenow.jpg 835w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/mapowanie-tokenow-300x20.jpg 300w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/mapowanie-tokenow-768x51.jpg 768w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/mapowanie-tokenow-384x25.jpg 384w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/mapowanie-tokenow-221x15.jpg 221w" sizes="auto, (max-width: 714px) 100vw, 714px" /></p>
<p id="bh-ABB5-2kQfiK4kGKvQFZGF" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Tworzenie embeddingów:<br />
Każdy indeks jest mapowany na wektor liczb rzeczywistych (embedding). Na przykład:</p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []"><img loading="lazy" decoding="async" class="alignnone wp-image-3585" src="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/embendings.jpg" alt="" width="710" height="148" srcset="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/embendings.jpg 835w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/embendings-300x63.jpg 300w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/embendings-768x160.jpg 768w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/embendings-384x80.jpg 384w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/embendings-221x46.jpg 221w" sizes="auto, (max-width: 710px) 100vw, 710px" /></p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Zapisane lokalnie dane w postaci embeddings w trakcie wykonywania zapytania są kojarzone z treścią pytania.<br />
Skojarzone fragmenty są doklejane do pytania i przesyłane do modelu. Ten mechanizm pozwala finalnie na przekazanie szerszego kontekstu.</p>
<p id="bh-SrEhUZ7qBhafKEHD77dcw" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true">Aby podsumować i lepiej zobrazować ten proces posłużymy się diagramem:</p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3586" src="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-3.png" alt="" width="764" height="599" srcset="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-3.png 764w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-3-300x235.png 300w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-3-306x240.png 306w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-3-62x49.png 62w" sizes="auto, (max-width: 764px) 100vw, 764px" /></p>
<h2 id="bh-M2Q24cgggsiEh6nKUrcCt" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Warto wiedzieć:</h2>
<p id="bh-MZ6bHPYlcvQVu6R557Cwb" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 [&quot;blockquote&quot;,{&quot;hookId&quot;:&quot;bh-7IgOd6oQMpbBas0pKrU6N&quot;,&quot;hookType&quot;:&quot;blockHook&quot;,&quot;dir&quot;:&quot;ltr&quot;,&quot;bubbleMenu&quot;:true}]">Każdy model językowy ma limit tokenów, które mogą być użyte w oknie konwersacji.<br />
Ilość pytań w konwersacji powoduje sumarycznie zwiększenie liczy użytych tokenów co finalnie przekłada się na zwiększenie kosztów użytkowania, ale też na spadek jakości odpowiedzi. Dlatego bardzo ważna jest optymalizacja promptów.</p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 [&quot;blockquote&quot;,{&quot;hookId&quot;:&quot;bh-7IgOd6oQMpbBas0pKrU6N&quot;,&quot;hookType&quot;:&quot;blockHook&quot;,&quot;dir&quot;:&quot;ltr&quot;,&quot;bubbleMenu&quot;:true}]"><img loading="lazy" decoding="async" class="alignnone wp-image-3601 size-full" src="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/04/pl.png" alt="" width="639" height="297" srcset="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/04/pl.png 639w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/04/pl-300x139.png 300w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/04/pl-384x178.png 384w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/04/pl-105x49.png 105w" sizes="auto, (max-width: 639px) 100vw, 639px" /></p>
<p id="bh-rRS1O-ugnoz6686xRlDzk" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 [&quot;blockquote&quot;,{&quot;hookId&quot;:&quot;bh-GmABk1vmU3w8llx27qXcS&quot;,&quot;hookType&quot;:&quot;blockHook&quot;,&quot;dir&quot;:&quot;ltr&quot;,&quot;bubbleMenu&quot;:true}]"><strong>Przekroczenie limitu:</strong> Gdy suma tokenów w rozmowie zbliża się do limitu, model najczęściej zaczyna <strong>usuwać najstarsze wiadomości</strong> z kontekstu, aby zrobić miejsce dla nowych. Dlatego często zdarza się że im dłuższa jest konwersacja tym mniej dokładne i spójne są informacje zwracane przez model językowy.</p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 [&quot;blockquote&quot;,{&quot;hookId&quot;:&quot;bh-GmABk1vmU3w8llx27qXcS&quot;,&quot;hookType&quot;:&quot;blockHook&quot;,&quot;dir&quot;:&quot;ltr&quot;,&quot;bubbleMenu&quot;:true}]"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3588" src="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-5.png" alt="" width="650" height="318" srcset="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-5.png 650w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-5-300x147.png 300w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-5-384x188.png 384w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Sekretarka-AI-z-LlamaIndex-i-Google-Calendar-visual-selection-5-100x49.png 100w" sizes="auto, (max-width: 650px) 100vw, 650px" /></p>
<h2 id="bh--bsR5CxgPDheUYZhQ8eyi" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Przetwarzanie informacji na przykładzie aplikacji:</h2>
<p id="bh-DLYCGRJzeXbYdGqVHkhI9" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true">Tak więc <strong><em>embeddings</em></strong> są wejściem do sieci neuronowej, która przetwarza je w celu zrozumienia znaczenia zdania i wykonania odpowiedniego zadania.</p>
<p id="bh-mGJ7PxjVpQDLx800aC9ip" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true">Do rzeczy &#8230; :</p>
<p id="bh-ZuoEs7Dze1PZmLglLZV3a" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true"><strong>Tworzenie indeksu</strong></p>
<p id="bh-oOSNkynhYJLVizwatcdIf" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true">Użyjemy LlamaIndex <a href="https://docs.llamaindex.ai/en/stable/api_reference/schema/#llama_index.core.schema.Document&amp;nbsp;" target="_blank" rel="noopener noreferrer nofollow">Dokument</a> do stworzenia indeksu (<a href="https://docs.llamaindex.ai/en/stable/module_guides/indexing/vector_store_index/#using-vectorstoreindex" target="_blank" rel="noopener noreferrer nofollow">VectorStoreIndex</a>), który przechowuje informacje w sposób umożliwiający szybkie wyszukiwanie.</p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true"><img loading="lazy" decoding="async" class="alignnone wp-image-3589" src="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/cons-documents.jpg" alt="" width="650" height="134" srcset="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/cons-documents.jpg 834w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/cons-documents-300x62.jpg 300w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/cons-documents-768x158.jpg 768w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/cons-documents-384x79.jpg 384w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/cons-documents-221x46.jpg 221w" sizes="auto, (max-width: 650px) 100vw, 650px" /></p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []"><strong>Retriever</strong></p>
<p>Retriever jest tworzony z indeksu i jest odpowiedzialny za wyszukiwanie najbardziej podobnych informacji na podstawie zapytania użytkownika.</p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []"><img loading="lazy" decoding="async" class="alignnone wp-image-3590" src="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Cons-retriever.jpg" alt="" width="643" height="67" srcset="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Cons-retriever.jpg 835w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Cons-retriever-300x31.jpg 300w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Cons-retriever-768x80.jpg 768w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Cons-retriever-384x40.jpg 384w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Cons-retriever-221x23.jpg 221w" sizes="auto, (max-width: 643px) 100vw, 643px" /></p>
<p id="bh-pGmxIRfQxNntuKJxZdvlL" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []"><strong>Silnik czatu</strong></p>
<p id="bh-jPuNmzg6aO0NzYA1wfZ8C" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true"><a href="https://docs.llamaindex.ai/en/stable/api_reference/chat_engines/context/#llama_index.core.chat_engine.ContextChatEngine" target="_blank" rel="noopener noreferrer nofollow">ContextChatEngine</a> używa retriever do przetwarzania zapytań użytkownika. Silnik czatu analizuje zapytanie, wyszukuje odpowiednie informacje w indeksie i generuje odpowiedź. Dzięki indeksowi model językowy zna nasz kalendarz i wie, co ma z tymi danymi robić.</p>
<p dir="ltr" data-hook-type="blockHook" data-bubble-menu="true"><img loading="lazy" decoding="async" class="alignnone wp-image-3591" src="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/let-chatengine.jpg" alt="" width="639" height="88" srcset="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/let-chatengine.jpg 835w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/let-chatengine-300x41.jpg 300w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/let-chatengine-768x106.jpg 768w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/let-chatengine-384x53.jpg 384w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/let-chatengine-221x30.jpg 221w" sizes="auto, (max-width: 639px) 100vw, 639px" /></p>
<p id="bh-ikK9U4fofu4ocX1Jkeo9j" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []"><strong>Interakcja z użytkownikiem</strong></p>
<p id="bh-axdVcLnvM9pbr69EjTujk" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true">Użytkownik wprowadza zapytania, a silnik czatu przetwarza je, używając kontekstu przechowywanego w indeksie, aby wygenerować odpowiednie odpowiedzi.<br />
Konwersacja przebiega w pentli while .. do chwili, kiedy użytkownik potwierdzi termin wpisując z klawiatury wpisując ‘TAK”</p>
<p id="bh-d3K15sAEv5B6VHXIJhlfd" data-hook-type="blockHook" data-bubble-menu="true"><img loading="lazy" decoding="async" class="alignnone wp-image-3592" src="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Let-done.jpg" alt="" width="637" height="313" srcset="https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Let-done.jpg 832w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Let-done-300x147.jpg 300w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Let-done-768x378.jpg 768w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Let-done-384x189.jpg 384w, https://connectpointpl.connectpoint.smallhost.pl/wp-content/uploads/2025/03/Let-done-100x49.jpg 100w" sizes="auto, (max-width: 637px) 100vw, 637px" /></p>
<p id="bh-LQpH-xr2XA_PoShZgrhnw" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []"><strong>Interakcja z użytkownikiem</strong></p>
<p id="bh-oeDphQ8NLTSOYZyZtgO5w" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true">Potwierdzenie terminu “TAK” powoduje wyjście z pętli i utworzenie nowego kontekstu, czyli nowej rozmowy.</p>
<p id="bh-J0vvD9UNrYi54eP3ZEb0z" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Finalnie powstała mała aplikacja w TypeScript i NodeJS, która po uruchomieniu pozwala użytkownikowi na komunikację z modelem LLM, który zna nasz kalendarz. Działanie aplikacji możesz zobaczyć tutaj:</p>
<div class="ratio ratio-16x9"><iframe loading="lazy" title="Przykład działania aplikacji RAG &quot;sekretarka AI&quot; w oparciu o Llamaindex" width="800" height="600" src="https://www.youtube.com/embed/oi38fGRNDaU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>
<p id="bh-eUNl5G6wPehwnEJ5yUA6N" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Kod aplikacji znajdziesz tutaj:<br />
<a href="https://github.com/Himmelbub/sekretarkaAi" target="_blank" rel="noopener noreferrer nofollow">https://github.com/Himmelbub/sekretarkaAi</a></p>
<h2 id="bh-kEEEc7Yt-yiFDqrQ8RCaP" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true" data-pm-slice="1 1 []">Podsumowanie</h2>
<p id="bh-qgm7NqT_lR9SSiwikeAUa" dir="ltr" data-hook-type="blockHook" data-bubble-menu="true">Jak widać na powyższym przykładzie, wykorzystywanie modeli LLM w tworzeniu oprogramowania nie jest rzeczą skomplikowaną. Wykorzystując nowoczesne i szybko rozwijane frameworki, takie jak <a href="https://docs.llamaindex.ai/en/stable/" target="_blank" rel="noopener noreferrer nofollow">Llamaindex</a> czy <a href="LangChain" target="_blank" rel="noopener noreferrer nofollow">LangChain,</a> jesteśmy w stanie w szybki sposób dodać integrację z AI. Do finalnego efektu ważne jest natomiast dogłębne przeanalizowanie tematów bezpieczeństwa oraz optymalizacji wyników zwracanych przez model.</p>
<p>The post <a href="https://connectpointpl.connectpoint.smallhost.pl/pl/sekretarka-ai-z-llamaindex-i-google-calendar/">Sekretarka AI z LlamaIndex i Google Calendar</a> appeared first on <a href="https://connectpointpl.connectpoint.smallhost.pl/pl/home">ConnectPoint</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
