Geert Baeke's notebook · since 2011
Hands-on notes on AI agents, Azure and cloud-native.
232 posts. I build something small, break it a few times, and write up what I learned, with the code on GitHub.
Latest
ai · · 8 min read
Azure Content Understanding
Many teams extract data from documents in two steps. They convert the document to Markdown with a service like Azure Document Intelligence, then prompt an LLM to pull the fields they need out of that Markdown. It works, but you run two services and write the prompt yourself. You also get no indication of how…
Read the postRecent
agentgateway: an open source AI gateway on Kubernetes
A few days ago I wrote about using Azure API Management as an AI gateway for your agents. API Management is a good fit when your agents run on Azure and you already use it for your other APIs. But plenty of teams run their agents on Kubernetes, sometimes outside Azure, and might rather have…
aiNotes of the week: managed agent harnesses, Microsoft's own models and Claude in the EU
Two things stood out in this week's Notes. Microsoft now runs the agent loop for you in Foundry, with a managed harness, skills and recovery from interruptions. And it keeps widening model choice in two directions at once: its own frontier models from Microsoft AI, and Anthropic's Claude models moving into the EU Data Boundary…
aiWeb search for your agents with Microsoft Web IQ
I wasn't keen on Microsoft retiring the Bing Search APIs. We used them to ground our agents in current information from the web, and they worked from any code you liked. What replaced them in Foundry, Grounding with Bing and the web search tool in Foundry Agent Service, never felt right to me. Both are…
aiDapr Workflow: code that picks up where it left off
Lots of the work I see in projects is a chain of steps: fetch a document, convert it, call a model, write the result somewhere. You write it as a background job that reads from a queue, and it works fine until the process restarts halfway through a 300-page PDF or a model call times…
aiAn AI gateway for your agents with Azure API Management
In my work for Cronos and MbarQ, more and more customers are taking their agents from proof of concept to production. One agent is easy to keep an eye on. Ten agents built by four teams are a different story: which models do they call, which tools can they reach, which other agents do they…
aiHybrid search without a vector database
Last week I added a low-cost chat assistant to this blog. It found posts with BM25, plain keyword search, and I admitted it had a weak spot: ask "How is this blog hosted?" and it misses the post about hosting, because that post never uses the word "hosted". The usual fix is embeddings, and the…
aiAdding a low-cost chat assistant to my blog
Building chatbots is a big part of my day job, so it was a bit odd that my own blog didn't have one. Now that baeke.info is a static site on Azure, adding one was easy. There was one requirement though: it should cost next to nothing. A chat box on a public website is…
aiDeep Agents from zero: seven small examples
A basic agent is a model calling tools in a loop. That's enough for simple tool calls, but it falls apart on longer work: the agent loses track of what it was doing, its context fills up with tool output, and it has nowhere to put intermediate results. 🤷
aiAgent 365: who's keeping an eye on your agents?
Agents are popping up everywhere. Makers build them in Copilot Studio, developers ship them on Foundry, SharePoint sites come with a ready-made one, and partners sell them in the store. That's great, until someone asks a simple question: how many agents do we have, who owns them, and what are they allowed to touch?
ai