<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: victor forissier</title>
    <description>The latest articles on DEV Community by victor forissier (@victorforissier).</description>
    <link>https://dev.to/victorforissier</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F721427%2F99259f80-0336-46b6-a20f-304c6248f1aa.jpg</url>
      <title>DEV Community: victor forissier</title>
      <link>https://dev.to/victorforissier</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/victorforissier"/>
    <language>en</language>
    <item>
      <title>🔥 8 React components with LLMs 🤖</title>
      <dc:creator>victor forissier</dc:creator>
      <pubDate>Wed, 10 Jan 2024 15:59:52 +0000</pubDate>
      <link>https://dev.to/victorforissier/8-react-components-with-llms-21d9</link>
      <guid>https://dev.to/victorforissier/8-react-components-with-llms-21d9</guid>
      <description>&lt;p&gt;We’re 3 devs who started an open-source library of React components with integrated LLM calls. It would mean the world if you &lt;a href="https://github.com/polyfire-ai/polyfire-js" rel="noopener noreferrer"&gt;gave us a star on GitHub&lt;/a&gt;!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use directly in &lt;strong&gt;React client-side code&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Just &lt;strong&gt;wrap a provider&lt;/strong&gt; &amp;amp; calls work through our API (&lt;a href="https://github.com/polyfire-ai/polyfire-api" rel="noopener noreferrer"&gt;also open-source&lt;/a&gt;.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Probably half of those 8 components are useless. But &lt;a href="https://discord.polyfire.com/" rel="noopener noreferrer"&gt;tell us on our Discord&lt;/a&gt; or in the comments! We'll improve those you like, and make those you want. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;⚠️ To test the components in your app, first create a Polyfire project and wrap your app with the &amp;lt;PolyfireProvider /&amp;gt; passing your project ID as a prop &lt;a href="https://docs.polyfire.com/docs/basic-usage" rel="noopener noreferrer"&gt;→ Here is how to set it up.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  1. &amp;lt;TextSummary /&amp;gt;
&lt;/h2&gt;

&lt;p&gt;Displays a summary of a long text you pass in as a prop. It also caches the summary on our API after generation so you only pay LLM cost once.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TextSummary&lt;/span&gt; 
    &lt;span class="na"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="na"&gt;Alice&lt;/span&gt; &lt;span class="na"&gt;was&lt;/span&gt; &lt;span class="na"&gt;beginning&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;get&lt;/span&gt; &lt;span class="na"&gt;very&lt;/span&gt; &lt;span class="na"&gt;tired&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;sitting&lt;/span&gt; &lt;span class="na"&gt;by&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;sister&lt;/span&gt; &lt;span class="na"&gt;on&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;bank&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;having&lt;/span&gt; &lt;span class="na"&gt;nothing&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;do&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="na"&gt;once&lt;/span&gt; &lt;span class="na"&gt;or&lt;/span&gt; &lt;span class="na"&gt;twice&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;had&lt;/span&gt; &lt;span class="na"&gt;peeped&lt;/span&gt; &lt;span class="na"&gt;into&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;book&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;sister&lt;/span&gt; &lt;span class="na"&gt;was&lt;/span&gt; &lt;span class="na"&gt;reading&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;but&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;had&lt;/span&gt; &lt;span class="na"&gt;no&lt;/span&gt; &lt;span class="na"&gt;pictures&lt;/span&gt; &lt;span class="na"&gt;or&lt;/span&gt; &lt;span class="na"&gt;conversations&lt;/span&gt; &lt;span class="na"&gt;in&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;what&lt;/span&gt; &lt;span class="na"&gt;is&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;use&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;book&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="s"&gt;' thought Alice `without pictures or conversation?'&lt;/span&gt;
        &lt;span class="na"&gt;So&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;was&lt;/span&gt; &lt;span class="na"&gt;considering&lt;/span&gt; &lt;span class="na"&gt;in&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;own&lt;/span&gt; &lt;span class="na"&gt;mind&lt;/span&gt; &lt;span class="err"&gt;(&lt;/span&gt;&lt;span class="na"&gt;as&lt;/span&gt; &lt;span class="na"&gt;well&lt;/span&gt; &lt;span class="na"&gt;as&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;could&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;for&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;hot&lt;/span&gt; &lt;span class="na"&gt;day&lt;/span&gt; &lt;span class="na"&gt;made&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;feel&lt;/span&gt; &lt;span class="na"&gt;very&lt;/span&gt; &lt;span class="na"&gt;sleepy&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;stupid&lt;/span&gt;&lt;span class="err"&gt;),&lt;/span&gt; &lt;span class="na"&gt;whether&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;pleasure&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;making&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;daisy-chain&lt;/span&gt; &lt;span class="na"&gt;would&lt;/span&gt; &lt;span class="na"&gt;be&lt;/span&gt; &lt;span class="na"&gt;worth&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;trouble&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;getting&lt;/span&gt; &lt;span class="na"&gt;up&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;picking&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;daisies&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;when&lt;/span&gt; &lt;span class="na"&gt;suddenly&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;White&lt;/span&gt; &lt;span class="na"&gt;Rabbit&lt;/span&gt; &lt;span class="na"&gt;with&lt;/span&gt; &lt;span class="na"&gt;pink&lt;/span&gt; &lt;span class="na"&gt;eyes&lt;/span&gt; &lt;span class="na"&gt;ran&lt;/span&gt; &lt;span class="na"&gt;close&lt;/span&gt; &lt;span class="na"&gt;by&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;
        &lt;span class="na"&gt;There&lt;/span&gt; &lt;span class="na"&gt;was&lt;/span&gt; &lt;span class="na"&gt;nothing&lt;/span&gt; &lt;span class="na"&gt;so&lt;/span&gt; &lt;span class="na"&gt;very&lt;/span&gt; &lt;span class="na"&gt;remarkable&lt;/span&gt; &lt;span class="na"&gt;in&lt;/span&gt; &lt;span class="na"&gt;that&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt; &lt;span class="na"&gt;nor&lt;/span&gt; &lt;span class="na"&gt;did&lt;/span&gt; &lt;span class="na"&gt;Alice&lt;/span&gt; &lt;span class="na"&gt;think&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;so&lt;/span&gt; &lt;span class="na"&gt;very&lt;/span&gt; &lt;span class="na"&gt;much&lt;/span&gt; &lt;span class="na"&gt;out&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;way&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;hear&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;Rabbit&lt;/span&gt; &lt;span class="na"&gt;say&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;itself&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="na"&gt;Oh&lt;/span&gt; &lt;span class="na"&gt;dear&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt; &lt;span class="na"&gt;Oh&lt;/span&gt; &lt;span class="na"&gt;dear&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt; &lt;span class="na"&gt;I&lt;/span&gt; &lt;span class="na"&gt;shall&lt;/span&gt; &lt;span class="na"&gt;be&lt;/span&gt; &lt;span class="na"&gt;late&lt;/span&gt;&lt;span class="err"&gt;!'&lt;/span&gt; &lt;span class="err"&gt;(&lt;/span&gt;&lt;span class="na"&gt;when&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;thought&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;over&lt;/span&gt; &lt;span class="na"&gt;afterwards&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;occurred&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;that&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;ought&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;have&lt;/span&gt; &lt;span class="na"&gt;wondered&lt;/span&gt; &lt;span class="na"&gt;at&lt;/span&gt; &lt;span class="na"&gt;this&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;but&lt;/span&gt; &lt;span class="na"&gt;at&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;time&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;all&lt;/span&gt; &lt;span class="na"&gt;seemed&lt;/span&gt; &lt;span class="na"&gt;quite&lt;/span&gt; &lt;span class="na"&gt;natural&lt;/span&gt;&lt;span class="err"&gt;);&lt;/span&gt; &lt;span class="na"&gt;but&lt;/span&gt; &lt;span class="na"&gt;when&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;Rabbit&lt;/span&gt; &lt;span class="na"&gt;actually&lt;/span&gt; &lt;span class="na"&gt;took&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;watch&lt;/span&gt; &lt;span class="na"&gt;out&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;its&lt;/span&gt; &lt;span class="na"&gt;waistcoat-pocket&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;looked&lt;/span&gt; &lt;span class="na"&gt;at&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;then&lt;/span&gt; &lt;span class="na"&gt;hurried&lt;/span&gt; &lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;Alice&lt;/span&gt; &lt;span class="na"&gt;started&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;feet&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;for&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;flashed&lt;/span&gt; &lt;span class="na"&gt;across&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;mind&lt;/span&gt; &lt;span class="na"&gt;that&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;had&lt;/span&gt; &lt;span class="na"&gt;never&lt;/span&gt; &lt;span class="na"&gt;before&lt;/span&gt; &lt;span class="na"&gt;seen&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;rabbit&lt;/span&gt; &lt;span class="na"&gt;with&lt;/span&gt; &lt;span class="na"&gt;either&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;waistcoat-pocket&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;or&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;watch&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;take&lt;/span&gt; &lt;span class="na"&gt;out&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;burning&lt;/span&gt; &lt;span class="na"&gt;with&lt;/span&gt; &lt;span class="na"&gt;curiosity&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;ran&lt;/span&gt; &lt;span class="na"&gt;across&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt; &lt;span class="na"&gt;after&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;fortunately&lt;/span&gt; &lt;span class="na"&gt;was&lt;/span&gt; &lt;span class="na"&gt;just&lt;/span&gt; &lt;span class="na"&gt;in&lt;/span&gt; &lt;span class="na"&gt;time&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;see&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;pop&lt;/span&gt; &lt;span class="na"&gt;down&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;large&lt;/span&gt; &lt;span class="na"&gt;rabbit-hole&lt;/span&gt; &lt;span class="na"&gt;under&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;hedge&lt;/span&gt;&lt;span class="err"&gt;."&lt;/span&gt; 
    &lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; 
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fawsd5cf0p3jy9xnc15ns.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fawsd5cf0p3jy9xnc15ns.png" alt="Text summary result"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. &amp;lt;AutoCompleteTextArea /&amp;gt;
&lt;/h2&gt;

&lt;p&gt;Turns a regular Textarea element into a Copilot-like with autocomplete.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AutoCompleteTextArea&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5fxm1vqpokepuyebzju2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5fxm1vqpokepuyebzju2.png" alt="AutoCompleteTextArea Result"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. &amp;lt;AutoCompleteInput /&amp;gt;
&lt;/h2&gt;

&lt;p&gt;Like  but extends an Input instead of a Textarea.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;AutoCompleteInput&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fljmu82wxeigd1ay1lraw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fljmu82wxeigd1ay1lraw.png" alt="AutoCompleteInput Result"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. &amp;lt;TextTranslated /&amp;gt;
&lt;/h2&gt;

&lt;p&gt;Translates, caches and displays the text you pass in, in the language of your choice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TextTranslated&lt;/span&gt; 
    &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="err"&gt;"&lt;/span&gt;&lt;span class="na"&gt;Alice&lt;/span&gt; &lt;span class="na"&gt;was&lt;/span&gt; &lt;span class="na"&gt;beginning&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;get&lt;/span&gt; &lt;span class="na"&gt;very&lt;/span&gt; &lt;span class="na"&gt;tired&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;sitting&lt;/span&gt; &lt;span class="na"&gt;by&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;sister&lt;/span&gt; &lt;span class="na"&gt;on&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;bank&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;having&lt;/span&gt; &lt;span class="na"&gt;nothing&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;do&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="na"&gt;once&lt;/span&gt; &lt;span class="na"&gt;or&lt;/span&gt; &lt;span class="na"&gt;twice&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;had&lt;/span&gt; &lt;span class="na"&gt;peeped&lt;/span&gt; &lt;span class="na"&gt;into&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;book&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;sister&lt;/span&gt; &lt;span class="na"&gt;was&lt;/span&gt; &lt;span class="na"&gt;reading&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;but&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;had&lt;/span&gt; &lt;span class="na"&gt;no&lt;/span&gt; &lt;span class="na"&gt;pictures&lt;/span&gt; &lt;span class="na"&gt;or&lt;/span&gt; &lt;span class="na"&gt;conversations&lt;/span&gt; &lt;span class="na"&gt;in&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;what&lt;/span&gt; &lt;span class="na"&gt;is&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;use&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;book&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="s"&gt;' thought Alice `without pictures or conversation?'&lt;/span&gt;
        &lt;span class="na"&gt;So&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;was&lt;/span&gt; &lt;span class="na"&gt;considering&lt;/span&gt; &lt;span class="na"&gt;in&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;own&lt;/span&gt; &lt;span class="na"&gt;mind&lt;/span&gt; &lt;span class="err"&gt;(&lt;/span&gt;&lt;span class="na"&gt;as&lt;/span&gt; &lt;span class="na"&gt;well&lt;/span&gt; &lt;span class="na"&gt;as&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;could&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;for&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;hot&lt;/span&gt; &lt;span class="na"&gt;day&lt;/span&gt; &lt;span class="na"&gt;made&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;feel&lt;/span&gt; &lt;span class="na"&gt;very&lt;/span&gt; &lt;span class="na"&gt;sleepy&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;stupid&lt;/span&gt;&lt;span class="err"&gt;),&lt;/span&gt; &lt;span class="na"&gt;whether&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;pleasure&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;making&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;daisy-chain&lt;/span&gt; &lt;span class="na"&gt;would&lt;/span&gt; &lt;span class="na"&gt;be&lt;/span&gt; &lt;span class="na"&gt;worth&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;trouble&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;getting&lt;/span&gt; &lt;span class="na"&gt;up&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;picking&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;daisies&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;when&lt;/span&gt; &lt;span class="na"&gt;suddenly&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;White&lt;/span&gt; &lt;span class="na"&gt;Rabbit&lt;/span&gt; &lt;span class="na"&gt;with&lt;/span&gt; &lt;span class="na"&gt;pink&lt;/span&gt; &lt;span class="na"&gt;eyes&lt;/span&gt; &lt;span class="na"&gt;ran&lt;/span&gt; &lt;span class="na"&gt;close&lt;/span&gt; &lt;span class="na"&gt;by&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;
        &lt;span class="na"&gt;There&lt;/span&gt; &lt;span class="na"&gt;was&lt;/span&gt; &lt;span class="na"&gt;nothing&lt;/span&gt; &lt;span class="na"&gt;so&lt;/span&gt; &lt;span class="na"&gt;very&lt;/span&gt; &lt;span class="na"&gt;remarkable&lt;/span&gt; &lt;span class="na"&gt;in&lt;/span&gt; &lt;span class="na"&gt;that&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt; &lt;span class="na"&gt;nor&lt;/span&gt; &lt;span class="na"&gt;did&lt;/span&gt; &lt;span class="na"&gt;Alice&lt;/span&gt; &lt;span class="na"&gt;think&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;so&lt;/span&gt; &lt;span class="na"&gt;very&lt;/span&gt; &lt;span class="na"&gt;much&lt;/span&gt; &lt;span class="na"&gt;out&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;way&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;hear&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;Rabbit&lt;/span&gt; &lt;span class="na"&gt;say&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;itself&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="na"&gt;Oh&lt;/span&gt; &lt;span class="na"&gt;dear&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt; &lt;span class="na"&gt;Oh&lt;/span&gt; &lt;span class="na"&gt;dear&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt; &lt;span class="na"&gt;I&lt;/span&gt; &lt;span class="na"&gt;shall&lt;/span&gt; &lt;span class="na"&gt;be&lt;/span&gt; &lt;span class="na"&gt;late&lt;/span&gt;&lt;span class="err"&gt;!'&lt;/span&gt; &lt;span class="err"&gt;(&lt;/span&gt;&lt;span class="na"&gt;when&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;thought&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;over&lt;/span&gt; &lt;span class="na"&gt;afterwards&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;occurred&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;that&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;ought&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;have&lt;/span&gt; &lt;span class="na"&gt;wondered&lt;/span&gt; &lt;span class="na"&gt;at&lt;/span&gt; &lt;span class="na"&gt;this&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;but&lt;/span&gt; &lt;span class="na"&gt;at&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;time&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;all&lt;/span&gt; &lt;span class="na"&gt;seemed&lt;/span&gt; &lt;span class="na"&gt;quite&lt;/span&gt; &lt;span class="na"&gt;natural&lt;/span&gt;&lt;span class="err"&gt;);&lt;/span&gt; &lt;span class="na"&gt;but&lt;/span&gt; &lt;span class="na"&gt;when&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;Rabbit&lt;/span&gt; &lt;span class="na"&gt;actually&lt;/span&gt; &lt;span class="na"&gt;took&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;watch&lt;/span&gt; &lt;span class="na"&gt;out&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;its&lt;/span&gt; &lt;span class="na"&gt;waistcoat-pocket&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;looked&lt;/span&gt; &lt;span class="na"&gt;at&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;then&lt;/span&gt; &lt;span class="na"&gt;hurried&lt;/span&gt; &lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;Alice&lt;/span&gt; &lt;span class="na"&gt;started&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;feet&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;for&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;flashed&lt;/span&gt; &lt;span class="na"&gt;across&lt;/span&gt; &lt;span class="na"&gt;her&lt;/span&gt; &lt;span class="na"&gt;mind&lt;/span&gt; &lt;span class="na"&gt;that&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;had&lt;/span&gt; &lt;span class="na"&gt;never&lt;/span&gt; &lt;span class="na"&gt;before&lt;/span&gt; &lt;span class="na"&gt;seen&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;rabbit&lt;/span&gt; &lt;span class="na"&gt;with&lt;/span&gt; &lt;span class="na"&gt;either&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;waistcoat-pocket&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;or&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;watch&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;take&lt;/span&gt; &lt;span class="na"&gt;out&lt;/span&gt; &lt;span class="na"&gt;of&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;burning&lt;/span&gt; &lt;span class="na"&gt;with&lt;/span&gt; &lt;span class="na"&gt;curiosity&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;she&lt;/span&gt; &lt;span class="na"&gt;ran&lt;/span&gt; &lt;span class="na"&gt;across&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;field&lt;/span&gt; &lt;span class="na"&gt;after&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;and&lt;/span&gt; &lt;span class="na"&gt;fortunately&lt;/span&gt; &lt;span class="na"&gt;was&lt;/span&gt; &lt;span class="na"&gt;just&lt;/span&gt; &lt;span class="na"&gt;in&lt;/span&gt; &lt;span class="na"&gt;time&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;see&lt;/span&gt; &lt;span class="na"&gt;it&lt;/span&gt; &lt;span class="na"&gt;pop&lt;/span&gt; &lt;span class="na"&gt;down&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt; &lt;span class="na"&gt;large&lt;/span&gt; &lt;span class="na"&gt;rabbit-hole&lt;/span&gt; &lt;span class="na"&gt;under&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;hedge&lt;/span&gt;&lt;span class="err"&gt;."&lt;/span&gt;
    &lt;span class="na"&gt;language&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"french"&lt;/span&gt; 
&lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j50ezqlkhdtpxrxcau3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8j50ezqlkhdtpxrxcau3.png" alt="TextTranslated Result"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. &amp;lt;ImageGenerated /&amp;gt;
&lt;/h2&gt;

&lt;p&gt;Generates, caches and displays an AI generated image based on your prompt.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ImageGenerated&lt;/span&gt; &lt;span class="na"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;funny smiley with beautiful teeth&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;dall&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5vshsl3hi49fufxit4mg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5vshsl3hi49fufxit4mg.png" alt="ImageGenerated Result"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  6. &amp;lt;TextGenerated /&amp;gt;
&lt;/h2&gt;

&lt;p&gt;Generates, caches and displays an LLM answer based on the prompt passed as a prop.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;TextGenerated&lt;/span&gt; &lt;span class="na"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Make a funny pun&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="na"&gt;stream&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlzhs5irtyeyfdg649vx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlzhs5irtyeyfdg649vx.png" alt="TextGenerated Result"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  7. &amp;lt;Chat /&amp;gt;
&lt;/h2&gt;

&lt;p&gt;Set of components that reproduce a basic ChatGPT interface, you can customize it to make your chatbot or app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Sidebar&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SidebarHeader&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;NewChatButton&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ChatList&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SidebarButtonGroup&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;LogoutButton&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SidebarButtonGroup&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Sidebar&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;View&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;History&lt;/span&gt;
    &lt;span class="na"&gt;HistoryItemComponent&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;RoundedChatListItem&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="na"&gt;HistoryLoadingComponent&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;RoundedHistoryLoadingComponent&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="na"&gt;HistoryEmptyComponent&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;HistoryEmptyComponent&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ScrollToBottomButton&lt;/span&gt;
    &lt;span class="na"&gt;disabled&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isAtBottom&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;utils&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onScrollToBottom&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Prompt&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Input&lt;/span&gt; &lt;span class="na"&gt;autoFocus&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SendButton&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Prompt&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;View&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslpv7ydkl5gfzbj37bzb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslpv7ydkl5gfzbj37bzb.png" alt="Chat Result"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  8. &amp;lt;Login /&amp;gt;
&lt;/h2&gt;

&lt;p&gt;To use all the previous components, you need to connect to Polyfire Auth in someway (otherwise our API can’t distinguish expensive bots). If you have already auth setup, you can authenticate you Auth Token. But otherwise, you can log users in with Polyfire Auth using the usePolyfire() hook, but this component does it all for you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Login&lt;/span&gt;
  &lt;span class="na"&gt;termsOfService&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/tos"&lt;/span&gt;
  &lt;span class="na"&gt;privacyPolicy&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"https://example.com/privacy"&lt;/span&gt;
&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  /*
        What to display when the user is logged in.
    */
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Login&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr54ofi0vfwoh7fixmdix.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr54ofi0vfwoh7fixmdix.png" alt="Login Result"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Let's connect on X? :)&lt;br&gt;
&lt;a href="//x.com/victorforissier"&gt;I'm here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have you seen other cool AI React components? &lt;/p&gt;

&lt;p&gt;Let me know about them in the comments :)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AI-Tests Quest</title>
      <dc:creator>victor forissier</dc:creator>
      <pubDate>Tue, 01 Aug 2023 16:29:58 +0000</pubDate>
      <link>https://dev.to/victorforissier/ai-tests-quest-19n8</link>
      <guid>https://dev.to/victorforissier/ai-tests-quest-19n8</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;I tried writing the outline of this article with ChatGPT. I asked it to be casual, but it went crazy into this fantasy mode. It was quite funny so I kept it mostly intact. xD.&lt;br&gt;
– Victor (the writer)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Welcome, fellow engineers, to the magical land of &lt;code&gt;ai-tests&lt;/code&gt;, a powerful tool conjured up by our friend Lancelot, designed to create test boilerplate code from your files. Though it may not create the perfect dragon-slaying sword every time, it does pretty well and can certainly save you from wrestling with the beast of initial test creation. If you'd like to get a feel for its magic, head on over to the repository &lt;a href="https://github.com/lowczarc/ai-tests/blob/main/README.md"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fetching Your PolyFact Token
&lt;/h2&gt;

&lt;p&gt;Before embarking on your journey, you'll need to obtain a mystical object - the PolyFact token. PolyFact is a magical API witch, with powers and spells unbeknownst to humankind. It is the key to generating AI responses in the &lt;code&gt;ai-tests&lt;/code&gt; tool. Like all quests, obtaining this key involves a few steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to the &lt;a href="https://app.polyfact.com"&gt;PolyFact Dashboard&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Connect with your GitHub account.&lt;/li&gt;
&lt;li&gt;Once you've connected, copy your newly created token.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After securing your token, you'll need to embed it into your environment. We just use a simple export command for this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;POLYFACT_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;your_polyfact_token&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you're all set!&lt;/p&gt;

&lt;h2&gt;
  
  
  Summoning the AI-Tests
&lt;/h2&gt;

&lt;p&gt;Ready to summon the magic? Simply provide your file path to the &lt;code&gt;ai-tests&lt;/code&gt; command. Here's how you do it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;npx ai-tests &amp;lt;input_file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And voila! Just like that, you'll have a batch of unit tests in the language corresponding to your input file. Now you're free to modify, add to, or otherwise adjust these tests as you see fit.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Few Words of Caution
&lt;/h2&gt;

&lt;p&gt;Though it's quite a handy tool, it's important to remember that &lt;code&gt;ai-tests&lt;/code&gt; isn't a silver bullet. Like any tool, it's all about using it in the right context and for the right job. The generated tests can range from nearly perfect to needing a bit of refinement, but either way, they're a solid starting point.&lt;/p&gt;

&lt;p&gt;Be aware of one limitation: the tool is sensitive to file size. If a file is too large, it'll generate multiple tests and concatenate them. Depending on the language, this may not always produce syntactically valid test files.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Lend a Hand
&lt;/h2&gt;

&lt;p&gt;Oh, by the way, if you're interested in contributing or have some fantastic ideas to make this tool even better, Lancelot is always open to suggestions and improvements. Feel free to create a pull request or open an issue on the GitHub repository &lt;a href="https://github.com/lowczarc/ai-tests/blob/main/README.md"&gt;here&lt;/a&gt;. Let's make &lt;code&gt;ai-tests&lt;/code&gt; the best it can be together!&lt;/p&gt;

&lt;p&gt;And that's it! Enjoy your adventure with &lt;code&gt;ai-tests&lt;/code&gt;. Remember, the goal here isn't to create perfect tests every time, but to give you a headstart on your testing journey.&lt;/p&gt;

&lt;p&gt;Your friend,&lt;br&gt;
Victor the Witch&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Debugging Simplified with console.ai()</title>
      <dc:creator>victor forissier</dc:creator>
      <pubDate>Thu, 27 Jul 2023 12:13:48 +0000</pubDate>
      <link>https://dev.to/victorforissier/debugging-simplified-with-consoleai-5ekc</link>
      <guid>https://dev.to/victorforissier/debugging-simplified-with-consoleai-5ekc</guid>
      <description>&lt;p&gt;Debugging often feels to me like finding a needle in a haystack, which is why we did this new tool, console-ai, and it makes a notable difference. You can explore more about it on the &lt;a href="https://github.com/kevin-btc/console-ai" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;console-ai, a Node.js module, redefines console functionality. It leverages OpenAI's language models to transform error logs into an easily comprehensible format, outlining potential causes and solutions. It introduces a new method, &lt;code&gt;console.ai()&lt;/code&gt;, as an upgrade to the standard &lt;code&gt;console.log()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fn42-nft.s3.eu-west-3.amazonaws.com%2Flogger-ai.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fn42-nft.s3.eu-west-3.amazonaws.com%2Flogger-ai.png" alt="console-ai"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How Does console-ai Work?
&lt;/h2&gt;

&lt;p&gt;The essence of console-ai is to expedite and enhance the debugging process, but how does it do that?&lt;/p&gt;

&lt;p&gt;By simply replacing your regular &lt;code&gt;console.log()&lt;/code&gt; or &lt;code&gt;console.error()&lt;/code&gt; calls with &lt;code&gt;console.ai()&lt;/code&gt;, this tool offers valuable insights into complex issues, which can dramatically speed up debugging. Moreover, it maintains the integrity of your data by logging the original error message, if you choose. If that sounds intriguing, do check out the project on &lt;a href="https://github.com/kevin-btc/console-ai" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started with console-ai
&lt;/h2&gt;

&lt;p&gt;First, import and initialize the module:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;extendConsole&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;console-ai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


&lt;span class="nf"&gt;extendConsole&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, you can replace your usual console.log() or console.error() calls with console.ai():&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// code that might throw an error&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ai&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Beyond Debugging
&lt;/h2&gt;

&lt;p&gt;In addition to enhancing debugging, console-ai offers insights into application behavior, thereby improving overall development efficiency. It translates error messages into a more understandable format, outlines potential causes of an error, suggests possible solutions, and ensures original error messages are logged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Customize Your Experience
&lt;/h2&gt;

&lt;p&gt;You can customize console.ai by picking which sections of the output to display or decide whether or not to keep the original error.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;extendConsole&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="nx"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt;  &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;sections&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;ErrorSection&lt;/span&gt;&lt;span class="p"&gt;[];&lt;/span&gt;
    &lt;span class="nx"&gt;showOriginalError&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;showResultWithJsonFormat&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can find more details about these customization options in the &lt;a href="https://github.com/kevin-btc/console-ai" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Peek Behind the Scenes
&lt;/h2&gt;

&lt;p&gt;console-ai was built using the PolyFact SDK, a Node SDK that calls an API to help build AI tools and apps. The &lt;a href="https://github.com/polyfact/polyfact-node" rel="noopener noreferrer"&gt;PolyFact SDK&lt;/a&gt; forms the backbone of Console-ai, enabling it to provide enhanced console functionality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;console-ai presents a modest yet powerful solution to improve debugging and development efficiency. It offers an innovative way to translate error logs into a more readable format, providing potential causes and solutions. By leveraging the power of the &lt;a href="https://github.com/polyfact/polyfact-node" rel="noopener noreferrer"&gt;PolyFact SDK&lt;/a&gt; and OpenAI's language models, it delivers a more insightful, customizable debugging experience.&lt;/p&gt;

&lt;p&gt;Visit the &lt;a href="https://github.com/kevin-btc/console-ai" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt; to check it out and see how console-ai can enhance your development workflow. Happy coding!&lt;/p&gt;

&lt;p&gt;For any queries or suggestions, feel free to reach out on &lt;a href="https://discord.gg/gjRgyN3Fk2" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
