The world’s leading publication for data science, AI, and ML professionals.

Software 3.0 – How Prompting Will Change the Rules of the Game

ARTIFICIAL INTELLIGENCE

GPT-3 sparked the flame of a new programming revolution.

Photo by Alexander Sinn on Unsplash
Photo by Alexander Sinn on Unsplash

In 2017 Andrej Karpathy – one of the big names in AI, now working as director of AI at Tesla – published a post with a simple headline: "Software 2.0." The post went viral due to Karpathy’s popularity and the polemic idea he defended.

He argued that the disruption of neural networks was deeper than most people thought because they’d replace traditional coding in many aspects. He claimed neural networks weren’t just a simple technique for classifying things, but a whole new programming paradigm.

You may agree or disagree with him, but it is undeniable deep learning has gone far. Last year, with the appearance of GPT-3, another programming paradigm emerged. Prompt programming, as tech blogger Gwern Branwen calls it, will change the rules of the game. Enter software 3.0.


Software 3.0: Prompt programming

OpenAI’s GPT-3 shocked the AI world in 2020 with its amazing performances. It can write code or guitar sheets following instructions in English. It can maintain dialogue or write poetry. And it can ponder about the future or the meaning of life. All of it without having been trained for it. GPT-3 is a multitasking meta-learner.

One of its most innovative features is the way we can communicate with it. We can write a text (prompt) with examples of a task in natural language and it’ll "understand" what we want. For instance, with the prompt: "I love you → Te quiero. I have a lot of work → Tengo mucho trabajo. GPT-3 is the best AI system ever → _____" GPT-3 will know I want an English-Spanish translation.

Gwern argues that prompting is better understood as a new programming paradigm:

"[Prompting] is a rather different way of using a DL [deep learning] model, and it’s better to think of it as a new kind of programming, where the prompt is now a "program" which programs GPT-3 to do new things."

Each time we prompt the system to do a task we’re creating a slightly different version; a specialized GPT-3. We are "programming" it to do a task other versions of GPT-3 don’t know how to do.

Yet, if we program it badly, it will perform the tasks badly. Some people criticized GPT-3’s lack of logic and common-sense reasoning capabilities, but Gwern argued that bad prompting was the reason behind GPT-3’s failures. In a display of scientific rigor, he repeated the tests changing the prompts until he adequately "programmed" GPT-3 to learn the tasks, proving the critics wrong.

He demonstrated that good prompting was key to unveil the true potential of GPT-3. Prompting, like other forms of programming, can be improved and standardized with good practices. The limitations people found in the system were ironically quite often a product of their lack of skill.

If we want to obtain a specific behavior from a system, we have to learn to communicate with it. As an analogy, if you’re coding in Python or C you have to know the syntax. Otherwise, any program you write will fail. Then you’d blame the computer and conclude that computers can’t do the task.

Here are two reasons to qualify prompting as a programming paradigm:

  • First, prompting allows the user to generate a very specific behavior from the system, which is the definition of coding. Given an input, you want the program to follow a set of instructions to behave in a specific manner.
  • Second, there’s good and bad prompting. We could define best practices and standardize the method. In traditional coding, we have to learn language syntax, variable manipulation, methods, etc. For neural networks, we have to learn to remove biases and noise from the datasets. Prompting isn’t different.

If prompt programming can be understood as software 3.0, where does this leave traditional coding (software 1.0) and neural networks (software 2.0)? Could prompting replace these programming paradigms? Will programmers have to add prompting as a new skill to their toolkit? Will it change the landscape of how we interact with machines?


It will replace neither coding nor neural nets

Last year, Frederik Bussler wrote a popular article for Towards Data Science arguing that GPT-3 could be another stepping stone towards the end of coding as we know it (together with trends such as no-code and autoML).

Even if GPT-3 could generate good code, its capabilities would depend drastically on our ability to convey our intentions with well-defined prompts. It’s unlikely that using GPT-3 could replace the simplicity with which we can program certain things. It’d be cracking nuts with a sledgehammer.

It was the same with neural networks. Karpathy argued that software 2.0 would replace some aspects of software 1.0, and it was true to some degree (some problems are significantly hard to solve by explicitly writing a program and instead it’s quite easy to collect data for a neural net to learn the specific behavior we want to generate), but for many problems hard-coding is still the preferred approach.

Software 3.0 will be applied to perform some tasks, but the problem space it’ll cover won’t 100% contain the problem spaces of software 1.0 or 2.0. There will be overlapping, but each paradigm will eventually settle on the areas they perform more efficiently than the others. They’ll find a stable harmony. These software paradigms aren’t competing, but trying to find their niches in a perfect symbiosis.

In the end, they all might be necessary components to achieve true Artificial Intelligence. We, humans, are composed of biological software that corresponds in some ways to each of those paradigms. Let’s see how we can make sense of this analogy.


Software 1.0, 2.0, and 3.0 – Understanding the whole picture

"The future of [software 2.0] is bright because it is increasingly clear that when we develop AGI, it will certainly be written in Software 2.0."

  • Andrej Karpathy

I disagree with Karpathy’s prediction. AGI (artificial general intelligence) will emerge from a combination of the three programming paradigms (and maybe others yet to be found). The best way to understand why is to make an analogy with the only instance of true intelligence: Us.

Software 1.0

Before neural networks rose to fame in the early 2010s, all code was written by hand. If you wanted a system to have a specific behavior you had to write down every instruction it had to follow for every situation. The hard-coded program did exactly what was programmed to do. No black boxes, no learning.

That’s exactly what evolution had in mind when it created genetic code. When we’re born, we aren’t a tabula rasa, we come to the world with a set of hard-wired modules ingrained in the brain, which are there because our genes say so. That’s our biological software 1.0. My genes had encoded that I’d had two eyes, two arms, and two legs and that I’d be blond, with brown-green eyes.

Software 2.0

Karpathy says software 2.0 involves the curation of a dataset and the design of the neural net architecture. We define the structure of the program and the "food" we’ll feed it, but not the content. It’s the neural net itself that "writes" its inner "program" (weights) to learn to behave as we want.

Biological software 2.0 are the experiences and perceptions we have growing up. We’re born a semi-empty structure waiting to be fed with all kinds of physical and social information. We may be hardwired to have two arms, but whether we’ll learn Spanish or English, when we’ll learn to walk, or how well we’ll learn to grasp how the world works, isn’t hard-coded in our genes. It depends on the environment and our interactions with the world, which is the dataset we’re fed to optimize our inner programs.

Software 3.0

Prompting allows us to condition GPT-3 to "specialize." In some sense, when we prompt GPT-3 we’re coaching it to do a task other instances of the system haven’t learned. Each GPT-3 instance has the potential of learning the task but it only happens when we prompt it.

Biological software 3.0 would be the specific learning we go through as adults: The tasks we’re taught, the books we read, the jobs we work at, the abilities and skills we develop. All of us have arguably similar potential to learn any of this, but each of us chooses to learn some skills and not others, or acquire some knowledge and dismiss others. Those choices transform our brains like prompts transform GPT-3’s capabilities.


It’s worth noting that this analogy, although illustrative, is a simplification of reality. Our biological software actually interacts at all levels. Our genes depend on the environment to activate or not. Our abilities to learn engineering or medicine depend on innate abilities we may have or not. Yet, through this analogy, we realize AGI will most likely need all kinds of software paradigms.

It’ll need traditional coding to define the basic, unchangeable structural elements. It’ll need neural networks (or other deep learning frameworks) to learn from external and internal data. And it’ll need prompting to interact directly with us and acquire specialized knowledge.

AGI won’t be built in software 2.0, as Karpathy said, instead it’ll take what it needs from each paradigm. AGI will have an artificial genome, will perceive the world, and will be a meta-learner. And it’ll need a body to experiment and actively interact with the world. That’s exactly what the field of developmental robotics is trying to do by combining AI, robotics, and the cognitive sciences.


Disclaimer: This article is a personal opinion. The analogy between artificial and biological software can be far-fetched at some points. I welcome any debate!

Recommended reading

GPT-3 – A Complete Overview

4 Things GPT-4 Will Improve From GPT-3

Artificial Intelligence and Robotics Will Inevitably Merge


Related Articles