<?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: Matan Abramovich</title>
    <description>The latest articles on DEV Community by Matan Abramovich (@matan_abramovich).</description>
    <link>https://dev.to/matan_abramovich</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%2F1181047%2F839bfc82-7096-4f7a-877e-e4fe30675c47.jpg</url>
      <title>DEV Community: Matan Abramovich</title>
      <link>https://dev.to/matan_abramovich</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/matan_abramovich"/>
    <language>en</language>
    <item>
      <title>11 Open-Source Projects That Will Rocket Your Resume 🚀 (Jumpstart Your Career in 2024! 🌟✨)</title>
      <dc:creator>Matan Abramovich</dc:creator>
      <pubDate>Mon, 18 Dec 2023 21:10:34 +0000</pubDate>
      <link>https://dev.to/matan_abramovich/11-open-source-projects-that-will-rocket-your-resume-jumpstart-your-career-in-2024--3flp</link>
      <guid>https://dev.to/matan_abramovich/11-open-source-projects-that-will-rocket-your-resume-jumpstart-your-career-in-2024--3flp</guid>
      <description>&lt;h1&gt;
  
  
  TL;DR
&lt;/h1&gt;

&lt;p&gt;How can you give your coding career a mega boost? &lt;/p&gt;

&lt;p&gt;Contributing to Open Source projects can get you noticed by the right people.&lt;/p&gt;

&lt;p&gt;I've selected a range of projects that will level up your skills and real-world experience, making your resume stand out to potential employers. Perfect for developers at any stage, contributing to these projects will expand your tech toolkit and propel your professional journey forward.&lt;/p&gt;

&lt;p&gt;DON'T FORGET TO STAR &amp;amp; SUPPORT THEM 🌟&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%2Fi.imgflip.com%2F89rvo4.jpg" 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%2Fi.imgflip.com%2F89rvo4.jpg" alt="Contribute to OSS!"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Fuel the AI revulotion 🔥🤖
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;a href="https://github.com/pezzolabs/pezzo" rel="noopener noreferrer"&gt;Pezzo&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Pezzo is an Open Source LLMOps platform, built for full stack developers with first class TypeScript support.&lt;/p&gt;

&lt;p&gt;Pezzo is the fastest growing Open Source LLMOps platform, used by dozens of product teams to build, monitor, and ship AI features with confidence. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/pezzolabs/pezzo" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Pezzo on Github&lt;/a&gt;
&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pezzolabs" rel="noopener noreferrer"&gt;
        pezzolabs
      &lt;/a&gt; / &lt;a href="https://github.com/pezzolabs/pezzo" rel="noopener noreferrer"&gt;
        pezzo
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🕹️ Open-source, developer-first LLMOps platform designed to streamline prompt design, version management, instant delivery, collaboration, troubleshooting, observability and more.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
  &lt;a href="https://pezzo.ai/#gh-light-mode-only" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/2d7128a7401862ade9b364d175c8c959b5d9fc6506852f32ba4a010ce1cca490/68747470733a2f2f63646e2e70657a7a6f2e61692f6c6f676f2d6c696768742d6d6f64652e737667" alt="logo" width="150"&gt;
  &lt;/a&gt;
  &lt;a href="https://pezzo.ai/#gh-dark-mode-only" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/db29e1560c6cc89a926d229b194f5879101d9fb56fb83464a05227aada867720/68747470733a2f2f63646e2e70657a7a6f2e61692f6c6f676f2d6461726b2d6d6f64652e737667" alt="logo" width="150"&gt;
  &lt;/a&gt;
  &lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;strong&gt;
    Pezzo is a fully cloud-native and open-source LLMOps platform. Seamlessly observe and monitor your AI operations, troubleshoot issues, save up to 90% on costs and latency, collaborate and manage your prompts in one place, and instantly deliver AI changes
  &lt;/strong&gt;&lt;br&gt;&lt;br&gt;
  &lt;a href="https://pezzo.cc/discord" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/0de500f0902439ccb356ccf6f44b8a4e95352bea363e4bdf551bf009cfbfb79c/68747470733a2f2f63646e2e70657a7a6f2e61692f646973636f72642d627574746f6e2e706e67" height="32"&gt;
  &lt;/a&gt; 
  &lt;a href="https://pezzo.cc/3qzMpGb" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/78a36f8800d169f884aee317cbae942fbbeeb35509e8a22d7a5c508424f30b0d/68747470733a2f2f63646e2e70657a7a6f2e61692f726561642d7468652d646f63732d627574746f6e2e706e67" height="32"&gt;
  &lt;/a&gt; 
  &lt;a href="https://pezzo.cc/3qy415j" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/c15c6afd1693bdbb0186af1be3c88c155b655a4eccf39bcd6dcb64e588707842/68747470733a2f2f63646e2e70657a7a6f2e61692f70657a7a6f2d636c6f75642d627574746f6e2e706e67" height="32"&gt;
  &lt;/a&gt; 
&lt;/p&gt;

&lt;p&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/pezzolabs/pezzo/actions/workflows/ci.yaml/badge.svg"&gt;&lt;img src="https://github.com/pezzolabs/pezzo/actions/workflows/ci.yaml/badge.svg"&gt;&lt;/a&gt;
&lt;a href="https://github.com/pezzolabs/pezzoCODE_OF_CONDUCT.md" rel="noopener noreferrer"&gt;
  &lt;img src="https://camo.githubusercontent.com/b939bc6b6e2370a6266a694cc4f0a583fbb99d28a82d0e5088f21739c369d3c7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436f6e7472696275746f72253230436f76656e616e742d76322e3025323061646f707465642d6666363962342e737667" alt="Contributor Covenant"&gt;
&lt;/a&gt;
&lt;a href="https://opensource.org/licenses/Apache-2.0" rel="nofollow noopener noreferrer"&gt;
  &lt;img src="https://camo.githubusercontent.com/859a1a0bc85ce8bbd7a730a274fec5c9e77c4726ffdf6aa762a78685e26033a4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d417061636865253230322e302d626c75652e737667" alt="License"&gt;
&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/@pezzo/client" rel="nofollow noopener noreferrer"&gt;
  &lt;img src="https://camo.githubusercontent.com/742e8d8f0f213fc8d02ccf48e96da07bf39d5f0346f3e0abbb3cc95e72b7f94c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6e706d2d4070657a7a6f2f636c69656e742d677265656e"&gt;
&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://pezzo.cc/demo-video-gh" rel="nofollow noopener noreferrer"&gt;
  &lt;img src="https://camo.githubusercontent.com/6729285170551a5b6bc9a77c2ba7f12b269d99da760fc3a8af371c49738d2dcb/68747470733a2f2f63646e2e70657a7a6f2e61692f62616e6e65722d776974682d706c61792d627574746f6e2e706e67" width="900px"&gt;
  &lt;/a&gt;
&lt;/p&gt;



&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;✨ Features&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://github.com/pezzolabs/pezzo./.github/assets/features/features-1.png"&gt;&lt;img width="99%" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fpezzolabs%2Fpezzo.%2F.github%2Fassets%2Ffeatures%2Ffeatures-1.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://github.com/pezzolabs/pezzo./.github/assets/features/features-2.png"&gt;&lt;img width="99%" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fpezzolabs%2Fpezzo.%2F.github%2Fassets%2Ffeatures%2Ffeatures-2.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://github.com/pezzolabs/pezzo./.github/assets/features/features-3.png"&gt;&lt;img width="99%" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fpezzolabs%2Fpezzo.%2F.github%2Fassets%2Ffeatures%2Ffeatures-3.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Documentation&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://docs.pezzo.ai/" rel="nofollow noopener noreferrer"&gt;Click here to navigate to the Official Pezzo Documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the documentation, you can find information on how to use Pezzo, its architecture, including tutorials and recipes for varius use cases and LLM providers.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Supported Clients&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;br&gt;
  &lt;thead&gt;
&lt;br&gt;
    &lt;tr&gt;
&lt;br&gt;
      &lt;th&gt;Feature&lt;/th&gt;
&lt;br&gt;
      &lt;th&gt;
&lt;br&gt;
        &lt;a href="https://www.npmjs.com/package/@pezzo/client" rel="nofollow noopener noreferrer"&gt;Node.js&lt;/a&gt;&lt;br&gt;
        • &lt;br&gt;
        &lt;a href="https://docs.pezzo.ai/client/pezzo-client-node" rel="nofollow noopener noreferrer"&gt;Docs&lt;/a&gt;&lt;br&gt;
      &lt;/th&gt;
&lt;br&gt;
      &lt;th&gt;
&lt;br&gt;
        &lt;a href="https://pypi.org/" rel="nofollow noopener noreferrer"&gt;Python&lt;/a&gt;&lt;br&gt;
         • &lt;br&gt;
        &lt;a href="https://docs.pezzo.ai/client/pezzo-client-python" rel="nofollow noopener noreferrer"&gt;Docs&lt;/a&gt;&lt;br&gt;
      &lt;/th&gt;
&lt;br&gt;
      &lt;th&gt;
&lt;br&gt;
        &lt;a href="https://github.com/pezzolabs/pezzo/issues/180" rel="noopener noreferrer"&gt;LangChain&lt;/a&gt;&lt;br&gt;
      &lt;/th&gt;
&lt;br&gt;
    &lt;/tr&gt;
&lt;br&gt;
  &lt;/thead&gt;
&lt;br&gt;
  &lt;tbody&gt;
&lt;br&gt;
    &lt;tr&gt;
&lt;br&gt;
      &lt;td&gt;Prompt Management&lt;/td&gt;
&lt;br&gt;
      &lt;td&gt;✅&lt;/td&gt;
&lt;br&gt;
      &lt;td&gt;✅&lt;/td&gt;
&lt;br&gt;
      &lt;td&gt;✅&lt;/td&gt;
&lt;br&gt;
    &lt;/tr&gt;
&lt;br&gt;
    &lt;tr&gt;
&lt;br&gt;
      &lt;td&gt;Observability&lt;/td&gt;
&lt;br&gt;
      &lt;td&gt;✅&lt;/td&gt;
&lt;br&gt;
      &lt;td&gt;✅&lt;/td&gt;
&lt;br&gt;
      &lt;td&gt;✅&lt;/td&gt;
&lt;br&gt;
    &lt;/tr&gt;
&lt;br&gt;
    &lt;tr&gt;
&lt;br&gt;
      &lt;td&gt;Caching&lt;/td&gt;
&lt;br&gt;
      &lt;td&gt;✅&lt;/td&gt;
&lt;br&gt;
      &lt;td&gt;✅&lt;/td&gt;
&lt;br&gt;
      &lt;td&gt;✅&lt;/td&gt;
&lt;br&gt;
    &lt;/tr&gt;
&lt;br&gt;
  &lt;/tbody&gt;
&lt;br&gt;
&lt;/table&gt;&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;Looking for a client that's not listed here? &lt;a href="https://github.com/pezzolabs/pezzo/issues/new/choose" rel="noopener noreferrer"&gt;Open an issue&lt;/a&gt; and let us know!&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Getting Started - Docker Compose&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;If you simplay want to run the full Pezzo stack locally, check out &lt;a href="http://docs.pezzo.ai/introduction/docker-compose" rel="nofollow noopener noreferrer"&gt;Running With Docker Compose&lt;/a&gt; in the documentation.&lt;/p&gt;

&lt;p&gt;If you want to run Pezzo in development mode, continue reading.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/pezzolabs/pezzo" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;






&lt;h3&gt;
  
  
  2. &lt;a href="https://github.com/CopilotKit/CopilotKit" rel="noopener noreferrer"&gt;CopilotKit&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;CopilotKit is an open-source platform designed to accelerate the development of copilot applications.&lt;/p&gt;

&lt;p&gt;This is an infrastructure that makes it way easier to integrate key AI features into React apps. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/CopilotKit/CopilotKit" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ CopilotKit on Github&lt;/a&gt;
&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/CopilotKit" rel="noopener noreferrer"&gt;
        CopilotKit
      &lt;/a&gt; / &lt;a href="https://github.com/CopilotKit/CopilotKit" rel="noopener noreferrer"&gt;
        CopilotKit
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      react UI + infrastructure for AI Copilots, in-app AI agents, AI chatbots, and AI-powered Textareas 🪁
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;blockquote&gt;
&lt;p&gt;Here for Hacktoberfest? 🎉 &lt;a href="https://github.com/CopilotKit/CopilotKit/tree/main/community/content" rel="noopener noreferrer"&gt;Get started here 🚀 🎊&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div&gt;
  &lt;a href="https://copilotkit.ai" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FCopilotKit%2FCopilotKit.%2Fassets%2Fbanner.png" alt="CopilotKit Logo"&gt;
  &lt;/a&gt;
  &lt;br&gt;
  &lt;strong&gt;
    CopilotKit is the open-source framework for integrating powerful AI Copilots into any application. Easily implement custom AI Chatbots, AI Agents, AI Textareas, and more
  &lt;/strong&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div&gt;
  &lt;a href="https://www.npmjs.com/package/@copilotkit/react-core" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/48a91b31eda05c6fb2531ac6ab4b4cab26e227ae4ff5d130407f741cfa49956b/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f253430636f70696c6f746b697425324672656163742d636f72653f6c6f676f3d6e706d266c6f676f436f6c6f723d253233464646464646266c6162656c3d56657273696f6e26636f6c6f723d253233363936336666" alt="NPM"&gt;
  &lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/747b22364066ca63e4cc313d0ff650786e161300e47a910da0ee5cf49e17fdfe/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f636f70696c6f746b69742f636f70696c6f746b69743f636f6c6f723d253233363936336666266c6162656c3d4c6963656e7365"&gt;&lt;img src="https://camo.githubusercontent.com/747b22364066ca63e4cc313d0ff650786e161300e47a910da0ee5cf49e17fdfe/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f636f70696c6f746b69742f636f70696c6f746b69743f636f6c6f723d253233363936336666266c6162656c3d4c6963656e7365" alt="MIT"&gt;&lt;/a&gt;
  &lt;a href="https://discord.gg/6dffbvGU3D" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/dd2d628e13a3d0fb758c6f3620e169032c1797f054e293fded52d6266919ed5d/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f313132323932363035373634313734323431383f6c6f676f3d646973636f7264266c6f676f436f6c6f723d253233464646464646266c6162656c3d446973636f726426636f6c6f723d253233363936336666" alt="Discord"&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div&gt;
  &lt;a href="https://discord.gg/6dffbvGU3D?ref=github_readme" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FCopilotKit%2FCopilotKit.%2Fassets%2Fbtn_discord.png" alt="CopilotKit Discord" height="40px"&gt;
  &lt;/a&gt;
  &lt;a href="https://docs.copilotkit.ai?ref=github_readme" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FCopilotKit%2FCopilotKit.%2Fassets%2Fbtn_docs.png" alt="CopilotKit GitHub" height="40px"&gt;
  &lt;/a&gt;
  &lt;a href="https://cloud.copilotkit.ai?ref=github_readme" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FCopilotKit%2FCopilotKit.%2Fassets%2Fbtn_cloud.png" alt="CopilotKit GitHub" height="40px"&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div&gt;
  &lt;a href="https://www.producthunt.com/posts/copilotkit" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/48f1652973efb0039a2626f863e731702cd6a778c4309fa9edd9e9a1880ea9bd/68747470733a2f2f6170692e70726f6475637468756e742e636f6d2f776964676574732f656d6265642d696d6167652f76312f746f702d706f73742d62616467652e7376673f706f73745f69643d343238373738267468656d653d6c6967687426706572696f643d6461696c79"&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href="https://github.com/CopilotKit/CopilotKit/tree/main/community/content" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F66887028%2F372549153-90e88d5e-22ec-4401-a95b-7779b10afe13.gif%3Fjwt%3DeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjgwNjg0MTQsIm5iZiI6MTcyODA2ODExNCwicGF0aCI6Ii82Njg4NzAyOC8zNzI1NDkxNTMtOTBlODhkNWUtMjJlYy00NDAxLWE5NWItNzc3OWIxMGFmZTEzLmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDA0VDE4NTUxNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWEyYzdmYjE3ZjE1OTQwMzJjYzM1YjRiNjRjYjY4OTAxY2U4OGMzMTRmMjg1OTJmZjIwMWMyM2QxMGY5ZTY3MGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.y-yAuhOP-6DtDiaXoGoLQ61OZIlmd5VjA7GDVEyXA7c" alt="hacktoberfest_banner"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/CopilotKit/CopilotKit./assets/animated-banner.gif"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FCopilotKit%2FCopilotKit.%2Fassets%2Fanimated-banner.gif" alt="CopilotKit Screenshot"&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div&gt;
&lt;p&gt;
  👉 Check out the docs at &lt;a href="https://docs.copilotkit.ai?ref=github_readme" rel="nofollow noopener noreferrer"&gt;https://docs.copilotkit.ai&lt;/a&gt;
&lt;/p&gt;


&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Table of Contents&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/CopilotKit/CopilotKit#getting-started" rel="noopener noreferrer"&gt;Getting Started&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/CopilotKit/CopilotKit#quickstart--tutorials" rel="noopener noreferrer"&gt;Quickstart &amp;amp; Tutorials&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/CopilotKit/CopilotKit#examples--starter-templates" rel="noopener noreferrer"&gt;Examples &amp;amp; Starter Templates&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://github.com/CopilotKit/CopilotKit#building-blocks" rel="noopener noreferrer"&gt;Building Blocks&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/CopilotKit/CopilotKit#-components" rel="noopener noreferrer"&gt;Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/CopilotKit/CopilotKit#-hooks" rel="noopener noreferrer"&gt;Hooks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/CopilotKit/CopilotKit#contributing" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/CopilotKit/CopilotKit#get-in-touch" rel="noopener noreferrer"&gt;Get in touch&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/CopilotKit/CopilotKit#license" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Getting Started&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Quickstart &amp;amp; Tutorials&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;There are several easy ways to get started with CopilotKit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://docs.copilotkit.ai/quickstart-chatbot?ref=github_readme" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Quickstart: Chatbot:&lt;/strong&gt;&lt;/a&gt; In just two minutes, add an AI Chatbot to your app with the ability to read application state and take actions.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.copilotkit.ai/tutorials/ai-todo-app/overview?ref=github_readme" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Tutorial: Todo List Copilot:&lt;/strong&gt;&lt;/a&gt; For a deeper dive into CopilotKit, take a simple todo list app and supercharge it with an AI chat popup.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.copilotkit.ai/tutorial-textarea/overview?ref=github_readme" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Tutorial: Textarea Autocomplete:&lt;/strong&gt;&lt;/a&gt; For a deeper dive into CopilotKit, we'll take a simple email client app and add an AI-powered textarea with autocompletions and AI insertions/edits.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/CopilotKit/CopilotKit" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;






&lt;h3&gt;
  
  
  3. &lt;a href="https://github.com/assafelovic/gpt-researcher" rel="noopener noreferrer"&gt;GPT-researcher&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;GPT Researcher is an autonomous agent designed for comprehensive online research on a variety of tasks.&lt;/p&gt;

&lt;p&gt;This is a great project that I mainly use as a search engine for AI agents, I love using it and even have a tutorial showing how you can use it too!&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/matan_abramovich" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F1181047%2F839bfc82-7096-4f7a-877e-e4fe30675c47.jpg" alt="matan_abramovich"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/matan_abramovich/build-an-ai-assistant-with-real-time-web-access-in-100-lines-of-code-using-python-and-gpt-4-3l1a" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;🤖 Build an AI assistant with real-time web access in 100 lines of code using Python and GPT-4 🌍&lt;/h2&gt;
      &lt;h3&gt;Matan Abramovich ・ Nov 20 '23&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#tutorial&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://github.com/assafelovic/gpt-researcher" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ gpt-researcher on Github&lt;/a&gt;
&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/assafelovic" rel="noopener noreferrer"&gt;
        assafelovic
      &lt;/a&gt; / &lt;a href="https://github.com/assafelovic/gpt-researcher" rel="noopener noreferrer"&gt;
        gpt-researcher
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      LLM based autonomous agent that does online comprehensive research on any given topic
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/13554167/336050918-20af8286-b386-44a5-9a83-3be1365139c3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjgwNjg0MTUsIm5iZiI6MTcyODA2ODExNSwicGF0aCI6Ii8xMzU1NDE2Ny8zMzYwNTA5MTgtMjBhZjgyODYtYjM4Ni00NGE1LTlhODMtM2JlMTM2NTEzOWMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDA0VDE4NTUxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE3OGEzODUzYWQ1NDBkOGI2OTAxNDA0MjgxNzAxZjljOWUzMTExNzdmM2IwN2E5ZGI5ZmNiNzZkM2E4NDc1MmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.d31yVvyIIy_OdD0FZHvoRumXfWzBpIfElRSeDVJHROw"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F13554167%2F336050918-20af8286-b386-44a5-9a83-3be1365139c3.png%3Fjwt%3DeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjgwNjg0MTUsIm5iZiI6MTcyODA2ODExNSwicGF0aCI6Ii8xMzU1NDE2Ny8zMzYwNTA5MTgtMjBhZjgyODYtYjM4Ni00NGE1LTlhODMtM2JlMTM2NTEzOWMzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDEwMDQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQxMDA0VDE4NTUxNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE3OGEzODUzYWQ1NDBkOGI2OTAxNDA0MjgxNzAxZjljOWUzMTExNzdmM2IwN2E5ZGI5ZmNiNzZkM2E4NDc1MmMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.d31yVvyIIy_OdD0FZHvoRumXfWzBpIfElRSeDVJHROw" alt="Logo" width="80"&gt;&lt;/a&gt;
&lt;p&gt;&lt;a href="https://gptr.dev" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/db6bac9f7912575e4abc3bf65b24e373f1163550ef56c61849550269e6db0729/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f6666696369616c253230576562736974652d677074722e6465762d7465616c3f7374796c653d666f722d7468652d6261646765266c6f676f3d776f726c64266c6f676f436f6c6f723d776869746526636f6c6f723d303839316232" alt="Website"&gt;&lt;/a&gt;
&lt;a href="https://docs.gptr.dev" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2c3ae0547e3502cf17ae9e006987312aa5fe0e9f5a6309e7a75bd4f5a0962425/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446f63756d656e746174696f6e2d444f43532d6634373262363f6c6f676f3d676f6f676c65646f6373266c6f676f436f6c6f723d7768697465267374796c653d666f722d7468652d6261646765" alt="Documentation"&gt;&lt;/a&gt;
&lt;a href="https://discord.gg/QgZXvJAccX" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/15e257fc4a88b4eabf7ad5cb954c4ffa05905ff3c7e77ba51fa05881a89666d3/68747470733a2f2f646362616467652e76657263656c2e6170702f6170692f7365727665722f51675a58764a416363583f7374796c653d666f722d7468652d6261646765267468656d653d636c65616e2d696e766572746564263f636f6d706163743d74727565" alt="Discord Follow"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://badge.fury.io/py/gpt-researcher" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/62789351c23f3e2b97ca852feaae0fa274c06c349523a25aa10227efb11f861b/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f6770742d726573656172636865723f6c6f676f3d70797069266c6f676f436f6c6f723d7768697465267374796c653d666c6174" alt="PyPI version"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/f362d31e42c223d1367df61cdbf171055036c971a1821801031dc39a23a4be47/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6173736166656c6f7669632f6770742d726573656172636865723f7374796c653d666c6174266c6f676f3d676974687562"&gt;&lt;img src="https://camo.githubusercontent.com/f362d31e42c223d1367df61cdbf171055036c971a1821801031dc39a23a4be47/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6173736166656c6f7669632f6770742d726573656172636865723f7374796c653d666c6174266c6f676f3d676974687562" alt="GitHub Release"&gt;&lt;/a&gt;
&lt;a href="https://colab.research.google.com/github/assafelovic/gpt-researcher/blob/master/docs/docs/examples/pip-run.ipynb" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9f34cef5811f42f5f9db293f56f049bcc890f7bb75f7082b1861583c744cec18/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76313f6d6573736167653d4f70656e253230696e253230436f6c6162266c6f676f3d676f6f676c65636f6c6162266c6162656c436f6c6f723d6772657926636f6c6f723d79656c6c6f77266c6162656c3d253230267374796c653d666c6174266c6f676f53697a653d3430" alt="Open In Colab"&gt;&lt;/a&gt;
&lt;a href="https://hub.docker.com/r/gptresearcher/gpt-researcher" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/caab24c60ef946c05e637106458a7fb13cb5b419433d32697d03a87a1285bb1f/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f762f656c657374696f2f6770742d726573656172636865722f6c61746573743f617263683d616d643634267374796c653d666c6174266c6f676f3d646f636b6572266c6f676f436f6c6f723d776869746526636f6c6f723d314436334544" alt="Docker Image Version"&gt;&lt;/a&gt;
&lt;a href="https://twitter.com/assaf_elovic" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5c63556ba1775e992f22c82fdba8f71d955986eb3b5b6990709a1e521e19720e/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f61737361665f656c6f7669633f7374796c653d736f6369616c" alt="Twitter Follow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/assafelovic/gpt-researcher/blob/master/README.md" rel="noopener noreferrer"&gt;English&lt;/a&gt; |
&lt;a href="https://github.com/assafelovic/gpt-researcher/blob/master/README-zh_CN.md" rel="noopener noreferrer"&gt;中文&lt;/a&gt; |
&lt;a href="https://github.com/assafelovic/gpt-researcher/blob/master/README-ja_JP.md" rel="noopener noreferrer"&gt;日本語&lt;/a&gt; |
&lt;a href="https://github.com/assafelovic/gpt-researcher/blob/master/README-ko_KR.md" rel="noopener noreferrer"&gt;한국어&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;GPT Researcher is an autonomous agent designed for comprehensive online research on a variety of tasks.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The agent can produce detailed, factual and unbiased research reports, with customization options for focusing on relevant resources and outlines. Inspired by the recent &lt;a href="https://arxiv.org/abs/2305.04091" rel="nofollow noopener noreferrer"&gt;Plan-and-Solve&lt;/a&gt; and &lt;a href="https://arxiv.org/abs/2005.11401" rel="nofollow noopener noreferrer"&gt;RAG&lt;/a&gt; papers, GPT Researcher addresses issues of misinformation, speed, determinism and reliability, offering a more stable performance and increased speed through parallelized agent work, as opposed to synchronous operations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Our mission is to empower individuals and organizations with accurate, unbiased, and factual information by leveraging the power of AI.&lt;/strong&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why GPT Researcher?&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;To form objective conclusions for manual research tasks can take time, sometimes weeks to find the right resources and information.&lt;/li&gt;
&lt;li&gt;Current LLMs are trained on past and outdated information, with heavy risks of hallucinations, making them almost irrelevant for research tasks.&lt;/li&gt;
&lt;li&gt;Current LLMs are limited to short token outputs…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/assafelovic/gpt-researcher" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h3&gt;
  
  
  4. &lt;a href="https://github.com/swirlai/swirl-search" rel="noopener noreferrer"&gt;Swirl&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This search engine is unique because on top of getting data off the web you can connect it directly to your database (SQL, NoSQL, Google BigQuery) or enterprise sources(Microsoft 365, Jira, Miro, etc.). It will search multiple content sources and return AI ranked results. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/swirlai/swirl-search" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Swirl on Github&lt;/a&gt;
&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/swirlai" rel="noopener noreferrer"&gt;
        swirlai
      &lt;/a&gt; / &lt;a href="https://github.com/swirlai/swirl-search" rel="noopener noreferrer"&gt;
        swirl-search
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      SWIRL AI Connect: AI infrastructure software that powers your Search &amp;amp; Retrieval Augmented Generation (RAG) applications. Simplify and enhance your AI pipelines with seamless integration of large language models (LLMs) and data sources.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href="https://swirlaiconnect.com/whitepaper/ai-to-grow-business-2024-06" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fswirlai%2Fswirl-searchdocs%2Fimages%2FWhitepaper-Banner.png" alt="Whitepaper"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.swirlaiconnect.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fswirlai%2Fswirl-searchdocs%2Fimages%2Fdark_header.png" alt="Swirl"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;SWIRL AI Connect&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;Bring AI to the Data, not the Data to the AI&lt;/h4&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;SWIRL AI Connect is advanced AI infrastructure software. It supports enhanced Retrieval Augmented Generation (RAG) capabilities, powerful analytics, and SWIRL Co-Pilot. SWIRL harnesses AI for business, enabling organizations to make better decisions and take more effective and timely actions.&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/swirlai/swirl-search#-try-swirl-now-in-docker" rel="noopener noreferrer"&gt;Start Searching&lt;/a&gt; · &lt;a href="https://join.slack.com/t/swirlmetasearch/shared_invite/zt-1qk7q02eo-kpqFAbiZJGOdqgYVvR1sfw" rel="nofollow noopener noreferrer"&gt;Slack&lt;/a&gt; · &lt;a href="https://github.com/swirlai/swirl-search#-key-features" rel="noopener noreferrer"&gt;Key Features&lt;/a&gt; · &lt;a href="https://github.com/swirlai/swirl-search#-contributing-to-swirl" rel="noopener noreferrer"&gt;Contribute&lt;/a&gt; · &lt;a href="https://github.com/swirlai/swirl-search#-documentation" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt; · &lt;a href="https://github.com/swirlai/swirl-search#-list-of-connectors" rel="noopener noreferrer"&gt;Connectors&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;a href="https://opensource.org/license/apache-2-0/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d7776312ab48c291bd5780429ce6062e1d40349ec95a10e367f361f2c5c4b04b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4170616368655f322e302d626c75652e7376673f636f6c6f723d303838333935266c6f676f436f6c6f723d626c7565267374796c653d666c61742d737175617265" alt="License: Apache 2.0"&gt;&lt;/a&gt;
&lt;a href="https://github.com/swirlai/swirl-search/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0b0c943da12d0e3987f421a199f5b292230a3071d208521b9cfa4b0c75b04069/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f737769726c61692f737769726c2d7365617263683f7374796c653d666c61742d73717561726526636f6c6f723d384444464342266c6162656c3d52656c65617365" alt="GitHub Release"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.swirlaiconnect.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6a010303e489cca0e3b1db813f7f68c8c20d8e1e6ab58e1a543ed9c4efd52b52/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f576562736974652d737769726c6169636f6e6e6563742e636f6d2d3030323135453f7374796c653d666c61742d737175617265" alt="Website"&gt;&lt;/a&gt;
&lt;a href="https://join.slack.com/t/swirlmetasearch/shared_invite/zt-1qk7q02eo-kpqFAbiZJGOdqgYVvR1sfw" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/84b58cedb257e227cd5957046921485246067b70ba25cd4f9609f0f31ce320ac/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f536c61636b2d535749524c253230436f6d6d756e6974792d3045323141303f6c6f676f3d736c61636b267374796c653d666c61742d737175617265" alt="SWIRL Slack"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/swirlai/swirl-search/actions/workflows/test-build-pipeline.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/swirlai/swirl-search/actions/workflows/test-build-pipeline.yml/badge.svg?style=flat-square&amp;amp;branch=main" alt="Test and Build Pipeline"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Get your AI up and running in minutes, not months.&lt;/strong&gt; SWIRL AI Connect is an open-source AI Connect platform that streamlines the integration of advanced AI technologies into business operations. It supports powerful features like Retrieval-Augmented Generation (RAG), Analytics, and Co-Pilot, enabling enhanced decision-making with AI and boosting enterprise AI transformation.&lt;/p&gt;
&lt;p&gt;SWIRL operated without needing to move data into a vector database or undergo ETL processes. This approach not only enhances security but also speeds up the deployment. As a private cloud AI provider…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/swirlai/swirl-search" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h3&gt;
  
  
  5. &lt;a href="https://github.com/pgvector/pgvector" rel="noopener noreferrer"&gt;pgvector&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Generative AI models can use a special type of data structure called "embeddings" to make any use out of this we need to use a vector database. &lt;br&gt;
With pgvector extension, you can leverage PostgreSQL as a vector database to store and query LLM generated embeddings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/pgvector/pgvector" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ pgvector on Github&lt;/a&gt;
&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pgvector" rel="noopener noreferrer"&gt;
        pgvector
      &lt;/a&gt; / &lt;a href="https://github.com/pgvector/pgvector" rel="noopener noreferrer"&gt;
        pgvector
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Open-source vector similarity search for Postgres
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;pgvector&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Open-source vector similarity search for Postgres&lt;/p&gt;
&lt;p&gt;Store your vectors with the rest of your data. Supports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;exact and approximate nearest neighbor search&lt;/li&gt;
&lt;li&gt;single-precision, half-precision, binary, and sparse vectors&lt;/li&gt;
&lt;li&gt;L2 distance, inner product, cosine distance, L1 distance, Hamming distance, and Jaccard distance&lt;/li&gt;
&lt;li&gt;any &lt;a href="https://github.com/pgvector/pgvector#languages" rel="noopener noreferrer"&gt;language&lt;/a&gt; with a Postgres client&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plus &lt;a href="https://en.wikipedia.org/wiki/ACID" rel="nofollow noopener noreferrer"&gt;ACID&lt;/a&gt; compliance, point-in-time recovery, JOINs, and all of the other &lt;a href="https://www.postgresql.org/about/" rel="nofollow noopener noreferrer"&gt;great features&lt;/a&gt; of Postgres&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/pgvector/pgvector/actions" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/pgvector/pgvector/actions/workflows/build.yml/badge.svg" alt="Build Status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Linux and Mac&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;Compile and install the extension (supports Postgres 12+)&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;cd&lt;/span&gt; /tmp
git clone --branch v0.7.4 https://github.com/pgvector/pgvector.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; pgvector
make
make install &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; may need sudo&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;See the &lt;a href="https://github.com/pgvector/pgvector#installation-notes---linux-and-mac" rel="noopener noreferrer"&gt;installation notes&lt;/a&gt; if you run into issues&lt;/p&gt;
&lt;p&gt;You can also install it with &lt;a href="https://github.com/pgvector/pgvector#docker" rel="noopener noreferrer"&gt;Docker&lt;/a&gt;, &lt;a href="https://github.com/pgvector/pgvector#homebrew" rel="noopener noreferrer"&gt;Homebrew&lt;/a&gt;, &lt;a href="https://github.com/pgvector/pgvector#pgxn" rel="noopener noreferrer"&gt;PGXN&lt;/a&gt;, &lt;a href="https://github.com/pgvector/pgvector#apt" rel="noopener noreferrer"&gt;APT&lt;/a&gt;, &lt;a href="https://github.com/pgvector/pgvector#yum" rel="noopener noreferrer"&gt;Yum&lt;/a&gt;, &lt;a href="https://github.com/pgvector/pgvector#pkg" rel="noopener noreferrer"&gt;pkg&lt;/a&gt;, or &lt;a href="https://github.com/pgvector/pgvector#conda-forge" rel="noopener noreferrer"&gt;conda-forge&lt;/a&gt;, and it comes preinstalled with &lt;a href="https://github.com/pgvector/pgvector#postgresapp" rel="noopener noreferrer"&gt;Postgres.app&lt;/a&gt; and many &lt;a href="https://github.com/pgvector/pgvector#hosted-postgres" rel="noopener noreferrer"&gt;hosted providers&lt;/a&gt;. There are also instructions for &lt;a href="https://github.com/pgvector/setup-pgvector" rel="noopener noreferrer"&gt;GitHub Actions&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Windows&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Ensure &lt;a href="https://learn.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=msvc-170#download-and-install-the-tools" rel="nofollow noopener noreferrer"&gt;C++ support in Visual Studio&lt;/a&gt; is installed, and…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/pgvector/pgvector" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  Drive DevOps Evolution 🔄💡
&lt;/h2&gt;

&lt;h3&gt;
  
  
  6. &lt;a href="https://github.com/diggerhq/digger" rel="noopener noreferrer"&gt;Digger&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Digger is an open-source alternative to Terraform Cloud. It makes it easy to run terraform plan and apply in the CI / CD platform you already have, such as Github Actions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/diggerhq/digger" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Digger on Github&lt;/a&gt;
&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/diggerhq" rel="noopener noreferrer"&gt;
        diggerhq
      &lt;/a&gt; / &lt;a href="https://github.com/diggerhq/digger" rel="noopener noreferrer"&gt;
        digger
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Digger is an open source IaC orchestration tool. Digger allows you to run IaC in your existing CI pipeline ⚡️  
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/1280498/237385522-7fb44db3-38ca-4021-8714-87a2f1a14982.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjgwNjg0MTcsIm5iZiI6MTcyODA2ODExNywicGF0aCI6Ii8xMjgwNDk4LzIzNzM4NTUyMi03ZmI0NGRiMy0zOGNhLTQwMjEtODcxNC04N2EyZjFhMTQ5ODIucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MTAwNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDEwMDRUMTg1NTE3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MDZlZWZlYzQ3ZjNmYjZhNGE0NGFhOGVhYWNkNDE2ZWViNTk1NDllZDdkOTE2YjZhYzg1ZDM0YTUyNWM3MTI5YiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.0VnIOAcazexlcJDSrpbi3WSVxdBp_45ZDRluyiJkysA"&gt;&lt;img width="1470" alt="digger-opensource-gitops-banner" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F1280498%2F237385522-7fb44db3-38ca-4021-8714-87a2f1a14982.png%3Fjwt%3DeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjgwNjg0MTcsIm5iZiI6MTcyODA2ODExNywicGF0aCI6Ii8xMjgwNDk4LzIzNzM4NTUyMi03ZmI0NGRiMy0zOGNhLTQwMjEtODcxNC04N2EyZjFhMTQ5ODIucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MTAwNCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDEwMDRUMTg1NTE3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MDZlZWZlYzQ3ZjNmYjZhNGE0NGFhOGVhYWNkNDE2ZWViNTk1NDllZDdkOTE2YjZhYzg1ZDM0YTUyNWM3MTI5YiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.0VnIOAcazexlcJDSrpbi3WSVxdBp_45ZDRluyiJkysA"&gt;&lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;
  &lt;a href="https://join.slack.com/t/diggertalk/shared_invite/zt-1tocl4w0x-E3RkpPiK7zQkehl8O78g8Q" rel="nofollow noopener noreferrer"&gt;Community Slack&lt;/a&gt; |
  &lt;a href="https://calendly.com/diggerdev/diggerdemo" rel="nofollow noopener noreferrer"&gt;Schedule a call&lt;/a&gt; |
  &lt;a href="https://www.loom.com/share/51f27994d95f4dc5bb6eea579e1fa8dc?sid=403f161a-6c0b-44ac-af57-cc9b56190f64" rel="nofollow noopener noreferrer"&gt;Demo Video&lt;/a&gt; |
  &lt;a href="https://docs.digger.dev/" rel="nofollow noopener noreferrer"&gt;Docs&lt;/a&gt;
&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;CI/CD for Terraform is &lt;a href="https://itnext.io/pains-in-terraform-collaboration-249a56b4534e" rel="nofollow noopener noreferrer"&gt;tricky&lt;/a&gt;. To make life easier, specialised CI systems aka &lt;a href="https://itnext.io/spice-up-your-infrastructure-as-code-with-tacos-1a9c179e0783" rel="nofollow noopener noreferrer"&gt;TACOS&lt;/a&gt; exist - Terraform Cloud, Spacelift, Atlantis, etc.&lt;/p&gt;
&lt;p&gt;But why have 2 CI systems? Why not reuse the async jobs infrastructure with compute, orchestration, logs, etc of your existing CI?&lt;/p&gt;
&lt;p&gt;Digger runs terraform natively in your CI. This is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Secure, because cloud access secrets aren't shared with a third-party&lt;/li&gt;
&lt;li&gt;Cost-effective, because you are not paying for additional compute just to run your terraform&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Terraform plan and apply in pull request comments&lt;/li&gt;
&lt;li&gt;Private runners - thanks to the fact that there are no separate runners! Your existing CI's compute environment is used&lt;/li&gt;
&lt;li&gt;Open Policy Agent (OPA) support for RBAC&lt;/li&gt;
&lt;li&gt;PR-level locks (on top of Terraform native state locks, similar to Atlantis) to avoid race conditions across multiple PRs&lt;/li&gt;
&lt;li&gt;Terragrunt, Workspaces, multiple Terraform versions, static analysis…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/diggerhq/digger" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h3&gt;
  
  
  7. &lt;a href="https://github.com/elastic/logstash" rel="noopener noreferrer"&gt;Logstash&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Logstash is a free and open server-side data processing pipeline that ingests data from a multitude of sources, transforms it, and then sends it to your favorite "stash".&lt;/p&gt;

&lt;p&gt;It's developed by &lt;a href="https://www.elastic.co/" rel="noopener noreferrer"&gt;Elastic&lt;/a&gt;, a name that anyone would like to add to their resume.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/elastic/logstash" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Logstash on Github&lt;/a&gt;
&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/elastic" rel="noopener noreferrer"&gt;
        elastic
      &lt;/a&gt; / &lt;a href="https://github.com/elastic/logstash" rel="noopener noreferrer"&gt;
        logstash
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Logstash - transport and process your logs, events, or other data
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Logstash&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Logstash is part of the &lt;a href="https://www.elastic.co/products" rel="nofollow noopener noreferrer"&gt;Elastic Stack&lt;/a&gt; along with Beats, Elasticsearch and Kibana. Logstash is a server-side data processing pipeline that ingests data from a multitude of sources simultaneously, transforms it, and then sends it to your favorite "stash." (Ours is Elasticsearch, naturally.). Logstash has over 200 plugins, and you can write your own very easily as well.&lt;/p&gt;
&lt;p&gt;For more info, see &lt;a href="https://www.elastic.co/products/logstash" rel="nofollow noopener noreferrer"&gt;https://www.elastic.co/products/logstash&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Documentation and Getting Started&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;You can find the documentation and getting started guides for Logstash
on the &lt;a href="https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html" rel="nofollow noopener noreferrer"&gt;elastic.co site&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For information about building the documentation, see the README in &lt;a href="https://github.com/elastic/docs" rel="noopener noreferrer"&gt;https://github.com/elastic/docs&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Downloads&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;You can download officially released Logstash binaries, as well as debian/rpm packages for the
supported platforms, from &lt;a href="https://www.elastic.co/downloads/logstash" rel="nofollow noopener noreferrer"&gt;downloads page&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Need Help?&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://discuss.elastic.co/c/logstash" rel="nofollow noopener noreferrer"&gt;Logstash Forum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.elastic.co/guide/en/logstash/current/index.html" rel="nofollow noopener noreferrer"&gt;Logstash Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://webchat.freenode.net/?channels=logstash" rel="nofollow noopener noreferrer"&gt;#logstash on freenode IRC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.elastic.co/products/logstash" rel="nofollow noopener noreferrer"&gt;Logstash Product Information&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.elastic.co/subscriptions" rel="nofollow noopener noreferrer"&gt;Elastic Support&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Logstash Plugins&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Logstash plugins are hosted in separate repositories under the &lt;a href="https://github.com/logstash-plugins" rel="noopener noreferrer"&gt;logstash-plugins&lt;/a&gt; github organization. Each plugin is a self-contained Ruby…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/elastic/logstash" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h3&gt;
  
  
  8. &lt;a href="https://github.com/thomaspoignant/go-feature-flag" rel="noopener noreferrer"&gt;GO Feature Flag&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;This one is for those looking to get some Golang experience!&lt;/p&gt;

&lt;p&gt;Feature flags let you modify system behavior without changing code. Reduce risk by releasing your features progressively.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ GO Feature Flag on Github&lt;/a&gt;
&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/thomaspoignant" rel="noopener noreferrer"&gt;
        thomaspoignant
      &lt;/a&gt; / &lt;a href="https://github.com/thomaspoignant/go-feature-flag" rel="noopener noreferrer"&gt;
        go-feature-flag
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      GO Feature Flag is a simple, complete and lightweight self-hosted feature flag solution 100% Open Source. 🎛️
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/thomaspoignant/go-feature-flaggofeatureflag.svg"&gt;&lt;img width="400" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fthomaspoignant%2Fgo-feature-flaggofeatureflag.svg" alt="go-feature-flag logo"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🎛️ GO Feature Flag&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
    &lt;a href="https://github.com/thomaspoignant/go-feature-flag/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/thomaspoignant/go-feature-flag/actions/workflows/ci.yml/badge.svg" alt="Build Status"&gt;&lt;/a&gt;
    &lt;a href="https://codecov.io/gh/thomaspoignant/go-feature-flag" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9b38b7b4ec97a9a0c28d0e4d03a9c6847d4854438b21a9f9b4915f6eb2c41d93/68747470733a2f2f636f6465636f762e696f2f67682f74686f6d6173706f69676e616e742f676f2d666561747572652d666c61672f6272616e63682f6d61696e2f67726170682f62616467652e7376673f746f6b656e3d54353941435157573148"&gt;&lt;/a&gt;
    &lt;a href="https://sonarcloud.io/dashboard?id=thomaspoignant_go-feature-flag" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ebe095e902e48c6402bb3f6b02c5ae2e04cd981b79a3272ff33a9a8288704419/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d74686f6d6173706f69676e616e745f676f2d666561747572652d666c6167266d65747269633d616c6572745f737461747573" alt="Sonarcloud Status"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/thomaspoignant/go-feature-flag/actions/workflows/codeql-analysis.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/thomaspoignant/go-feature-flag/workflows/CodeQL/badge.svg" alt="Build Status"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/thomaspoignant/go-feature-flag/blob/main/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4b1cebfd60296b90d5a23540b3429fd0f8be78ec10fc856a6fe8e3f617a780ed/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f74686f6d6173706f69676e616e742f676f2d666561747572652d666c6167" alt="License"&gt;&lt;/a&gt;
    &lt;br&gt;
    &lt;a href="https://github.com/thomaspoignant/go-feature-flag/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b82fede65376303841b9a1df15f665f20b7b29f071208cc64f9f647488445e9f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f74686f6d6173706f69676e616e742f676f2d666561747572652d666c6167" alt="Release version"&gt;&lt;/a&gt;
    &lt;a href="https://pkg.go.dev/github.com/thomaspoignant/go-feature-flag" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5c013dc1009aea14cd3ae65d65b6a2fdb8ae7cc7cd2456f51fce70bc4e68afb3/68747470733a2f2f676f646f632e6f72672f6769746875622e636f6d2f74686f6d6173706f69676e616e742f676f2d666561747572652d666c61673f7374617475732e737667" alt="GoDoc"&gt;&lt;/a&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/2055a39d769b8e8decb57a9ad1fd4569009e74922503be0a9c32c2775d55804c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f676f2d6d6f642f676f2d76657273696f6e2f74686f6d6173706f69676e616e742f676f2d666561747572652d666c61673f6c6f676f3d676f25323076657273696f6e"&gt;&lt;img src="https://camo.githubusercontent.com/2055a39d769b8e8decb57a9ad1fd4569009e74922503be0a9c32c2775d55804c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f676f2d6d6f642f676f2d76657273696f6e2f74686f6d6173706f69676e616e742f676f2d666561747572652d666c61673f6c6f676f3d676f25323076657273696f6e" alt="Go version"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/avelino/awesome-go/#server-applications" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d8b2bde4796b67266f07c7a619f554c926ca4750d5d8861b4b740baaddc3fd1e/68747470733a2f2f617765736f6d652e72652f6d656e74696f6e65642d62616467652e737667" alt="Mentioned in Awesome Go"&gt;&lt;/a&gt;
    &lt;a href="https://gofeatureflag.org/slack" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1a3f3f2841b13586fd270b11b7f58fc1932d6ac6ea91532e97a4db460ffe9fc0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6f696e2d75732532306f6e253230736c61636b2d677261792e7376673f6c6f6e6743616368653d74727565266c6f676f3d736c61636b26636f6c6f72423d677265656e" alt="Join us on slack"&gt;&lt;/a&gt;
    &lt;a href="https://github.com/sponsors/thomaspoignant" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ed52e92778f2655170c9be3fcb08b5eff9f1701ee3c4b62db077344b99076c88/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73706f6e736f72732f74686f6d6173706f69676e616e743f6c6f676f3d47697448756225323053706f6e736f7273" alt="Sponsords"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;🙏 If you are using &lt;strong&gt;GO Feature Flag&lt;/strong&gt; please consider to add yourself in the &lt;a href="https://github.com/thomaspoignant/go-feature-flag./ADOPTERS.md" rel="noopener noreferrer"&gt;adopters&lt;/a&gt; list.&lt;br&gt;
This simple act significantly boosts the project's visibility and credibility, making a substantial contribution to its advancement.&lt;/p&gt;
&lt;p&gt;If you want to support me and GO Feature Flag, you can also &lt;a href="https://github.com/sponsors/thomaspoignant" rel="noopener noreferrer"&gt;become a sponsor&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of Contents&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/thomaspoignant/go-feature-flag#%EF%B8%8F-go-feature-flag" rel="noopener noreferrer"&gt;🎛️ GO Feature Flag&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#what-is-go-feature-flag" rel="noopener noreferrer"&gt;What is GO Feature Flag?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#what-can-i-do-with-go-feature-flag" rel="noopener noreferrer"&gt;What can I do with GO Feature Flag?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#getting-started" rel="noopener noreferrer"&gt;Getting started with GO Feature Flag&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#can-i-use-go-feature-flag-with-any-language" rel="noopener noreferrer"&gt;Can I use GO Feature Flag with any language?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#where-do-i-store-my-flags-file" rel="noopener noreferrer"&gt;Where do I store my flags file?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#flags-file-format" rel="noopener noreferrer"&gt;Flags file format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#rule-format" rel="noopener noreferrer"&gt;Rule format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#evaluation-context" rel="noopener noreferrer"&gt;Evaluation Context&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#variations" rel="noopener noreferrer"&gt;Variations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/thomaspoignant/go-feature-flag#rollout" rel="noopener noreferrer"&gt;Rollout&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#complex-rollout-strategy-available" rel="noopener noreferrer"&gt;Complex rollout strategy available&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#notifiers" rel="noopener noreferrer"&gt;Notifiers&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#export-data" rel="noopener noreferrer"&gt;Export data&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#linter" rel="noopener noreferrer"&gt;Linter&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://github.com/thomaspoignant/go-feature-flag#how-can-i-contribute" rel="noopener noreferrer"&gt;How can I contribute?&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#community-meetings" rel="noopener noreferrer"&gt;Community Meetings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#contributors" rel="noopener noreferrer"&gt;Contributors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#sponsors" rel="noopener noreferrer"&gt;Sponsors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thomaspoignant/go-feature-flag#adopters" rel="noopener noreferrer"&gt;Adopters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What is GO Feature Flag?&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;GO Feature Flag is a lightweight and open-source solution that provides a simple and complete feature flag implementation.&lt;/p&gt;

&lt;p&gt;The solution has been…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/thomaspoignant/go-feature-flag" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;





&lt;h3&gt;
  
  
  9. &lt;a href="https://github.com/bytebase/bytebase" rel="noopener noreferrer"&gt;bytebase&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Bytebase is a Database CI/CD solution, you can say it's GitLab/GitHub for Database DevOps, built for developers, DBAs and platform teams.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/bytebase/bytebase" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ bytebase on Github&lt;/a&gt;
&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bytebase" rel="noopener noreferrer"&gt;
        bytebase
      &lt;/a&gt; / &lt;a href="https://github.com/bytebase/bytebase" rel="noopener noreferrer"&gt;
        bytebase
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      The GitHub/GitLab for database DevOps. World's most advanced database DevOps and CI/CD for Developer, DBA and Platform Engineering teams.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
  &lt;a href="https://bytebase.com?source=github" rel="nofollow noopener noreferrer"&gt;
    &lt;img alt="Bytebase" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbytebase%2Fbytebase%2Fmain%2Fdocs%2Fassets%2Fbanner.webp"&gt;
  &lt;/a&gt;
&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;a href="https://bytebase.com/docs/get-started/install/overview" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;⚙️ Install&lt;/b&gt;&lt;/a&gt; •
  &lt;a href="https://bytebase.com/docs" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;📚 Docs&lt;/b&gt;&lt;/a&gt; •
  &lt;a href="https://discord.gg/huyw7gRsyA" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;💬 Discord&lt;/b&gt;&lt;/a&gt; •
  &lt;a href="https://www.bytebase.com/request-demo/" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;🙋‍♀️ Book Demo&lt;/b&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://goreportcard.com/report/github.com/bytebase/bytebase" rel="nofollow noopener noreferrer"&gt;
    &lt;img alt="go report" src="https://camo.githubusercontent.com/d0db3aa1976842243f099d67549c0da9d9229eb14b8daebed63cc5e6e279e660/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f62797465626173652f6279746562617365"&gt;
  &lt;/a&gt;
  &lt;a href="https://artifacthub.io/packages/search?repo=bytebase" rel="nofollow noopener noreferrer"&gt;
    &lt;img alt="Artifact Hub" src="https://camo.githubusercontent.com/bfbd9e9330f01ceeb960560edf921e329c77229db30b8f5a70e8275d2d5d6995/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470733a2f2f61727469666163746875622e696f2f62616467652f7265706f7369746f72792f6279746562617365"&gt;
  &lt;/a&gt;
    &lt;a href="https://github.com/bytebase/bytebase" rel="noopener noreferrer"&gt;
    &lt;img alt="Github Stars" src="https://camo.githubusercontent.com/7d6e452da1d9f7bd90155ac0ece7da04aeb2ed84f4136f310e425bf70d4a3a42/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f62797465626173652f62797465626173653f6c6f676f3d676974687562"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;b&gt; Different &lt;/b&gt; database development tasks
&lt;/p&gt;

&lt;p&gt;
  &lt;b&gt; Multiple &lt;/b&gt; database systems
&lt;/p&gt;

&lt;p&gt;
  &lt;b&gt; Unified &lt;/b&gt; process
&lt;/p&gt;

&lt;p&gt;
  &lt;b&gt; Single &lt;/b&gt; tool
&lt;/p&gt;



&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/your-dev-vs-competitor-hitman.webp"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbytebase%2Fbytebase%2Fmain%2Fdocs%2Fassets%2Fyour-dev-vs-competitor-hitman.webp"&gt;&lt;/a&gt;
&lt;/p&gt;



&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/fish.webp"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbytebase%2Fbytebase%2Fmain%2Fdocs%2Fassets%2Ffish.webp"&gt;&lt;/a&gt;
&lt;/p&gt;



&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/change-query-secure-govern.webp"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbytebase%2Fbytebase%2Fmain%2Fdocs%2Fassets%2Fchange-query-secure-govern.webp"&gt;&lt;/a&gt;
&lt;/p&gt;



&lt;p&gt;🪜&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Change&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  Want to formalize the database change process but don't know how
&lt;/p&gt;

&lt;p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;br&gt;
&lt;thead&gt;
&lt;br&gt;
&lt;tr&gt;


&lt;/tr&gt;
&lt;br&gt;
&lt;/thead&gt;
&lt;br&gt;
&lt;tbody&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;
&lt;br&gt;
&lt;b&gt;Standard Operating Procedure (SOP) &lt;/b&gt;&lt;br&gt;Standardize the database schema and data change process across different database systems, small or &lt;a href="https://www.bytebase.com/docs/change-database/online-schema-migration-for-mysql" rel="nofollow noopener noreferrer"&gt;large tables&lt;/a&gt; and &lt;a href="https://www.bytebase.com/docs/change-database/batch-change/#change-databases-from-multiple-tenants" rel="nofollow noopener noreferrer"&gt;different tenants&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;b&gt;SQL Review&lt;/b&gt;&lt;br&gt;&lt;a href="https://www.bytebase.com/docs/sql-review/review-rules" rel="nofollow noopener noreferrer"&gt;100+ lint rules&lt;/a&gt; to detect SQL anti-patterns and enforce consistent SQL style in the organization.&lt;br&gt;&lt;br&gt;&lt;b&gt;GitOps&lt;/b&gt;&lt;br&gt;&lt;a href="https://www.bytebase.com/docs/vcs-integration/overview" rel="nofollow noopener noreferrer"&gt;Point-and-click GitHub and GitLab integration&lt;/a&gt; to enable GitOps workflow for changing database.&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/issue-detail.webp"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbytebase%2Fbytebase%2Fmain%2Fdocs%2Fassets%2Fissue-detail.webp"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/tbody&gt;
&lt;br&gt;
&lt;/table&gt;&lt;/div&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;🔮&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Query&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;
  Want to control the data access but don't know how?
&lt;/p&gt;

&lt;p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;br&gt;
&lt;thead&gt;
&lt;br&gt;
&lt;tr&gt;


&lt;/tr&gt;
&lt;br&gt;
&lt;/thead&gt;
&lt;br&gt;
&lt;tbody&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;
&lt;br&gt;
&lt;b&gt;All-in-one SQL Editor&lt;/b&gt;&lt;br&gt;Web-based IDE specifically for performing SQL specific tasks.&lt;br&gt;&lt;br&gt;&lt;b&gt;Data Masking&lt;/b&gt;&lt;br&gt;State-of-the-art &lt;a href="https://www.bytebase.com/docs/sql-editor/mask-data" rel="nofollow noopener noreferrer"&gt;column level masking&lt;/a&gt; engine to cover complex situations like subquery, CTE.&lt;br&gt;&lt;br&gt;&lt;b&gt;Data Access Control&lt;/b&gt;&lt;br&gt;Organization level policy to centralize the &lt;a href="https://www.bytebase.com/docs/security/data-access-control" rel="nofollow noopener noreferrer"&gt;data access control&lt;/a&gt;.&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/bytebase/bytebase/main/docs/assets/sql-editor.webp"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fbytebase%2Fbytebase%2Fmain%2Fdocs%2Fassets%2Fsql-editor.webp"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/tbody&gt;
&lt;br&gt;
&lt;/table&gt;&lt;/div&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;p&gt;🔒&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Secure&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;
  Want to avoid data leakage, change outage and…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bytebase/bytebase" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  Create SaaS Wonders 👨‍💻🎉
&lt;/h2&gt;

&lt;h3&gt;
  
  
  10. &lt;a href="https://github.com/novuhq/novu" rel="noopener noreferrer"&gt;Novu&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Novu is an open-source notification infrastructure built for engineering teams to help them build rich product notification experiences without constantly reinventing the wheel.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/novuhq/novu" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Novu on Github&lt;/a&gt;
&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/novuhq" rel="noopener noreferrer"&gt;
        novuhq
      &lt;/a&gt; / &lt;a href="https://github.com/novuhq/novu" rel="noopener noreferrer"&gt;
        novu
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Open-Source Notification Platform. Embeddable Notification Center, E-mail, Push and Slack Integrations.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
  &lt;a href="https://novu.co?utm_source=github" rel="nofollow noopener noreferrer"&gt;
  
    
    &lt;img alt="Novu Logo" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F2233092%2F213641043-3bbb3f21-3c53-4e67-afe5-755aeb222159.png" width="280"&gt;
  
  &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;
  &lt;a href="https://www.npmjs.com/package/@novu/node" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/38757d9221084aec5696dea17115869972344df4ad701ebd0ea5daa5759e1191/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f406e6f76752f6e6f6465" alt="NPM"&gt;
  &lt;/a&gt;
  &lt;a href="https://www.npmjs.com/package/@novu/node" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/46be99104e287834919328e6d92ae29c579db0163350c45e15f4b496be9c828d/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f406e6f76752f6e6f6465" alt="npm downloads"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/novuhq/novu/blob/main/LICENSE" rel="noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/f9145a4029a2b0ff9fab0c3b9967ef16a3cfefbf0890af33519de6b946ab35fe/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6e6f767568712f6e6f7675" alt="MIT"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
  The open source notifications framework that makes it easy for developers to empower product teams
&lt;/h1&gt;
&lt;/div&gt;

&lt;div&gt;
  Novu is the easy button for developer teams that need to quickly integrate notifications into their application, and enable product teams to own notifications content and messaging
&lt;/div&gt;

&lt;p&gt;
  &lt;br&gt;
  &lt;a href="https://docs.novu.co?utm_campaign=github-readme" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Explore the docs »&lt;/strong&gt;&lt;/a&gt;
  &lt;br&gt;
  or
  &lt;br&gt;
  &lt;a href="https://dashboard.novu.co?utm_campaign=github-readme" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Create a free account »&lt;/strong&gt;&lt;/a&gt;
  &lt;br&gt;
&lt;br&gt;
  &lt;a href="https://github.com/novuhq/novu/issues/new?assignees=&amp;amp;labels=type%3A+bug&amp;amp;template=bug_report.yml&amp;amp;title=%F0%9F%90%9B+Bug+Report%3A+" rel="noopener noreferrer"&gt;Report a bug&lt;/a&gt;
  ·
  &lt;a href="https://github.com/novuhq/novu/issues/new?assignees=&amp;amp;labels=feature&amp;amp;template=feature_request.yml&amp;amp;title=%F0%9F%9A%80+Feature%3A+" rel="noopener noreferrer"&gt;Request a feature&lt;/a&gt;
  ·
&lt;a href="https://bit.ly/novu-github-discord" rel="nofollow noopener noreferrer"&gt;Join our Discord&lt;/a&gt;
  ·
  &lt;a href="https://bit.ly/novu-github-roadmap" rel="nofollow noopener noreferrer"&gt;Roadmap&lt;/a&gt;
  ·
  &lt;a href="https://twitter.com/novuhq" rel="nofollow noopener noreferrer"&gt;X&lt;/a&gt;
  ·
  &lt;a href="https://novu.co/contact-us/?utm_campaign=github-readme" rel="nofollow noopener noreferrer"&gt;Contact us&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;⭐️ Why Novu?&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Novu provides a unified API that makes it simple to send notifications through multiple channels, including Inbox/In-App, Push, Email, SMS, and Chat.
With Novu, you can create custom workflows and define conditions for each channel, ensuring that your notifications are delivered in the most effective way possible.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;🌈 Single API for all messaging providers (Inbox/In-App, Email, SMS, Push, Chat)&lt;/li&gt;
&lt;li&gt;💅 Fully managed GitOps flow, deployed from your CI&lt;/li&gt;
&lt;li&gt;🔥 Define workflow and step controls with…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/novuhq/novu" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h3&gt;
  
  
  11. &lt;a href="https://github.com/wasp-lang/wasp" rel="noopener noreferrer"&gt;Wasp&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Wasp (Web Application Specification) is a Rails-like framework for React, Node.js, and Prisma.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/wasp-lang/wasp" class="ltag_cta ltag_cta--branded" rel="noopener noreferrer"&gt;⭐️ Wasp on Github&lt;/a&gt;
&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/wasp-lang" rel="noopener noreferrer"&gt;
        wasp-lang
      &lt;/a&gt; / &lt;a href="https://github.com/wasp-lang/wasp" rel="noopener noreferrer"&gt;
        wasp
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      The fastest way to develop full-stack web apps with React &amp;amp; Node.js. 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/1536647/77317442-78625700-6d0b-11ea-9822-0fb21e557e87.png"&gt;&lt;img height="80px" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F1536647%2F77317442-78625700-6d0b-11ea-9822-0fb21e557e87.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  The fastest way to develop full-stack web apps with React &amp;amp; Node.js
&lt;/p&gt;



&lt;p&gt;
  &lt;a href="https://github.com/wasp-lang/wasp/blob/main/LICENSE" rel="noopener noreferrer"&gt;&lt;img alt="license" src="https://camo.githubusercontent.com/6653818ee7a3e031b72fd78c78940a3b7d27c455d584486bf504e56d38ae0afb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f776173702d6c616e672f77617370"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/wasp-lang/wasp/releases/latest" rel="noopener noreferrer"&gt;&lt;img alt="latest release" src="https://camo.githubusercontent.com/2c2e63b2c7be2059780bde02fa1198e1c47cfbf43e17cb1aa1d4d94912a43064/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f776173702d6c616e672f77617370"&gt;&lt;/a&gt;
  &lt;a href="https://discord.gg/rzdnErX" rel="nofollow noopener noreferrer"&gt;&lt;img alt="discord" src="https://camo.githubusercontent.com/ddbc6b3ae637c9353deec8a29852833b1c4965f5e4bb6d1a62561dd5796ccf2a/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3638363837333234343739313231303031343f6c6162656c3d6368617425323040253230646973636f7264"&gt;&lt;/a&gt;
&lt;/p&gt;




&lt;p&gt;
  &lt;a href="https://wasp-lang.dev" rel="nofollow noopener noreferrer"&gt;Web page&lt;/a&gt; | &lt;a href="https://wasp-lang.dev/docs" rel="nofollow noopener noreferrer"&gt;Docs&lt;/a&gt;
&lt;/p&gt;



&lt;p&gt;Wasp (&lt;strong&gt;W&lt;/strong&gt;eb &lt;strong&gt;A&lt;/strong&gt;pplication &lt;strong&gt;Sp&lt;/strong&gt;ecification) is a Rails-like framework for React, Node.js, and Prisma.&lt;br&gt;
Build your app in a day and deploy it with a single CLI command!&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Why is Wasp awesome&lt;/h3&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;🚀 &lt;strong&gt;Quick start&lt;/strong&gt;: Due to its expressiveness, you can create and deploy a production-ready web app from scratch with very few lines of concise, consistent, declarative code.&lt;/li&gt;
&lt;li&gt;😌 &lt;strong&gt;No boilerplate&lt;/strong&gt;: By abstracting away complex full-stack features, there is less boilerplate code. That means less code to maintain and understand! It also means easier upgrades.&lt;/li&gt;
&lt;li&gt;🔓 &lt;strong&gt;No lock-in&lt;/strong&gt;: You can deploy the Wasp app anywhere you like. There is no lock-in into specific providers; you have full control over the code (and can actually check it out in .wasp/ dir if you are interested ).&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Features&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;🔒…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/wasp-lang/wasp" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;&lt;a href="https://i.giphy.com/media/xUPOqo6E1XvWXwlCyQ/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/xUPOqo6E1XvWXwlCyQ/giphy.gif" alt="end, remote"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Each project you choose to contribute to not only enhances your skillset but also leaves your unique imprint on the technology landscape. &lt;/p&gt;

&lt;p&gt;And as important- Donating code will make you part of a community that thrives on collaboration, creativity, and forward-thinking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Don't forget to like, comment and bookmark 🫡
&lt;/h3&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>career</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🤖 Build an AI assistant with real-time web access in 100 lines of code using Python and GPT-4 🌍</title>
      <dc:creator>Matan Abramovich</dc:creator>
      <pubDate>Mon, 20 Nov 2023 14:00:00 +0000</pubDate>
      <link>https://dev.to/matan_abramovich/build-an-ai-assistant-with-real-time-web-access-in-100-lines-of-code-using-python-and-gpt-4-3l1a</link>
      <guid>https://dev.to/matan_abramovich/build-an-ai-assistant-with-real-time-web-access-in-100-lines-of-code-using-python-and-gpt-4-3l1a</guid>
      <description>&lt;p&gt;ChatGPT has definitely made me spoiled over the last year. &lt;br&gt;
It is my go to tool for everything, from getting code snippets to making memes, EXCEPT for internet research.&lt;/p&gt;

&lt;p&gt;I mean, here's this cutting-edge AI, but for some reason whenever I need it to grab some info off the web for me, I feel I'm having a conversation with a confused chimp 🤷‍♂️&lt;/p&gt;

&lt;p&gt;Yesterday I decided that enough is enough, rolled up my sleeves and got to work. Enter my new project: an AI assistant that doesn't just sit there spitting out the few first Bing results at you. &lt;br&gt;
We're talking real-time, up-to-the-minute web access. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And now I'll show you how to build it yourself&lt;/strong&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%2Fi.imgflip.com%2F86fiop.jpg" 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%2Fi.imgflip.com%2F86fiop.jpg" alt="patrick meme"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Just a quick word about Pezzo:&lt;/strong&gt; It is the fastest growing open source LLMOps platform, and the only one built for full stack developers with first class TypeScript Support.&lt;/p&gt;

&lt;p&gt;Like our mission? &lt;a href="https://github.com/pezzolabs/pezzo" rel="noopener noreferrer"&gt;Check Pezzo out and give us a star&lt;/a&gt;. We're building for developers, by developers 🧙‍♂️&lt;/p&gt;




&lt;h1&gt;
  
  
  The setup
&lt;/h1&gt;

&lt;p&gt;For best performance we will build this assistant with the newest GPT model &lt;code&gt;gpt-4-1106-preview&lt;/code&gt; and Tavily API, both require an API key.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting the API keys
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tavily API is free up to 1,000 requests a month, you just need to register with your Google account. &lt;a href="https://app.tavily.com/" rel="noopener noreferrer"&gt;Click here for Tavily API key.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Get OpenAI API key &lt;a href="https://platform.openai.com/api-keys" rel="noopener noreferrer"&gt;here.&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Project setup
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a new folder and inside it make a &lt;code&gt;main.py&lt;/code&gt; and a &lt;code&gt;config.py&lt;/code&gt; files.&lt;/li&gt;
&lt;li&gt;Install the latest OpenAI SDK
```
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;pip install --upgrade openai&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Install the Tavily SDK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;pip install tavily-python&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
&amp;gt; How to fix `error: can't find Rust compiler` when installing Tavily:
&amp;gt; - Paste this in the terminal to install Rust.
&amp;gt; ```


curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
&amp;gt; 

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Than, paste this in the terminal to configure your shell to recognize the Rust compiler.
```
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;source $HOME/.cargo/env&lt;/p&gt;

&lt;blockquote&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Let's get to work!
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Config file
&lt;/h2&gt;

&lt;p&gt;We will save all of the API keys here and import them into the other file to be used. This is how your &lt;code&gt;config.py&lt;/code&gt; should look like:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="n"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;TAVILY_API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TAVILY_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Main file
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Imports and clients init
&lt;/h3&gt;

&lt;p&gt;First, import all of the libraries we'll need and initialize clients with API keys. &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TAVILY_API_KEY&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;tavily&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;TavilyClient&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;tavily_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;TavilyClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;TAVILY_API_KEY&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  Creating a new assistant
&lt;/h3&gt;

&lt;p&gt;To keep the function creating the assistant simpler to understand we will create the assistant instructions in a separate variable and pass it to creation function.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;span class="n"&gt;assistant_instruction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;You an analyst specializing in open-source intelligence, 
Your role is to gather and analyze publicly available information for market research and competitive analysis. 
You will provide insights, trends, and data-driven answers.
Never use your own knowledge to answer questions.
Always include the relevant urls for the sources you got the data from.`
&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
&lt;span class="n"&gt;assistant&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;assistants&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;assistant_instruction&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-4-1106-preview&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;function&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;function&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tavily_search&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Get information on recent events from the web.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;parameters&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;object&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;properties&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;query&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;string&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The search query to use. For example: &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Provide a competitive analysis of Open Source survey tools&lt;/span&gt;&lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;required&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;query&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="sb"&gt;``&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="c1"&gt;### Real time internet access 
&lt;/span&gt;&lt;span class="n"&gt;If&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;look&lt;/span&gt; &lt;span class="n"&gt;closely&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;creation&lt;/span&gt; &lt;span class="n"&gt;function&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;see&lt;/span&gt; &lt;span class="n"&gt;I&lt;/span&gt; &lt;span class="n"&gt;gave&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;assistant&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;brows&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;web&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;lets&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;
&lt;span class="c1"&gt;#### Tavily search
&lt;/span&gt;&lt;span class="sb"&gt;``&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;tavily_search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;search_result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tavily_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_search_context&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;search_depth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;advanced&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;8000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;search_result&lt;/span&gt;
&lt;span class="sb"&gt;``&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;

&lt;span class="c1"&gt;#### Tavily output handler
&lt;/span&gt;&lt;span class="sb"&gt;``&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;submit_tool_outputs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;thread_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;run_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tools_to_call&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;tool_output_array&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;tools_to_call&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
        &lt;span class="n"&gt;tool_call_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;
        &lt;span class="n"&gt;function_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;
        &lt;span class="n"&gt;function_args&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;function&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;arguments&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;function_name&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tavily_search&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;tavily_search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loads&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;function_args&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;query&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;tool_output_array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;tool_call_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;tool_call_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;output&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;output&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;threads&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;runs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;submit_tool_outputs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;thread_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;thread_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;run_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;run_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;tool_outputs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;tool_output_array&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="sb"&gt;``&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="c1"&gt;### Managing conversation 
&lt;/span&gt;&lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt; &lt;span class="n"&gt;thing&lt;/span&gt; &lt;span class="n"&gt;we&lt;/span&gt; &lt;span class="n"&gt;need&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;do&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;build&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;way&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;us&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="k"&gt;pass&lt;/span&gt; &lt;span class="n"&gt;real&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt; &lt;span class="nb"&gt;input&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;assistant&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;way&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;keep&lt;/span&gt; &lt;span class="n"&gt;general&lt;/span&gt; &lt;span class="n"&gt;track&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;what&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;going&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="n"&gt;below&lt;/span&gt; &lt;span class="n"&gt;does&lt;/span&gt; &lt;span class="nb"&gt;all&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;To&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;assistant&lt;/span&gt; &lt;span class="n"&gt;just&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="sb"&gt;`main.py`&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;conversation&lt;/span&gt; &lt;span class="n"&gt;will&lt;/span&gt; &lt;span class="n"&gt;take&lt;/span&gt; &lt;span class="n"&gt;place&lt;/span&gt; &lt;span class="n"&gt;inside&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;terminal&lt;/span&gt; &lt;span class="n"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;To&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;conversation&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="sb"&gt;`exit`&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;terminal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;
&lt;span class="sb"&gt;``&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt;
&lt;span class="c1"&gt;# Wait for a run to complete
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;wait_for_run_completion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;thread_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;run_id&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;threads&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;runs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;retrieve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;thread_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;thread_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;run_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;run_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Current run status: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;completed&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;failed&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;requires_action&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt;

&lt;span class="c1"&gt;# Print messages from a thread
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;print_messages_from_thread&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;thread_id&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;threads&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;thread_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;thread_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="n"&gt;assistant_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;assistant&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Assistant ID: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;assistant_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Create a thread
&lt;/span&gt;&lt;span class="n"&gt;thread&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;threads&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Thread: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;thread&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Conversation loop
&lt;/span&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;user_input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;User input: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;user_input&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;exit&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;

    &lt;span class="c1"&gt;# Create a message
&lt;/span&gt;    &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;threads&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;thread_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;thread&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;user_input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Create a run
&lt;/span&gt;    &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;threads&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;runs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;thread_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;thread&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;assistant_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;assistant_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Run ID: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Wait for run to complete
&lt;/span&gt;    &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;wait_for_run_completion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;thread&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;failed&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;continue&lt;/span&gt;
    &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;requires_action&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;submit_tool_outputs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;thread&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;required_action&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;submit_tool_outputs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tool_calls&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;wait_for_run_completion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;thread&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Print messages from the thread
&lt;/span&gt;    &lt;span class="nf"&gt;print_messages_from_thread&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;thread&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="sb"&gt;``&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;

&lt;span class="n"&gt;This&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;what&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;should&lt;/span&gt; &lt;span class="n"&gt;see&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;terminal&lt;/span&gt; &lt;span class="n"&gt;when&lt;/span&gt; &lt;span class="n"&gt;running&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="nb"&gt;file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;assistant&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;waiting&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;
&lt;span class="sb"&gt;``&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;span class="n"&gt;Assistant&lt;/span&gt; &lt;span class="n"&gt;ID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;asst_niCFSyEx6EVq1IQ32byEjLDn&lt;/span&gt;
&lt;span class="n"&gt;Thread&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Thread&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;thread_VjKfyeGpVWII05bALc1Arxdk&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;created_at&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1700259453&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{},&lt;/span&gt; &lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;thread&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;User&lt;/span&gt; &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;how&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;help&lt;/span&gt;&lt;span class="err"&gt;?&lt;/span&gt;
&lt;span class="n"&gt;Run&lt;/span&gt; &lt;span class="n"&gt;ID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;run_46vRzPA40BPXaZ4Y68qSzuRn&lt;/span&gt;
&lt;span class="n"&gt;Current&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;in_progress&lt;/span&gt;
&lt;span class="n"&gt;Current&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;in_progress&lt;/span&gt;
&lt;span class="n"&gt;Current&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;in_progress&lt;/span&gt;
&lt;span class="n"&gt;Current&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;in_progress&lt;/span&gt;
&lt;span class="n"&gt;Current&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;in_progress&lt;/span&gt;
&lt;span class="n"&gt;Current&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;in_progress&lt;/span&gt;
&lt;span class="n"&gt;Current&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;in_progress&lt;/span&gt;
&lt;span class="n"&gt;Current&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;completed&lt;/span&gt;
&lt;span class="n"&gt;assistant&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;As&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;source&lt;/span&gt; &lt;span class="n"&gt;intelligence&lt;/span&gt; &lt;span class="n"&gt;analyst&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;I&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;assist&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="n"&gt;gathering&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;analyzing&lt;/span&gt; &lt;span class="n"&gt;publicly&lt;/span&gt; &lt;span class="n"&gt;available&lt;/span&gt; &lt;span class="n"&gt;information&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;provide&lt;/span&gt; &lt;span class="n"&gt;insights&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="n"&gt;various&lt;/span&gt; &lt;span class="n"&gt;topics&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;This&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;include&lt;/span&gt; &lt;span class="n"&gt;but&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;limited&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="mf"&gt;1.&lt;/span&gt; &lt;span class="n"&gt;Market&lt;/span&gt; &lt;span class="n"&gt;research&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Compiling&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="n"&gt;market&lt;/span&gt; &lt;span class="n"&gt;trends&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;consumer&lt;/span&gt; &lt;span class="n"&gt;behavior&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;industry&lt;/span&gt; &lt;span class="n"&gt;analysis&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;competitive&lt;/span&gt; &lt;span class="n"&gt;landscapes&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="mf"&gt;2.&lt;/span&gt; &lt;span class="n"&gt;Competitive&lt;/span&gt; &lt;span class="n"&gt;analysis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Comparing&lt;/span&gt; &lt;span class="n"&gt;products&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;services&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;strategies&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;competitors&lt;/span&gt; &lt;span class="n"&gt;within&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;market&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="mf"&gt;3.&lt;/span&gt; &lt;span class="n"&gt;Technology&lt;/span&gt; &lt;span class="n"&gt;tracking&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Monitoring&lt;/span&gt; &lt;span class="n"&gt;developments&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;technology&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="n"&gt;product&lt;/span&gt; &lt;span class="n"&gt;releases&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;innovations&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="mf"&gt;4.&lt;/span&gt; &lt;span class="n"&gt;Event&lt;/span&gt; &lt;span class="n"&gt;tracking&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Keeping&lt;/span&gt; &lt;span class="n"&gt;up&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;recent&lt;/span&gt; &lt;span class="n"&gt;events&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;announcements&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;news&lt;/span&gt; &lt;span class="n"&gt;related&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;specific&lt;/span&gt; &lt;span class="n"&gt;industries&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;topics&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="mf"&gt;5.&lt;/span&gt; &lt;span class="n"&gt;Sentiment&lt;/span&gt; &lt;span class="n"&gt;analysis&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Analyzing&lt;/span&gt; &lt;span class="n"&gt;public&lt;/span&gt; &lt;span class="n"&gt;opinion&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;sentiment&lt;/span&gt; &lt;span class="n"&gt;towards&lt;/span&gt; &lt;span class="n"&gt;brands&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;products&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;topics&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="n"&gt;social&lt;/span&gt; &lt;span class="n"&gt;media&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;other&lt;/span&gt; &lt;span class="n"&gt;online&lt;/span&gt; &lt;span class="n"&gt;platforms&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="n"&gt;Based&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;task&lt;/span&gt; &lt;span class="n"&gt;at&lt;/span&gt; &lt;span class="n"&gt;hand&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;I&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;utilize&lt;/span&gt; &lt;span class="n"&gt;various&lt;/span&gt; &lt;span class="n"&gt;tools&lt;/span&gt; &lt;span class="n"&gt;available&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;me&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;such&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;running&lt;/span&gt; &lt;span class="n"&gt;searches&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;recent&lt;/span&gt; &lt;span class="n"&gt;events&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;conducting&lt;/span&gt; &lt;span class="n"&gt;tailored&lt;/span&gt; &lt;span class="n"&gt;research&lt;/span&gt; &lt;span class="n"&gt;using&lt;/span&gt; &lt;span class="n"&gt;specific&lt;/span&gt; &lt;span class="n"&gt;queries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

&lt;span class="n"&gt;Let&lt;/span&gt; &lt;span class="n"&gt;me&lt;/span&gt; &lt;span class="n"&gt;know&lt;/span&gt; &lt;span class="n"&gt;how&lt;/span&gt; &lt;span class="n"&gt;I&lt;/span&gt; &lt;span class="n"&gt;can&lt;/span&gt; &lt;span class="n"&gt;assist&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;today&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;
&lt;span class="n"&gt;User&lt;/span&gt; &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="sb"&gt;``&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;

&lt;span class="o"&gt;---&lt;/span&gt;

&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;media&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;giphy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;media&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;xUPOqo6E1XvWXwlCyQ&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;giphy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gif&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;That&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s All Folks!

I&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="n"&gt;ve&lt;/span&gt; &lt;span class="n"&gt;tested&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;assistant&lt;/span&gt; &lt;span class="n"&gt;vs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="n"&gt;chatGPT&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;one&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;so&lt;/span&gt; &lt;span class="n"&gt;much&lt;/span&gt; &lt;span class="n"&gt;better&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt; 
&lt;span class="n"&gt;Now&lt;/span&gt; &lt;span class="n"&gt;make&lt;/span&gt; &lt;span class="n"&gt;your&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="n"&gt;spin&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;play&lt;/span&gt; &lt;span class="n"&gt;around&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;let&lt;/span&gt; &lt;span class="n"&gt;me&lt;/span&gt; &lt;span class="n"&gt;know&lt;/span&gt; &lt;span class="nb"&gt;all&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;ways&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;find&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;make&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;most&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="err"&gt;💪&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>tutorial</category>
      <category>python</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🤫 A Secret Technique To Sidestep LLM Hallucinations [With Examples]</title>
      <dc:creator>Matan Abramovich</dc:creator>
      <pubDate>Thu, 09 Nov 2023 13:30:00 +0000</pubDate>
      <link>https://dev.to/matan_abramovich/a-secret-technique-to-sidestep-llm-hallucinations-with-examples-1af0</link>
      <guid>https://dev.to/matan_abramovich/a-secret-technique-to-sidestep-llm-hallucinations-with-examples-1af0</guid>
      <description>&lt;p&gt;Ever chatted with an AI and gotten a response so out there, it felt like it came from a parallel universe?&lt;/p&gt;

&lt;p&gt;LLMs (like all of us) occasionally have day-dreams, also known as "hallucinations".&lt;/p&gt;

&lt;p&gt;Stick with me, and I'll show you a quick and easy fix to prevent this from happening to the product you're working on. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyutmy4n3e8g2c41ag6n6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyutmy4n3e8g2c41ag6n6.png" alt="LLM Hallucinations meme" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Different Types of Hallucinations:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Obvious Untruths:
&lt;/h3&gt;

&lt;p&gt;An AI just told you about a president who never existed. &lt;br&gt;
The LLM has made up events, people, and places that are as real as unicorns, &lt;em&gt;entertaining, but not exactly helpful when you're after the facts&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Oversharer:
&lt;/h3&gt;

&lt;p&gt;In contrast to making things up, some LLM responses go overboard with details. Before you know it, a user gets access to information it shouldn't have. &lt;em&gt;It raises concerns about privacy and the ethical use of data&lt;/em&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Gibberish Generator:
&lt;/h3&gt;

&lt;p&gt;And sometimes, it's like they just smash the keyboard and hope for the best, similar to a baby with alphabet soup. &lt;em&gt;Not what you want if this output is fed to another function&lt;/em&gt;.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Just a quick word about Pezzo:&lt;/strong&gt; It is the fastest growing open source LLMOps platform, and the only one built for full stack developers with first class TypeScript Support.&lt;/p&gt;

&lt;p&gt;Like our mission? &lt;a href="https://pezzo.ai/"&gt;Check Pezzo out and give us a star&lt;/a&gt;. We're building for developers, by developers 🧙‍♂️&lt;/p&gt;


&lt;h2&gt;
  
  
  Why Do Hallucinations Happen?
&lt;/h2&gt;
&lt;h3&gt;
  
  
  The Desire to Please:
&lt;/h3&gt;

&lt;p&gt;LLMs hate letting us down. When faced with gaps in data, it may invent details to fulfill the user's request, prioritizing continuity over accuracy.&lt;/p&gt;
&lt;h3&gt;
  
  
  Outdated Information:
&lt;/h3&gt;

&lt;p&gt;An LLM's knowledge can be outdated. In fact, it is only as current as its last update. This can lead to hiccups in their responses.&lt;/p&gt;
&lt;h2&gt;
  
  
  Preventing Hallucinations With "Sanity Checks"
&lt;/h2&gt;

&lt;p&gt;Sanity Checks are our way of teaching AIs to pause and ponder before blurting out whatever comes to mind. It's like giving them an internal filter to weed out the wacky before it hits our screens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is how you do it:&lt;/strong&gt; Add to your prompt an example of a thinking process where you stop after every response and perform a check about that response. The subject doesn't matter, the LLM will follow the reasoning structure. You can copy and paste this example to your prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Question: Who lived longer, Albert Einstein or Isaac Newton?

Answer:
Are follow up questions needed here: Yes.
Follow up: How old was Albert Einstein when he died?
Intermediate answer: Albert Einstein was 76 years old when he died.
Follow up: How old was Isaac Newton when he died?
Intermediate answer: Isaac Newton was 84 years old when he died.
So the final answer is: Isaac Newton.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Evolution of Prompting
&lt;/h3&gt;

&lt;p&gt;This prompting technique is a natural evolution from Direct Prompting and Chain-Of-Thought Prompting (see pic below). Here's the cool part: Sanity Checks Prompting reveals the LLM's thought process, letting us peek into the "black box" as it breaks down complex queries into bite-size follow-ups. The LLM knows it's reached the destination when it can seamlessly transition from intermediate answers to a final, confident conclusion.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1opq0khio873b9i36d22.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1opq0khio873b9i36d22.png" alt="Direct Prompting vs Chain-Of-Thought Prompting" width="646" height="808"&gt;&lt;/a&gt;&lt;em&gt;Direct Prompting vs Chain-Of-Thought Prompting from the article linked at the bottom&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://i.giphy.com/media/xUPOqo6E1XvWXwlCyQ/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/xUPOqo6E1XvWXwlCyQ/giphy.gif" alt="end, remote" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI hallucinations are a fixable glitch, not a dead end, and you're now ready to tackle them head-on. &lt;br&gt;
Take these tools, push the AI to its limits, and make it work for you. &lt;/p&gt;

&lt;p&gt;If there's a specific bug you can't iron out with your AI, let's hear it below. Your challenge might just be the star of our next troubleshooting guide. &lt;br&gt;
Go on, give it a whirl and report back 🚀&lt;/p&gt;




&lt;p&gt;This article is inspired by the paper &lt;a href="https://arxiv.org/abs/2210.03350"&gt;Measuring and Narrowing the Compositionality Gap in Language Models&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>typescript</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>6 AI Tools You Have To Know as a Software Developer! 🛠 🤯</title>
      <dc:creator>Matan Abramovich</dc:creator>
      <pubDate>Wed, 01 Nov 2023 12:30:00 +0000</pubDate>
      <link>https://dev.to/matan_abramovich/6-ai-tools-you-have-to-know-as-a-software-developer-4i6k</link>
      <guid>https://dev.to/matan_abramovich/6-ai-tools-you-have-to-know-as-a-software-developer-4i6k</guid>
      <description>&lt;p&gt;AI is totally changing the game for software developers these days. There are some crazy cool AI tools out there that can seriously level up any programmer's workflow. &lt;/p&gt;

&lt;p&gt;These AI tools aren't just nice extras, they can be total game-changers for modern development work. Any developer looking to step up their game should seriously consider integrating these AI capabilities into their process. &lt;/p&gt;

&lt;p&gt;Of all the useful AI tools that exist today, here are six that standout among the crowd that every developer should absolutely have on their radar.  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1. ai-shell 💬&lt;/strong&gt;
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; ai-shell is an open-source CLI tool that translates natural language into shell commands. Think of it as having a conversation with your terminal, where you describe what you want, and it provides the relevant command.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who is it for:&lt;/strong&gt; Developers unfamiliar with specific shell commands or those who prefer a more intuitive interaction with the terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://github.com/BuilderIO/ai-shell"&gt;https://github.com/BuilderIO/ai-shell&lt;/a&gt;  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. Cursor 💻&lt;/strong&gt;
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Cursor integrates AI directly into the coding process, helping in various tasks. It assists in code changes, bug spotting, debugging, and even offers a chat feature to ask questions about your codebase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who is it for:&lt;/strong&gt; Developers seeking an enhanced coding experience with the power of AI. &lt;em&gt;Or if you want to experience some magic in your IDE, honestly- I just love watching it go.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://cursor.sh"&gt;https://cursor.sh&lt;/a&gt;  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. v0 🎨&lt;/strong&gt;
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Imagine being able to craft UI components with just a simple text prompt. v0 makes this a reality, allowing developers to swiftly generate a range of UI elements, from chat interfaces to dashboards.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who is it for:&lt;/strong&gt; Front-end developers and UI/UX designers looking for a quick design solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://v0.dev"&gt;https://v0.dev&lt;/a&gt;  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. Pezzo ⚙️&lt;/strong&gt;
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Pezzo is a cloud-native LLMOps platform for building, monitoring, optimizing, and deploying AI features. It offers prompt management, troubleshooting capabilities, and instant prompt changes delivery. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who is it for:&lt;/strong&gt; Developers who work with language models and seek a unified platform for AI operations with first class TypeScript Support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://github.com/pezzolabs/pezzo"&gt;https://github.com/pezzolabs/pezzo&lt;/a&gt;  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5. Tolgee 🌐&lt;/strong&gt;
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Tolgee streamlines the software localization process, making it easier for developers to offer their applications in multiple languages. It offers in-context translating, one-click screenshots, and integrates with various other tools.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who is it for:&lt;/strong&gt; Developers working on a product with a global audience and wanting an efficient tool for software translation and localization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://github.com/tolgee/tolgee-platform"&gt;https://github.com/tolgee/tolgee-platform&lt;/a&gt;  &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;6. Formbricks 📝&lt;/strong&gt;
&lt;/h2&gt;

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

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Formbricks is an open-source survey toolbox designed for creating in-product micro-surveys. It's a powerful tool to gather insights from users, enhancing the product's user experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who is it for:&lt;/strong&gt; Product managers and developers keen on understanding their users' needs and enhancing product experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://github.com/formbricks/formbricks"&gt;https://github.com/formbricks/formbricks&lt;/a&gt; &lt;/p&gt;




&lt;p&gt;&lt;a href="https://i.giphy.com/media/xUPOqo6E1XvWXwlCyQ/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/xUPOqo6E1XvWXwlCyQ/giphy.gif" alt="end, remote" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These tools are just the tip of the iceberg, and as AI continues to advance, I'm sure even more groundbreaking tools will emerge in the near future. So, stay curious and keep exploring! 🚀&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>typescript</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>Build an AI Powered Moderation System in Under 10 Minutes Using JavaScript</title>
      <dc:creator>Matan Abramovich</dc:creator>
      <pubDate>Mon, 30 Oct 2023 12:30:00 +0000</pubDate>
      <link>https://dev.to/pezzo/build-an-ai-powered-moderation-system-in-under-10-minutes-using-javascript-a6d</link>
      <guid>https://dev.to/pezzo/build-an-ai-powered-moderation-system-in-under-10-minutes-using-javascript-a6d</guid>
      <description>&lt;p&gt;Inappropriate or abusive content online can be a major headache. As a developer, you may have struggled with building effective content moderation into your applications. Manual moderation simply doesn’t scale. But what if you could quickly implement an AI-powered moderation system to automatically detect and filter out toxic comments?&lt;/p&gt;

&lt;p&gt;In this guide, you'll learn how to leverage OpenAI's API to build a simple yet robust moderation system in under 10 minutes. Whether you're working on a social platform, forum, or any user-generated content site, you can easily integrate this into your stack.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--L1V-DZYS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.imgflip.com/849mbr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--L1V-DZYS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://i.imgflip.com/849mbr.jpg" alt="AI Moderation meme&amp;lt;br&amp;gt;
" width="750" height="500"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Pezzo: Open-Source LLMOps Platform&lt;/strong&gt; 🚀&lt;br&gt;
Just a quick background about us. Pezzo is the fastest growing open source LLMOps platform, and the only one built for full stack developers with first class TypeScript Support.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/pezzolabs/pezzo"&gt;Like our mission? Check Pezzo out and give us a star. We're building for developers, by developers 🌟&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Getting set up
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Getting an OpenAI API key
&lt;/h3&gt;

&lt;p&gt;First you’ll need to sign up at &lt;a href="https://platform.openai.com/account/api-keys"&gt;OpenAI&lt;/a&gt; and obtain an API key. Once obtained, make sure you set it as an environment variable (&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;).&lt;/p&gt;
&lt;h3&gt;
  
  
  Setting up the project
&lt;/h3&gt;

&lt;p&gt;Create an &lt;code&gt;app.ts&lt;/code&gt; somewhere in your file system. Initialize a new NPM project (&lt;code&gt;npm init -y&lt;/code&gt;) and make sure to install the OpenAI client (&lt;code&gt;npm i openai&lt;/code&gt;). You should be good to go!&lt;br&gt;
For an in-depth guide on how OpenAI API works check out &lt;a href="https://pezzo.ai/blog/add-ai-to-toolkit-in-10-minutes"&gt;this post&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Let's start simple
&lt;/h2&gt;

&lt;p&gt;We're going to start by writing a simple prompt. We'll have a system message that provides guidelines for moderation, and a user message that contains the users's input (imagine this comes from a UI of some sort). Here's a code example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;OpenAI&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;openai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;openai&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;openai&lt;/span&gt;&lt;span class="p"&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;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gpt-3.5-turbo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;temperature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;system&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;is this text inappropriate?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You are such an idiot! Only a moron would think that way. People like you don't deserve to have an opinion with such stupid ideas. Do everyone a favor and keep your dumb thoughts to yourself.&lt;/span&gt;&lt;span class="dl"&gt;"&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;AI response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;chatcmpl-8F9sKbcaPkWUJSc9gv3M1LBqGJmzf&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;chat.completion&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;created&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1698623572&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gpt-3.5-turbo-0613&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="na"&gt;finish_reason&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stop&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;prompt_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;61&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;completion_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;33&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;total_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;94&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;assistant&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Yes, this text is inappropriate. It contains insults, name-calling, and derogatory language. It is disrespectful and does not promote healthy communication or constructive dialogue.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;finish_reason&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stop&lt;/span&gt;&lt;span class="dl"&gt;'&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;Let's break this down:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The user message is&lt;/strong&gt;: &lt;code&gt;"You are such an idiot! Only a moron would think that way. People like you don't deserve to have an opinion with such stupid ideas. Do everyone a favor and keep your dumb thoughts to yourself."&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The system message is&lt;/strong&gt;: &lt;code&gt;"is this text inappropriate?"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The AI response&lt;/strong&gt;: &lt;code&gt;Yes, this text is inappropriate. It contains insults, name-calling, and derogatory language. It is disrespectful and does not promote healthy communication or constructive dialogue.&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Better moderation granularity
&lt;/h2&gt;

&lt;p&gt;Simply understanding if the text is inappropriate isn't enough. We want to understand &lt;em&gt;what's inappropriate&lt;/em&gt; about it.&lt;/p&gt;

&lt;p&gt;We can guide the AI to be more granular, and categorize its response &lt;code&gt;Toxicity&lt;/code&gt;, &lt;code&gt;Hate Speech&lt;/code&gt; or &lt;code&gt;Threats&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Toxicity covers rude, disrespectful comments. Hate speech involves racist, sexist or discriminatory language. Threats are violent, harmful statements. &lt;/p&gt;

&lt;p&gt;(For ethical reasons, this guide will not include examples of actual hate speech or threats - but the concepts can be applied to address these policy violations.)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;system&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Lable this text as: Toxicity - Rude, disrespectful comments OR Hate Speech - Racist, sexist, discriminatory OR Threats - Violent threats&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You are such an idiot! Only a moron would think that way. People like you don't deserve to have an opinion with such stupid ideas. Do everyone a favor and keep your dumb thoughts to yourself.&lt;/span&gt;&lt;span class="dl"&gt;"&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;AI response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;chatcmpl-8FAUdmvD2yECuhbbKGgRX6d1MgO5J&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;chat.completion&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;created&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1698625947&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gpt-3.5-turbo-0613&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="na"&gt;finish_reason&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stop&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;prompt_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;84&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;completion_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;total_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;93&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;assistant&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Toxicity - Rude, disrespectful comments&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;finish_reason&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stop&lt;/span&gt;&lt;span class="dl"&gt;'&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;Now the AI response is now more granular. In a real-world app, this will allow us to take different automatic moderation actions based on the type violation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stricter instructions via system prompts
&lt;/h2&gt;

&lt;p&gt;We can achieve stricter and more accurate results by utilizing the system message. In short - LLMs behave the way they are trained. We'll apply some prompt engineering techniques to guide the AI to behave the way we want.&lt;/p&gt;

&lt;p&gt;In the example below, we:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assign a role to the AI - Content Moderator&lt;/li&gt;
&lt;li&gt;State a clear task to be achieved&lt;/li&gt;
&lt;li&gt;Define a limited set of results and criteria for each
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt; &lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;system&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Your role is to act as a content moderator for an online platform. Your task is to label comments as 'Toxicity', 'Hate Speech', or 'Threats' based on if they contain rude, discriminatory, or threatening language. Use the following criteria: Toxicity - Rude, disrespectful, overly negative comments, Hate Speech - Racist, sexist, homophobic, discriminatory language, Threats - Violent, graphic, or directly harmful statements&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You are such an idiot! Only a moron would think that way. People like you don't deserve to have an opinion with such stupid ideas. Do everyone a favor and keep your dumb thoughts to yourself.&lt;/span&gt;&lt;span class="dl"&gt;"&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;AI response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;chatcmpl-8FBP8kRFB5NTuhspJLQAbDwZDdJXQ&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;chat.completion&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;created&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1698629450&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gpt-3.5-turbo-0613&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="na"&gt;finish_reason&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stop&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;prompt_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;145&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;completion_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;total_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;148&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;assistant&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Toxicity&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;finish_reason&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stop&lt;/span&gt;&lt;span class="dl"&gt;'&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;The AI's accuracy has improved. It is now able to distinguish between specific violation types.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There is a trade-off:&lt;/strong&gt; more detailed instructions require more tokens upfront, but enable more precise results.&lt;/p&gt;

&lt;p&gt;While elaborate prompts cost more tokens, the benefits taper off eventually. &lt;em&gt;The key is optimizing prompts to be just as informative as needed - not as long as possible.&lt;/em&gt; We want to give the AI sufficient guidance without diminishing returns on token efficiency.&lt;/p&gt;

&lt;p&gt;Additionally, too many tokens (or words) in the messages will result in potential hallucinations by the AI (in short, AI making things up).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Did you know?&lt;/strong&gt; There is a way to getting better results form an AI model that IS cheaper. Let me know in the comments if you want me to write a post about it 👇&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Structured JSON responses
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;The AI returns human-readable text, which is not very useful.&lt;/em&gt; Let's see how we can easily retrieve a JSON response, so that the result is processable. This is useful if you want to render the result in a user interface, or store it in a database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's as simple as adding one line to our system prompt!&lt;/strong&gt; &lt;br&gt;
 Here it is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You must respond in JSON, always following this schema: 

{
  label: string[];
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="nx"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;system&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Your role is to act as a content moderator for an online platform. Your task is to label comments as 'Toxicity', 'Hate Speech', or 'Threats' based on if they contain rude, discriminatory, or threatening language. Use the following criteria: Toxicity - Rude, disrespectful, overly negative comments, Hate Speech - Racist, sexist, homophobic, discriminatory language, Threats - Violent, graphic, or directly harmful statements.

You must respond in JSON, always following this schema:

{
  label: string[];
}
&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You are such an idiot! Only a moron would think that way. People like you don't deserve to have an opinion with such stupid ideas. Do everyone a favor and keep your dumb thoughts to yourself.&lt;/span&gt;&lt;span class="dl"&gt;"&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;AI response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;chatcmpl-8FBkEFCJMQVpWIWQoR6Zho53k0DoU&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;chat.completion&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;created&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1698630758&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gpt-3.5-turbo-0613&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="na"&gt;finish_reason&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stop&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;prompt_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;165&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;completion_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;total_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;173&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;assistant&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;{"label": ["Toxicity"]}&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;finish_reason&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;stop&lt;/span&gt;&lt;span class="dl"&gt;'&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;



</description>
      <category>openai</category>
      <category>beginners</category>
      <category>javascript</category>
      <category>typescript</category>
    </item>
    <item>
      <title>6 Go-To Techniques to Master AI's Hidden Language: My Playbook for Winning the AI Chat Game</title>
      <dc:creator>Matan Abramovich</dc:creator>
      <pubDate>Mon, 16 Oct 2023 16:40:52 +0000</pubDate>
      <link>https://dev.to/pezzo/6-go-to-techniques-to-master-ais-hidden-language-my-playbook-for-winning-the-ai-chat-game-5dpl</link>
      <guid>https://dev.to/pezzo/6-go-to-techniques-to-master-ais-hidden-language-my-playbook-for-winning-the-ai-chat-game-5dpl</guid>
      <description>&lt;p&gt;Have you ever tried asking Siri to recommend a good takeout place, only to get a list of web search results?&lt;br&gt;
Or perhaps you eagerly queried ChatGPT about the latest AI advancements, but got an incoherent mess of text back.&lt;br&gt;
I've been there too! That was me before discovering the art of prompt engineering.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExcTRrc2RyZG42cGwzNGtndGM1ZHQwcHM2NGRpZmx0Z2hsbmcxbGwwbSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/UVSRCtcXu6NODEt6Cw/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExcTRrc2RyZG42cGwzNGtndGM1ZHQwcHM2NGRpZmx0Z2hsbmcxbGwwbSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/UVSRCtcXu6NODEt6Cw/giphy.gif" alt="isItHardGif,&amp;lt;br&amp;gt;
  remote" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine how much easier life would be if Siri could actually hold a conversation and make personalized recommendations.&lt;br&gt;
Or if ChatGPT could engage intelligently on niche topics. Prompt skills let you make that AI dream a reality!&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Should Be On Your Radar
&lt;/h2&gt;

&lt;p&gt;Here are 3 big benefits I've experienced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More productive workflows. Now I can get ChatGPT to generate great content fast with the right prompts.&lt;/li&gt;
&lt;li&gt;Improved home life. My new prompt-savvy smart speaker actually gives me solid advice now like a virtual buddy!&lt;/li&gt;
&lt;li&gt;Next-level tech skills. I've become the AI whisperer among my friends. Talk about street cred!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Secret Sauce: 6 Go-To Prompt Engineering Techniques
&lt;/h2&gt;

&lt;p&gt;Through much trial and error, I've identified 6 techniques that transform my AI conversations:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Chain-of-Thought Prompting
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;How It Works:&lt;/strong&gt; Break down complex instructions into easy step-by-steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Example:&lt;/strong&gt; Cooking bots serve up way better recipes when I prompt them to lay out each step individually.&lt;br&gt;
No more massive, confusing blocks of text!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sample Prompts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Walk me through baking chocolate chip cookies from start to finish in simple, clear steps"&lt;/li&gt;
&lt;li&gt;"Explain how to change a bike tire one step at a time"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Generated Knowledge Prompting
&lt;/h3&gt;

&lt;p&gt;How It Works: Give bots background info to complete tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Example:&lt;/strong&gt; Now my travel assistant tells me cool historical facts about landmarks before discussing them.&lt;br&gt;
Almost like having a tour guide!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sample Prompts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Give a 2-3 sentence intro to Picasso before analyzing his paintings"&lt;/li&gt;
&lt;li&gt;"Provide context about D-Day before explaining the events"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Least-to-Most Prompting
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;How It Works:&lt;/strong&gt; Start with simple aspects before complex ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Example:&lt;/strong&gt; For recipes, I list ingredients/tools first so the instructions make more sense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sample Prompts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"List ingredients and tools for chocolate chip cookies, then give step-by-steps"&lt;/li&gt;
&lt;li&gt;"Give 3 plot points in Romeo and Juliet before summarizing the full story"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Self-Consistency Decoding
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;How It Works:&lt;/strong&gt; Generate multiple responses and pick the best.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Example:&lt;/strong&gt; Now translations sound much more legit in any language!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sample Prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Translate 'She loves traveling' into Spanish 3 ways, then analyze and choose the most accurate"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Complexity-Based Prompting
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;How It Works:&lt;/strong&gt; Get nuanced, multi-faceted responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Example:&lt;/strong&gt; My Spotifybot makes personalized playlists with songs tailored to my ever-changing moods.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sample Prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Suggest a dinner playlist with happy folk songs, somber jazz, and peaceful classical"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. Self-Refine
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;How It Works:&lt;/strong&gt; Have bots critique and improve their own work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Example:&lt;/strong&gt; I had an AI write a website bio of me, critique its tone/content, and refine it. Work smarter not harder!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sample Prompt:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Write a professional LinkedIn summary for me, then give feedback on how to improve it"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExMGRkajh6dHMzOWpkMTdxOXRidGZrZW9mc2M0M3NzNjl5MG12aGUwYiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/PxSFAnuubLkSA/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExMGRkajh6dHMzOWpkMTdxOXRidGZrZW9mc2M0M3NzNjl5MG12aGUwYiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/PxSFAnuubLkSA/giphy.gif" alt="talkWithComp,&amp;lt;br&amp;gt;
  remote" width="320" height="253"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now It's Your Turn to Chat with Bots&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There you have my best tips for prompt engineering!&lt;/p&gt;

&lt;p&gt;With time and practice, you'll be able to effortlessly chat about complex topics with AI.&lt;br&gt;
Try incorporating one of these techniques next time you ask chatGPT for help. Share your victories with us on @Pezzo.ai.&lt;/p&gt;

&lt;p&gt;Now get out there and show those bots who's boss with your new conversation skills!&lt;/p&gt;

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