OpenAI’s new neural network-powered language generator, GPT-3, has whipped up a media frenzy since the first wave of users obtained access to its private beta in mid-July. Hobbyists are already successfully testing a variety of impressive applications for the tool, ranging from visual design to poetry.
GPT-3’s capacity to interpret and respond to plain language prompts can seem indistinguishable from human intelligence, and the tool consistently performs at a much higher level than any other public neural network generator (including GPT-2, its predecessor).
On the surface, GPT-3’s impressive leap forward doesn’t appear to be the result of a groundbreaking shift in AI development. Its progress is generally attributed to the fact that it contains orders of magnitude “more layers, wider layers, and more data to train on” than GPT-2. In other words, OpenAI simply scaled up their existing approach rather than re-envisioning it.
Upon closer inspection, though, this is actually a surprising and provocative discovery. If a larger transformer network is all that is needed to dramatically improve a few-shot learner’s performance on a huge variety of tasks, then it may be possible that simply increasing the network size another few orders of magnitude would be able to approach generalized AI (also known as “strong AI”, or something comparable to the human-caliber AI you see in science fiction movies).
This possibility isn't guaranteed; for example, several researchers have argued that specialized models or architectures are required to achieve generalized AI.
We think the emergence of high-quality natural language interfaces will have a transformative impact on most tech tools used by humans. Any tech company with a product that contains user interfaces will need to come up with a strategy for how GPT-3 will affect their business or be supplanted by tools that use language more intelligently.
Crowdbotics has believed this for a long time — “specs to code” has always been our approach, and we've been stockpiling artifacts to enable us to take advantage of exactly this kind of innovation. Prior language models were never good enough to use in production in a product-building tool. GPT-3 might be.
There’s no real barrier for any company to leverage GPT-3 because OpenAI makes it publicly available. As a result, the real winners will be tools with existing large footprints that can adapt to the new reality of language models fast enough to give users what they want: language-based tooling. Companies that don't adapt will get squeezed out by those who do.
Crowdbotics is the fastest way to build powerful, cross-platform apps because we’re automating the product development cycle. Our ideal model is "describe an app, get an app," and, for that reason, we've anticipated the arrival of GPT-3 for some time.
On our own roadmap at Crowdbotics, we're excited to introduce GPT-3 in four big places:
Crowdbotics has had access to GPT-3 for a couple of weeks now, and we’ve already identified a handful of use cases that could create real value for our users. Here are some areas that seem especially promising.
In the coming days, we’ll add an experimental GPT-3 interface to the Crowdbotics App Builder that accepts plain-language prompts for code components and generates usable code in response. The interface will include a real-time visualization of the generated code, enabling users to check GPT-3’s code against its actual appearance in the app’s UI.
This feature has the potential to act as an intelligent “app development wizard” for our users, enabling them to assemble a custom code component by simply asking GPT-3 to create it for them. When paired with the Crowdbotics WYSIWYG layout editor, this could dramatically accelerate app development for non-technical Crowdbotics users.
Here’s an example of GPT-3 creating a data model for handling PayPal payments in the Crowdbotics Model Builder:
As you can see, the tool accepts a prompt in conversational English: “model for handling payment with PayPal.” The model that it generates is a functional Django app with preconfigured field types.
Using the built-in functionality of the Crowdbotics Model Builder, this model can be added to your app with a click and manipulated via our visual interface. It’s also automatically synced to your GitHub repository, and it generates API documentation automatically.
Here’s another example, this time using pure code and the GPT-3 API to demonstrate what’s happening under the hood:
Our input is a list of models, with comments, in this format.
//A model for a blog class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __str__(self): return self.name //A model for an author class Author(models.Model): name = models.CharField(max_length=200) email = models.EmailField() def __str__(self): return self.name //A model for an entry class Entry(models.Model): blog = models.ForeignKey(Blog, on_delete=models.CASCADE) headline = models.CharField(max_length=255) body_text = models.TextField() pub_date = models.DateField() mod_date = models.DateField() authors = models.ManyToManyField(Author) n_comments = models.IntegerField() n_pingbacks = models.IntegerField() rating = models.IntegerField()
To prompt the creation of a new model, we append the new model’s comment to the above input.
//A model for a comment
Using the above comment as a prompt, GPT-3 outputs a model for a comment:
class Comment(models.Model): //A model for an entry entry = models.ForeignKey(Entry, on_delete=models.CASCADE) user = models.ForeignKey(User, on_delete=models.CASCADE) body_text = models.TextField() time_posted = models.DateTimeField()
This is the underlying behavior of the GPT-3 interface that we’ve added to the Crowdbotics App Builder. When paired with our visual editing tools, prebuilt modules, and automated deployment, it has the potential to reinvent how non-technical builders approach app development.
Crowdbotics already uses AI to scan the known universe of open source React Native and Django packages and rate them for quality. We use these ratings to automatically select the best code components available and insert them into user applications.
However, developers can be an opinionated bunch, and they may want to do some investigating of their own. To that end, GPT-3 can intelligently recommend code packages to solve specific development problems.
For example, we fed GPT-3 a series of questions about Django development:
CB: What is the best Django library for building an advanced search feature in an app?
GPT-3: The best Django library for building an advanced search feature in an app is django-haystack.
CB: What is the best Django library for building CSV export into an app?
GPT-3: The best Django library for building CSV export into an app is django-export.
CB: What is the best Django library for building social login features into an app?
GPT-3: The best Django library for building social login features into an app is django-allauth.
These are all reasonable recommendations for the specified use cases. Of course, GPT-3 doesn’t always get it right, as in this case:
CB: What is the best Django library for building location-based alerts into an app?
GPT-3: The best Django library for building location-based alerts into an app is django-geo-alerts.
While this looks sensible on the surface, there is actually no such thing as a Django package by the name of “django-geo-alerts.” This is a common pitfall when using GPT-3: the results look extremely convincing, even when they don’t necessarily make sense.
We still believe that, as GPT-3 becomes more sophisticated, this could become a novel way to help developers of all experience levels discover useful open source libraries and integrate them into their builds. Like most GPT-3 use cases, it requires further experimentation.
At Crowdbotics, we receive significant inbound interest from people who are building an application for the first time. The process of describing a new application can be daunting for people who are unacquainted with industry terminology.
To lower the barrier to entry, we tested GPT-3’s ability to explain technical specs in simple terms:
CB: What is a social login?
GPT-3: A social login is a way to log into a website using a social network account such as Google, Facebook, or Twitter.
CB: What is a location-based alert?
GPT-3: A location-based alert is a notification that appears when a user enters or leaves a location.
CB: What is a 'blog import' feature in an app?
GPT-3: A 'blog import' feature in an app is a feature that allows users to import blog posts from a blog into an app.
These descriptions aren’t extremely detailed, but they could be useful for helping new users orient themselves in the world of software development.
Naturally, others weren’t as helpful:
CB: What is a desktop notification?
GPT-3: A desktop notification is a notification that appears on the desktop.
In instances where GPT-3’s technically “correct” answer is unhelpful, human input may still be required.
GPT-3 appears to perform best when it is asked to describe, summarize, or iterate upon existing materials. When it is creating new material within a specific, rigid protocol (e.g. writing code), it has a greater potential to miss the mark.
With this in mind, we’re still testing the limits of what GPT-3 can add to Crowdbotics. Here are a few potential opportunities for implementation:
We plan to share our findings along these lines and others in the coming weeks.
Despite the excessive hype surrounding it, GPT-3 is capable of providing tangible, real-world value for development teams today. The impact that it ultimately has on the industry will depend on how successfully teams can focus its computing power on proven, successful, repeatable use cases.
We’re taking our time identifying these use cases within our own product, and we’re optimistic that GPT-3 will unlock new avenues for functionality that enhance our users’ experience. Even if its disruptive power falls short of our expectations, it’s clear that GPT-3 marks a huge step forward in our ability to integrate AI into human interfaces.
July 31, 2020