Designing AI-powered applications involves choosing the right AI approach, handling AI's unique characteristics (non-determinism, cost, latency, errors), and designing for reliability around inherently imperfect AI. It combines software engineering with AI-specific considerations.
Choosing the AI approach
→ PROMPTING (LLM APIs) → for most LLM tasks (simplest); good prompts go far
→ RAG → to ground answers in your own/current DATA (reduce hallucination)
→ FINE-TUNING → for specific behavior/style prompting can't achieve
→ TRADITIONAL ML → for structured prediction/classification with data
→ PRE-BUILT services → vision, speech, etc. (don't reinvent)
→ match the approach to the problem (often: prompting + RAG for LLM apps)
