So you want to design an generative AI app. Is this process significantly different from designing an app of any other kind? There are certainly many things which overlap. All apps include infrastructure, all apps include interaction frameworks, all apps include users. I would say that there's a difference in terms of how you understand and work with the technology.
The major differences: 1.Start by exploring the tech possibilities, not user interest: AI tech is so new, neither the users nor the model developers are fully aware of what AI is capable of. With other kind of software service development, it is best practice to start from user's interests and then work backwards toward the tech. But with AI, the user doesn't know what he or she can ask for, and the creators of AI don't fully know what they can offer. So start by exploring the technology and testing your intuitions about what it can achieve. 2.Don't commit to a single process: instead of marrying a single approach and designing it to full functionality, continue testing different approaches as you develop. Because the model is a nondeterministic system, it is always good to keep an open mind towards different approaches.
This is why we recommend the 'explore, experiment, adjust' cycle (as opposed to the more rigid 'identify end goal, build a strategy, deploy' approach).
Explore: Suss out what the users want and test the technology in a continuous back and forth. Keep asking if there is anything the technology can achieve which exceeds their expectations or meets needs never considered before.
Advice: Visit open-source AI developer communities like HuggingFace Spaces or Replicate.com where folks showcase innovative applications for AI. See if you can find something that is of use.
With automation, the hard part is not always learning to use a new generative AI tool, but understanding how you do things within your organization. The way you think you do things may not actually be the way you do them. There are often hidden steps involved which you don’t consider until you consciously ponder upon them. This often leads to the automated process not working as intended, or involving way more work than you realized. In order to not over-invest into something that may not be fitting to your needs, we suggest the following stages of development. It starts with the simplest and least-involved and moves up to the more time and resource consuming stages.
1️⃣Back of napkin design - draw out on paper the links in the workflow process and brainstorm which elements you could automate with generative AI.
Discuss with everyone involved in the process how they do things. The goal is to make you conscious of every step of what you are trying to automate.
2️⃣Wizard of Oz functionality - test-run of the process using the desired apps, actually utilizing the software you plan to use, but without automation. Instead of having one software communicate with the next independently, you manually copy the output of one application and paste it into the next (see Wikipedia article for more info). So you would actually log into ChatGPT or wherever and input the content you seek to automate and feed it into the next link in the process. This is useful to adjust your prompts to make sure they are stable across use cases and meet your needs.
The step is named so because you are like the Wizard of Oz, who wows Dorothy with what looks like magic, but in reality it is just an old man behind a curtain pulling levers.
3️⃣ Building with a no-code tool - using a tool specialized at connecting different software together with a user-friendly interface (like Zapier), you develop an automated chain of tasks which successfully delivers from first to last step without human intervention.
This is a fully functional deliverable. Why would you want to go any further? The reason is because no-code tools come with certain draw-backs. First of all, if there is a bug in the automation software, you are at the mercy of the customer service team of the no-code tool. Second, if you happen to desire something which was not foreseen by the software, you are out of luck. Coding your tool from scratch offers you an endless expanse of possibilities, so you move to stage 4.
4️⃣ Native prototype - your no-code tool is a perfect way to communicate to a developer what you want. Back-end and front-end developers are quite affordable even for creating something by yourself and for personal use. Having a no-code prototype available will make the development process efficient and transparent, cutting down on costs. It will also make you an informed manager of the development process.