Years ago, I wrote a Technically post about one of my favorite software products, Vercel. At the time they had one focus, and they did it really well: making it easy for engineers to deploy their frontends, or the user-facing parts of their applications. In fact the award-winning[1] Not award winning. Technically website runs on Vercel.
But since then, a lot has changed. The world has been taken over by AI (figuratively, if anyone from the future is reading this). The way people build their apps is drastically different than it was just a few short years ago. And to match, Vercel has built a bunch of really interesting new products that are getting traction fast. This post is going to talk about those products, what makes them interesting, and why you should care about them. Because I do!
How building AI apps is different from building app apps#
If you asked a developer 5 years ago what it means to “build AI into your app” they’d probably have looked at you funny. At the cutting edge there were some people using what we then called Machine Learning to personalize some product experiences or provide some basic data-related suggestions. But all in all, it wasn’t top of mind for most people.
Today everyone is thinking about how to build AI into their apps. Models have gotten so good that they can now legitimately power brand new product experiences – across verticals like legal, healthcare, you name it. In fact I’d challenge you to find me a developer today who isn’t experimenting with LLMs in their apps. But what does it really mean to build AI into your app?
In English, it’s essentially using an AI model to do something in your app: summarizing text, generating a SQL query, or processing a document, among other things. On the surface this might seem simple…just prompt the model, right? Not so fast, cowboy. There are a few hurdles developers are running into where the tools that got us here aren’t taking us there.
The logistics of using AI models#
Let’s start with the models themselves. Meaningfully building AI into your product experience isn’t as simple as pasting some API keys (ignore what you read on X). Here are some questions one must contend with:
- What model do you use? OpenAI, Anthropic, or maybe something open source you host yourself? What if you want to use multiple?
- How do you handle when things go wrong? What if a model takes too long to respond? What if the response is bad?
- How do you pass relevant data from your application to the model to make responses customized?
- How do you change out models quickly and cleanly when you want to try a new one?
Easier said than done.
Running untrusted code#
A ton of the promise of AI models lies in their ability to write code for us. You might prompt a model to build a new feature for you, and it generates 1,000 lines of code to build it. Are you going to read through and understand every single line? If you answered “yes” why are you lying?
Developers use the term untrusted code to refer to code that they, well, don’t trust. It means the code hasn’t been manually reviewed and verified to be free of vulnerabilities and security risks. Generally, running untrusted code is a big no-no – hackers can inject it full of special trap doors to steal passwords, break applications, and even shut down servers.
When it comes to AI, essentially all code is untrusted. How – and where – do you run it without risking your computer, servers, or infrastructure?
Streaming, not request / response#
If you’ve used ChatGPT or Claude, you’ve probably noticed that the models have what one might call a stream of consciousness. They generate their responses bit by bit, and in restaurant terms, bring the food out as it’s ready. This is because LLMs under the hood are essentially guessing word by word. Sometimes, for longer responses, it can take minutes.
Cool, except one problem: this is not at all how the pipes of the internet are built. The web as we know it – and all of the frameworks that developers use to build the apps you know and love – are built on the request / response model. You ask an API for some data, and it gives you back that data…all at once. It either works or it doesn’t.
And another thing – the request / response model isn’t very patient. APIs are supposed to give you answers in a matter of seconds, not minutes. Many web frameworks, and even serverless infrastructure like AWS Lambda, have maximum timeouts – or the number of seconds they’ll wait – that won’t go over a minute. Meanwhile, AI models can take several minutes to get you what you want…and while you’re waiting for them, you’re still paying for your infrastructure.
By the way, these last two problems – running untrusted code and long executing API calls – aren’t new. They’ve been challenging developers for years outside of AI contexts. But they’re part and parcel of building AI apps today, so there’s what one might call a renewed focus on them.