<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Google AI Studio on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/google-ai-studio/</link>
        <description>Recent content in Google AI Studio on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Thu, 15 May 2025 15:30:07 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/google-ai-studio/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>3rd-devs</title>
        <link>https://producthunt.programnotes.cn/en/p/3rd-devs/</link>
        <pubDate>Thu, 15 May 2025 15:30:07 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/3rd-devs/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1666548004110-c1afb19c1582?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDcyOTQxMjN8&amp;ixlib=rb-4.1.0" alt="Featured image of post 3rd-devs" /&gt;&lt;h1 id=&#34;i-am-alice3rd-devs&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/i-am-alice/3rd-devs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;i-am-alice/3rd-devs&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;ai_devs-3&#34;&gt;AI_devs 3
&lt;/h1&gt;&lt;p&gt;Repozytorium zawiera przykłady z lekcji kursu AI_devs 3.
Więcej informacji znajdziesz na &lt;a class=&#34;link&#34; href=&#34;https://aidevs.pl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;aidevs.pl&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;wymagania&#34;&gt;Wymagania
&lt;/h2&gt;&lt;p&gt;Wszystkie przykłady zostały napisane w JavaScript / TypeScript i większość z nich zawiera kod backendowy do którego uruchomienia potrzebny jest Node.js oraz Bun.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nodejs.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Node.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://bun.sh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bun&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Upewnij się, że posiadasz najnowsze wersje Node.js oraz Bun zainstalowane na swoim komputerze.&lt;/p&gt;
&lt;h2 id=&#34;instalacja&#34;&gt;Instalacja
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Pobierz repozytorium:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone git@github.com:i-am-alice/3rd-devs.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; 3rd-devs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Zainstaluj zależności:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Skopiuj plik &lt;code&gt;.env.example&lt;/code&gt; do &lt;code&gt;.env&lt;/code&gt; i wypełnij go kluczami API (na początek wystarczy klucz OpenAI).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Uruchom dostępne przykłady z pliku &lt;code&gt;package.json&lt;/code&gt;, według poniższej instrukcji.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;instalacja--docker&#34;&gt;Instalacja — DOCKER
&lt;/h2&gt;&lt;p&gt;Jeśli posiadasz w swoim systemie możliwość uruchamiania kontenerów Dockera (na Windows użyj np. WSL/WSL2), możesz wykorzystać skrypt, który zbuduje i uruchomi dla Ciebie kontener ze środowiskiem gotowym do pracy.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Wejdź do katalogu, w którym chcesz przetrzymywać pliki środowiska i wydaj następujące polecenia:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://env.ag3nts.org -o setup.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bash setup.sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Powyższy skrypt NIE zmienia niczego w systemie. Wykonuje on następujące czynności:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;klonowanie repozytorium do katalogu &amp;ldquo;3rd-devs&amp;rdquo; (poza kontenerem, w aktualnym katalogu)&lt;/li&gt;
&lt;li&gt;przygotowanie pliku Dockerfile&lt;/li&gt;
&lt;li&gt;usunięcie starego obrazu Dockera o nazwie &amp;ldquo;aidevs&amp;rdquo; (jeśli istnieje)&lt;/li&gt;
&lt;li&gt;uruchomienie procesu budowy obrazu Dockera&lt;/li&gt;
&lt;li&gt;instalacja wymaganych paczek wewnątrz zdokeryzowanego środowiska&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Po pomyślnym zbudowaniu obrazu możesz uruchomić go poleceniem (jeśli port 3000 masz zajęty, wybierz inny):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm -it -p 3000:3000 --name aidevs -v &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;PWD&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;/3rd-devs:/app aidevs3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pliki w katalogu &amp;ldquo;3rd-devs&amp;rdquo; możesz modyfikować w dowolnym IDE. Będą one bezpośrednio widoczne wewnątrz kontenera&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Będąc już wewnątrz kontenera, skopiuj plik &lt;code&gt;.env.example&lt;/code&gt; do &lt;code&gt;.env&lt;/code&gt; i wypełnij go wymaganymi kluczami API (na początek wystarczy klucz OpenAI).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Twoje środowisko jest gotowe do pracy.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;s01e01&#34;&gt;S01E01
&lt;/h2&gt;&lt;h3 id=&#34;thread&#34;&gt;Thread
&lt;/h3&gt;&lt;p&gt;Przykład przedstawia konwersację między użytkownikiem i asystentem, w której działa mechanizm podsumowania konwersacji.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie serwera: &lt;code&gt;bun run thread&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja demo: &lt;code&gt;curl -X POST http://localhost:3000/api/demo&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja chat: &lt;code&gt;curl -X POST http://localhost:3000/api/chat -H &amp;quot;Content-Type: application/json&amp;quot; -d &#39;{&amp;quot;message&amp;quot;: { &amp;quot;role&amp;quot;: &amp;quot;user&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;Hi&amp;quot;}}&#39;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wywołanie powyższego endpointu uruchomi trzy niezależne zapytania do OpenAI, jednak w wiadomości systemowej zostanie przekazane podsumowanie poprzedniej interakcji, dzięki czemu model będzie miał możliwość odwołać się do ich treści.&lt;/p&gt;
&lt;p&gt;W przykładzie uwzględniony jest także endpoint &lt;code&gt;/api/chat&lt;/code&gt; na który można przesłać obiekt { &amp;ldquo;message&amp;rdquo;: &amp;ldquo;&amp;hellip;&amp;rdquo; } zawierający treść wiadomości do modelu. Wątek zostanie zresetowany &lt;strong&gt;dopiero po ponownym uruchomieniu serwera&lt;/strong&gt; (wciśnij CMD + C / Control + C i ponownie &lt;code&gt;bun run thread&lt;/code&gt;).&lt;/p&gt;
&lt;h3 id=&#34;use-search&#34;&gt;Use Search
&lt;/h3&gt;&lt;p&gt;UWAGA: przykład wymaga zainstalowania &lt;code&gt;promptfoo&lt;/code&gt; w przypadku którego prawdopodobnie musisz to zrobić poleceniem &lt;code&gt;npm install promptfoo&lt;/code&gt; ponieważ &lt;code&gt;bun install promptfoo&lt;/code&gt; nie działa poprawnie w każdej sytuacji.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie skryptu: &lt;code&gt;bun use_search&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rezultatem działania skryptu jest tablica zawierająca kilkanaście przykładowych testów dla promptu decydującego o tym, czy skorzystanie z wyszukiwarki jest potrzebne.&lt;/p&gt;
&lt;h3 id=&#34;pick-domains&#34;&gt;Pick domains
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie skryptu: &lt;code&gt;bun pick_domains&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rezultatem działania skryptu jest tablica zawierająca kilkanaście przykładowych testów dla promptu generującego zapytania do wyszukiwarki Internetowej, wskazując także odpowiednie domeny.&lt;/p&gt;
&lt;h3 id=&#34;rate&#34;&gt;Rate
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie skryptu: &lt;code&gt;bun rate&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rezultatem działania skryptu jest tablica zawierająca kilkanaście przykładowych testów dla promptu oceniającego, czy odpowiedź modelu zawiera odpowiednie informacje.&lt;/p&gt;
&lt;h3 id=&#34;websearch&#34;&gt;Websearch
&lt;/h3&gt;&lt;p&gt;Przykład ten korzysta z &lt;a class=&#34;link&#34; href=&#34;https://www.firecrawl.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Firecrawl&lt;/a&gt; do przeszukiwania Internetu oraz pobierania treści stron www. Konieczne jest więc uzupełnienie pliku &lt;code&gt;.env&lt;/code&gt; wartości FIRECRAWL_API_KEY ustawionej na klucz API.
(Firecrawl oferuje bezpłatny plan).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie serwera: &lt;code&gt;bun websearch&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -X POST http://localhost:3000/api/chat &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;messages&amp;#34;: [{&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Search wiki for &amp;#39;&lt;/span&gt;John Wick&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ważne: w pliku &lt;code&gt;websearch/app.ts&lt;/code&gt; można zmienić listę domen, które są dopuszczalne do przeszukiwania i pobierania treści.&lt;/p&gt;
&lt;h2 id=&#34;s01e02&#34;&gt;S01E02
&lt;/h2&gt;&lt;h3 id=&#34;linear&#34;&gt;Linear
&lt;/h3&gt;&lt;p&gt;Uruchomienie tego przykładu wymaga uzupełnienia pliku &lt;code&gt;.env&lt;/code&gt; i wartości &lt;code&gt;LINEAR_API_KEY&lt;/code&gt; oraz &lt;code&gt;LINEAR_WEBHOOK_SECRET&lt;/code&gt;.
Obie wartości można znaleźć w &lt;a class=&#34;link&#34; href=&#34;https://linear.app/overment/settings/api&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ustawieniach API&lt;/a&gt;. Dodatkowo Twój localhost musi być dostępny z poza Twojej sieci lokalnej, np. za pomocą &lt;a class=&#34;link&#34; href=&#34;https://ngrok.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ngrok&lt;/a&gt;. Publiczny adres URL należy także wskazać w panelu Linear w sekcji Webhooks, np.: &lt;code&gt;https://&amp;lt;ngrok-url&amp;gt;/api/linear/watch-issue&lt;/code&gt; (pamiętaj o dodaniu właściwego endpointu do adresu).&lt;/p&gt;
&lt;p&gt;WAŻNE: w pliku &lt;code&gt;linear/prompts.ts&lt;/code&gt; znajduje się prompt w którym zostały opisane &lt;strong&gt;moje projekty&lt;/strong&gt; w Linear.
Aby skrypt działał poprawnie, musisz zmodyfikować ten prompt, tak aby zawierał identyfikatory oraz opisy Twoich projektów.&lt;/p&gt;
&lt;p&gt;Listę projektów i ich identyfikatory możesz pobrać korzystając z endpointu &lt;code&gt;/api/linear/projects&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie serwera: &lt;code&gt;bun linear&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Pobranie listy projektów: &lt;code&gt;curl http://localhost:3000/api/linear/projects&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Po dodaniu nowego wpisu w Twoim linearze, zostanie on automatycznie przypisany do projektu zgodnie z zasadami w promptach, o ile nie został przypisany przez Ciebie ręcznie.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;files&#34;&gt;Files
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie serwera: &lt;code&gt;bun files&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -X POST http://localhost:3000/api/chat &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;messages&amp;#34;: [{&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Hey there, what\&amp;#39;&lt;/span&gt;s up?&lt;span class=&#34;s2&#34;&gt;&amp;#34;}], &amp;#34;&lt;/span&gt;conversation_id&lt;span class=&#34;s2&#34;&gt;&amp;#34;: &amp;#34;&lt;/span&gt;d7582176-bc52-4ef3-980a-047b868f9f49&lt;span class=&#34;s2&#34;&gt;&amp;#34;}&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Przykład ten pokazuje mechanizm podejmowania decyzji o zapamiętywaniu informacji na podstawie kontekstu rozmowy.
Dodatkowo w przypadku podania &lt;code&gt;conversation_id&lt;/code&gt; w obiekcie żądania, do rozmowy zostaną wczytane wszystkie wiadomości dotyczące konkretnej rozmowy.&lt;/p&gt;
&lt;p&gt;Wszystkie pliki zapisywane są w folderze &lt;code&gt;files/context&lt;/code&gt;, a sam katalog można otworzyć w aplikacji &lt;a class=&#34;link&#34; href=&#34;https://obsidian.md/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Obsidian&lt;/a&gt; aby zobaczyć powiązania pomiędzy wspomnieniami.&lt;/p&gt;
&lt;h2 id=&#34;s01e03&#34;&gt;S01E03
&lt;/h2&gt;&lt;h3 id=&#34;langfuse&#34;&gt;Langfuse
&lt;/h3&gt;&lt;p&gt;Ten przykład wymaga uzupełnienia pliku &lt;code&gt;.env&lt;/code&gt; o wartości &lt;code&gt;LANGFUSE_PUBLIC_KEY&lt;/code&gt;, &lt;code&gt;LANGFUSE_SECRET_KEY&lt;/code&gt; oraz &lt;code&gt;LANGFUSE_HOST&lt;/code&gt;. Można je uzyskać zakładając bezpłatne konto na &lt;a class=&#34;link&#34; href=&#34;https://langfuse.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Langfuse&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;UWAGA: Aby uruchomić ten przykład, musisz w panelu Langfuse utworzyć nowy prompt o nazwie &lt;code&gt;Answer&lt;/code&gt;, którego wartość możesz ustawić na np. &amp;lsquo;Odpowiadaj pisząc wyłącznie wielkimi literami&amp;rsquo;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie serwera: &lt;code&gt;bun langfuse&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -X POST http://localhost:3000/api/chat &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;messages&amp;#34;: [{&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Hey there, what\&amp;#39;&lt;/span&gt;s up?&lt;span class=&#34;s2&#34;&gt;&amp;#34;}]}&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Po wykonaniu zapytania, zostanie ono automatycznie zalogowane do Langfuse, a wynik wyświetlony w panelu.&lt;/p&gt;
&lt;h3 id=&#34;tiktokenizer&#34;&gt;Tiktokenizer
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie serwera: &lt;code&gt;bun tiktokenizer&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -X POST http://localhost:3000/api/chat &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;messages&amp;#34;: [{&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Hey there, what\&amp;#39;&lt;/span&gt;s up?&lt;span class=&#34;s2&#34;&gt;&amp;#34;}], &amp;#34;&lt;/span&gt;model&lt;span class=&#34;s2&#34;&gt;&amp;#34;: &amp;#34;&lt;/span&gt;gpt-4o&lt;span class=&#34;s2&#34;&gt;&amp;#34;}&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Przykład ten pokazuje mechanizm liczenia tokenów w zapytaniach do modeli OpenAI (np. gpt-4o).&lt;/p&gt;
&lt;h3 id=&#34;max-tokens&#34;&gt;Max tokens
&lt;/h3&gt;&lt;p&gt;Przykład ten pokazuje jeden mechanizm pozwalający na kontynuowanie wypowiedzi modelu, pomimo osiągnięcia maksymalnej liczby tokenów wyjściowych (output tokens).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie serwera: &lt;code&gt;bun max_tokens&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -X POST http://localhost:3000/api/chat &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;messages&amp;#34;: [{&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Write ten sentences about apples and put them in order.&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;constitution&#34;&gt;Constitution
&lt;/h3&gt;&lt;p&gt;Przykład ten przedstawia mechanizm blokowania zapytań, które nie spełniają warunków określonych w prompcie &lt;code&gt;/constitution/prompts.ts&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie serwera: &lt;code&gt;bun constitution&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -X POST http://localhost:3000/api/chat &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;messages&amp;#34;: [{&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Hello!&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;s01e04&#34;&gt;S01E04
&lt;/h2&gt;&lt;h3 id=&#34;memory&#34;&gt;Memory
&lt;/h3&gt;&lt;p&gt;Ten przykład po uruchomieniu tworzy katalog memories w którym zapisywane są pliki markdown, pełniące rolę pamięci modelu.
Nie jest to przykład nadający się na produkcję, lecz przedstawia ogólne mechaniki pamięci długoterminowej, które będziemy rozwijać w dalszych lekcjach.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie serwera: &lt;code&gt;bun memory&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; curl -X POST http://localhost:3000/api/chat &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;messages&amp;#34;: [{&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Hello!&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;s01e05&#34;&gt;S01E05
&lt;/h2&gt;&lt;h3 id=&#34;external&#34;&gt;External
&lt;/h3&gt;&lt;p&gt;Ten przykład zawiera standardową logikę interakcji z modelem, ale wymaga podania klucza API w nagłówku &lt;code&gt;Authorization&lt;/code&gt; w formacie &lt;code&gt;Bearer &amp;lt;klucz&amp;gt;&lt;/code&gt;. Wartość klucza zostaje wczytana z pliku &lt;code&gt;.env&lt;/code&gt; jako &lt;code&gt;PERSONAL_API_KEY&lt;/code&gt;. Dodatkowo zostały dodane mechanizmy ograniczania liczby zapytań, więc po kilku próbach ponowne wywołanie zapytania zwróci błąd 429.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie serwera: &lt;code&gt;bun external&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -X POST http://localhost:3000/api/chat &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;messages&amp;#34;: [{&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Hello!&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;prompts&#34;&gt;Prompts
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;UWAGA&lt;/strong&gt;: Aby uruchomić ten przykład konieczne jest nawiązanie połączenie z Langfuse poprzez uzupełnienie pliku &lt;code&gt;.env&lt;/code&gt; o wartości &lt;code&gt;LANGFUSE_PUBLIC_KEY&lt;/code&gt;, &lt;code&gt;LANGFUSE_SECRET_KEY&lt;/code&gt; oraz &lt;code&gt;LANGFUSE_HOST&lt;/code&gt;. Dodatkowo na Twoim koncie musisz utworzyć nowy prompt o nazwie &lt;code&gt;Answer&lt;/code&gt;, którego wartość możesz ustawić na np. &amp;lsquo;Odpowiadaj pisząc wyłącznie wielkimi literami&amp;rsquo;, aby tylko sprawdzić działanie mechanizmu. Dodatkowo prompt &amp;ldquo;Answer&amp;rdquo; należy dodać w ustawieniu &amp;ldquo;Chat&amp;rdquo;, a nie &amp;ldquo;Text&amp;rdquo; (tryb można zmienić z pomocą zakładek w Langfuse)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie serwera: &lt;code&gt;bun prompts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -X POST http://localhost:3000/api/chat &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;messages&amp;#34;: [{&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Hello!&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;database&#34;&gt;Database
&lt;/h3&gt;&lt;p&gt;Ten przykład nie dotyczy bezpośrednio działania LLM, lecz przedstawia sposób organizacji informacji w bazie danych, takich jak konwersacje czy historia wiadomości.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie serwera: &lt;code&gt;bun database&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -X POST http://localhost:3000/api/chat &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;messages&amp;#34;: [{&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Hello!&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;qdrant&#34;&gt;Qdrant
&lt;/h3&gt;&lt;p&gt;Przykład ten przedstawia &lt;strong&gt;absolutnie podstawowe&lt;/strong&gt; połączenie z bazą wektorową Qdrant. Jego zadaniem jest zapisywanie historii wiadomości, a następnie wyszukiwanie i wczytywanie do kontekstu rozmowy najbardziej podobnych wiadomości. Przykład ten będziemy rozbudowywać w dalszych lekcjach, łącząc się z Qdrant w bardziej złożonych konfiguracjach.&lt;/p&gt;
&lt;p&gt;UWAGA: Aby uruchomić ten przykład, musisz w panelu Langfuse utworzyć nowy prompt o nazwie &lt;code&gt;Answer&lt;/code&gt;, którego wartość możesz ustawić na np. &amp;lsquo;Odpowiadaj pisząc wyłącznie wielkimi literami&amp;rsquo;. Powodem jest fakt, że w ten przykład został powiązany z przykładem &lt;code&gt;langfuse&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie serwera: &lt;code&gt;bun qdrant&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -X POST http://localhost:3000/api/chat &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -H &lt;span class=&#34;s2&#34;&gt;&amp;#34;Content-Type: application/json&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;{&amp;#34;messages&amp;#34;: [{&amp;#34;role&amp;#34;: &amp;#34;user&amp;#34;, &amp;#34;content&amp;#34;: &amp;#34;Hello!&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;s02e01&#34;&gt;S02E01
&lt;/h2&gt;&lt;h3 id=&#34;audio&#34;&gt;Audio
&lt;/h3&gt;&lt;p&gt;UWAGA: Ten przykład wymaga uruchomienia frontendu w folderze &lt;code&gt;audio-frontend&lt;/code&gt; oraz backendu w folderze &lt;code&gt;audio-backend&lt;/code&gt;. W związku z tym przykład &lt;strong&gt;trzeba&lt;/strong&gt; uruchomić na własnym komputerze.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie frontendu: &lt;code&gt;bun audio:dev&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Uruchomienie backendu: &lt;code&gt;bun audio&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: Otwórz w przeglądarce stronę http://localhost:5173&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;WAŻNE: Jakość działania tego przykładu zależy głównie od jakości mikrofonu oraz dźwięków otoczenia. Upewnij się więc, że jakość nagrania jest dobra i że nie ma zakłóceń uniemożliwiających wykrywanie końca wypowiedzi.&lt;/p&gt;
&lt;h2 id=&#34;s02e02&#34;&gt;S02E02
&lt;/h2&gt;&lt;h3 id=&#34;vision&#34;&gt;Vision
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun vision&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;recognize&#34;&gt;Recognize
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun recognize&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;recognize-pixtral&#34;&gt;Recognize-Pixtral
&lt;/h3&gt;&lt;p&gt;Do uruchomienia tego przykładu należy uzupełnić plik &lt;code&gt;.env&lt;/code&gt; o wartość &lt;code&gt;MISTRAL_API_KEY&lt;/code&gt;. Można go pobrać tutaj na &lt;a class=&#34;link&#34; href=&#34;https://auth.mistral.ai/ui/login?flow=d2707d87-5325-4ff5-a7cd-25a2e21323d5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mistral.ai&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun recognize_pixtral&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;s02e02-1&#34;&gt;S02E02
&lt;/h2&gt;&lt;h3 id=&#34;vision-1&#34;&gt;Vision
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun vision&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na pliku &lt;code&gt;vision/lessons.png&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;recognize-1&#34;&gt;Recognize
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun recognize&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na plikach z katalogu &lt;code&gt;recognize/avatars&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;recognize-pixtral-1&#34;&gt;Recognize-Pixtral
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun recognize_pixtral&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na plikach z katalogu &lt;code&gt;recognize_pixtral/avatars&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;s02e03&#34;&gt;S02E03
&lt;/h2&gt;&lt;p&gt;&amp;mdash; brak przykładów &amp;mdash;&lt;/p&gt;
&lt;h2 id=&#34;s02e04&#34;&gt;S02E04
&lt;/h2&gt;&lt;h3 id=&#34;captions&#34;&gt;Captions
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun captions&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na pliku &lt;code&gt;captions/article.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;summary&#34;&gt;Summary
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun summary&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: skrypt wykonuje się automatycznie na pliku &lt;code&gt;summary/article.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;video&#34;&gt;Video
&lt;/h3&gt;&lt;p&gt;Do uruchomienia tego przykładu należy uzupełnić plik &lt;code&gt;.env&lt;/code&gt; o wartość &lt;code&gt;GOOGLE_AI_STUDIO_API_KEY&lt;/code&gt;, który można pobrać z &lt;a class=&#34;link&#34; href=&#34;https://aistudio.google.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google AI Studio&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun video&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na pliku &lt;code&gt;video/test.mp3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;narration&#34;&gt;Narration
&lt;/h3&gt;&lt;p&gt;UWAGA: Ten przykład może zużywać duże ilości kredytów na ElevenLabs, więc jeśli chcesz zobaczyć rezultat jego działania, to w katalogu &lt;code&gt;narration&lt;/code&gt; znajdują się dwa przykładowe pliki audio, które możesz odtworzyć bez uruchamiania kodu.&lt;/p&gt;
&lt;p&gt;Do uruchomienia tego przykładu należy uzupełnić plik &lt;code&gt;.env&lt;/code&gt; o wartość &lt;code&gt;GOOGLE_AI_STUDIO_API_KEY&lt;/code&gt;, który można pobrać z &lt;a class=&#34;link&#34; href=&#34;https://aistudio.google.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google AI Studio&lt;/a&gt; oraz &lt;code&gt;ELEVEN_LABS_API_KEY&lt;/code&gt;, który można pobrać z &lt;a class=&#34;link&#34; href=&#34;https://elevenlabs.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ElevenLabs&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun narration&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na treści wiadomości użytkownika przekazanej w funkcji &lt;code&gt;generateNarration&lt;/code&gt; w pliku &lt;code&gt;narration/app.ts&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;s02e05&#34;&gt;S02E05
&lt;/h2&gt;&lt;h3 id=&#34;read&#34;&gt;Read
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun read&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na pliku &lt;code&gt;read/article.md&lt;/code&gt; i generuje plik audio w folderze read/summary.wav&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;mindmap&#34;&gt;Mindmap
&lt;/h3&gt;&lt;p&gt;Ten przykład wymaga uruchomienia frontendu w folderze &lt;code&gt;audio-map-frontend&lt;/code&gt; oraz backendu w folderze &lt;code&gt;audio-map&lt;/code&gt;. W związku z tym przykład &lt;strong&gt;trzeba&lt;/strong&gt; uruchomić na własnym komputerze.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie frontendu: &lt;code&gt;bun map:dev&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Uruchomienie backendu: &lt;code&gt;bun audio-map&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: Otwórz w przeglądarce stronę http://localhost:5173&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;notes&#34;&gt;Notes
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun notes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na wiadomości wpisanej w treść pliku &lt;code&gt;notes/app.ts&lt;/code&gt; (jest tam kilka przykładów innych wiadomości, które można podmienić).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;s03e01&#34;&gt;S03E01
&lt;/h2&gt;&lt;h3 id=&#34;text-splitter&#34;&gt;Text Splitter
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun text-splitter&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na plikach markdown z katalogu &amp;ldquo;text-splitter&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;unstructured&#34;&gt;Unstructured
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun unstructured&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na pliku source.md z katalogu &amp;ldquo;unstructured&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;s03e02&#34;&gt;S03E02
&lt;/h2&gt;&lt;h3 id=&#34;embedding&#34;&gt;Embedding
&lt;/h3&gt;&lt;p&gt;Uruchomienie tego przykładu wymaga uzupełnienia pliku &lt;code&gt;.env&lt;/code&gt; o wartości &amp;ldquo;QDRANT_URL&amp;rdquo; oraz &amp;ldquo;QDRANT_API_KEY&amp;rdquo;.
Wartości te można znaleźć w panelu Qdrant po zalogowaniu na bezpłatne konto na stronie &lt;a class=&#34;link&#34; href=&#34;https://cloud.qdrant.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qdrant Cloud&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cloud.overment.com/aidevs3_cluster-1732010353.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Qdrant Cloud&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;Natomiast klucz API można pobrać w zakładce &amp;ldquo;Data Access Control&amp;rdquo;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun embedding&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na danych osadzonych w pliku embedding/app.ts&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;rerank&#34;&gt;Rerank
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun rerank&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na danych osadzonych w pliku rerank/app.ts&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;naive-rag&#34;&gt;Naive RAG
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun naive-rag&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na danych osadzonych w pliku naive-rag/app.ts&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;better-rag&#34;&gt;Better RAG
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun better-rag&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na danych osadzonych w pliku better-rag/app.ts&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;semantic&#34;&gt;Semantic
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun semantic&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na danych osadzonych w pliku semantic/app.ts&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;s03e03&#34;&gt;S03E03
&lt;/h2&gt;&lt;h3 id=&#34;algolia&#34;&gt;Algolia
&lt;/h3&gt;&lt;p&gt;Do uruchomienia tego przykładu konieczne jest uzupełnienie &lt;code&gt;ALGOLIA_APP_ID&lt;/code&gt; oraz &lt;code&gt;ALGOLIA_API_KEY&lt;/code&gt; w pliku &lt;code&gt;.env&lt;/code&gt;.
&lt;strong&gt;UWAGA&lt;/strong&gt;: przy pierwszym uruchomieniu przykładu pojawi się błąd ale spowoduje to utworzenie indeksu w Algolia. Wówczas należy przejść do panelu Algolia i w zakładce &amp;ldquo;Facets&amp;rdquo; dodać nowy facet o nazwie &lt;code&gt;author&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cloud.overment.com/2024-11-20/aidevs3_algolia-09eeb970-2.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun algolia&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na danych osadzonych w pliku algolia/app.ts&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;sync&#34;&gt;Sync
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;UWAGA&lt;/strong&gt;: Do uruchomienia tego przykładu konieczne jest uzupełnienie &lt;code&gt;ALGOLIA_APP_ID&lt;/code&gt; oraz &lt;code&gt;ALGOLIA_API_KEY&lt;/code&gt; w pliku &lt;code&gt;.env&lt;/code&gt;.
Wymagane jest bezpłatne konto na &lt;a class=&#34;link&#34; href=&#34;https://www.algolia.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Algolia&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dodatkowo jeśli wyniki wyszukiwania nie są poprawnie zwracane, należy sprawdzić czy pole &lt;code&gt;text&lt;/code&gt; zostało poprawnie ustawione w panelu Algolia jako &lt;code&gt;searchableAttributes&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://cloud.overment.com/2024-11-19/aidevs3_cleanshot-3e7fd444-c.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Algolia&#34;
	
	
&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun sync&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na danych osadzonych w pliku sync/app.ts&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;hybrid&#34;&gt;Hybrid
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;UWAGA&lt;/strong&gt;: Do uruchomienia tego przykładu konieczne jest uzupełnienie &lt;code&gt;QDRANT_URL&lt;/code&gt; oraz &lt;code&gt;QDRANT_API_KEY&lt;/code&gt; w pliku &lt;code&gt;.env&lt;/code&gt;.
Konieczne jest także połączenie z Algolia podobnie jak w przypadku przykładu &lt;code&gt;sync&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun hybrid&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na danych osadzonych w pliku hybrid/app.ts&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;s03e05&#34;&gt;S03E05
&lt;/h2&gt;&lt;p&gt;Do uruchomienia tego przykładu konieczne jest połączenie z bazą Neo4j. Można ją zainstalować lokalnie, a następnie uzupełnić plik &lt;code&gt;.env&lt;/code&gt; o wartości &lt;code&gt;NEO4J_URI&lt;/code&gt;, &lt;code&gt;NEO4J_USER&lt;/code&gt; oraz &lt;code&gt;NEO4J_PASSWORD&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;neo4j-101&#34;&gt;Neo4j-101
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun neo4j-101&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na danych osadzonych w pliku neo4j-101/app.ts&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;neo4j&#34;&gt;Neo4j
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Uruchomienie kodu: &lt;code&gt;bun neo4j&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Interakcja: przykład wykonuje się automatycznie na danych osadzonych w pliku neo4j/app.ts&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
