{"id":1474,"date":"2025-09-06T12:18:00","date_gmt":"2025-09-06T12:18:00","guid":{"rendered":"https:\/\/bogdanburuiana.com\/?p=1474"},"modified":"2026-04-23T12:36:52","modified_gmt":"2026-04-23T12:36:52","slug":"azure-ai-foundry-the-platform-that-makes-agent-development-sane","status":"publish","type":"post","link":"https:\/\/bogdanburuiana.com\/index.php\/2025\/09\/06\/azure-ai-foundry-the-platform-that-makes-agent-development-sane\/","title":{"rendered":"Azure AI Foundry: The Platform That Makes Agent Development Sane"},"content":{"rendered":"\n<p>Every time a new technology matures, a platform emerges that hides the complexity and lets you focus on the problem. Docker did it for containers. Kubernetes did it for orchestration. Azure AI Foundry is doing it for AI agents &#8211; and understanding what it actually handles for you is the first step to using it well.<br><\/p>\n\n\n\n<p>Let me walk you through what Foundry is, how it&#8217;s structured, and how I&#8217;d approach getting started &#8211; whether you&#8217;re a developer spinning up a proof-of-concept or an architect designing a production workload.<\/p>\n\n\n\n<p><strong>What Problem Does Foundry Solve?<\/strong><\/p>\n\n\n\n<p>Before Foundry, building an AI agent meant stitching together a lot of moving parts yourself:<\/p>\n\n\n\n<ul>\n<li>Managing conversation state between turns<\/li>\n\n\n\n<li>Handling tool calling and parsing results<\/li>\n\n\n\n<li>Storing and retrieving context across sessions<\/li>\n\n\n\n<li>Dealing with infrastructure &#8211; compute, identity, secrets<\/li>\n\n\n\n<li>Monitoring what your agent actually did<\/li>\n<\/ul>\n\n\n\n<p>That&#8217;s not impossible &#8211; I&#8217;ve done it manually &#8211; but it&#8217;s tedious, error-prone, and not the part of the problem you should be spending your energy on.<br><strong>Azure AI Foundry Agent Service <\/strong>handles all of that. You focus on the agent&#8217;s purpose, instructions, and tools. Foundry handles the plumbing.<\/p>\n\n\n\n<p><strong>How Foundry Is Structured<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"569\" src=\"\/wp-content\/uploads\/2026\/04\/image-4-1024x569.png\" alt=\"\" class=\"wp-image-1475\" srcset=\"\/wp-content\/uploads\/2026\/04\/image-4-1024x569.png 1024w, \/wp-content\/uploads\/2026\/04\/image-4-300x167.png 300w, \/wp-content\/uploads\/2026\/04\/image-4-768x427.png 768w, \/wp-content\/uploads\/2026\/04\/image-4.png 1440w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Supporting resources connect underneath: Azure AI Search for retrieval, Azure Storage for files the agent reads and writes, Key Vault for secrets, and Azure Functions when you need custom tool logic.<\/p>\n\n\n\n<p><strong>The Two Ways to Build: Portal vs. VS Code<\/strong><br>This is a question I get in every discussion. Which approach is right?<br><\/p>\n\n\n\n<p><em>Foundry Portal (web-based):<\/em><br>\u2705 No local setup required &#8211; spin up in minutes<br>\u2705 Visual configuration &#8211; great for prototyping and demos<br>\u2705 Centralised management dashboard<br>\u2705 Perfect for sharing with non-developer stakeholders<br>\u274c Less suited for complex code-first logic<br>\u274c Harder to version control<br><\/p>\n\n\n\n<p><em>Visual Studio Code (developer-centric):<\/em><br>\u2705 Build agents alongside your application code<br>\u2705 Full Git integration &#8211; your agent config lives in version control<br>\u2705 YAML-based config &#8211; readable and diffable<br>\u2705 Offline development before deploying<br>\u274c Steeper setup curve<br>\u274c Not ideal for quick stakeholder demos<br><\/p>\n\n\n\n<p>My practical advice: use both. Use the portal for initial exploration, concept validation, and stakeholder walkthroughs. Switch to VS Code once you&#8217;re moving toward production. Most teams I&#8217;ve worked with settle into this pattern naturally after a few weeks.<\/p>\n\n\n\n<p><strong>The Typical Development Workflow<\/strong><\/p>\n\n\n\n<p>Here&#8217;s the 8-step workflow I teach, because seeing the shape of the whole process matters before diving into any single step:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"932\" height=\"672\" src=\"\/wp-content\/uploads\/2026\/04\/image-6.png\" alt=\"\" class=\"wp-image-1477\" srcset=\"\/wp-content\/uploads\/2026\/04\/image-6.png 932w, \/wp-content\/uploads\/2026\/04\/image-6-300x216.png 300w, \/wp-content\/uploads\/2026\/04\/image-6-768x554.png 768w\" sizes=\"(max-width: 932px) 100vw, 932px\" \/><\/figure>\n\n\n\n<p>Steps 5 and 6 are where most of the real work happens. The playground in Foundry lets you have live conversations with your agent, inspect what tools it called, and see exactly how it reasoned through the problem. That feedback loop is fast &#8211; much faster than deploying code, testing, debugging, redeploy.<\/p>\n\n\n\n<p><strong>What Foundry Handles So You Don&#8217;t Have To<\/strong><\/p>\n\n\n\n<p>This is the part I emphasise most with architects, because it changes the infrastructure conversation significantly:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Concern<\/strong><\/td><td><strong>Manual Approach<\/strong><\/td><td><strong>With Foundry<\/strong><\/td><\/tr><tr><td>Conversation state<\/td><td>You build a session store<\/td><td>Managed automatically via threads<\/td><\/tr><tr><td>Tool calling<\/td><td>You parse LLM output and route calls<\/td><td>Handled by the agent runtime<\/td><\/tr><tr><td>Retry logic<\/td><td>You implement it<\/td><td>Built in<\/td><\/tr><tr><td>Scaling<\/td><td>You configure compute<\/td><td>Serverless, auto-scales<\/td><\/tr><tr><td>Monitoring<\/td><td>You hook up Application Insights manually<\/td><td>Integrated telemetry<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>That&#8217;s a significant engineering shortcut &#8211; one that lets a team of two ship something that previously would have taken a team of six.<\/p>\n\n\n\n<p><strong>Real-World Consideration: Cost and Governance<\/strong><\/p>\n\n\n\n<p>One thing the demos don&#8217;t always show: Foundry runs on top of Azure services, and each of those has a cost dimension.<\/p>\n\n\n\n<ul>\n<li>Every LLM call costs tokens &#8211; monitor your model usage<\/li>\n\n\n\n<li>Azure AI Search has its own SKU and query cost model<\/li>\n\n\n\n<li>Functions and Storage are relatively cheap but add up at scale<\/li>\n<\/ul>\n\n\n\n<p><strong>My recommendation<\/strong>: set up Azure Cost Management alerts from day one. Define a budget threshold per environment (dev\/test\/prod). I&#8217;ve seen perfectly good proofs-of-concept die in procurement because nobody tracked what the dev environment was spending for six weeks.<br><\/p>\n\n\n\n<p>Also &#8211; governance. Know who can create agents, which models are approved, and what data those agents can access. These aren&#8217;t Foundry questions specifically; they&#8217;re organisational questions you need to answer before you scale.<\/p>\n\n\n\n<p><strong>Pros and Cons of Foundry<\/strong><br><strong>Pros:<\/strong><\/p>\n\n\n\n<ul>\n<li>Genuinely reduces infrastructure complexity<\/li>\n\n\n\n<li>Model-agnostic &#8211; swap LLMs without rewriting agent logic<\/li>\n\n\n\n<li>Excellent playground for rapid iteration<\/li>\n\n\n\n<li>Native Azure RBAC and identity integration<\/li>\n\n\n\n<li>Growing ecosystem of connectors and integrations<\/li>\n<\/ul>\n\n\n\n<p><strong>Cons:<\/strong><\/p>\n\n\n\n<ul>\n<li>Azure lock-in &#8211; if you need multi-cloud agent portability, plan carefully<\/li>\n\n\n\n<li>Some advanced customisations still require code<\/li>\n\n\n\n<li>The UI evolves fast &#8211; documentation occasionally lags the product<\/li>\n\n\n\n<li>Cost visibility requires proactive setup<\/li>\n<\/ul>\n\n\n\n<p><br>Foundry is not magic. You still need to think carefully about what your agent should and shouldn&#8217;t do, how failure cases are handled, and what happens when the LLM reasons incorrectly. But it removes a whole class of infrastructure problems from your plate, and for most enterprise teams, that&#8217;s exactly what&#8217;s needed to move from &#8220;AI proof-of-concept&#8221; to &#8220;AI in production&#8221;.<\/p>\n\n\n\n<p><br>Next up: I&#8217;ll walk through how to configure agent instructions properly &#8211; because the quality of what you put in the instructions field is what separates a useful agent from an expensive chatbot.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Every time a new technology matures, a platform emerges that hides the complexity and lets you focus on the problem. Docker did it for containers. Kubernetes did it for orchestration. Azure AI Foundry is doing it for AI agents &#8211; and understanding what it actually handles for you is the first step to using it [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/bogdanburuiana.com\/index.php\/wp-json\/wp\/v2\/posts\/1474"}],"collection":[{"href":"https:\/\/bogdanburuiana.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bogdanburuiana.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bogdanburuiana.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bogdanburuiana.com\/index.php\/wp-json\/wp\/v2\/comments?post=1474"}],"version-history":[{"count":1,"href":"https:\/\/bogdanburuiana.com\/index.php\/wp-json\/wp\/v2\/posts\/1474\/revisions"}],"predecessor-version":[{"id":1478,"href":"https:\/\/bogdanburuiana.com\/index.php\/wp-json\/wp\/v2\/posts\/1474\/revisions\/1478"}],"wp:attachment":[{"href":"https:\/\/bogdanburuiana.com\/index.php\/wp-json\/wp\/v2\/media?parent=1474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bogdanburuiana.com\/index.php\/wp-json\/wp\/v2\/categories?post=1474"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bogdanburuiana.com\/index.php\/wp-json\/wp\/v2\/tags?post=1474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}