AI Engineering
Deep dives into machine learning systems, vector search, embeddings, and production AI architectures — including practical Gemini API integration guides with tested code.
Tutorials (25)
-
10 AI Features to Add to Your Flutter App (With Gemini)
10 practical AI features for your Flutter app — chatbot with memory, semantic search, photo analysis, voice, RAG, structured extraction, function calling, image…
-
"Gemini Empty Response? It's Usually a Blocked Request"
"A gemini empty response with no candidates is almost never a model bug — it's a safety block hiding behind HTTP 200. Here's how to detect it and fix your…
-
"Gemini Safety Settings in Python: HarmCategory Example"
"A working gemini safety settings python example: set HarmCategory thresholds in the current google-genai SDK and check whether the model blocked your prompt."
-
"Transcribe Meeting Audio in Python with Gemini AI"
"Here's the fastest way to transcribe meeting audio in Python with Gemini — upload the recording, ask for speaker labels, and you're done."
-
"Fix Gemini TTS Streaming Truncation (finishReason OTHER)"
"If your gemini tts streamGenerateContent call dies mid-audio with finishReason OTHER, you're hitting a real, documented streaming abort. Here's the fix."
-
"Summarize Video with Gemini API in Python: Full Guide"
"Summarize video with the Gemini API in Python: upload user clips via the Files API, wait for ACTIVE state, send structured summary prompts, clip segments with…
-
"Flutter Gemini Image Analyzer: Camera Photos to AI"
"Build a Flutter Gemini image analyzer that captures camera photos, compresses them to control token costs, and sends them to the Gemini API with firebase_ai.…
-
"Nano Banana Text-Only, No Image? Fix It in Minutes"
"If Nano Banana returns text instead of an image, the API said 200 OK and gave you nothing to save. This guide gives the direct fix: the one-line…
-
"Gemini Implicit Caching Not Working? 5 Fixes That Work"
"If gemini implicit caching is not working in your app, your bill can be 10x what it should be. This guide covers the five silent causes — minimum tokens,…
-
"Gemini Embedding 2 Tutorial: Text, Images, Audio, One Space"
"Stop captioning images to search them. Gemini Embedding 2 maps text, images, audio, video, and PDFs into a single vector space — so a text query finds the…
-
"Gemini Embeddings Semantic Search in Python, No Vector DB"
"Semantic search usually means standing up a vector database. It doesn't have to: the Gemini embeddings API plus in-memory cosine similarity gives you…
-
"Gemini File Search API Tutorial: Zero-Infrastructure RAG"
"The Gemini File Search API gives you production RAG without a vector database: upload documents to a managed store, query them with the file_search tool, and…
-
"Gemini Function Calling 400 Errors: Fix Guide"
"Your first Gemini function call works, then the second turn dies with a 400. This guide maps the five exact error strings from real GitHub issues to their root…
-
"Genkit Dart Tool Calling: Gemini Functions That Run Code"
"Function-calling tutorials always demo a fake weather function. This genkit dart defineTool example wires a real API call into Gemini: typed inputs with…
-
"Genkit Dart: Your First Type-Safe AI Flow with Gemini"
"Stop passing Maps to your AI backend and praying the keys match. This genkit dart defineFlow example builds a typed flow with schemantic — real Dart classes on…
-
"Hide Your Gemini API Key: a Flutter Backend Proxy"
"The only real way to hide a Gemini API key in a Flutter app is to never ship it. This guide builds a one-file Cloudflare Worker proxy that holds the key…
-
"Stream Gemini Response in Flutter: Done Right"
"Waiting 8 seconds for a full Gemini reply kills the chat feel. Here's how to stream a Gemini response in Flutter token-by-token with generateContentStream:…
-
"Prompt Caching & Cost Control for Gemini Apps"
"A 429 from the Gemini API is not a signal to retry — it is a signal you are out of quota, and every retry digs deeper. Here is the quota-aware Flutter pattern:…
-
"Image Comparison in Apps: Perceptual Diff Basics"
"Your golden tests pass on your Mac and fail on Linux CI — and nothing in the UI actually changed. The culprit is font-rendering drift, and the fix is…
-
"Fix speech_to_text Errors: error_no_match & error_busy"
"error_no_match and error_busy in speech_to_text are usually benign end-of-session noise — your real bugs are calling listen() while a session is alive and…
-
"On-Device AI Agent in Flutter with Gemma: Explained"
"An on-device AI agent in Flutter with Gemma turns a chatbot into software that perceives, decides, and acts — fully offline. Here is how the agent loop works,…
-
"How to Evaluate RAG Pipelines: RAGAS Metrics (2026)"
"Your RAG pipeline doesn't need a better embedding model — it needs a scoreboard. This guide shows how to evaluate RAG pipelines with RAGAS metrics, build a…
-
"Flutter Gemini Chatbot with Supabase Chat History"
"Most Flutter chatbot tutorials lose everything on restart. This one builds a Gemini chatbot whose memory lives in Supabase — per-user threads, RLS-scoped,…
-
"Gemini responseSchema 400 invalid argument: Flutter fix"
"Your schema looks valid, Gemini rejects it with 400 INVALID_ARGUMENT before generating a single token. The cause is the schema-subset rule: maxItems,…
-
"Migrate google_generative_ai to firebase_ai in Flutter"
"google_generative_ai is discontinued. This guide shows how to migrate google_generative_ai to firebase_ai in Flutter: the package swap, the backend decision,…