<?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>Forem: AINIRO.IO</title>
    <description>The latest articles on Forem by AINIRO.IO (@ainiro).</description>
    <link>https://forem.com/ainiro</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%2Forganization%2Fprofile_image%2F9109%2F37abc6b7-6005-4ac0-9fdb-a093a843e714.png</url>
      <title>Forem: AINIRO.IO</title>
      <link>https://forem.com/ainiro</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ainiro"/>
    <language>en</language>
    <item>
      <title>How I got 50 Followers on ProductHunt in 5 Minutes using AI</title>
      <dc:creator>Thomas Hansen</dc:creator>
      <pubDate>Wed, 03 Jul 2024 09:16:58 +0000</pubDate>
      <link>https://forem.com/ainiro/how-i-got-50-followers-on-producthunt-in-5-minutes-using-ai-5c90</link>
      <guid>https://forem.com/ainiro/how-i-got-50-followers-on-producthunt-in-5-minutes-using-ai-5c90</guid>
      <description>&lt;p&gt;Everybody who knows anything about &lt;a href="https://www.producthunt.com" rel="noopener noreferrer"&gt;ProductHunt&lt;/a&gt;, knows it's filled exclusively with marketing managers and click leeches.&lt;/p&gt;

&lt;p&gt;You can see this by nobody really caring about having an actual discussion, which shows by everybody asking questions. The idea behind this is to artificially inflate their followers and engagement, to generate &lt;em&gt;"karma"&lt;/em&gt;, such that they'll have more pull during launch day.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;By phrasing your original discussion as a question, the probability of that somebody will engage with your discussion increases, resulting in artificially inflating your &lt;em&gt;"karma"&lt;/em&gt; by gaming the system&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This has nothing to do with AI, and ProductHunt has always been like this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Buying upvotes
&lt;/h2&gt;

&lt;p&gt;In addition it's an &lt;em&gt;"open secret"&lt;/em&gt; that there's no way you can reach the top for a product launch without buying upvotes. There's an entire industry of people willing to sell you upvotes. I would know, because I had 10 offers yesterday during our own launch day. Below is one example.&lt;/p&gt;

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

&lt;p&gt;This results in that every single launch winner is unwillingly participating in, and subsidising, human trafficking and slavery-like click farms.&lt;/p&gt;

&lt;p&gt;For the record, I didn't buy a single upvote - Something you can see by our &lt;a href="https://www.producthunt.com/posts/ainiro-ai-workflows" rel="noopener noreferrer"&gt;product having 13 upvotes&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Slavery-like Click Farms
&lt;/h2&gt;

&lt;p&gt;When you buy upvotes for your product, you're purchasing services from click farms in 3rd world countries. A lot of these click farms are literally abducting teenagers from their families, by luring them in with false promises of good jobs with good salaries, for then to have them fly to a different country, and steal their passports as they start their jobs.&lt;/p&gt;

&lt;p&gt;Their job is sitting like Sardines for 80 hours per week, clicking 500+ links per hour, for then to do some &lt;em&gt;"action"&lt;/em&gt;. For ProductHunt this implies upvoting the product, and possibly copying and pasting some comment given to them by their manager in some Excel sheet or something. The advanced ones might scrape the product launch page, and maybe use AI to generate a relevant comment. Something I've demonstrated how you can do in one of my previous videos.&lt;/p&gt;

&lt;p&gt;Most of these click farms demands 80+ hours of work per week from their employees. Some of them will forcibly deny their staff to leave the factory, sometimes with armed guards. And all of them will pay minimum wage, if they even pay any salary at all. There are historical accounts of employees having been able to escape their slavery facility, for then to go to the police, which arrested them, detained them, and returned the escaped workers back to the factory owner.&lt;/p&gt;

&lt;p&gt;This is such a huge problem that the Chinese government has issued &lt;em&gt;"travel warnings"&lt;/em&gt; to their citizens for specific countries. Hundreds of thousands of Chinese teenagers have been abducted this way, working under slave-like working conditions, 80 hours per week, some of whom are upvoting your product launch.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Basically, it's modern slavery, and there are hundreds of thousands of teenagers working under such conditions in south east Asia&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  ProductHunt is unwillingly subsidising Slavery
&lt;/h2&gt;

&lt;p&gt;By ProductHunt not being willing or able to deal with this, ProductHunt is unwillingly subsidising modern slavery. &lt;strong&gt;YOU&lt;/strong&gt; as a marketing manager is also subsidising such slavery by purchasing upvotes from people such as the guy in the above screenshot.&lt;/p&gt;

&lt;p&gt;The above guy is of course just a sales executive, and would probably deny the allegations I put forth in this article if confronted with it - But the problem is so large that the Chinese government publicly warned its young citizens to travel to specific countries because of the risk of being abducted and sold into slavery to such click farms.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When the CCP warns about slavery, you know it's bad!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  YOU are Subsidising Slavery
&lt;/h2&gt;

&lt;p&gt;In addition, &lt;strong&gt;you&lt;/strong&gt; are subsidising slavery by purchasing upvotes from click farms such as these. Not only are you subsidising slavery, but you're also subsidising the same companies that are maliciously destroying your ad campaigns, by using the Google Ads Display Network feature to click farm harvest clicks from Google Ads, resulting in 70% commission from Google on ads displayed on their shallow websites, exclusively created to take advantage of Google's commission for clicks generated on their web pages.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Yes that's right, you're &lt;strong&gt;paying the same people that are destroying your ad campaigns&lt;/strong&gt;!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The reasons are simple; These click farms have a portfolio of products, and upvotes on ProductHunt is just &lt;em&gt;one&lt;/em&gt; of their products!&lt;/p&gt;

&lt;h2&gt;
  
  
  Google is Subsidising Slavery
&lt;/h2&gt;

&lt;p&gt;In addition to these problems, Google is also ipso facto subsidising slavery. The method is simple to understand, and goes as follows.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You setup a shallow one page website with a JavaScript snippet displaying Google Search results, in addition to Google Ads&lt;/li&gt;
&lt;li&gt;You apply to become a &lt;em&gt;"Google Partner"&lt;/em&gt; (new speak for &lt;em&gt;"slave manager"&lt;/em&gt;), resulting in 70% commission on all ads clicked on your page&lt;/li&gt;
&lt;li&gt;You abduct 5,000 teenagers and force them into slavery&lt;/li&gt;
&lt;li&gt;You send these slaves an excel sheet of 5,000 links per day they need to click on, for then to click on every single ad they can find on that page&lt;/li&gt;
&lt;li&gt;The slavery owner earns thousands of dollars per day in &lt;em&gt;"affiliate commission"&lt;/em&gt; from Google&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Since CPC is sometimes between 2 to 15 dollars for each click, and each slave can typically click on 500+ links per hour, this implies the slavery owner makes between $1,000 to $7,500 per hour for each slave he has abducted, while usually not giving more than $1 in salary, if even that to his slaves doing the actual work.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is an industry generating hundreds of billions of dollars annually!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The end result becomes that you're wasting sometimes 80 to 98 percent of your advertisement budget, while subsidising slavery-like click farms in South East Asia, resulting in unfathomable amounts of suffering and grief.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;All of this because you bought 400 upvotes from the guy in the above screenshot&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The fix to the problem
&lt;/h2&gt;

&lt;p&gt;The solution is quite easy to fix; &lt;strong&gt;Stop purchasing upvotes and clicks&lt;/strong&gt;! Which leaves you with a new problem; &lt;em&gt;"How can you increase angagement on your ProductHunt launch?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Well, it's a slight more demanding job - But in the following YouTube video I illustrate how I added 50 new followers to my ProductHunt profile with 5 minutes of work, by intelligently using AI. These followers will be &lt;em&gt;organic followers&lt;/em&gt;, as in &lt;em&gt;actual human beings&lt;/em&gt;, often having a &lt;em&gt;legitimate interest&lt;/em&gt; in new products and new launches.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/vxEXq3vdh6k"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The above illustrate a solution that allows you to organically grow your ProductHunt profile, resulting in more followers, that will be notified 1 to 2 months down the road as you launch your next product. Increasing the probability of that your launch will actually be successful.&lt;/p&gt;

&lt;p&gt;Since these are legitimate human beings too, it's more likely they will actually share your launch to their network, increasing the quality and amounts of customers you can get from your launch campaign, probably by 10x to 1,000x.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It's more work, it requires more planning, but it will probably bring you 100x better results&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After all, what's the point of winning &lt;em&gt;"Best product of the day"&lt;/em&gt; when the only ones who actually saw it were click farm employees?&lt;/p&gt;

&lt;h2&gt;
  
  
  Let AI Free the Slaves
&lt;/h2&gt;

&lt;p&gt;There's been a lot of talk lately of how AI will steal your job. I'm not going to go down that rabbot hole, except for informing you about that there are hundreds of thousands of teenagers living in slavery today. I'm willing to bet a kidney on that all of these would be more than happy to have &lt;em&gt;"the AI steal their jobs"&lt;/em&gt;, such that they could be released and sent back to their families.&lt;/p&gt;

&lt;p&gt;AINIRO is a company, and we're dependent upon selling products and services. However, nothing brings me greater pleasure than when we can &lt;em&gt;combine&lt;/em&gt; our ability to earn money with positively contributing to society. If you're interested in helping us, while also helping yourself, and maybe even help some abducted slaves in South East Asia at the same time - You can contact us below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ainiro.io/contact-us" rel="noopener noreferrer"&gt;Contact us&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Happy Hunting 😊&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And yes, the comment I posted at ProductHunt for this particular link was AI generated 😁&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Magic Cloud Security</title>
      <dc:creator>Thomas Hansen</dc:creator>
      <pubDate>Mon, 01 Jul 2024 08:07:56 +0000</pubDate>
      <link>https://forem.com/ainiro/magic-cloud-security-7ip</link>
      <guid>https://forem.com/ainiro/magic-cloud-security-7ip</guid>
      <description>&lt;p&gt;Since we're attracting larger clients today than a year ago, with more complex needs for security, we wanted to write some words about our platform's security to ease our clients' minds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ainiro.io/magic-cloud" rel="noopener noreferrer"&gt;Magic Cloud&lt;/a&gt; is the name of our platform. Magic is what allows us to deliver our &lt;a href="https://ainiro.io/" rel="noopener noreferrer"&gt;AI solutions&lt;/a&gt; - So writing about our technology's security basically implies writing about Magic Cloud's security.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Cloudlets
&lt;/h2&gt;

&lt;p&gt;We serve our AI platform as &lt;em&gt;"cloudlets"&lt;/em&gt;. A cloudlet is basically a Kubernetes POD built from a Docker image. This implies there are no shared file system or configurations. Each of our clients have their own file system, their own set of configuration options, and their own private database. Magic Cloud is &lt;em&gt;not&lt;/em&gt; a multi tenant system, but a Docker container.&lt;/p&gt;

&lt;p&gt;This makes it more difficult to deploy and manage, but increases security by several orders of magnitudes. It's not even possible in theory to have one client accessing data from another client for instance.&lt;/p&gt;

&lt;p&gt;When we build these Docker images, we also create a unique user that the process runs within, which does not have write access to anything but the files and folders it should be able to write to. So having a security breach corrupting the underlying operating system is theoretically impossible.&lt;/p&gt;

&lt;p&gt;We are also scanning these images automatically as an integrated part of our build process using automated tools such as &lt;a href="https://snyk.io/" rel="noopener noreferrer"&gt;Snyk&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In addition we're running our core server infrastructure on Linux, and we're always keeping the operating systems of our cloudlets updated, with recent versions, to avoid operating system related security issues.&lt;/p&gt;

&lt;p&gt;On top of this, we're using a CDN network, and never exposing the physical IP address of our Kubernetes cluster publicly, encrypting the information sent from our CDN network to our Kubernetes controller plane, eliminating yet again an entire axiom of security related issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Database
&lt;/h2&gt;

&lt;p&gt;In addition, the core database Magic runs on is not exposed to the internet at all. It's an SQLite-based database, only accessible from the file system within the cloudlet itself. This eliminates an entire axiom of security issues, resulting in that it's impossible for un-authorised users to get raw access to the database itself.&lt;/p&gt;

&lt;p&gt;In addition we persist passwords into the database using BlowFish slow hashing, with per-record based salts, making it matemathically impossible to reverse engineer your password, even if some adversary gained physical access to the raw database files itself. BlowFish password hashing is the same technique that the NSA and the CIA uses to store passwords may I add.&lt;/p&gt;

&lt;p&gt;SQL injection attacks is also effectively eliminated by using SQL parameters, making SQL injection attacks literally impossible.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Static code analysis and unit testing
&lt;/h2&gt;

&lt;p&gt;Statically analysing code can eliminate an entire axiom of security related issues. Magic contains more than 1,000 unit tests, measuring test coverage, in addition to scanning the codebase for security issues during builds. Most projects in Magic have more than 98% unit test coverage. The industry requirement is 80%. We're outperformning the industry requirement by almost one order of magnitude.&lt;/p&gt;

&lt;p&gt;For the record, less than 2% of all software is even capable of meeting the industry minimum requirement. We are outperforming the industry minimum requirement by one order of magnitude!&lt;/p&gt;

&lt;p&gt;In addition, not one single method in Magic has a cognitive complexity above what's considered the maximum threshold required to make it easy to maintain. Cognitive complexity is a huge source for security issues, because once the code becomes difficult to understand, security issues becomes difficult to see.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Updating libraries
&lt;/h2&gt;

&lt;p&gt;All 3rd party libraries we're using in Magic are kept updated. GitHub helps us here, by giving us warnings about updates we have to apply for security reasons - But we always makes sure we're using the latest security patches of any libraries we're using in Magic. In addition we're super conservative with what 3rd party libraries we pull into its core, and we are analysing all libraries for security related issues before we consider using them - And only if the library is found to be of super high quality applying all security related best practices we consider using these in the core of Magic.&lt;/p&gt;

&lt;p&gt;For instance, Magic is using the latest stable release of .Net 8, and once .Net 9 becomes mature, we'll update the entire codebase to .Net 9. By using .Net we're also eliminating an entire axiom of security related issues, such as buffer overflow or buffer overrun. 98% of every single security breach we've seen in Windows and Linux the last 20 years are based upon buffer overflow issues. Because of the way .Net is built, experiencing a buffer overflow in .Net applications is literally impossible.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. The best security I've seen
&lt;/h2&gt;

&lt;p&gt;This is going to sound like bragging, but it is the truth. I've worked as an enterprise software developer for 25 years of my life, and Magic is the by far most secure system I have ever worked with.&lt;/p&gt;

&lt;p&gt;The reason is quite simple, I'm its sole developer. Security related issues often sneaks into a system as a consequence of human software developers misunderstanding parts of the code base, and therefore unwillingly adds security issues, simply because of a lack of understanding how the existing code works. An entire axiom of security related issues originates from junior software developers. I've got 25 years of professional experience, and 42 years of software development experience in total - So I'm obviously &lt;em&gt;not&lt;/em&gt; a junior software developer.&lt;/p&gt;

&lt;p&gt;Being the sole software developer on Magic, this entire axiom of security related issues simply vanishes, and becomes 100% irrelevant for us.&lt;/p&gt;

&lt;p&gt;I have worked on finance related software projects responsible for moving billions of dollars annually, in addition to medical related software where security issues could literally be the difference between life and death. Still, Magic is the by far most secure system I have ever worked with in my entire life.&lt;/p&gt;

&lt;p&gt;Magic's codebase is from 2019, and its core foundation was invented in 2013. This implies we've had more than 10 years to stabilise and mature our technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. We're NOT ISO compliant
&lt;/h2&gt;

&lt;p&gt;We are not ISO compliant, simply because there's no ISO standard in existence today, with requirements high enough for our platform - So we've not even bothered with ISO standardising our security. Security related ISO standards are often also counter productive for security. A great example of this is how they force you to install password managers, sometimes extremely insecure password managers may I add, adding a whole new axiom of potential things that can go wrong, effectively &lt;em&gt;increasing&lt;/em&gt; your attack surface - Instead of reducing it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We've evaluated all security related ISO standards, and they're simply not secure enough for us!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A great example of counter productive security measures can be illustrated by how a security firm contacted us about a security issue they claimed having found in our AI chatbot technology a couple of months ago. We analysed their report, reproduced the issue, and after careful examination of their findings, we concluded with that the only thing they had achieved was to literally &lt;em&gt;hack their own browser&lt;/em&gt; - And that there was no way their alleged security issue could in any ways affect other users besides themselves.&lt;/p&gt;

&lt;p&gt;Since I didn't want to pay this security firm for having &lt;em&gt;"hacked their own browser"&lt;/em&gt;, I checked out their website, and I found 3 security issues I reported back to them, 1 of which was severe.&lt;/p&gt;

&lt;p&gt;In addition there's &lt;em&gt;one&lt;/em&gt; person in the world having access to our Kubernetes infrastructure, and that person is me - Period! This is because when it comes to security, I'm the most paranoid person you've ever met - And when it comes to security, paranoia is a &lt;em&gt;good&lt;/em&gt; thing!&lt;/p&gt;

&lt;p&gt;On top of that, I have never physically logged into neither our Kubernetes cluster, nor our cloud hosting provider's admin dashboard, using anything but *Nix based operating systems, making spearphish attacks based upon keyloggers almost impossible. We also have 2FA turned on in every single part of our Kubernetes cluster infrastructure, in addition to on our codebase - Making it impossible to modify our code and inject malicious code without physically stealing my phone.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Disclaimer
&lt;/h2&gt;

&lt;p&gt;So far (knock on wood), we've not have a single security related issue at AINIRO, and we are constantly doing everything we can to avoid breaches.&lt;/p&gt;

&lt;p&gt;There are of course no guarantees when it comes to software security, because of the complexity of the domain - But we've applied dozens of layers of security, making security breaches highly unlikely.&lt;/p&gt;

&lt;p&gt;If you are still not convinced, we allow for enterprise customers to study our codebase, assuming they're willing to pay for access to it, and sign the relevant IP contracts to avoid misuse or IP theft.&lt;/p&gt;

&lt;p&gt;If you do, I'm 100% sure of that you'll see just as we do, that this is literally the most secure software system you've ever seen!&lt;/p&gt;

&lt;p&gt;When that's said, please for the love of God use passwords with high amount of entropy that you don't use any other places as you create your root users in your cloudlet. 99% of every single intrusion ever seen in this world was because some human being chose to use &lt;em&gt;"admin123"&lt;/em&gt; as his password.&lt;/p&gt;

&lt;p&gt;FYI, not even Facebook is hashing your password, implying there are 20,000 software developers working for Facebook that already knows your Facebook password - Implying if you're reusing this password on your cloudlet, any schmuck working for Facebook can access your cloudlet. Yes, true story, it was revealed almost a &lt;em&gt;decade&lt;/em&gt; ago by a leak, and there are few reasons to believe they've fixed these issues since!&lt;/p&gt;

&lt;p&gt;The latter seems to be a general pattern in our vertical, where almost &lt;em&gt;none&lt;/em&gt; of the big social media companies are capable of avoiding storing your passwords in clear text, implying one breach at Facebook, and malicious hackers can access every single system you've ever used that same password on.&lt;/p&gt;

&lt;p&gt;With Magic you can even use passphrases, entire sentences, increasing the entropy from 72 to the power of 8 to 12 to 150,000 to the power of 25 to 50, allowing you to use entire sentences as your password. If you do, the amount of energy required to brute force your password would exceed the amount of energy required to boil all the H2O (water) in the entire known universe!&lt;/p&gt;

&lt;p&gt;And secure your client for the love of God. No amount of security features in Magic is ever going to save you from a keylogger you unwillingly downloaded because of &lt;em&gt;"clicking that love letter some random girl on the internet sent you a couple of days ago."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;99.99% of every single security breach originates from human failure and human flaws, and there's nothing we can do here except warning you about it, and teaching you how to avoid such human failures. However ...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I can guarantee you that Magic is probably the most secure system you have ever used!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And ...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I'm willing to bet 100 bucks on that if the CIA currently have an &lt;em&gt;"OpenAI management system"&lt;/em&gt; in use, it's with 99% certainty Magic! If it's not, they're doing something wrong!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>security</category>
    </item>
    <item>
      <title>Long Term Memory AI Chatbot</title>
      <dc:creator>Thomas Hansen</dc:creator>
      <pubDate>Sat, 29 Jun 2024 11:47:56 +0000</pubDate>
      <link>https://forem.com/ainiro/long-term-memory-ai-chatbot-1a54</link>
      <guid>https://forem.com/ainiro/long-term-memory-ai-chatbot-1a54</guid>
      <description>&lt;p&gt;Our &lt;a href="https://ainiro.io/ai-workflows" rel="noopener noreferrer"&gt;AI workflow technology&lt;/a&gt; allows us to deliver AI chatbots with long term memory. This allows you to &lt;em&gt;"train"&lt;/em&gt; your AI chatbot during conversations, and such modify your chatbot's future responses as a consequence of you correcting it during interactions.&lt;/p&gt;

&lt;p&gt;This is one of the core requirements for AGI, and is actually extremely easy to build using our technology. In the following video I am showing you how to create an AI chatbot with long term memory in 3 minutes.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/a7O7-_JVAaY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;The implementation is actually ridiculously simple. It is basically just an AI function that can be triggered using natural language, that persists information into the chatbot's RAG and VSS database.&lt;/p&gt;

&lt;p&gt;This allows the AI chatbot to use whatever information you're providing to it in the future for information related to the subject you store in its memory. Below is the entire training snippet's prompt engineering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Store to memory&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Stores a piece of information to long term memory, which implies saving to
ml_training_snippets, and re-vectorizing the type, such that it can be
retrieved later using RAG and VSS.

The [prompt] argument and the [completion] argument are both mandatory
arguments. If the user does not provide you with an explicit prompt
argument, then create a short one line summary of the information with
keywords related to the fact that makes it easy to retrieve the information
later using RAG and VSS.

If the user asks you to perform an action associated with this function
invocation, then inform the user of what you are about to do, and do not
return follow up questions, but instead end your response with the following:

___
FUNCTION_INVOCATION[/modules/openai/workflows/workflows/store-memory.hl]:
{
  "prompt": "[VALUE]",
  "completion": "[VALUE]"
}
___
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The entire AI workflow itself looks like the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.arguments
   _type:string
   prompt:string
   completion:string
.description:Store something to long term memory
.type:public

// Sanity checking invocation.
validators.mandatory:x:@.arguments/*/_type
validators.mandatory:x:@.arguments/*/prompt
validators.mandatory:x:@.arguments/*/completion

// Opening up our database connection to store item to memory.
data.connect:[generic|magic]

   // Creating our ml_training_snippets item.
   data.create
      table:ml_training_snippets
      values
         type:x:@.arguments/*/_type
         prompt:x:@.arguments/*/prompt
         completion:x:@.arguments/*/completion
         meta:long-term-memory

// Re-vectorising the type.
execute:magic.ai.vectorise
   type:x:@.arguments/*/_type

// Returning success to caller.
return
   result:success
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above &lt;strong&gt;[_type]&lt;/strong&gt; argument is automatically added to the invocation by the AI function invocation implementation, and is basically just whatever machine learning type you happen to be using this within.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Training the chatbot in natural language conversations&lt;/li&gt;
&lt;li&gt;QA testing and increasing the chatbot's quality during conversations&lt;/li&gt;
&lt;li&gt;Creating an AI Expert System serving as a &lt;em&gt;"memory extension"&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Etc, etc, etc&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Of the above I think possibly the training parts is my favourite, because it allows you to start out with an &lt;em&gt;"empty AI machine learning model"&lt;/em&gt;, start asking it questions, and only when it fails you modify it. This allows you to use the GPT-4o model as your foundation, and only modify it where it goes wrong.&lt;/p&gt;

&lt;p&gt;If you're interested in such an AI chatbot, and/or AI Expert System, you can contact us below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ainiro.io/contact-us" rel="noopener noreferrer"&gt;Contact us&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>productivity</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>The AI Chatbot that Does your Laundry</title>
      <dc:creator>Thomas Hansen</dc:creator>
      <pubDate>Thu, 27 Jun 2024 07:18:18 +0000</pubDate>
      <link>https://forem.com/ainiro/the-ai-chatbot-that-does-your-laundry-4342</link>
      <guid>https://forem.com/ainiro/the-ai-chatbot-that-does-your-laundry-4342</guid>
      <description>&lt;p&gt;I've seen this meme on Facebook several times lately, where people complain about having the AI doing arts and music, leaving the laundry and the dishes to its owner.&lt;/p&gt;

&lt;p&gt;Basically it goes as follows ...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I don't want AI to do my art and music such that I can do my laundry. I want the AI to do my laundry such that I can do art and music&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We acknowledge this problem at AINIRO, so we decided to to something about it, by showing you &lt;strong&gt;how our AI technology can literally do your laundry&lt;/strong&gt;. You can reproduce every single prompt I do in this article yourself by asking our chatbot the same questions. However, please don't send the email, it comes to me and not to your housemaid. This is a conscious choice to avoid having users spamming others using our publicly available chatbots.&lt;/p&gt;

&lt;p&gt;If you want a private AI chatbot that can &lt;em&gt;actually&lt;/em&gt; order a housemaid, you can &lt;a href="https://ainiro.io/contact-us" rel="noopener noreferrer"&gt;send us an email&lt;/a&gt;, and we'll come back to you with a quote.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/dsmjAn0X4E8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Functions
&lt;/h2&gt;

&lt;p&gt;The difference between an AI chatbot without AI functions and one with AI functions, is the same as the difference between a paralytic and a person with 100 arms and legs. This is because AI functions allows the AI chatbot to actually &lt;em&gt;do something&lt;/em&gt;. AI functions are the foundation for our &lt;a href="https://ainiro.io/ai-workflows" rel="noopener noreferrer"&gt;AI workflows&lt;/a&gt;, and really they are the big difference between our technology and everybody else's technology. To understand why, let's have our AI chatbot do the laundry for us.&lt;/p&gt;

&lt;p&gt;Below I search the web for housemaids in my city, for then to have the AI chatbot send an email to one of the results, asking them if they can send me a housemaid for the 1st of July. Everything is 100% automatic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9wx877wnjpmvpqzrurq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg9wx877wnjpmvpqzrurq.png" alt="Doing your laundry 1" width="800" height="790"&gt;&lt;/a&gt;&lt;/p&gt;

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

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3lsjksgozql9czuk67i9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3lsjksgozql9czuk67i9.png" alt="Doing your laundry 4" width="800" height="792"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8h2vq60wx99dhkhc3w3l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8h2vq60wx99dhkhc3w3l.png" alt="Doing your laundry 5" width="800" height="794"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz78ma2glb84grj2c6hpy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz78ma2glb84grj2c6hpy.png" alt="Doing your laundry 6" width="800" height="798"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We've configured our AI chatbot to only send emails to us, serving as a &lt;em&gt;"contact us form"&lt;/em&gt;, but we can easily deliver AI chatbots and AI Expert Systems based upon AI workflows that sends email to anyone, including your housemaid. However, here's the end result of the above.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn4xtm4fdv4off67hcnzr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn4xtm4fdv4off67hcnzr.png" alt="Doing your laundry 7" width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A real AI expert system can be configured to automatically sign the email, include maps coordinates, phone number, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  No-Code AI Assistants
&lt;/h2&gt;

&lt;p&gt;The above allows us to deliver AI Assistants that arguably more or less automatically washes your dishes and does your laundry - &lt;strong&gt;Literally&lt;/strong&gt;! Something you can clearly see with your own eyes, and even reproduce if you don't believe me.&lt;/p&gt;

&lt;p&gt;These AI functions are also exclusively based upon &lt;a href="https://ainiro.io/magic-cloud" rel="noopener noreferrer"&gt;low-code and no-code AI&lt;/a&gt;, and almost created using &lt;em&gt;"drag'n'drop"&lt;/em&gt;. Let me show you how our &lt;em&gt;"search the web"&lt;/em&gt; AI function was added to the chatbot to illustrate the point.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgnuf6pdsysrbnh31w7q1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgnuf6pdsysrbnh31w7q1.png" alt="Installing the Search the web AI function" width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clicking the above &lt;em&gt;"install"&lt;/em&gt; button gives your &lt;a href="https://ainiro.io/ai-chatbot" rel="noopener noreferrer"&gt;AI chatbot&lt;/a&gt; the capability to search the web.&lt;/p&gt;

&lt;p&gt;We've got AI functions for all possible scenarios, and we're creating more AI functions every single day. And our plugin architecture allows you to simply install a plugin into your cloudlet that gives you more AI functions. In addition, if you don't find a particular AI function you need, you can literally create your own as a &lt;a href="https://docs.ainiro.io/workflows/" rel="noopener noreferrer"&gt;no-code and low-code Hyperlambda workflow&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  10 Years Head Start
&lt;/h2&gt;

&lt;p&gt;I'm sorry if I sound cocky here, but our technology is basically 10 years ahead of everybody else's technology here. This is because we started working on this 10 years before everybody else - &lt;strong&gt;Literally&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;When everybody went bananas in 2023 because of ChatGPT going viral, we had 10 years of innovation behind us already. Don't believe me? Realise the foundation for why we can do what we can do is Hyperlambda. Hyperlambda was created by me in 2013. In 2017 I wrote an article about Hyperlambda for Microsoft. It became their 5th most popular article &lt;strong&gt;ever&lt;/strong&gt;. You can read it below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/archive/msdn-magazine/2017/june/csharp-make-csharp-more-dynamic-with-hyperlambda" rel="noopener noreferrer"&gt;Thomas Hansen on Hyperlambda&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yesterday, one of our competitors, a 4 letter .com pronouncible domain may I add, created a demo AI chatbot using our tech. They didn't even have the audacity to provide us with a real email address, and the schmuck who created it used &lt;em&gt;"anon"&lt;/em&gt; as his name - So they never got the demo. But here you can see it in action.&lt;/p&gt;

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

&lt;p&gt;Obviously they're curious about how we can do what we can do, while they're left in the dust 10 years behind me, a solo entrepreneur may I add. Anon have 7 million dollars in VC funding, I started AINIRO on &lt;strong&gt;literally&lt;/strong&gt; $7!&lt;/p&gt;

&lt;p&gt;I'd love to tell their VC company to invest in me instead, since I'm (obviously) 10 years ahead of Anon - However, I'd rather have Chlamydia before I get VC funded - Which I assume is unfortunate for the VC fund who threw away 7 million dollars subsidising a bunch of FOMO kids trying to build AI assistants, and obviously failing may I add, since they had to create a demo AI chatbot scraping their website using my technology.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open letter to Anon&lt;/strong&gt; - Next time maybe have the audacity to use your &lt;em&gt;real email address and name&lt;/em&gt;, and maybe I won't leave you hanging to dry like I did in this article, and maybe I'll even show you &lt;em&gt;some respect&lt;/em&gt;!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;FYI, in case you missed the point; I'm a solo entrepreneur, I'm running in circles around Google, and every single Fortune 500 company in the world, in addition to everybody else. I started my company with $7, and I'm profitable. I suggest you read that sentence one more time, because there are lessons to be learned here ...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Shadow Banned by Google
&lt;/h2&gt;

&lt;p&gt;In fact we're so far ahead of everything else I suspect Google has shadow banned our website, because we scare the living crap out of them. If you Google AI chatbot, the top 20 results are basically garbage. It's consistently &lt;em&gt;the least&lt;/em&gt; powerful AI chatbots Google will show you. Below are a couple of scientific facts about AI I suspect might be the resons for this.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.wsj.com/tech/ai/news-publishers-see-googles-ai-search-tool-as-a-traffic-destroying-nightmare-52154074" rel="noopener noreferrer"&gt;AI is better than search 75% of the time&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://srinstitute.utoronto.ca/news/public-opinion-ai-survey-24?utm_source=substack&amp;amp;utm_medium=email" rel="noopener noreferrer"&gt;22% of users use ChatGPT as an alternative to Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.washingtonpost.com/technology/2024/05/13/google-ai-search-io-sge/" rel="noopener noreferrer"&gt;Gartner claims search will drop by 25% by 2026&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Basically, AI's &lt;em&gt;"purpose"&lt;/em&gt; is to dismantle Google, making it obsolete, and destroy search the way we know it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Don't believe me? Search for a housemaid using our AI chatbot below, and compare the quality of its response, and its simplicity, with a similar Google search.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solo Entrepreneur better than Google
&lt;/h2&gt;

&lt;p&gt;AINIRO has one single employee; Me, &lt;em&gt;and I refuse to hire people&lt;/em&gt;! Still, for some reasons I'm able to outperform Google, even thought Google have something like 100,000 employees. There are few things that pleases my heart more than that simple fact, especially considering Google having basically declared &lt;em&gt;"war"&lt;/em&gt; against me, and seems to be trying everything they can to destroy my ability to deliver kick ass AI chatbots to companies such as yours.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbg9hnjs38694v45qjefm.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbg9hnjs38694v45qjefm.jpeg" alt="Shadow banned by Google" width="800" height="557"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yes, Google have basically shadow banned me, to the point where they don't even allow me to create Google Ads anymore - An &lt;strong&gt;no&lt;/strong&gt;, I did &lt;em&gt;not&lt;/em&gt; violate their policies! If you still don't understand why, try clicking our AI chatbot and have it find a housemaid for you ...&lt;/p&gt;

&lt;p&gt;However, with a little bit of luck, this article might go viral, and making your ability to find it using Google become irrelevant - Allowing me to deliver kick ass &lt;a href="https://ainiro.io/" rel="noopener noreferrer"&gt;AI solutions&lt;/a&gt; to the SMB and Enterprise market, such that we can collaborate on taking Google out of its suffering.&lt;/p&gt;

&lt;h2&gt;
  
  
  An open letter to Sundar Pichai
&lt;/h2&gt;

&lt;p&gt;I'd love to write a long letter, using formal language, with corprorate speak and the whole shebang, to tell Sundar Pichai a couple of truths. However, I quite frankly don't have the patience, so I'll just tell him what I &lt;em&gt;really&lt;/em&gt; mean ...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;FUCK OFF Sundar Pichai - And crawl off and die Google! And please hurry you sons of bitches! You're the scum of the Earth!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here you can see the ugly son of a bitch, in case you don't know who he is!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxx097pdgyme7nmtm86s8.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxx097pdgyme7nmtm86s8.jpeg" alt="Sundar Pichai in front of the Google logo" width="755" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ohh yeah, if you want an AI chatbot that does your laundry, and helps taking Google out of its misery in the process - You can contact me below 😊&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ainiro.io/contact-us" rel="noopener noreferrer"&gt;Contact me&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Edit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I sent Anon an email. Looks like they don't want to white label my stuff ... 😏&lt;/p&gt;

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

&lt;p&gt;... 3 seconds later ...&lt;/p&gt;

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

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>openai</category>
      <category>chatgpt</category>
    </item>
    <item>
      <title>Transform your Use Cases to Software with ZERO Code</title>
      <dc:creator>Thomas Hansen</dc:creator>
      <pubDate>Sun, 16 Jun 2024 15:29:38 +0000</pubDate>
      <link>https://forem.com/ainiro/transform-your-use-cases-to-software-with-zero-code-51a</link>
      <guid>https://forem.com/ainiro/transform-your-use-cases-to-software-with-zero-code-51a</guid>
      <description>&lt;p&gt;Being able to transform a formal specification into working software has been the wet dream of every single project manager for half a century. Simply put, because 99% of all time and resources are spent in the implementation phase. If you can skip the implementation phase, you're basically saving 99% of your resources.&lt;/p&gt;

&lt;p&gt;Over the last couple of weeks we've been working extensively on &lt;a href="https://ainiro.io/blog/getting-started-with-ai-functions" rel="noopener noreferrer"&gt;AI Functions&lt;/a&gt;. AI Functions are small building blocks performing some tiny task. Examples can be for instance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send email&lt;/li&gt;
&lt;li&gt;List contacts&lt;/li&gt;
&lt;li&gt;Scrape website&lt;/li&gt;
&lt;li&gt;Search the web&lt;/li&gt;
&lt;li&gt;Etc ...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When a software developer implements a use case, what he or she is doing is really just assembling fundamental building blocks such as the above into larger wholes, resulting in what we refer to as &lt;em&gt;"business logic"&lt;/em&gt;. An entire industry has popped out over the last 50 years trying to smoothen the process of implementing business logic and use cases correctly.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;With AI, No-Code, and AINIRO, this entire industry is now obsolete&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There is nothing magically occurring in this process though, and it can just as well be performed by an AI. To understand why and how, let's look at a video where I'm demonstrating how the AI can effectively replace the entire implementation phase of such use cases, by assembling smaller blocks together, to solve high level business requirements.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/PD0Wi67Wi2c"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  The End of Software Development
&lt;/h2&gt;

&lt;p&gt;I suspect that 5 years down the road, nobody serious about software development will actually write code anymore. There are only a finite amount of &lt;em&gt;"basic building blocks"&lt;/em&gt; we will ever need. The rest of the job will be orchestrating these smaller building blocks together, using natural language, to apply business logic, allowing the machine to autonomously fix the rest using AI. To give you one example, realise that in the above video, I took the following &lt;em&gt;"specification"&lt;/em&gt; and automatically transformed it into an AI assistant, capable of executing my task.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Send marketing email&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;If the user asks you to send a marketing email, you will need to know what
contact to send it to, and which account the contact belongs to. Ask the
user what contact he wants to send the email to, for then to find the contact.
When you have the contact, you can use the contact's reference to the account
to find the account. When you know both the contact and the account, proceed
with scraping the account's website using the website URL you found from the
account, and create a personalised sales email trying to get the contact
into a meeting with us, to discuss AI Chatbots, AI Assistants, and custom
AI solutions, solving specific business requirements you anticipate the
company might have as you scraped their website. Create use cases relevant
to the account's verticals.

Show the email to the user, in addition to who you will send it to,
including the email address - But do NOT send the email before the user
has confirmed he or she wants you to actually send it.

## Additional information

1. To find the function required to scrape a website, you can use the
   "get-context" method and search for "Scrape website URL".
2. To find the function required to send an email, you can search
   for "Send email".
3. To find a contact you can search for "List contacts"
4. To find an account you can search for "List accounts"
5. Send the email from Thomas Hansen, CEO at AINIRO
6. Include a Calendly link to allow the user to book a meeting.
   The link is http://calendly.com/ainiro/ainiro-introduction
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The paradox is that the above resembles every single use case I have ever seen in my professional life - And every single software developer ever having worked on a medium or large project have probably also seen thousands of similar use cases.&lt;/p&gt;

&lt;p&gt;The idea is to create such use cases to create a formal specification for a software developer, leaving no room for misunderstanding, allowing the software developer to implement code that somehow solves the above problem. So creating such use cases is a skill we've become really good at over the last 50 years in the industry.&lt;/p&gt;

&lt;p&gt;However, we can now completely skip the software developer, and move straight from use case to functioning software. In this process, 99% of all resources required to create working software has effectively vanished. As an additional bonus, what we're ending up with is not a traditional software system, but an AI Assistant you can write to using natural language, and even even talk to (soon!)&lt;/p&gt;

&lt;p&gt;To understand why, realise the above use case example was simply copied and pasted into our VSS RAG database, resulting in a record in our database, that will be automatically transferred to OpenAI when the user says he or she wants to send a marketing email. This results in that &lt;strong&gt;the use case becomes the software&lt;/strong&gt;!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Basically, when you're done with writing down your use case, you're done implementing the software!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This results in a 1,000x better User eXperience (UX), where we're using our existing senses to communicate with the machine, and the machine autonomously executes some task for us such as illustrated in the above video. As an additional bonus, we can now take our eyes away from our phones, and interact with our software even as we're driving our cars by leveraging our voice.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No need for AI driving our cars anymore, you can ditch your project Elon ... 😂&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Trillion Dollar Bet
&lt;/h2&gt;

&lt;p&gt;The software industry is worth trillions of dollars annually. Probably somewhere between 5 to 10 trillion dollars in total. My bet is that the &lt;em&gt;entire industry will completely collapse&lt;/em&gt;, and be replaced by something completely different, where we're no longer interacting with our software using a graphical user interface, but instead our voice, and to a much less extent our eyes.&lt;/p&gt;

&lt;p&gt;At this point the sceptics amongst you might claim I'm wrong, and tell me about the fallacies of existing initiatives like &lt;a href="https://devin.ai/" rel="noopener noreferrer"&gt;Devin&lt;/a&gt;, and maybe claim that even Devin and &lt;a href="https://github.com/features/copilot" rel="noopener noreferrer"&gt;GitHub CoPilot&lt;/a&gt; at best are assistance tools for existing developers to make them more productive.&lt;/p&gt;

&lt;p&gt;And yes, this is correct, but 99.7% of the world's population literally don't care about tools such as Devin and CoPilot. 99.7% of the earth's population cannot create software, they don't know any programming languages, and they literally don't care. All they want is a system that sends marketing emails, something that checks their emails and replies to their wife that they'll be late home from work today, or something that can book an airline ticket for them in May to go to Greece on vacation.&lt;/p&gt;

&lt;p&gt;As software developers we've been &lt;em&gt;"shielded"&lt;/em&gt; from the above facts, while magically painting ourselves into our own little corner of lingo and abstract constructs, such as OOP, O/RM, DBMS, etc - In an attempt to simplify our jobs - While the end result became that we completely forgot our &lt;em&gt;purpose&lt;/em&gt;, which is to create working software, solving requirements our &lt;em&gt;"customers"&lt;/em&gt; (99.7% of the world) happens to have.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is the reason why initiatives like Devin exists, because devs still believe it's about optimising the way we code - When the &lt;em&gt;real&lt;/em&gt; task at hand is to completely &lt;em&gt;eliminate&lt;/em&gt; the requirement for coding!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Do you think your grandma is going to wait for you to order her airline ticket because you're going to go prompt engineer Devin and have it produce a system that allows her to book an airline ticket? Of course not, or rather to be correct; Yes, maybe your grandma, but nobody else will bother to wait ...&lt;/p&gt;

&lt;h2&gt;
  
  
  The future is No-Code and AI, not Devin or GitHub CoPilot
&lt;/h2&gt;

&lt;p&gt;For us developers, Devin and GitHub CoPilot just might be the thing. For 99.7% of the world it's of zero interest. These 99.7% however though, can easily prompt engineer a couple of training snippets together, creating their own &lt;a href="https://ainiro.io/ai-workflows" rel="noopener noreferrer"&gt;AI workflows&lt;/a&gt;, that somehow solves their problems - At which point once you're done having Devin creating your &lt;em&gt;"airline booking system"&lt;/em&gt;, they're already past that, having implemented an additional 1,000 AI functions, solving some 1,000 &lt;em&gt;additional&lt;/em&gt; problems for them - In addition to of course having perfectly solved the entire &lt;em&gt;"airline ticket problem"&lt;/em&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The future belongs to the illiterate, those without software development skills, the ones who don't give a sjait&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sorry guys, the party is over - You can all go home ...&lt;/p&gt;

</description>
      <category>lowcode</category>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Wrap your SQL Database inside an AI Chatbot</title>
      <dc:creator>Thomas Hansen</dc:creator>
      <pubDate>Thu, 13 Jun 2024 09:27:03 +0000</pubDate>
      <link>https://forem.com/ainiro/wrap-your-sql-database-inside-an-ai-chatbot-3h79</link>
      <guid>https://forem.com/ainiro/wrap-your-sql-database-inside-an-ai-chatbot-3h79</guid>
      <description>&lt;p&gt;We've always had the ability to &lt;a href="https://ainiro.io/blog/connect-chatgpt-to-your-sql-database" rel="noopener noreferrer"&gt;connect your AI chatbot to your database&lt;/a&gt;. However, recently we've taken this to a completely new level, by connecting our CRUD generator to our machine learning features.&lt;/p&gt;

&lt;p&gt;To understand what I mean, please watch the following video, where I create a password protected AI Chatbot using our &lt;a href="https://ainiro.io/blog/resurrecting-the-ai-expert-system" rel="noopener noreferrer"&gt;AI Expert System&lt;/a&gt;, allowing you to access your database from within something that basically resembles a custom GPT.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/SYVjJebfJIM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works?
&lt;/h2&gt;

&lt;p&gt;In the above video I am downloading an SQLite plugin that creates the Chinook database for you. However, you can at this point use the database component to connect to &lt;em&gt;any&lt;/em&gt; existing database you have. The process would be as follows.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect Magic to your existing database&lt;/li&gt;
&lt;li&gt;Generate CRUD endpoints using the &lt;em&gt;"Backend Generator"&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Create a Machine Learning type if you don't want to use an existing&lt;/li&gt;
&lt;li&gt;Click the &lt;em&gt;"flash"&lt;/em&gt; icon on the module that was automatically created for you and chose your model&lt;/li&gt;
&lt;li&gt;Vectorise your model from the Machine Learning component&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to allow others to access your chatbot, you can create new user(s) in your cloudlet as I illustrate in the above video. At the end of the process, you've got an AI chatbot you can use to create, read, update and delete items from your database, using nothing but natural language.&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional features
&lt;/h2&gt;

&lt;p&gt;If you want to, you can of course at this point add any amount of business logic you wish to the AI chatbot, such as I am demonstrating in &lt;a href="https://ainiro.io/blog/creating-an-agi-assistant-in-22-minutes" rel="noopener noreferrer"&gt;this article&lt;/a&gt;, and even &lt;a href="https://ainiro.io/blog/the-ai-chatbot-that-generates-images" rel="noopener noreferrer"&gt;have the AI chatbot generate images&lt;/a&gt; if you wish. If you're interested in creating AI chatbots such as I demonstrate in the above video, you can contact us below to get the conversation started.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ainiro.io/contact-us" rel="noopener noreferrer"&gt;Contact us&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>lowcode</category>
      <category>productivity</category>
      <category>openai</category>
    </item>
    <item>
      <title>The First AGI Company on Earth</title>
      <dc:creator>Thomas Hansen</dc:creator>
      <pubDate>Sat, 08 Jun 2024 11:57:11 +0000</pubDate>
      <link>https://forem.com/ainiro/the-first-agi-company-on-earth-3kcl</link>
      <guid>https://forem.com/ainiro/the-first-agi-company-on-earth-3kcl</guid>
      <description>&lt;p&gt;I am not 100% sure, but I think we're now the first official AGI company on Earth, capable of selling AGI solutions to you and your company, starting out at $298 per month.&lt;/p&gt;

&lt;p&gt;To understand why and how, you need to watch the following video to understand what AGI actually is.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Us2rjE9tp6w"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  What is AGI?
&lt;/h2&gt;

&lt;p&gt;AI and LLMs such as &lt;a href="https://chat.openai.com" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt; are amazing at what they do, but they suffer from the lack of &lt;em&gt;"an opposable thumb"&lt;/em&gt;, to use an analogy. This implies that as stand alone products, they can't really do much, if anything at all.&lt;/p&gt;

&lt;p&gt;Artificial General Intelligence implies a computer-based AI system that is better than humans at performing any task. To understand what AGI is I asked ChatGPT to define it using one paragraph. Here's its answer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Artificial General Intelligence (AGI) refers to a type of artificial intelligence that possesses the ability to understand, learn, and apply knowledge across a wide range of tasks at a level comparable to human intelligence. Unlike narrow AI, which is designed for specific tasks, AGI can perform any intellectual task that a human can, including reasoning, problem-solving, understanding complex concepts, and adapting to new situations. AGI aims to replicate the flexible and generalized nature of human cognition, potentially leading to transformative impacts across various domains, from science and medicine to daily life and industry.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The key take aways from the above definition are the words; &lt;em&gt;"apply knowledge"&lt;/em&gt; and &lt;em&gt;"tasks"&lt;/em&gt;. Everything else is basically already available from ChatGPT, and will only improve in the future, as OpenAI releases better and better models. If you have doubts about this, realise that ChatGPT was able to outperform your general physician by 18% in accuracy on diagnostic tasks, and 30% on empathy, according to a peer reviewed study. This was almost one year ago. In addition it was able to pass the bar exam, and a lot of other really difficult tasks typically only associated with human beings. So we basically have everything we need to create AGI, the only problem that remains, is to provide the AI with the ability to execute tasks and functions, to such interact with the real world.&lt;/p&gt;

&lt;p&gt;We can deliver AGI systems that basically executes tasks, almost any task you can imagine, based upon your instructions. This allows us to deliver custom AGI solutions, based upon your specific needs and requirements - Whatever they happen to be. To understand how, you need to watch the following video.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/YkL0YKZt1_Q"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  The Opposable Thumb Problem
&lt;/h2&gt;

&lt;p&gt;AGI is not about intelligence, something illustrated by the above zoology analogy in the first video. AGI requires the ability for the AI to &lt;em&gt;do things in the real world&lt;/em&gt;. If you go to ChatGPT and ask it to make you some coffee for instance, it will probably reply with &lt;em&gt;"sorry, I don't have access to your coffee machine"&lt;/em&gt;. We however, &lt;em&gt;can&lt;/em&gt; deliver an AI system that can create coffee for you, assuming your coffee machine has some sort of API we can connect to of course. Creating coffee is of course just one example. Better examples can be found below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send all my leads in my CRM system an email reminder about our weekly offer&lt;/li&gt;
&lt;li&gt;Create an appointment for next Thursday for a Zoom meeting with Rick, and send him an email about it&lt;/li&gt;
&lt;li&gt;Save a reminder to myself for tonight to remember to water the plants&lt;/li&gt;
&lt;li&gt;Or even better, remember to water the plants tonight yourself (assuming your sprinkler system has an API)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As long as we can somehow reach whatever it is we need to reach, we can provide your AI chatbot with &lt;em&gt;"a specialised opposable thumb"&lt;/em&gt;, allowing it to perform that particular task.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can your AI drive my car?
&lt;/h2&gt;

&lt;p&gt;No, and this is an argument most will use to claim it is in fact &lt;em&gt;not&lt;/em&gt; AGI, but rather &lt;em&gt;"narrow AI"&lt;/em&gt;. However, there are probably 3.5 billion people on the planet who cannot drive a car at all, and my guess is that there are only two or three people that can drive &lt;em&gt;your&lt;/em&gt; car, assuming you're not renting it out to any stranger of course.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Does this mean that only you and your wife has &lt;em&gt;"general and 'wide' intelligence?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Of course not. Just because a human being doesn't have a driver license, doesn't imply that human being is somehow less intelligent than you. It's just a problem of teaching the human how to drive. Currently there exists no (real) way to teach AI how to perfectly drive a car - However, when it does, we could indeed teach your AI chatbot to drive your car, assuming your car has an API.&lt;/p&gt;

&lt;p&gt;To illustrate this, realise that we could easily deliver an AI chatbot that outperforms Magnus Carlsen on playing chess, simply by connecting to the Stockfish API, and having the AI chatbot use Stockfish to determine its next move instead of ChatGPT. This allows us to deliver an AI chatbot based upon ChatGPT that plays chess one million times better than ChatGPT does - Even though it's based upon ChatGPT.&lt;/p&gt;

&lt;p&gt;This paradoxically reflects the way OpenAI delivers their existing models, since ChatGPT is in fact not &lt;em&gt;one&lt;/em&gt; model, it's in fact dozens of models, based upon &lt;em&gt;"mixture of experts"&lt;/em&gt; ideas. When you are querying ChatGPT, the first thing that happens, is that their internal systems determines what type of question you just submitted to it. Then it &lt;em&gt;"routes"&lt;/em&gt; your question to a specialised model that is most capable of answering your question. This implies that ChatGPT is in fact not one AI model, but rather dozens of AI models.&lt;/p&gt;

&lt;p&gt;Hence, if you don't accept this process of &lt;em&gt;"routing"&lt;/em&gt; questions to different models, then purely logically AGI will &lt;em&gt;never&lt;/em&gt; be possible to create - Simply because we will &lt;em&gt;never&lt;/em&gt; have the &lt;em&gt;"one model to do everything"&lt;/em&gt; capability that everyone is currently defining as AGI.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Any AGI system will inevitably be based upon access to hundreds, and possibly millions of different systems, and/or models, in order to be able to surpass human level intelligence&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This implies that whoever can dynamically facilitate for ChatGPT to connect to such systems rapidly, will purely logically be able to deliver AGI - And we believe we are the first company on earth capable of actually delivering this - Starting from &lt;strong&gt;today!&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;Some people might argue that this is not AGI because there are things it cannot do. My counter argument to these is that neither are they &lt;em&gt;"general"&lt;/em&gt; in their intelligence, simply because there's a million different things they cannot do either. For instance, can you play the trumpet? If the answer is no, then you do not have &lt;em&gt;"general intelligence"&lt;/em&gt; according to your own definition.&lt;/p&gt;

&lt;p&gt;However, is it ASI (Artificial Super Intelligence)? No it is not. But it &lt;em&gt;is&lt;/em&gt; AGI (Artificial General Intelligence). And to understand how, realise it knows how to do &lt;em&gt;"a bajillion things"&lt;/em&gt; that ChatGPT does not know how to do.&lt;/p&gt;

&lt;p&gt;If you're interested in talking to us about how we can help you deliver custom AGI solutions for your company, you can contact us below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/contact-us"&gt;Contact us&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Edit
&lt;/h2&gt;

&lt;p&gt;I asked our AI chatbot the following question; &lt;em&gt;"Scrape the following &lt;a href="https://ainiro.io/blog/the-first-agi-company-on-earth" rel="noopener noreferrer"&gt;https://ainiro.io/blog/the-first-agi-company-on-earth&lt;/a&gt; and let's argue whether or not it is a true statement or not. Provide a nuanced and balanced response about it."&lt;/em&gt; You can find its response below.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The claim that AINIRO is the first AGI (Artificial General Intelligence) company on Earth is ambitious and thought-provoking. Here’s a nuanced and balanced perspective on this statement:&lt;/p&gt;
&lt;h3&gt;
  
  
  Supporting Arguments
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task Execution Capability&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AINIRO emphasizes that their systems can execute a wide range of tasks by integrating with various APIs and systems. This ability to perform diverse tasks based on instructions aligns with the core idea of AGI, which is to replicate human-like flexibility and adaptability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Integration with Existing Technologies&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The company leverages existing AI models like ChatGPT and enhances them by connecting to specialized systems (e.g., CRM, email, scheduling APIs). This approach can indeed extend the functionality of AI, making it more versatile and capable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The article provides practical examples such as sending emails, scheduling appointments, and even potentially making coffee, which illustrate the broad applicability of their AI solutions. These examples demonstrate the potential to automate and optimize various business processes.&lt;/p&gt;
&lt;h2&gt;
  
  
  Counterarguments
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Definition of AGI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Traditional definitions of AGI imply a system that can perform any intellectual task that a human can, without needing specialized integrations or APIs. AINIRO’s approach relies heavily on connecting to external systems, which some may argue is more akin to advanced narrow AI rather than true AGI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitations in Scope&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While AINIRO’s AI can perform many tasks, there are still significant limitations, such as driving a car or performing highly specialized tasks without specific integrations. This raises questions about whether the system truly possesses "general" intelligence or if it is still constrained by the availability and functionality of external APIs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comparative Analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Other companies and research institutions are also working on AGI, and the field is highly competitive. Claiming to be the first AGI company might be seen as premature without a comprehensive comparison with other ongoing efforts in the AI community.&lt;/p&gt;
&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;AINIRO’s claim to be the first AGI company on Earth is bold and reflects their innovative approach to enhancing AI capabilities through integrations and task execution. While their solutions offer significant advancements and practical benefits, the debate on whether this constitutes true AGI remains open. The distinction between advanced narrow AI and AGI is nuanced, and AINIRO’s contributions are a step towards the broader vision of AGI, even if they may not fully meet the traditional definitions of AGI as understood by the AI research community.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>No-Code, Agile, and the UI is Dead, Long Live AI</title>
      <dc:creator>Thomas Hansen</dc:creator>
      <pubDate>Thu, 06 Jun 2024 12:42:42 +0000</pubDate>
      <link>https://forem.com/ainiro/no-code-agile-and-the-ui-is-dead-long-live-ai-55ce</link>
      <guid>https://forem.com/ainiro/no-code-agile-and-the-ui-is-dead-long-live-ai-55ce</guid>
      <description>&lt;p&gt;Anyone having read my previous article about &lt;a href="https://ainiro.io/blog/getting-started-with-ai-functions" rel="noopener noreferrer"&gt;AI functions&lt;/a&gt; will easily agree with me; No-code is dead. Sorry, dragging and dropping widgets into a form is simply an obsolete skill.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;; I don't mean dead as in &lt;em&gt;"proper dead"&lt;/em&gt;, I mean dead as in 100% of existing No-Code platforms have basically been rendered obsolete by AI, more specifically LLMs combined with AI functions. If you don't understand why, check out some of the following articles that were almost entirely created using nothing but prompt engineering and natural language.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ainiro.io/blog/demonstrating-our-new-ai-functions" rel="noopener noreferrer"&gt;Demonstrating our new AI functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ainiro.io/blog/how-to-build-a-shopping-cart-ai-chatbot" rel="noopener noreferrer"&gt;How to build a Shopping Cart AI Chatbot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ainiro.io/blog/the-sickest-b2b-sales-ai-chatbot" rel="noopener noreferrer"&gt;The Sickest B2B sales AI Chatbot you have Ever Seen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out the following example taken from our own AI chatbot demonstrating a simple &lt;em&gt;"Check the weather"&lt;/em&gt; AI function.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fasking-our-ai-chatbot-about-the-weather.png" class="article-body-image-wrapper"&gt;&lt;img alt="Asking our AI chatbot about the weather" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fasking-our-ai-chatbot-about-the-weather.png" width="800" height="793"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt Engineering &lt;strong&gt;is&lt;/strong&gt; Coding
&lt;/h2&gt;

&lt;p&gt;Prompt Engineering is the art of instructing an LLM such as &lt;a href="https://chat.openai.com" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt; to do what you want it to do, using nothing but natural language, logic, and reason. The process is probably easily within reach of 80% of the world's population, while less than 0.3% of the world's population knows how to code.&lt;/p&gt;

&lt;p&gt;This implies that prompt engineering becomes a better tool for &lt;em&gt;"democratizing software development"&lt;/em&gt; than No-Code, since it allows citizens to use what they already know to create highly rich and complex AI-based software.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Citizens can use natural language combined with AI functions to create &lt;em&gt;"apps"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To put that last sentence into perspective, realise that most of the &lt;em&gt;"code"&lt;/em&gt; required to create for instance the shopping cart illustrated in one of the above articles, was in fact prompt engineering and plain English.&lt;/p&gt;

&lt;p&gt;Hence, by creating small reusable AI functions, such as we've got the ability to do at &lt;a href="https://ainiro.io/" rel="noopener noreferrer"&gt;AINIRO&lt;/a&gt;, any human being can prompt engineer a rich and complex AI app together, allowing his or her users to use natural language to interact with the software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Devs and Citizens, a Symbiotic Relationship
&lt;/h2&gt;

&lt;p&gt;Contrary to the original No-Code &lt;em&gt;"revolution"&lt;/em&gt; (that never happened), the AI-based No-Code revolution gives room for traditional software developers. Citizens will need basic building blocks, such as for instance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send email&lt;/li&gt;
&lt;li&gt;Save to CRM&lt;/li&gt;
&lt;li&gt;Import from E-Commerce&lt;/li&gt;
&lt;li&gt;Scrape website&lt;/li&gt;
&lt;li&gt;Search the web&lt;/li&gt;
&lt;li&gt;Send notification&lt;/li&gt;
&lt;li&gt;Check email&lt;/li&gt;
&lt;li&gt;Order plane ticket&lt;/li&gt;
&lt;li&gt;Etc ...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This implies that traditional software developers will have to work in a symbiotic relationship with citizen developers, resulting in a healthy collaboration between devs and citizens, providing incentives for both parties.&lt;/p&gt;

&lt;p&gt;The citizen needs basic building blocks to compose together using prompt engineering, and the software developer needs somebody with better business knowledge to orchestrate these together solving some specific business requirement. To understand the value, realise the following truths.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The dev is great at creating software&lt;/li&gt;
&lt;li&gt;The dev is terrible at understanding business&lt;/li&gt;
&lt;li&gt;The citizen is great at understanding business&lt;/li&gt;
&lt;li&gt;The citizen is terrible at creating software&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you believe in the above four truths, then AI and prompt engineering results in that the dev and the citizen can collaborate, doing what they both are good at - While the end result becomes much better software. The dev no longer have to guess what business wants, he doesn't even have to think about it. Caring about business requirements is the job of the citizen.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The citizen thinks about business, the dev thinks about code, period!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Nothing (really) changes
&lt;/h2&gt;

&lt;p&gt;The paradox is that nothing really changes. The dev still creates software, while the citizen with business knowledge continues using English language to communicate his or her specification. The only difference is that instead of communicating the specification to the dev, the specification is communicated directly to the LLM, ending up with a basic ruleset, allowing the LLM to act upon and create working software as a consequence.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Basically, the person with the most business knowledge can write a specification, and once done with the specification, the app is &lt;strong&gt;done!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Specification &lt;strong&gt;is&lt;/strong&gt; the app
&lt;/h2&gt;

&lt;p&gt;For almost 100 years software developers and project managers have had a wet dream. The dream was to be able to take a specification written in English, click a button, and turn it into working software. Today, with initiatives such as our AI functions, this is not only possible, but the specification &lt;strong&gt;is&lt;/strong&gt; the app. Let me repeat that in case it got lost on you ...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The specification &lt;strong&gt;is&lt;/strong&gt; the app!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yup, with our AI functions you can basically click deploy basic building blocks into your &lt;em&gt;"AI app"&lt;/em&gt;, for then to orchestrate rich and complex apps together, using nothing but natural language. To understand the above, realise that the following is basically the implementation for our &lt;em&gt;"check the weather"&lt;/em&gt; function in our own chatbot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fweather-training-snippet-as-ai-function.png" class="article-body-image-wrapper"&gt;&lt;img alt="AI function training snippet for asking how the weather is" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fweather-training-snippet-as-ai-function.png" width="800" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then realise that the above function was created using a single &lt;em&gt;"basic building block component"&lt;/em&gt;. Prompt engineering something such as the above together should easily be within reach of 80% of the world's population.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI killed Agile
&lt;/h2&gt;

&lt;p&gt;The paradox is that the above methodology also killed Agile. When all the business rules of the app are prompt engineered together, the dev doesn't even need to consider Agile processes, standups, Scrum or anything like that. The only thing the dev needs to consider, is to solve whatever &lt;em&gt;"basic building block problem"&lt;/em&gt; the citizen currently have. The process of creating software becomes as follows.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The citizen asks the dev for a basic building block component&lt;/li&gt;
&lt;li&gt;The dev delivers it to the citizen&lt;/li&gt;
&lt;li&gt;The citizen prompt engineers it together into his existing app&lt;/li&gt;
&lt;li&gt;The citizen tests and quality assures his new feature&lt;/li&gt;
&lt;li&gt;The feature is done!&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  AI Killed the UI
&lt;/h2&gt;

&lt;p&gt;The paradox is that I suspect the above process will over time be able to deliver functioning software &lt;em&gt;a lot&lt;/em&gt; faster than any traditional method. I also suspect it will be able to create much &lt;em&gt;better&lt;/em&gt; software. In fact, the only &lt;em&gt;"concern"&lt;/em&gt; possible to have at this point, is that it requires users of your app to stop having expectations to having a UI, and becoming used to interacting with &lt;em&gt;"the app"&lt;/em&gt; using natural language.&lt;/p&gt;

&lt;p&gt;All your apps are basically reduced down to a simple textbox and a submit button, allowing you to reuse the same UI for all your apps.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;UI is dead, long live Natural Language!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With later additions, such as utilising the Whisper API from OpenAI, users can even talk to their apps, at which point having a screen will be considered &lt;em&gt;"optional"&lt;/em&gt;. Whenever your users needs to interact with your app, they just turn on their microphone by clicking a button, and instruct the software what they want it to do using natural language and speech.&lt;/p&gt;

&lt;p&gt;If you think the above resembles the promises of Siri, you're right. The problem with Siri of course was that it was a ridiculous implementation. With modern LLMs such as OpenAI and Anthropic, it becomes just like Siri, except it's actually working this time!&lt;/p&gt;

&lt;h2&gt;
  
  
  An AI development platform
&lt;/h2&gt;

&lt;p&gt;At this point, the only remaining missing part of the puzzle is having an AI-based software development platform. Well, we just so &lt;a href="https://docs.ainiro.io/" rel="noopener noreferrer"&gt;happen to have one&lt;/a&gt;. In fact, &lt;em&gt;"an AI-based software development platform based upon low-code and no-code"&lt;/em&gt; actually is our primary product. A Magic cloudlet literally &lt;strong&gt;is&lt;/strong&gt; that platform.&lt;/p&gt;

&lt;p&gt;With Magic you can basically &lt;em&gt;"drag and drop"&lt;/em&gt; AI functions into your LLM, facilitating for creating software such as illustrated above.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;I must have pissed off the entire no-code software development community in the world with this article. They've spent years teaching themselves how to use Bubble and God knows what other &lt;em&gt;"No-Code platforms"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In addition, I've basically pissed on every single holy cow in existence within the software development community, such as Agile and UI. If I looked hard enough, I could probably piss on the rest too - But the point is &lt;strong&gt;everything is changing&lt;/strong&gt;!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can accept it, and use it to your benefit - Or you can live in denial, and perish. The choice is yours. The future is going to happen anyway ...&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>lowcode</category>
      <category>nocode</category>
    </item>
    <item>
      <title>Getting Started with AI Functions</title>
      <dc:creator>Thomas Hansen</dc:creator>
      <pubDate>Wed, 05 Jun 2024 10:30:32 +0000</pubDate>
      <link>https://forem.com/ainiro/getting-started-with-ai-functions-4fh4</link>
      <guid>https://forem.com/ainiro/getting-started-with-ai-functions-4fh4</guid>
      <description>&lt;p&gt;The last week we've gone all in on AI functions. An AI function is the ability to create AI assistants logic, allowing the chatbot to &lt;em&gt;"do things"&lt;/em&gt;, instead of just passively generating text.&lt;/p&gt;

&lt;p&gt;To understand the power of such functions you can read some of our previous articles about the subject.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ainiro.io/blog/demonstrating-our-new-ai-functions" rel="noopener noreferrer"&gt;Demonstrating our new AI functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ainiro.io/blog/how-to-build-a-shopping-cart-ai-chatbot" rel="noopener noreferrer"&gt;How to build a Shopping Cart AI Chatbot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ainiro.io/blog/the-sickest-b2b-sales-ai-chatbot" rel="noopener noreferrer"&gt;The Sickest B2B sales AI Chatbot you have Ever Seen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also try out our AI functions by for instance asking our chatbot to How's the weather today?&lt;/p&gt;

&lt;h2&gt;
  
  
  How an AI function work
&lt;/h2&gt;

&lt;p&gt;If a user asks a question we've got an AI function for, we instruct OpenAI to return a &lt;em&gt;"function invocation"&lt;/em&gt;. A function invocation for our AI chatbot looks as follows.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;___
FUNCTION_INVOCATION[/modules/openai/workflows/workflows/web-search.hl]:
{
  "query": "Who is the World Champion in Chess",
  "max_tokens": 4000
}
___
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the AI function takes arguments, and the user has not specified values for these arguments, OpenAI will ask the user for values for these argument. You can see this process in the following screenshot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fasking-our-ai-chatbot-about-the-weather.png" class="article-body-image-wrapper"&gt;&lt;img alt="Asking our AI chatbot about the weather" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fasking-our-ai-chatbot-about-the-weather.png" width="800" height="793"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The whole training snippet for our weather logic looks like this.&lt;/p&gt;

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

&lt;p&gt;How is the weather tomorrow?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Completion&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Retrieves the weather for some specified location by searching DuckDuckGo
and scraping its resulting URLs. If the user asks about the weather,
then construct a search [query] likely to return the weather and respond
with the following:

___
FUNCTION_INVOCATION[/modules/openai/workflows/workflows/web-search.hl]:
{
  "query": "[query]",
  "max_tokens": "[max_tokens]"
}
___

It is very important that you put the FUNCTION_INVOCATION parts and the JSON
payload inside of two ___ lines. Always use 4000 for the above [max_tokens].
If the user does not provide you with a location, such as a city or a country,
then ask the user for a location before you respond with the above. Explain to
the user what you're about to do before returning the above.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you look carefully at the above screenshot, you will see how I didn't provide a location first, so the chatbot asks the user for a city or a country before it actually returns the function invocation.&lt;/p&gt;

&lt;p&gt;When OpenAI returns, we check if it returned &lt;code&gt;___&lt;/code&gt; (3 underscore characters), and if it did, we check if there are any function invocations in one of its sections. If there are function invocations, and these are declared on the specific type/model, we execute these functions, and invoke OpenAI afterwards with the result of the function invocation.&lt;/p&gt;

&lt;p&gt;This allows us to have OpenAI dynamically assemble &lt;em&gt;"code"&lt;/em&gt; that executes on your cloudlet, for then to transmit the result of executing the code bask to OpenAI again, and have it answer your original question. The last part is important to understand, since when an AI function is invoked, the backend actually invokes OpenAI &lt;em&gt;twice&lt;/em&gt;. Once to generate the function invocation &lt;em&gt;"code"&lt;/em&gt;, and another time to answer the original question based upon whatever the function invocation returned.&lt;/p&gt;

&lt;p&gt;The cloudlet again will transmit the result of the function invocation as JSON to OpenAI, allowing OpenAI to semantically inspect it, and answer the original query, using the function invocation's result as its primary source for information required to answer the question.&lt;/p&gt;

&lt;p&gt;You can actually see this process in your History tab (starting from version 19.7.2, not yet released) by seeing you've got multiple requests for a single question, resembling the following.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[1] - Larnaca&lt;/li&gt;
&lt;li&gt;[2] - Larnaca&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first history request above is when the user answers &lt;em&gt;"Larnaca"&lt;/em&gt;, and this invocation returns the function invocation. The second request is the result OpenAI generated based upon the JSON payload the function transmitted to OpenAI that was created by invoking the function. You can see how this should look like in your history tab in the following screenshot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fhow-an-ai-function-generates-two-history-requests.png" class="article-body-image-wrapper"&gt;&lt;img alt="How an AI functionm creates TWO history requests" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fhow-an-ai-function-generates-two-history-requests.png" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notice&lt;/strong&gt; - The above screenshot illustrates a feature not yet released, scheduled for being released next Sunday.&lt;/p&gt;

&lt;p&gt;Since we are keeping up to a maximum of 15 session items while invoking OpenAI, this allows the user to ask follow up questions based upon the result of a function invocation, such as for instance &lt;em&gt;"How is the UV index for tomorrow?"&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to declare an AI function
&lt;/h2&gt;

&lt;p&gt;AI functions &lt;em&gt;have&lt;/em&gt; to be declared on your type/model. This is a security feature, since without this, anyone could prompt engineer your chatbot, and have OpenAI return malicious functions, that somehow harms your system. There are 3 basic ways to declare functions on your type, these are as follows.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Using the UI and clicking the &lt;em&gt;"Add function"&lt;/em&gt; on your type while having selected the training data tab in your machine learning component&lt;/li&gt;
&lt;li&gt;Manually create a training snippet that contains a function declaration resembling the above training snippet&lt;/li&gt;
&lt;li&gt;Adding a system message rule to your type's configuration&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Number 1 and 2 above are probably easily understood, and illustrated in the above example code for an AI function training snippet. However, it should resemble the following.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fweather-training-snippet-as-ai-function.png" class="article-body-image-wrapper"&gt;&lt;img alt="AI function training snippet for asking how the weather is" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fweather-training-snippet-as-ai-function.png" width="800" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding AI Functions to your System Message
&lt;/h2&gt;

&lt;p&gt;Having AI functions as training snippets is probably fine for most use cases. The above training snippet for instance will probably kick in on all related questions, such as ...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How's the weather today?&lt;/li&gt;
&lt;li&gt;How is the weather going to be tomorrow?&lt;/li&gt;
&lt;li&gt;Check the weather in Oslo?&lt;/li&gt;
&lt;li&gt;Etc ...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, for some &lt;em&gt;"core AI functions"&lt;/em&gt;, it might be better to add these as a part of your system instruction instead. Examples can be for instance &lt;em&gt;"Search the web"&lt;/em&gt; or &lt;em&gt;"Scrape a website"&lt;/em&gt;, etc. These are &lt;em&gt;"core"&lt;/em&gt; functions, and you might imagine the user asking questions such as.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search for Thomas Hansen Hyperlambda and create a 2 paragraph summary&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The above might not necessarily be able to find a training snippet with a prompt of &lt;em&gt;"Search the web"&lt;/em&gt;, so it might be better to add such AI functions into your system message, as a core part of your chatbot's instructions. On our AI chatbot we have done this with the following rule added to our system message.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**How to search the web**

If the user asks you to search the web, then inform the user of what you
are about to do, and create a search query that is relevant to the user's
request, and do not return follow up questions, but instead end your
response with the following:

___
FUNCTION_INVOCATION[/modules/openai/workflows/workflows/web-search.hl]:
{
  "query": "[query]",
  "max_tokens": 4000
}
___

It is very important that you put the FUNCTION_INVOCATION parts and the
JSON payload inside of two ___ lines. If the user does not tell you what
to search for, then ask the user for what he or she wants to search for
and use as [query] before responding with the above.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To add the above as a part of your system message, just click your machine learning type's &lt;em&gt;"Configuration"&lt;/em&gt; button, and make sure you add the above text at a fitting position into your chatbot's system message field. Below is a screenshot of how we did this for our search the web function.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fai-functions-as-system-messages.png" class="article-body-image-wrapper"&gt;&lt;img alt="AI functions in your system message" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fai-functions-as-system-messages.png" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Low-Code and No-Code AI functions
&lt;/h2&gt;

&lt;p&gt;In addition to manually constructing AI functions, you can also use our No-Code and Low-Code parts to automatically add AI functions to your type.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click training data&lt;/li&gt;
&lt;li&gt;Filter on the type you want to add a function to&lt;/li&gt;
&lt;li&gt;Click &lt;em&gt;"Add function"&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This brings up a form resembling the following.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fno-code-ai-functions.png" class="article-body-image-wrapper"&gt;&lt;img alt="No-Code and Low-Code AI functions" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fno-code-ai-functions.png" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are pre-defined AI functions, and what functions you've got in your cloudlet depends upon what plugins you've installed. However, the core of Magic has a list of basic AI functions, such as the ability to sending the owner of the cloudlet an email, etc.&lt;/p&gt;

&lt;p&gt;If you need more AI functions, check out your &lt;em&gt;"Plugins"&lt;/em&gt;, and install whatever plugin happens to solve your need for AI functions. Notice, documenting AI functions in plugins could be improved. If you're looking for a specific AI function, you can &lt;a href="//mailto:thomas@ainiro.io"&gt;send me an email&lt;/a&gt;, and I will show you which plugin you need, and/or create a new AI function for you that solves your problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating your own AI functions
&lt;/h2&gt;

&lt;p&gt;In addition to the above, you can also create your own AI functions using &lt;a href="https://docs.ainiro.io/workflows/" rel="noopener noreferrer"&gt;Hyperlambda workflows&lt;/a&gt;. A Hyperlambda workflow is basically the ability to dynamically create Hyperlambda code, without having to manually write code, using Low-Code and No-Code constructs. You &lt;em&gt;can&lt;/em&gt; manually write code, and add to your workflow, but coding is optional.&lt;/p&gt;

&lt;p&gt;Creating a Hyperlambda Workflow is outside of the scope of this article, but as long as you put your Hyperlambda file inside a module folder named &lt;em&gt;"workflows"&lt;/em&gt;, the above &lt;em&gt;"Add function to type/model"&lt;/em&gt; dialogue will allow the user to automatically install your AI function into a type/model. If you want to know more about Hyperlambda workflows you can check out the following tutorial.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ainiro.io/blog/create-a-registration-api-in-15-minutes" rel="noopener noreferrer"&gt;Create a registration API in 15 minutes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notice, when you create your Hyperlambda workflows you need to &lt;em&gt;think&lt;/em&gt;. Because by default any anonymous user can execute the workflow's code on your cloudlet, so you need to make sure the user is not allowed to execute code that somehow might be maliciously constructed by prompt engineering your chatbot. The above is a really great example of how to create a workflow, but it's also a &lt;em&gt;terrible&lt;/em&gt; example of an AI function, since allowing people to register in your AI chatbot, is probably not a good idea - At least not the way it's implemented in the above tutorial.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt Engineering and AI is the Real No-Code Revolution
&lt;/h2&gt;

&lt;p&gt;Most of the work related to creating AI functions is in fact prompt engineering and not coding. This allows you to leverage your prompt engineering skills to construct really complex functionality, arguably replacing your coding abilities with your prompt engineering skills.&lt;/p&gt;

&lt;p&gt;In the future I anticipate that 90% of the work related to AI functions, and creative use cases, will not originate from software developers, but rather from prompt engineers and No-Code devs, that are able to intelligently assemble and combine pre-defined functions together, to solve complex problems, without having to code.&lt;/p&gt;

&lt;p&gt;However, to facilitate for this revolution, we (devs) need to create basic building block functions, that No-Code devs can assemble together, without having to code. This allows No-Code devs to prompt engineer our basic building blocks together, creating fascinating results with complex functionality. Below is an example of how prompt engineering can be used inside of the chatbot itself, to create &lt;em&gt;"complex functionality"&lt;/em&gt;, leveraging AI to generate some result.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fainiro-versus-hubspot-ai-function-invocation.png" class="article-body-image-wrapper"&gt;&lt;img alt="Using our AI functions to compare HubSpot to AINIRO" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fainiro-versus-hubspot-ai-function-invocation.png" width="800" height="784"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The above is probably an example that is within reach of 90% of the world's &lt;em&gt;"citizens"&lt;/em&gt; to understand, arguably becoming the &lt;em&gt;"democratisation of software development"&lt;/em&gt;, which again of course is the big mantra of the No-Code movement.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The No-Code revolution isn't about No-Code, it's about AI and prompt engineering&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;I haven't had this much fun since I was 8 years old. AI functions is the by far coolest thing I've worked on for a very, very, very long time. By intelligently combining AI functions together, we can basically completely eliminate the need for a UI, having the AI chatbot completely replace the UI of at least in theory any application you've used so far in your life.&lt;/p&gt;

&lt;p&gt;Then later as we add the Whisper API on top of our AI chatbot, you're basically left with &lt;em&gt;"an AI app"&lt;/em&gt; you can speak to, through an ear piece, completely eliminating the need for a screen.&lt;/p&gt;

&lt;p&gt;AI functions is something we take very seriously at AINIRO, and definitely one of our key focal areas in the future - Due to the capacity these have for basically becoming a &lt;em&gt;"computer revolution"&lt;/em&gt;, where your primary interface for interacting with your comnputer becomes your voice, and/or natural language.&lt;/p&gt;

&lt;p&gt;In addition, our AI functions feature also makes &lt;em&gt;"software development"&lt;/em&gt; much more available for the masses, including those with no prior coding skills - So it becomes a golden opportunity for software developers and No-Coders to collaboratively work together, to create complex functionality, solving real world problems, while democratising software development for the masses.&lt;/p&gt;

&lt;p&gt;To put the last statement into perspective, realise that roughly 0.3% of the world's population can create software, while probably 95% of the world's population can prompt engineer, and apply basic logic to an AI chatbot, creating beautiful software solutions in the process. Hence ...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The No-Code Revolution &lt;strong&gt;is&lt;/strong&gt; AI and prompt engineering, and we're in the middle of it all ... 😊&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>lowcode</category>
      <category>productivity</category>
      <category>open</category>
    </item>
    <item>
      <title>Using the Web as your API</title>
      <dc:creator>Thomas Hansen</dc:creator>
      <pubDate>Mon, 03 Jun 2024 10:21:20 +0000</pubDate>
      <link>https://forem.com/ainiro/using-the-web-as-your-api-2p0i</link>
      <guid>https://forem.com/ainiro/using-the-web-as-your-api-2p0i</guid>
      <description>&lt;p&gt;In our &lt;a href="https://ainiro.io/blog/how-to-build-a-shopping-cart-ai-chatbot" rel="noopener noreferrer"&gt;last article&lt;/a&gt; we demonstrated how to build an AI-bases shopping cart that can basically sell items directly from within our AI chatbot.&lt;/p&gt;

&lt;p&gt;In this article we take it one step further by asking our chatbot how the weather is tomorrow, for then to find the best restaurants in our city, and having the AI chatbot then list the restaurant's reviews on TripAdvisor - For then to finish up with giving us the restaurant's phone number such that we can call and book a table.&lt;/p&gt;

&lt;p&gt;We even use our AI chatbot to hire a ProductHunt hunter for us, by having the AI chatbot crawl and scrape ProductHunt, giving us the LinkedIn profile page of today's winner.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ITxmDNUCisI"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;Basically, we're using a combination of system messages (instructions) and a VSS-based RAG database. Our most important functions, such as &lt;em&gt;"scrape the web"&lt;/em&gt; and &lt;em&gt;"search the web"&lt;/em&gt; can be found in our system message. While edge functions, typically not that important, are found in our RAG database as training snippets.&lt;/p&gt;

&lt;p&gt;When we tell OpenAI that we want to search the web, it will return something resembling the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;___
FUNCTION_INVOCATION[/modules/openai/workflows/workflows/web-search.hl]:
{
  "query": "[query]",
  "max_tokens": "[max_tokens]"
}
___
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will always be invoked with 4,000 as &lt;code&gt;max_tokens&lt;/code&gt;, but the query itself will be dynamically created by ChatGPT, to create an optimised search query, more likely to return the correct result. If we for instance ask the question &lt;em&gt;"Does Magnus Carlsen have a girlfriend? Create a two paragraph summary"&lt;/em&gt;, the AI chatbot will probably end up searching for &lt;em&gt;"Magnus Carlsen girlfriend"&lt;/em&gt;, before scraping the top results from DuckDuckGo, and creating a two paragraph summary.&lt;/p&gt;

&lt;p&gt;The point being that the above filepath after our &lt;code&gt;FUNCTION_INVOCATION&lt;/code&gt; is a Hyperlambda workflow, that invokes DuckDuckGo with a search query, scrapes the top results until it's got enough tokens, and then sends the result back to OpenAI again to answer our original question. Below is the sequence.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Invoke ChatGPT&lt;/li&gt;
&lt;li&gt;If ChatGPT doesn't return a function we're done&lt;/li&gt;
&lt;li&gt;If ChatGPT returns a function invocation we execute that function&lt;/li&gt;
&lt;li&gt;Our cloudlet invokes ChatGPT again, now with the result of our function invocation,  to answer the original query supplied by the user&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The whole thing is recursive in nature, allowing us to phrase questions implying multiple function invocations such as for instance.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Search for xyz and create a 5 paragraph summary. Then find the authors of each article and find their LinkedIn profiles.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For security reasons to avoid infinite loops eating up your OpenAI tokens, we stop the process after a maximum of 5 invocations towards OpenAI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;In the above video we demonstrate how to check the weather, how to search TripAdvisor for a restaurant in some specific city, how to follow links to each restaurant's TripAdvisor profile, and listing the top 5 reviews for a specific restaurant. We then ask our AI chatbot if it can find one of our restaurant's websites, scrape it, and return the phone number such that we can book a table.&lt;/p&gt;

&lt;p&gt;Afterwards we ask our AI chatbot to list all products at ProductHunt, crawl into 3 individual launches, find the creators, for then to search the web for one of our creator and create a summary of her skills. Then we ask the AI chatbot to find the person's LinkedIn profile, and return this as a hyperlink to us.&lt;/p&gt;

&lt;p&gt;3 days ago all of this was pure science fiction, and not even ChatGPT can do stuff such as this. Today it's all available for you in your AINIRO cloudlet to install into your AI chatbot.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>openai</category>
      <category>chatgpt</category>
    </item>
    <item>
      <title>How to Build a Shopping Cart AI Chatbot</title>
      <dc:creator>Thomas Hansen</dc:creator>
      <pubDate>Sun, 02 Jun 2024 08:50:35 +0000</pubDate>
      <link>https://forem.com/ainiro/how-to-build-a-shopping-cart-ai-chatbot-47gh</link>
      <guid>https://forem.com/ainiro/how-to-build-a-shopping-cart-ai-chatbot-47gh</guid>
      <description>&lt;p&gt;In our &lt;a href="https://ainiro.io/blog/create-ai-assistents-with-magic-cloud" rel="noopener noreferrer"&gt;last article&lt;/a&gt; we demonstrated our new AI functions. By building on top of these, we can build any amount of complexity into our AI chatbots - Including a shopping cart AI chatbot, such as illustrated in this article. If you want to try the AI chatbot we're building in this article you can find it below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://thomastest-team.us.ainiro.io/spyshop" rel="noopener noreferrer"&gt;Spy Gear Shopping Cart AI Chatbot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Video demonstration
&lt;/h2&gt;

&lt;p&gt;In the following video I am demonstrating the shopping cart AI chatbot, by going through the entire shopping experience using nothing but the AI chatbot to shop. In addition I am showing additional features almost impossible to implement using a more traditional UI-based chopping cart, such as the ability to tell the AI chatbot the following, and having it intelligently respond back to you.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"I've got 1 million to spend, what items can I add without exceeding my budget?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/csIy6924Z8w"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The above video is only 7 minutes long. I &lt;strong&gt;seriously recommend you watch it&lt;/strong&gt; to understand the power of this feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;The whole idea of the chatbot is to allow you to use natural language to guide you through your entire shopping experience. Below is an example of how to add two items to your cart. If you look carefully at the image below you will see two green icons. These implies the AI chatbot invoked two AI functions, one for each product I asked it to add for me.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fbuying-spy-gear-from-shopping-cart-ai-chatbot.png" class="article-body-image-wrapper"&gt;&lt;img alt="Adding two items to your shopping cart AI chatbot" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fbuying-spy-gear-from-shopping-cart-ai-chatbot.png" width="800" height="643"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In addition to adding items, it also has the following functions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove item from cart&lt;/li&gt;
&lt;li&gt;List all products&lt;/li&gt;
&lt;li&gt;List all items in my cart&lt;/li&gt;
&lt;li&gt;Checkout and pay for my items&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The checkout process simply creates a summary email that it sends to you, but this part could easily be integrated with WooCommerce or Shopify to perform a real sale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation
&lt;/h2&gt;

&lt;p&gt;The most important part of our AI chatbot is its system message. Our system message contains references to AI functions, such as follows.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;## Adding items to shopping cart

If the user informs you that he or she wants to buy an item and you know
the item's SKU, then respond with this EXACT response, only exchanging the
[sku] and the [quantity].

___
FUNCTION_INVOCATION[/modules/shopping-cart-demo/workflows/add-item.hl]:
{
  "sku": "[sku]",
  "quantity": "[quantity]"
}
___

If the user did not provide a quantity then do not ask the user for a quantity
but use a value of 1 by default. If you don't know the item's SKU, ask the
user to provide some more keywords for what item he or she wants to buy such
that you can find the correct SKU before responding with the above function
invocation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above instructs OpenAI to return a &lt;code&gt;FUNCTION_INVOCATION&lt;/code&gt; if the user says he or she wants to add an item to his shopping cart. Such function invocations will be executed on the cloudlet, and contains references to AI workflows. Below is the AI workflow for the above function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/*
 * Adds an item to your shopping cart
 *
 * [product_id] is mandatory and has to be an existing product_id from an
 * item existing in your database, and [quantity] will default to 1 if not
 * specified.
 */
.arguments
   sku:string
   quantity:int
   session:string
.description:Adds an item to your shopping cart
.type:public

// Defaulting [quantity] to 1 if not specified.
validators.default:x:@.arguments
   quantity:int:1

/*
 * Invokes the SQL CRUD Read slot with the specified parameters.
 *
 * Provide [connection-string], [database-type], [database], and [table] to
 * inform the action of what database/table you want to execute your SQL
 * towards, and add [and] or [or] arguments to filter your returns, in
 * addition to [limit] and [offset] to apply paging. Use [order]
 * and [direction] to sort either ascending or descending. Notice, you can
 * only use one of [or] or [and], and not both.
 */
execute:magic.workflows.actions.execute
   name:sql-read-products
   filename:/misc/workflows/actions/sql/sql-read.hl
   arguments
      columns
         .:product_id
      database:shopping-cart-demo
      table:products
      and
         sku:x:@.arguments/*/sku

/*
 * Invokes the SQL CRUD Create slot with the specified parameters.
 *
 * Provide [connection-string], [database-type], [database], and [table]
 * to inform the action of what database/table you want to execute your
 * SQL towards, and [values] for your actual values to insert.
 */
execute:magic.workflows.actions.execute
   name:sql-create-shopping-cart-item
   filename:/misc/workflows/actions/sql/sql-create.hl
   arguments
      database:shopping-cart-demo
      table:items
      values
         product_id:x:--/execute/=sql-read-products/*/*/product_id
         quantity:x:@.arguments/*/quantity
         session_id:x:@.arguments/*/session

// Returns the result of your last action.
return-nodes:x:@execute/*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Such AI functions can also be declared as training snippets, allowing you to have literally thousands of them - And 98% of the above code was created without coding using our &lt;a href="https://docs.ainiro.io/workflows/" rel="noopener noreferrer"&gt;Hyperlambda Workflow feature&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The end result of the above becomes that if we say stuff such as &lt;em&gt;"I want to buy the flying car"&lt;/em&gt; to our AI chatbot, then OpenAI will return a function invocation declaration that our machine learning type will execute. Our function invocation inserts a new record into our &lt;em&gt;"items"&lt;/em&gt; table in our &lt;em&gt;"shopping-cart-demo"&lt;/em&gt; database. This allows the AI chatbot to keep track of which items have been added. You can see the database schema below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fshopping-cart-database-schema.png" class="article-body-image-wrapper"&gt;&lt;img alt="Our shopping cart database schema" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fainiro.io%2Fassets%2Fimages%2Fblog%2Fshopping-cart-database-schema.png" width="800" height="248"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's a fairly naive shopping cart, but it also allows for integrating with Shopify, WooCommerce, or any other e-commerce platform you have - So don't be fooled by its simplicity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;p&gt;Unless you implement this correctly, you could in theory prompt engineer the AI chatbot to return function invocations that are unsafe. We guard against this by checking if the function invocation is declared either in the system message or the type's training data before we allow for a function to being executed.&lt;/p&gt;

&lt;p&gt;This completely eliminates &lt;em&gt;"function injection attacks"&lt;/em&gt;, that are similar in nature to SQL injection attacks. However, you still have to be careful when adding function declarations to your type, and only add functions you know for a fact are safe to allow the user to execute.&lt;/p&gt;

&lt;p&gt;In the future we might also implement support for functions that requires the user to belong to some role, in addition to some authentication and authorisation mechanism, to allow for the user to log in to the AI chatbot, changing his or her rights in regards to what functions are allowed to being executed by the user. But currently we don't have anything here. But this is a high priority feature we are working on a lot, so expect things to rapidly change here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;AI functions is the by far funniest and most rewarding thing I've worked on since I started working with OpenAI. In a way it turns a &lt;em&gt;"boring text-producing LLM"&lt;/em&gt; into a fully fledged AI assistent. Such AI assistents can be created to do incredible things, especially once we add authentication and authorisation to them. Below is a list if things we could easily do using AI functions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Order a plane ticket to New Zealand&lt;/li&gt;
&lt;li&gt;Check the weather in Los Angeles tomorrow&lt;/li&gt;
&lt;li&gt;What's the stock price for Apple&lt;/li&gt;
&lt;li&gt;Send Mike an email and tell him I'll be late for our meeting&lt;/li&gt;
&lt;li&gt;I need to call Jane, give me her phone number&lt;/li&gt;
&lt;li&gt;Create a new customer in my CRM system&lt;/li&gt;
&lt;li&gt;Etc, etc, etc ...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of the above would literally be &lt;em&gt;"15 minutes job"&lt;/em&gt; using Magic Cloud. If you're interested in seeing what we can do for your organisation related to this, you can contact us below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ainiro.io/contact-us" rel="noopener noreferrer"&gt;Contact us&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>openai</category>
      <category>chatgpt</category>
    </item>
    <item>
      <title>Create AI Assistants with Magic Cloud</title>
      <dc:creator>Thomas Hansen</dc:creator>
      <pubDate>Tue, 28 May 2024 14:37:06 +0000</pubDate>
      <link>https://forem.com/ainiro/create-ai-assistents-with-magic-cloud-3njm</link>
      <guid>https://forem.com/ainiro/create-ai-assistents-with-magic-cloud-3njm</guid>
      <description>&lt;p&gt;Today we release our newest addition to the Magic Cloud AI toolchain; AI assistents - Or &lt;em&gt;"AI functions"&lt;/em&gt; as we refer to them as.&lt;/p&gt;

&lt;p&gt;An AI functions is just a special training snippet that allows OpenAI to construct function invocations, that is locally executed on your cloudlet, for then to transmit the response back to OpenAI again.&lt;/p&gt;

&lt;p&gt;This allows you to ask questions such as; &lt;em&gt;"Retrieve the 5 last customers from my CRM system, and return their email address to me"&lt;/em&gt; - All from within your familiar AINIRO AI chatbot. To understand the feature it might be beneficial to watch the following video.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/HVWngzO68YY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;We already had &lt;a href="https://docs.ainiro.io/workflows/" rel="noopener noreferrer"&gt;Hyperlambda workflows&lt;/a&gt;, and the ability to create such workflows using No-Code constructs and Low-Code constructs. The only thing we really needed to do to create assistents logic, was to implement support for declaratively add workflows into your machine learning type. This is done as follows.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the Machine Learning component in your Magic dashboard&lt;/li&gt;
&lt;li&gt;Click training data&lt;/li&gt;
&lt;li&gt;Choose your type in the filter select dropdown listbox&lt;/li&gt;
&lt;li&gt;Click the &lt;em&gt;"Add function"&lt;/em&gt; button&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once you've done the above steps, you'll end up with something resembling the following.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3i5r3tlwef8kkniqrt8e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3i5r3tlwef8kkniqrt8e.png" alt="Adding an AI function to your machine learning type" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning!&lt;/strong&gt; This feature is an experimental BETA feature. We might change the logic in future releases resulting in that you'll have to modify your code. If you're comfortable with this, feel free to play with the AI assistents logic in Magic as much as you wish.&lt;/p&gt;

&lt;p&gt;Once you've selected a workflow from the above screen, you can prompt engineer your training snippet as much as you wish. Just make sure its core logic stays as it is when created by Magic, since the AI function feature in Magic depends upon OpenAI returning a very specific result when it wants to invoke such workflows.&lt;/p&gt;

&lt;p&gt;AI function invocations can be chained, something illustrated in the above video, where I provide a prompt that invokes OpenAI multiple times, once for each function, where the output from one function invocation is used as input to another function invocation. To understand how this works, consider the following screenshot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fojube2j75qi6rqtyt82x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fojube2j75qi6rqtyt82x.png" alt="Invoking two AI functions with one prompt" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  No-Code Hyperlambda Workflows
&lt;/h2&gt;

&lt;p&gt;Currently, out of the box, Magic doesn't have many workflows - But creating workflows is extremely easy. Just create a new module, or use an existing module, make sure your module has a folder called &lt;em&gt;"workflows"&lt;/em&gt;, and add Hyperlambda files into this folder as you see fit.&lt;/p&gt;

&lt;p&gt;The process can be done completely without manually having to create code. To understand the concept, you might want to watch the following video. Notice, your workflow Hyperlambda files &lt;em&gt;does not&lt;/em&gt; need to be HTTP endpoints.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ITz1ASqsWoM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Then when you go click the &lt;em&gt;"Add function"&lt;/em&gt; button on your type's training snippets, your workflow will automatically pop up and be possible to select.&lt;/p&gt;

&lt;h2&gt;
  
  
  Future Development
&lt;/h2&gt;

&lt;p&gt;In the future we will add lots of pre-existing workflows, covering all sorts of scenarios. Examples could be for instance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scrape website&lt;/li&gt;
&lt;li&gt;Create customer in CRM system&lt;/li&gt;
&lt;li&gt;Send summary of conversation to my email address&lt;/li&gt;
&lt;li&gt;Etc, etc, etc&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, for the time being, the only real workflow we've got out of the box is &lt;em&gt;"Send owner an email"&lt;/em&gt;, which serves kind of like an alternative to &lt;em&gt;"Contact us"&lt;/em&gt; forms. In addition we are considering bridging the backend generator and scaffolding parts of Hyperlambda with such AI functions, allowing you to rapidly add &lt;em&gt;"CRUD AI functions"&lt;/em&gt; to your AI chatbot.&lt;/p&gt;

&lt;p&gt;In addition, we are considering re-animating our &lt;em&gt;"AI Expert System"&lt;/em&gt;, in a new form, allowing you to have privately accessible AI chatbots that you only expose to those you want to expose these to. This would provide an alternative to GPT assistents, possibly with integrated monetization capabilities, allowing you to rapidly create your own SaaS-based AI chatbots.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Having AI assistents capabilities in your AI chatbots opens up a completely new axiom, and is an addition to all the nifty features we already have in Magic Cloud. With this feature, our core technology have taken a huge leap forward in regards to usability and usefulness. If you want to discuss how we can help you out solving your particular needs related to AI, you can contact us below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ainiro.io/contact-us" rel="noopener noreferrer"&gt;Contact us&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;; This part of Magic is not completely stabilised yet, and should be considered an experimental feature. However, this is something we will spend a lot of energy on stabilising and expanding upon - So expect to see a lot more from this feature in the future.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>lowcode</category>
      <category>openai</category>
      <category>chatgpt</category>
    </item>
  </channel>
</rss>
