<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>Think Different</title><description>Ready to rapidly transform your startup? I translate complex AI, GenAI, IoT, and Robotics into tangible, growth-driving solutions that unlock new market opportunities and accelerate your innovation roadmap.</description><managingEditor>noreply@blogger.com (Dhiraj Patra)</managingEditor><pubDate>Tue, 10 Nov 2026 04:29:26 -0800</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">666</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://dhirajpatra.blogspot.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><copyright>it is protected by author</copyright><itunes:keywords>dhiraj,dhirajpatra,php</itunes:keywords><itunes:summary>it describes my personal view</itunes:summary><itunes:subtitle>dhiraj patra</itunes:subtitle><itunes:author>dhiraj patra</itunes:author><itunes:owner><itunes:email>dhiraj.patra@gmail.com</itunes:email><itunes:name>dhiraj patra</itunes:name></itunes:owner><item><title>How to become an AI Engineer, Forward Deployed Engineer (FDE), or Agentic AI Engineer</title><link>http://dhirajpatra.blogspot.com/2026/11/how-to-become-ai-engineer-forward.html</link><category>artificial intelligence</category><category>deep learning</category><category>fde</category><category>genai</category><category>learning</category><category>machine learning</category><pubDate>Fri, 6 Nov 2026 18:06:44 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-3998630235339705005</guid><description>&lt;p&gt;&amp;nbsp;&lt;strong&gt;Who this is for &amp;amp; how to use it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This post is for anyone who wants to become an &lt;strong&gt;AI Engineer, Forward Deployed Engineer (FDE), or Agentic AI Engineer&lt;/strong&gt; — whether you're a student, a software dev switching fields, a data analyst leveling up, or a self-taught learner with no CS degree. No prior ML experience is required to start; you only need basic Python comfort (loops, functions, files) and curiosity. Here's how to use it properly: &lt;strong&gt;don't binge the videos.&lt;/strong&gt; Watch one CS329A lecture, then immediately build a tiny version of that idea in code the same week — e.g., after Lecture 2 (Test-Time Compute Scaling), write a script that generates 5 answers and picks the best; after Lecture 4 (Learning from Feedback with Tools), give an LLM a calculator or code-execution tool and feed the result back in. Follow the free roadmap &lt;strong&gt;in order&lt;/strong&gt; (Python/SQL → ML/LLMs → APIs &amp;amp; prompting → embeddings, LangChain, MCP → software engineering &amp;amp; LLMOps), and treat the "Build Real-World Projects" link as your portfolio requirement, not an optional extra — ship at least 2–3 end-to-end projects (a RAG app, a tool-using agent, and an evaluated multi-step agent) and put them on GitHub with a README explaining the try→check→keep loop your agent runs. &lt;strong&gt;Realistic timeline:&lt;/strong&gt; ~&lt;strong&gt;3 months&lt;/strong&gt; if you study 10–15 hrs/week to cover Python/SQL + ML/LLM basics + OpenAI API &amp;amp; prompting; ~&lt;strong&gt;6 months&lt;/strong&gt; at the same pace to reach job-ready AI Engineer / FDE level (add embeddings, LangChain, MCP, LLMOps, plus 2–3 portfolio projects); ~&lt;strong&gt;9–12 months&lt;/strong&gt; if you're starting from scratch at 5–7 hrs/week, or if you're targeting Agentic AI Engineer roles specifically — those need the full CS329A loop (planning, verification, RL, agentic evals) plus shipped agent projects. The rule of thumb: &lt;strong&gt;spend roughly 40% of your time watching/reading and 60% building and debugging&lt;/strong&gt; — the lectures give you the loop, but your agent still has to run it, and interviewers (and FDE customers) only care about what you've actually shipped.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;strong&gt;The Free Roadmap to Become an AI Engineer / FDE / Agentic AI Engineer (No Credit Card, All Free)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Stanford just made 9 lectures of CS329A "Self-Improving AI Agents" (taught by Azalia Mirhoseini &amp;amp; Aakanksha Chowdhery, Autumn 2025) public. Watch them in this order:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&#120783;. &#119826;&#119853;&#119834;&#119851;&#119853; &#119856;&#119842;&#119853;&#119841; &#119853;&#119841;&#119838; &#119810;&#119848;&#119854;&#119851;&#119852;&#119838; &#119822;&#119855;&#119838;&#119851;&#119855;&#119842;&#119838;&#119856;&lt;/strong&gt;&lt;br /&gt;
The map: an agent improves while it works and in training.&lt;br /&gt;
→ &lt;a href="https://lnkd.in/eyhbAQxw"&gt;https://lnkd.in/eyhbAQxw&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&#120784;. &#119827;&#119838;&#119852;&#119853;-&#119827;&#119842;&#119846;&#119838; &#119810;&#119848;&#119846;&#119849;&#119854;&#119853;&#119838; &#119826;&#119836;&#119834;&#119845;&#119842;&#119847;&#119840;&lt;/strong&gt;&lt;br /&gt;
Try many answers, keep the best.&lt;br /&gt;
→ &lt;a href="https://lnkd.in/eUU8rUv2"&gt;https://lnkd.in/eUU8rUv2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&#120785;. &#119825;&#119848;&#119835;&#119854;&#119852;&#119853; &#119829;&#119838;&#119851;&#119842;&#119839;&#119842;&#119836;&#119834;&#119853;&#119842;&#119848;&#119847;&lt;/strong&gt;&lt;br /&gt;
Check which answer is right. Everything else depends on this one.&lt;br /&gt;
→ &lt;a href="https://lnkd.in/eqXi7Z9f"&gt;https://lnkd.in/eqXi7Z9f&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&#120786;. &#119819;&#119838;&#119834;&#119851;&#119847;&#119842;&#119847;&#119840; &#119839;&#119851;&#119848;&#119846; &#119813;&#119838;&#119838;&#119837;&#119835;&#119834;&#119836;&#119844; &#119856;&#119842;&#119853;&#119841; &#119827;&#119848;&#119848;&#119845;&#119852;/&#119810;&#119848;&#119837;&#119838;&lt;/strong&gt;&lt;br /&gt;
The agent reads the result of its own tool calls.&lt;br /&gt;
→ &lt;a href="https://lnkd.in/e-avHXqg"&gt;https://lnkd.in/e-avHXqg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&#120787;. &#119823;&#119845;&#119834;&#119847;&#119847;&#119842;&#119847;&#119840; &#119834;&#119847;&#119837; &#119820;&#119854;&#119845;&#119853;&#119842;-&#119826;&#119853;&#119838;&#119849; &#119825;&#119838;&#119834;&#119852;&#119848;&#119847;&#119842;&#119847;&#119840;&lt;/strong&gt;&lt;br /&gt;
How an agent breaks a goal into steps it can check.&lt;br /&gt;
→ &lt;a href="https://lnkd.in/epxYg924"&gt;https://lnkd.in/epxYg924&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&#120788;. &#119827;&#119851;&#119834;&#119842;&#119847;-&#119827;&#119842;&#119846;&#119838; &#119826;&#119836;&#119834;&#119845;&#119842;&#119847;&#119840; &#119834;&#119847;&#119837; &#119825;&#119819;&lt;/strong&gt;&lt;br /&gt;
Train on the attempts that worked.&lt;br /&gt;
→ &lt;a href="https://lnkd.in/eg-yB7Qs"&gt;https://lnkd.in/eg-yB7Qs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&#120789;. &#119826;&#119838;&#119845;&#119839;-&#119816;&#119846;&#119849;&#119851;&#119848;&#119855;&#119838;&#119846;&#119838;&#119847;&#119853; &#119834;&#119847;&#119837; &#119811;&#119838;&#119838;&#119849; &#119825;&#119838;&#119852;&#119838;&#119834;&#119851;&#119836;&#119841; &#119808;&#119840;&#119838;&#119847;&#119853;&#119852;&lt;/strong&gt;&lt;br /&gt;
Agents that search, read and write a report.&lt;br /&gt;
→ &lt;a href="https://lnkd.in/ev7RZtQ3"&gt;https://lnkd.in/ev7RZtQ3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&#120790;. &#119808;&#119840;&#119838;&#119847;&#119853;&#119842;&#119836; &#119812;&#119855;&#119834;&#119845;&#119854;&#119834;&#119853;&#119842;&#119848;&#119847;&#119852; &#119834;&#119847;&#119837; &#119819;&#119848;&#119847;&#119840;-&#119815;&#119848;&#119851;&#119842;&#119859;&#119848;&#119847; &#119827;&#119834;&#119852;&#119844;&#119852;&lt;/strong&gt;&lt;br /&gt;
Tests where the agent must stay on track for many steps, not one answer.&lt;br /&gt;
→ &lt;a href="https://lnkd.in/emgMqsbQ"&gt;https://lnkd.in/emgMqsbQ&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&#120791;. &#119813;&#119854;&#119853;&#119854;&#119851;&#119838; &#119825;&#119838;&#119852;&#119838;&#119834;&#119851;&#119836;&#119841; &#119808;&#119851;&#119838;&#119834;&#119852;&lt;/strong&gt;&lt;br /&gt;
The open problems.&lt;br /&gt;
→ &lt;a href="https://lnkd.in/enRC2q6F"&gt;https://lnkd.in/enRC2q6F&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The lectures give you the loop: &lt;strong&gt;try, check, keep what worked.&lt;/strong&gt; Your agent still has to run it.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Here's the free AI Engineering roadmap I'd follow if I had to start over:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python and SQL&lt;/strong&gt;&lt;br /&gt;
→ Python Data Fundamentals: &lt;a href="https://lnkd.in/d_Au2SW3"&gt;https://lnkd.in/d_Au2SW3&lt;/a&gt;&lt;br /&gt;
→ SQL Fundamentals: &lt;a href="https://lnkd.in/dDqGhaZb"&gt;https://lnkd.in/dDqGhaZb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI and Machine Learning&lt;/strong&gt;&lt;br /&gt;
→ Machine Learning Fundamentals with Python: &lt;a href="https://lnkd.in/dhn2wHaG"&gt;https://lnkd.in/dhn2wHaG&lt;/a&gt;&lt;br /&gt;
→ Working with Hugging Face: &lt;a href="https://lnkd.in/ddCDRAtf"&gt;https://lnkd.in/ddCDRAtf&lt;/a&gt;&lt;br /&gt;
→ Introduction to LLMs in Python: &lt;a href="https://lnkd.in/d5UQRubT"&gt;https://lnkd.in/d5UQRubT&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Work with AI Models&lt;/strong&gt;&lt;br /&gt;
→ Working with the OpenAI API: &lt;a href="https://lnkd.in/dr74Vdtb"&gt;https://lnkd.in/dr74Vdtb&lt;/a&gt;&lt;br /&gt;
→ Prompt Engineering with the OpenAI API: &lt;a href="https://lnkd.in/dFXtReJX"&gt;https://lnkd.in/dFXtReJX&lt;/a&gt;&lt;br /&gt;
→ Working with the OpenAI Responses API: &lt;a href="https://lnkd.in/dbPSdEKC"&gt;https://lnkd.in/dbPSdEKC&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build Real AI Applications&lt;/strong&gt;&lt;br /&gt;
→ Introduction to Embeddings with the OpenAI API: &lt;a href="https://lnkd.in/d7y4JYir"&gt;https://lnkd.in/d7y4JYir&lt;/a&gt;&lt;br /&gt;
→ Developing LLM Applications with LangChain: &lt;a href="https://lnkd.in/drUNa8E6"&gt;https://lnkd.in/drUNa8E6&lt;/a&gt;&lt;br /&gt;
→ Introduction to Model Context Protocol (MCP): &lt;a href="https://lnkd.in/d9zdVUFA"&gt;https://lnkd.in/d9zdVUFA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build Reliable AI Applications&lt;/strong&gt;&lt;br /&gt;
→ Software Engineering Principles in Python: &lt;a href="https://lnkd.in/djfWCqqn"&gt;https://lnkd.in/djfWCqqn&lt;/a&gt;&lt;br /&gt;
→ LLMOps Concepts: &lt;a href="https://lnkd.in/d4sitMnz"&gt;https://lnkd.in/d4sitMnz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or follow their other career tracks:&lt;br /&gt;
→ Data Analyst Track: &lt;a href="https://lnkd.in/dFmU6HZg"&gt;https://lnkd.in/dFmU6HZg&lt;/a&gt;&lt;br /&gt;
→ Data Scientist Track: &lt;a href="https://lnkd.in/dxaUAbr4"&gt;https://lnkd.in/dxaUAbr4&lt;/a&gt;&lt;br /&gt;
→ Data Engineer Track: &lt;a href="https://lnkd.in/d7YG323Z"&gt;https://lnkd.in/d7YG323Z&lt;/a&gt;&lt;br /&gt;
→ Machine Learning Engineer Track: &lt;a href="https://lnkd.in/d_J9yGXK"&gt;https://lnkd.in/d_J9yGXK&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Build Real-World Projects for your portfolio:&lt;br /&gt;
&lt;a href="https://lnkd.in/de33jBJA"&gt;https://lnkd.in/de33jBJA&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See all 600+ free courses + certifications:&lt;br /&gt;
&lt;a href="https://lnkd.in/d9Syi42n"&gt;https://lnkd.in/d9Syi42n&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;10&lt;/span&gt;&lt;span class="gvyljb gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="gvygm6 gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: #0a66c2; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a aria-label="Open http://DeepLearning.AI" class="gvyhn4 gvyl5v" href="https://www.linkedin.com/safety/go/?url=http%3A%2F%2FDeepLearning%2EAI&amp;amp;urlhash=Jyx9&amp;amp;mt=I3Z_5mMHbS1b5MI2Q7belnDZ3K4ApgxHz6Bn8fNvs5LVQLiDeorJN0u9RiuC8piWNALqWRRoCTXlSQypf_V2SeKNgenP0eiOG6cGhRwB4jFZJL2-ZXPo6LvSjgXU3__706F3tX6Y39yfKAGH5VLfG16BPY-0KyUGD8TjJzOMiaOyokcXZBhRaI91UJw&amp;amp;isSdui=true" style="border: 0px; box-sizing: border-box; cursor: pointer; font-family: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;span style="border: 0px; box-sizing: border-box; font-family: inherit; font-weight: 600; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;DeepLearning.AI&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="gvyljb gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;"&gt; &lt;/span&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;courses on AI agents, skills, evals and loops &#128218; All free &lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;If you build AI agents: from a first agent to one you can test and control.&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;&#120783;- &#119808;&#119816; &#119808;&#119840;&#119838;&#119847;&#119853;&#119852; &#119842;&#119847; &#119819;&#119834;&#119847;&#119840;&#119814;&#119851;&#119834;&#119849;&#119841; (an agent from scratch, then in LangGraph)&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;→&lt;/span&gt;&lt;span class="gvyljb gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="gvygm6 gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: #0a66c2; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a aria-label="Open https://lnkd.in/e-7nM_sD" class="gvyhn4 gvyl5v" href="https://www.linkedin.com/safety/go/?url=https%3A%2F%2Flnkd%2Ein%2Fe-7nM_sD&amp;amp;urlhash=DXFL&amp;amp;mt=fkfAIdaN6N6NJpzulxjwSeelOGrlxEqFtgtdUGLk1qqsaQNM46vyfo6zteptoYiDXRmLBQKCDbq6nXcU3Jk44vG9GMfWsc9MOqnHtAkwd77nGObt_95N934PN8nccKbwqPFUsCRd6OdaNtF5PBU3rTrlX4B0vreByHniijiwolA1BpANlr_J8SLeqyI&amp;amp;isSdui=true" style="border: 0px; box-sizing: border-box; cursor: pointer; font-family: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;span style="border: 0px; box-sizing: border-box; font-family: inherit; font-weight: 600; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;https://lnkd.in/e-7nM_sD&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;&#120784;- &#119820;&#119810;&#119823;: &#119809;&#119854;&#119842;&#119845;&#119837; &#119825;&#119842;&#119836;&#119841;-&#119810;&#119848;&#119847;&#119853;&#119838;&#119857;&#119853; &#119808;&#119816; &#119808;&#119849;&#119849;&#119852; &#119856;&#119842;&#119853;&#119841; &#119808;&#119847;&#119853;&#119841;&#119851;&#119848;&#119849;&#119842;&#119836; (your own MCP server)&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;→&lt;/span&gt;&lt;span class="gvyljb gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="gvygm6 gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: #0a66c2; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a aria-label="Open https://lnkd.in/eeghVxHe" class="gvyhn4 gvyl5v" href="https://www.linkedin.com/safety/go/?url=https%3A%2F%2Flnkd%2Ein%2FeeghVxHe&amp;amp;urlhash=oDxL&amp;amp;mt=OCuw5nl-vlNzx_AJwEEdfy-uCSq7VtT5y-gKnFzW-O7Qh9tmqaOC3XBFfgo8sGZ8haXPjQPxT0MmkVG6iy_5fiAT8NWWoOUSNx0XbDbrSSaCrGA4ySlJG8y9DzAMt4a09OY_WHiv8vV0jyg7_QnUkyH6gt-j8SDcDxqFhJ-dGnL-yhPJKDV6a2FZhKY&amp;amp;isSdui=true" style="border: 0px; box-sizing: border-box; cursor: pointer; font-family: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;span style="border: 0px; box-sizing: border-box; font-family: inherit; font-weight: 600; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;https://lnkd.in/eeghVxHe&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;&#120785;- &#119808;&#119840;&#119838;&#119847;&#119853; &#119820;&#119838;&#119846;&#119848;&#119851;&#119858;: &#119809;&#119854;&#119842;&#119845;&#119837;&#119842;&#119847;&#119840; &#119820;&#119838;&#119846;&#119848;&#119851;&#119858;-&#119808;&#119856;&#119834;&#119851;&#119838; &#119808;&#119840;&#119838;&#119847;&#119853;&#119852; (remembering across sessions)&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;→&lt;/span&gt;&lt;span class="gvyljb gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="gvygm6 gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: #0a66c2; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a aria-label="Open https://lnkd.in/eRUa66rV" class="gvyhn4 gvyl5v" href="https://www.linkedin.com/safety/go/?url=https%3A%2F%2Flnkd%2Ein%2FeRUa66rV&amp;amp;urlhash=K-zg&amp;amp;mt=f5LKOvJkDrEfpM26SiXk2ZdNUANGzC7K9saq86eElV4WsaMl57V_vYViFdzaJBgZnk-un4hKry4WfDBDTkkFC90G85AJGgxuKV1krIqDQgK0KQy6bWE7mmsbYqo7Qcir0gGLOCdwrMt7IQAPxMf3f-KfroGN4umDinj9mLtkKYDus_6UULkC9ZKIjYE&amp;amp;isSdui=true" style="border: 0px; box-sizing: border-box; cursor: pointer; font-family: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;span style="border: 0px; box-sizing: border-box; font-family: inherit; font-weight: 600; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;https://lnkd.in/eRUa66rV&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;&#120786;- &#119808;&#119840;&#119838;&#119847;&#119853; &#119826;&#119844;&#119842;&#119845;&#119845;&#119852; &#119856;&#119842;&#119853;&#119841; &#119808;&#119847;&#119853;&#119841;&#119851;&#119848;&#119849;&#119842;&#119836; (skills your agent loads on demand)&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;→&lt;/span&gt;&lt;span class="gvyljb gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="gvygm6 gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: #0a66c2; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a aria-label="Open https://lnkd.in/eX3XM_UE" class="gvyhn4 gvyl5v" href="https://www.linkedin.com/safety/go/?url=https%3A%2F%2Flnkd%2Ein%2FeX3XM_UE&amp;amp;urlhash=Z9fj&amp;amp;mt=-ACi5f8X8EjdxEXu7-ljbE-Q6m4rseOKtLoqbvRtcMTbzsX0jrNnS3otgojTVtQOdqOQ2cUuYxwd-5VR5dmhoe_6R8NdJ8vx3bixiAWCPp_bcz3DuEHBdHSm3EVlrFDlPoSUetsNITj_4NQY0Yrw8C4c1SVGpnJPhw4rybYH-AXBNsQL37_fdv5T9_4&amp;amp;isSdui=true" style="border: 0px; box-sizing: border-box; cursor: pointer; font-family: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;span style="border: 0px; box-sizing: border-box; font-family: inherit; font-weight: 600; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;https://lnkd.in/eX3XM_UE&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;&#120787;- &#119809;&#119854;&#119842;&#119845;&#119837;&#119842;&#119847;&#119840; &#119808;&#119837;&#119834;&#119849;&#119853;&#119842;&#119855;&#119838; &#119808;&#119816; &#119808;&#119840;&#119838;&#119847;&#119853;&#119852; (traces become skills, a human approves each)&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;→&lt;/span&gt;&lt;span class="gvyljb gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="gvygm6 gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: #0a66c2; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a aria-label="Open https://lnkd.in/eGriMbby" class="gvyhn4 gvyl5v" href="https://www.linkedin.com/safety/go/?url=https%3A%2F%2Flnkd%2Ein%2FeGriMbby&amp;amp;urlhash=15E9&amp;amp;mt=9HXkfLMeHdLijmcY9fnhnm0U2nWuQMvwzvGPKV5Se0RVnxMiAV339luWERAk4jsINoFNsMp4mdcJ3BLR1O6x-0jjIO6Onk51SRKd1bawvFZLdjioUiETFTjgXx3ElpjrKwWLZsYdfCyyQ6BTlQ15JDU5z7cQAxLTFSJ8nbyPZSyr2m12PrRtu0wFDj0&amp;amp;isSdui=true" style="border: 0px; box-sizing: border-box; cursor: pointer; font-family: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;span style="border: 0px; box-sizing: border-box; font-family: inherit; font-weight: 600; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;https://lnkd.in/eGriMbby&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;&#120788;- &#119812;&#119855;&#119834;&#119845;&#119854;&#119834;&#119853;&#119842;&#119847;&#119840; &#119808;&#119816; &#119808;&#119840;&#119838;&#119847;&#119853;&#119852; (tracing, then testing each part)&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;→&lt;/span&gt;&lt;span class="gvyljb gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="gvygm6 gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: #0a66c2; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a aria-label="Open https://lnkd.in/e8fhRbQ4" class="gvyhn4 gvyl5v" href="https://www.linkedin.com/safety/go/?url=https%3A%2F%2Flnkd%2Ein%2Fe8fhRbQ4&amp;amp;urlhash=ADg5&amp;amp;mt=T5X15uTUpEYN7Uwan_Fah4VXHRnF7YLewXcVrou9cmpEBnEDHDhMynhaVo4mJJz00TjUsQjQKcFPj7VbBLwDpxgW3aVSgJ8Bo9FvrbHrCfzTwdPa26IBfA7wLd9fSs5yvmqXaXkAZColQHa8ZSUU4n62iEB9Et61yjOiW97kKayS1quD_eC0gnOSamw&amp;amp;isSdui=true" style="border: 0px; box-sizing: border-box; cursor: pointer; font-family: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;span style="border: 0px; box-sizing: border-box; font-family: inherit; font-weight: 600; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;https://lnkd.in/e8fhRbQ4&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;&#120789;- &#119809;&#119854;&#119842;&#119845;&#119837;&#119842;&#119847;&#119840; &#119834;&#119847;&#119837; &#119812;&#119855;&#119834;&#119845;&#119854;&#119834;&#119853;&#119842;&#119847;&#119840; &#119811;&#119834;&#119853;&#119834; &#119808;&#119840;&#119838;&#119847;&#119853;&#119852; (a data agent, traced and evaluated)&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;→&lt;/span&gt;&lt;span class="gvyljb gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="gvygm6 gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: #0a66c2; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a aria-label="Open https://lnkd.in/egf6nH6B" class="gvyhn4 gvyl5v" href="https://www.linkedin.com/safety/go/?url=https%3A%2F%2Flnkd%2Ein%2Fegf6nH6B&amp;amp;urlhash=WuCA&amp;amp;mt=sZDpY2WTmtKOyhFvmkAKb6icYQJOHBLGATVVHBFzuy6sZXOrc2ndSxw7Y_pYA2Dmd2UbyUl6XuEZ7xfwvCHMysFkjJ-mOuvW1NUPwJMyJSm4qoCvJBsot0xyybBlqloEGcD6NLoVaLoV8FuD2MqxBXV90NMgZ9aRlv_fr9knJssP8hzrYsbSAxztrPo&amp;amp;isSdui=true" style="border: 0px; box-sizing: border-box; cursor: pointer; font-family: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;span style="border: 0px; box-sizing: border-box; font-family: inherit; font-weight: 600; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;https://lnkd.in/egf6nH6B&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;&#120790;- &#119811;&#119826;&#119823;&#119858;: &#119809;&#119854;&#119842;&#119845;&#119837; &#119834;&#119847;&#119837; &#119822;&#119849;&#119853;&#119842;&#119846;&#119842;&#119859;&#119838; &#119808;&#119840;&#119838;&#119847;&#119853;&#119842;&#119836; &#119808;&#119849;&#119849;&#119852; (an optimizer tunes your prompts)&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;→&lt;/span&gt;&lt;span class="gvyljb gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="gvygm6 gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: #0a66c2; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a aria-label="Open https://lnkd.in/e_jEkazh" class="gvyhn4 gvyl5v" href="https://www.linkedin.com/safety/go/?url=https%3A%2F%2Flnkd%2Ein%2Fe_jEkazh&amp;amp;urlhash=iwAd&amp;amp;mt=8DUOUBKsENXIl-qXEJ5KFER2-XYRBFGUblLvS-Bvkh0LmgU0ti9TH4VaE6b4i342M2p55NZNzxN3xzv9-5cDvfCjPyySSqxz95YV-jA68Hr4-yVFlFXX9h8pCL3LrtEw4WBV2Vg0aWpjJoFmX5LEyr6hl_esr5nDKN1gmoCIQZkWbZSsW6clH_NXJbI&amp;amp;isSdui=true" style="border: 0px; box-sizing: border-box; cursor: pointer; font-family: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;span style="border: 0px; box-sizing: border-box; font-family: inherit; font-weight: 600; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;https://lnkd.in/e_jEkazh&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;&#120791;- &#119819;&#119848;&#119848;&#119849; &#119812;&#119847;&#119840;&#119842;&#119847;&#119838;&#119838;&#119851;&#119842;&#119847;&#119840; &#119856;&#119842;&#119853;&#119841; &#119819;&#119834;&#119847;&#119840;&#119810;&#119841;&#119834;&#119842;&#119847; &#119811;&#119838;&#119838;&#119849; &#119808;&#119840;&#119838;&#119847;&#119853;&#119852; (four loops around one agent)&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;→&lt;/span&gt;&lt;span class="gvyljb gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="gvygm6 gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: #0a66c2; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a aria-label="Open https://lnkd.in/ehjc6a-Q" class="gvyhn4 gvyl5v" href="https://www.linkedin.com/safety/go/?url=https%3A%2F%2Flnkd%2Ein%2Fehjc6a-Q&amp;amp;urlhash=fREh&amp;amp;mt=BAHG5Nmim9aNy8MZOHG6y9Nv8LaBvbBNCNcDduJaHsHNLBzWyrt29_LJ4MS8mnNm1g7av_a0NCz_tp81u6VonKAWMbY8tqrV_lKF1f9c363nZ_xVN056IPxCCwrLmQZIDnNUp95WX7e-yO_FN-nMtyRwnEiGARuX_Sah7pKNkjahZO1RaBACE4mlplM&amp;amp;isSdui=true" style="border: 0px; box-sizing: border-box; cursor: pointer; font-family: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;span style="border: 0px; box-sizing: border-box; font-family: inherit; font-weight: 600; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;https://lnkd.in/ehjc6a-Q&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;&#120783;&#120782;- &#119814;&#119848;&#119855;&#119838;&#119851;&#119847;&#119842;&#119847;&#119840; &#119808;&#119816; &#119808;&#119840;&#119838;&#119847;&#119853;&#119852; (limit its data, track its decisions)&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;→&lt;/span&gt;&lt;span class="gvyljb gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;"&gt; &lt;/span&gt;&lt;span class="gvygm6 gvyl4o" style="background-color: white; border: 0px; box-sizing: border-box; color: #0a66c2; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;a aria-label="Open https://lnkd.in/eZsbe88U" class="gvyhn4 gvyl5v" href="https://www.linkedin.com/safety/go/?url=https%3A%2F%2Flnkd%2Ein%2FeZsbe88U&amp;amp;urlhash=VSJs&amp;amp;mt=etKq8RgEwyKuFVk-IcaWmNl-LpsUYUVR-4EO7B_YyRw57lv8GXAlUeGX2ocsFtgHVPZWsVjXV1QF-S8MRObBeS1agsp1xPN5eQxmHlYG1B41DJ9o63-qfnuhdIML1CW8AOhfo9LfWZKAZctDF-tFnwFweRltxz-bTU3LpWP-scS0Puf2R0t_wX46kSk&amp;amp;isSdui=true" style="border: 0px; box-sizing: border-box; cursor: pointer; font-family: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;span style="border: 0px; box-sizing: border-box; font-family: inherit; font-weight: 600; margin: 0px; padding: 0px; vertical-align: baseline;"&gt;https://lnkd.in/eZsbe88U&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;br style="background-color: white; box-sizing: border-box; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;" /&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space: pre-wrap;"&gt;Together: 17h34. My advice: practice while you watch, and 1 to 2h become 3 to 4h.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No Credit Card. All FREE!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Save this. Share it with someone who's starting out. &#128640;&lt;/p&gt;

&lt;p&gt;#AIEngineering #AgenticAI #LLMs #MachineLearning #FreeCourses #FDE #AIEngineer #StanfordCS329A&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>How to Convert Tensoflow/Keras Model to the ONNX Format</title><link>http://dhirajpatra.blogspot.com/2026/11/how-to-convert-tensoflowkeras-model-to.html</link><category>ai</category><category>edge ai</category><category>keras</category><category>ml</category><category>onnx</category><category>pytorch</category><category>tensorflow</category><pubDate>Wed, 4 Nov 2026 22:28:51 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-832250374175028086</guid><description>&lt;p&gt;&lt;span data-processed="true" data-subtree="aimfl" style="border-bottom: 0px rgb(232, 234, 242); font-family: &amp;quot;Google Sans&amp;quot;, Arial, sans-serif, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; margin: 0px;"&gt;To convert a TensorFlow/Keras model to the ONNX format, the industry-standard tool is &lt;/span&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="ZZrqX_q" style="border-bottom: 0px rgb(232, 234, 242); font-family: &amp;quot;Google Sans&amp;quot;, Arial, sans-serif, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px; font-weight: 700; margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="c" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="ZZrqX_r" style="border-bottom: 0.8px solid rgb(44, 46, 53); font-size: 14px; margin: 0px;"&gt;tf2onnx&lt;/code&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Google Sans&amp;quot;, Arial, sans-serif, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 16px;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;div class="pWvJNd" data-complete="true" data-processed="true" data-sfc-root="c" jsaction="" jscontroller="zp3Dsd#fP0RJ" jsuid="ZZrqX_5" style="border-bottom: 0px rgb(232, 234, 242); font-family: &amp;quot;Google Sans&amp;quot;, Arial, sans-serif, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 14px; margin: 0px;"&gt;&lt;div data-complete="true" data-processed="true" data-sfc-root="c" jsaction="" jscontroller="z34MU#CsVNRe" jsname="s7e4Od" jsuid="ZZrqX_6" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;span style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="mZJni" data-container-id="main-col" data-processed="true" data-sfc-root="c" data-ved="2ahUKEwjE8ub_mPCXAxUkd2wGHSs6MEwQ3KYQegYIAAgCEAE" data-xid="VpUvz" dir="ltr" jsaction="cC6SSe:&amp;amp;ZZrqX_7|mNzCb;" jscontroller="Aoijq#INwBm" jsname="KFl8ub" jsuid="ZZrqX_7" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;span style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAAIBxAA" data-processed="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="ZZrqX_x" style="border-bottom: 0px rgb(232, 234, 242); font-size: 16px; margin: 12px 0px 16px;"&gt;Here is a complete, production-ready python example that builds a simple Keras model, saves it, and converts it to &lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="c" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="ZZrqX_y" style="border-bottom: 0.8px solid rgb(44, 46, 53); font-size: 14px; margin: 0px;"&gt;.onnx&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="c" jsaction="rcuQ6b:&amp;amp;ZZrqX_14|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="ZZrqX_14" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div aria-level="4" class="ZLzG0d ncoeY E8xBUb" data-animation-nesting="" data-complete="true" data-hveid="CAAICBAA" data-processed="true" data-sae="" data-sfc-cp="" data-sfc-root="c" data-wiz-attrbind="aria-level=ZZrqX_15/fLk2Md" jsaction="" jscontroller="zg1ZQe#TswZNc" jsuid="ZZrqX_15" role="heading" style="border-bottom: 0px rgb(232, 234, 242); font-size: 20px; font-weight: 600; margin: 24px 0px 12px;"&gt;1. Install Required Libraries&lt;!--TgQPHd|||[[2,[null,null,1,null,null,null,null,null,null,null,null,null,[351768,null,0]],[],null,1]]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAAICRAA" data-processed="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="ZZrqX_16" style="border-bottom: 0px rgb(232, 234, 242); font-size: 16px; margin: 12px 0px 16px;"&gt;You need to install TensorFlow and the official &lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="c" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="ZZrqX_17" style="border-bottom: 0.8px solid rgb(44, 46, 53); font-size: 14px; margin: 0px;"&gt;tf2onnx&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; library.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="c" jsaction="rcuQ6b:&amp;amp;ZZrqX_1d|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="ZZrqX_1d" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="BpxUDf aiModeUiCodeBlock__Container" data-complete="true" data-hveid="CAAIChAA" data-processed="true" data-sfc-cp="" data-sfc-root="c" data-wiz-uids="ZZrqX_1g,ZZrqX_1f" jsaction="" jscontroller="Liu6s#lcO7sb" jsuid="ZZrqX_1e" style="border-bottom: 0px rgb(232, 234, 242); margin: 4px 0px 0px;"&gt;&lt;div data-processed="true" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;div class="rq1a2" data-animation-atomic="true" data-sae="" style="border-bottom: 0.8px solid rgb(44, 46, 53); margin: 0px;"&gt;&lt;div class="a2TNg" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;div class="GlO4G" style="border-bottom: 0px rgb(232, 234, 242); font-size: 20px; margin: 0px;"&gt;bash&lt;/div&gt;&lt;/div&gt;&lt;div class="PGvq2d" dir="ltr" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;pre style="border-bottom: 0px rgb(232, 234, 242); margin: 14px 0px;"&gt;&lt;code jsuid="ZZrqX_1g" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;pip install tensorflow tf2onnx onnxruntime
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="iMHp6c" data-animation-atomic="true" data-sae="" style="border-bottom: 0.8px solid rgb(44, 46, 53); margin: 3px 0px 0px;"&gt;&lt;div class="ZIumpf" style="border-bottom: 0px rgb(189, 193, 198); font-size: 12px; margin: 0px;"&gt;Use code with caution.&lt;/div&gt;&lt;span data-ved="2ahUKEwjE8ub_mPCXAxUkd2wGHSs6MEwQopQPegYIAAgKEAE" jsaction="action:&amp;amp;ZZrqX_1e|ZUljYd" jsuid="ZZrqX_1f" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;div data-complete="true" data-sfc-cp="" data-sfc-root="c" data-ved="2ahUKEwjE8ub_mPCXAxUkd2wGHSs6MEwQh9gSegYIAAgKEAI" jsaction="" jscontroller="cXTEid#e0nEwf" jsuid="ZZrqX_1h" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;!--TgQPHd||GVEHxc=*Q0pj3b|[]--&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--TgQPHd|||[[&amp;quot;bash&amp;quot;,&amp;quot;pip install tensorflow tf2onnx onnxruntime\n&amp;quot;,[[&amp;quot;pip install tensorflow tf2onnx onnxruntime\n&amp;quot;,0]]]]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="c" jsaction="rcuQ6b:&amp;amp;ZZrqX_1l|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="ZZrqX_1l" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div aria-level="4" class="ZLzG0d ncoeY E8xBUb" data-animation-nesting="" data-complete="true" data-hveid="CAAICxAA" data-processed="true" data-sae="" data-sfc-cp="" data-sfc-root="c" data-wiz-attrbind="aria-level=ZZrqX_1m/fLk2Md" jsaction="" jscontroller="zg1ZQe#TswZNc" jsuid="ZZrqX_1m" role="heading" style="border-bottom: 0px rgb(232, 234, 242); font-size: 20px; font-weight: 600; margin: 24px 0px 12px;"&gt;2. Python Conversion Script&lt;!--TgQPHd|||[[2,[null,null,1,null,null,null,null,null,null,null,null,null,[351768,null,0]],[],null,1]]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="c" jsaction="rcuQ6b:&amp;amp;ZZrqX_1n|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="ZZrqX_1n" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="BpxUDf aiModeUiCodeBlock__Container" data-complete="true" data-hveid="CAAIDBAA" data-processed="true" data-sfc-cp="" data-sfc-root="c" data-wiz-uids="ZZrqX_1q,ZZrqX_1p" jsaction="" jscontroller="Liu6s#lcO7sb" jsuid="ZZrqX_1o" style="border-bottom: 0px rgb(232, 234, 242); margin: 4px 0px 0px;"&gt;&lt;div data-processed="true" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;div class="rq1a2" data-animation-atomic="true" data-sae="" style="border-bottom: 0.8px solid rgb(44, 46, 53); margin: 0px;"&gt;&lt;div class="a2TNg" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;div class="GlO4G" style="border-bottom: 0px rgb(232, 234, 242); font-size: 20px; margin: 0px;"&gt;python&lt;/div&gt;&lt;/div&gt;&lt;div class="PGvq2d" dir="ltr" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;pre style="border-bottom: 0px rgb(232, 234, 242); margin: 14px 0px;"&gt;&lt;code jsuid="ZZrqX_1q" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;span class="uiJ0Tc" style="border-bottom: 0px rgb(197, 138, 249); margin: 0px;"&gt;import&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; &lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;numpy&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; &lt;/span&gt;&lt;span class="uiJ0Tc" style="border-bottom: 0px rgb(197, 138, 249); margin: 0px;"&gt;as&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; np
&lt;/span&gt;&lt;span class="uiJ0Tc" style="border-bottom: 0px rgb(197, 138, 249); margin: 0px;"&gt;import&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; &lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;onnxruntime&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; &lt;/span&gt;&lt;span class="uiJ0Tc" style="border-bottom: 0px rgb(197, 138, 249); margin: 0px;"&gt;as&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; ort
&lt;/span&gt;&lt;span class="uiJ0Tc" style="border-bottom: 0px rgb(197, 138, 249); margin: 0px;"&gt;import&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; &lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;tensorflow&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; &lt;/span&gt;&lt;span class="uiJ0Tc" style="border-bottom: 0px rgb(197, 138, 249); margin: 0px;"&gt;as&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; tf
&lt;/span&gt;&lt;span class="uiJ0Tc" style="border-bottom: 0px rgb(197, 138, 249); margin: 0px;"&gt;import&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; &lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;tf2onnx&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;

&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# -------------------------------------------------------------&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# STEP 1: Create and train a dummy Keras model&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# -------------------------------------------------------------&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
print(&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;Building Keras model...&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)
&lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;inputs&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; = tf.keras.Input(shape=(&lt;/span&gt;&lt;span class="N1kUHb" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;10&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;,), name=&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;input_layer&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)
&lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;x&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; = tf.keras.layers.Dense(&lt;/span&gt;&lt;span class="N1kUHb" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;32&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;, activation=&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;relu&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)(inputs)
&lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;outputs&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; = tf.keras.layers.Dense(&lt;/span&gt;&lt;span class="N1kUHb" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;2&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;, activation=&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;softmax&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;, name=&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;output_layer&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)(x)
&lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;model&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; = tf.keras.Model(inputs=inputs, outputs=outputs)

&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# Dummy weights initialization&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
model.compile(optimizer=&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;adam&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;, loss=&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;categorical_crossentropy&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)

&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# -------------------------------------------------------------&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# STEP 2: Define the input signature and convert to ONNX&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# -------------------------------------------------------------&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
print(&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;Converting model to ONNX...&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)

&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# Define the shape and type of the input tensor.&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# Using 'None' for the first dimension allows for dynamic batch sizes.&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;input_signature&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; = [tf.TensorSpec([&lt;/span&gt;&lt;span class="uiJ0Tc" style="border-bottom: 0px rgb(197, 138, 249); margin: 0px;"&gt;None&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;, &lt;/span&gt;&lt;span class="N1kUHb" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;10&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;], tf.float32, name=&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;input_layer&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)]

&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# Perform the conversion&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;onnx_model&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;, &lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;_&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; = tf2onnx.convert.from_keras(model, input_signature, opset=&lt;/span&gt;&lt;span class="N1kUHb" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;13&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)

&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# Save the ONNX model to disk&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;onnx_path&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; = &lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;model.onnx&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="uiJ0Tc" style="border-bottom: 0px rgb(197, 138, 249); margin: 0px;"&gt;with&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; open(onnx_path, &lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;wb&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;) &lt;/span&gt;&lt;span class="uiJ0Tc" style="border-bottom: 0px rgb(197, 138, 249); margin: 0px;"&gt;as&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; &lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;f&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;:
    f.write(onnx_model.SerializeToString())

print(&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;f&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;Success! Model saved to &lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;{onnx_path}&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)

&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# -------------------------------------------------------------&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# STEP 3: Verify the ONNX model using ONNX Runtime&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# -------------------------------------------------------------&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
print(&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;\nVerifying ONNX model against original Keras model...&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)

&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# Generate random dummy data for a test prediction&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;dummy_input&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; = np.random.randn(&lt;/span&gt;&lt;span class="N1kUHb" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;1&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;, &lt;/span&gt;&lt;span class="N1kUHb" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;10&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;).astype(np.float32)

&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# Get Keras prediction&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;keras_pred&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; = model.predict(dummy_input, verbose=&lt;/span&gt;&lt;span class="N1kUHb" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;0&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)

&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# Get ONNX Runtime prediction&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;ort_session&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; = ort.InferenceSession(onnx_path)
&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# ONNX requires a dict mapping input layer names to numpy arrays&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
&lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;ort_inputs&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; = {ort_session.get_inputs()[&lt;/span&gt;&lt;span class="N1kUHb" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;0&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;].name: dummy_input}
&lt;/span&gt;&lt;span class="yqj1Pc" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;ort_pred&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt; = ort_session.run(&lt;/span&gt;&lt;span class="uiJ0Tc" style="border-bottom: 0px rgb(197, 138, 249); margin: 0px;"&gt;None&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;, ort_inputs)[&lt;/span&gt;&lt;span class="N1kUHb" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;0&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;]

&lt;/span&gt;&lt;span class="ojrtQ" style="border-bottom: 0px rgb(154, 160, 166); margin: 0px;"&gt;# Check if outputs match closely&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;
np.testing.assert_allclose(keras_pred, ort_pred, rtol=&lt;/span&gt;&lt;span class="N1kUHb" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;1e-5&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;, atol=&lt;/span&gt;&lt;span class="N1kUHb" style="border-bottom: 0px rgb(250, 144, 62); margin: 0px;"&gt;1e-5&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)
print(&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;Verification passed! Keras and ONNX outputs are identical.&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)
print(&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;f&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;Keras output: &lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;{keras_pred}&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)
print(&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;f&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;ONNX output:  &lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;{ort_pred}&lt;/span&gt;&lt;span class="dk3nFb" style="border-bottom: 0px rgb(129, 201, 149); margin: 0px;"&gt;"&lt;/span&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="iMHp6c" data-animation-atomic="true" data-sae="" style="border-bottom: 0.8px solid rgb(44, 46, 53); margin: 3px 0px 0px;"&gt;&lt;div class="ZIumpf" style="border-bottom: 0px rgb(189, 193, 198); font-size: 12px; margin: 0px;"&gt;Use code with caution.&lt;/div&gt;&lt;span data-ved="2ahUKEwjE8ub_mPCXAxUkd2wGHSs6MEwQopQPegYIAAgMEAE" jsaction="action:&amp;amp;ZZrqX_1o|ZUljYd" jsuid="ZZrqX_1p" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;div data-complete="true" data-sfc-cp="" data-sfc-root="c" data-ved="2ahUKEwjE8ub_mPCXAxUkd2wGHSs6MEwQh9gSegYIAAgMEAI" jsaction="" jscontroller="cXTEid#e0nEwf" jsuid="ZZrqX_1r" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;!--TgQPHd||GVEHxc=*Q0pj3b|[]--&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--TgQPHd|||[[&amp;quot;python&amp;quot;,&amp;quot;import numpy as np\nimport onnxruntime as ort\nimport tensorflow as tf\nimport tf2onnx\n\n# -------------------------------------------------------------\n# STEP 1: Create and train a dummy Keras model\n# -------------------------------------------------------------\nprint(\&amp;quot;Building Keras model...\&amp;quot;)\ninputs \u003d tf.keras.Input(shape\u003d(10,), name\u003d\&amp;quot;input_layer\&amp;quot;)\nx \u003d tf.keras.layers.Dense(32, activation\u003d\&amp;quot;relu\&amp;quot;)(inputs)\noutputs \u003d tf.keras.layers.Dense(2, activation\u003d\&amp;quot;softmax\&amp;quot;, name\u003d\&amp;quot;output_layer\&amp;quot;)(x)\nmodel \u003d tf.keras.Model(inputs\u003dinputs, outputs\u003doutputs)\n\n# Dummy weights initialization\nmodel.compile(optimizer\u003d\&amp;quot;adam\&amp;quot;, loss\u003d\&amp;quot;categorical_crossentropy\&amp;quot;)\n\n# -------------------------------------------------------------\n# STEP 2: Define the input signature and convert to ONNX\n# -------------------------------------------------------------\nprint(\&amp;quot;Converting model to ONNX...\&amp;quot;)\n\n# Define the shape and type of the input tensor.\n# Using &amp;#39;None&amp;#39; for the first dimension allows for dynamic batch sizes.\ninput_signature \u003d [tf.TensorSpec([None, 10], tf.float32, name\u003d\&amp;quot;input_layer\&amp;quot;)]\n\n# Perform the conversion\nonnx_model, _ \u003d tf2onnx.convert.from_keras(model, input_signature, opset\u003d13)\n\n# Save the ONNX model to disk\nonnx_path \u003d \&amp;quot;model.onnx\&amp;quot;\nwith open(onnx_path, \&amp;quot;wb\&amp;quot;) as f:\n    f.write(onnx_model.SerializeToString())\n\nprint(f\&amp;quot;Success! Model saved to {onnx_path}\&amp;quot;)\n\n# -------------------------------------------------------------\n# STEP 3: Verify the ONNX model using ONNX Runtime\n# -------------------------------------------------------------\nprint(\&amp;quot;\\nVerifying ONNX model against original Keras model...\&amp;quot;)\n\n# Generate random dummy data for a test prediction\ndummy_input \u003d np.random.randn(1, 10).astype(np.float32)\n\n# Get Keras prediction\nkeras_pred \u003d model.predict(dummy_input, verbose\u003d0)\n\n# Get ONNX Runtime prediction\nort_session \u003d ort.InferenceSession(onnx_path)\n# ONNX requires a dict mapping input layer names to numpy arrays\nort_inputs \u003d {ort_session.get_inputs()[0].name: dummy_input}\nort_pred \u003d ort_session.run(None, ort_inputs)[0]\n\n# Check if outputs match closely\nnp.testing.assert_allclose(keras_pred, ort_pred, rtol\u003d1e-5, atol\u003d1e-5)\nprint(\&amp;quot;Verification passed! Keras and ONNX outputs are identical.\&amp;quot;)\nprint(f\&amp;quot;Keras output: {keras_pred}\&amp;quot;)\nprint(f\&amp;quot;ONNX output:  {ort_pred}\&amp;quot;)\n&amp;quot;,[[&amp;quot;import&amp;quot;,3],[&amp;quot; &amp;quot;,0],[&amp;quot;numpy&amp;quot;,24],[&amp;quot; &amp;quot;,0],[&amp;quot;as&amp;quot;,3],[&amp;quot; np\n&amp;quot;,0],[&amp;quot;import&amp;quot;,3],[&amp;quot; &amp;quot;,0],[&amp;quot;onnxruntime&amp;quot;,24],[&amp;quot; &amp;quot;,0],[&amp;quot;as&amp;quot;,3],[&amp;quot; ort\n&amp;quot;,0],[&amp;quot;import&amp;quot;,3],[&amp;quot; &amp;quot;,0],[&amp;quot;tensorflow&amp;quot;,24],[&amp;quot; &amp;quot;,0],[&amp;quot;as&amp;quot;,3],[&amp;quot; tf\n&amp;quot;,0],[&amp;quot;import&amp;quot;,3],[&amp;quot; &amp;quot;,0],[&amp;quot;tf2onnx&amp;quot;,24],[&amp;quot;\n\n&amp;quot;,0],[&amp;quot;# -------------------------------------------------------------&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;# STEP 1: Create and train a dummy Keras model&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;# -------------------------------------------------------------&amp;quot;,5],[&amp;quot;\nprint(&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;Building Keras model...&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;)\n&amp;quot;,0],[&amp;quot;inputs&amp;quot;,24],[&amp;quot; \u003d tf.keras.Input(shape\u003d(&amp;quot;,0],[&amp;quot;10&amp;quot;,6],[&amp;quot;,), name\u003d&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;input_layer&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;)\n&amp;quot;,0],[&amp;quot;x&amp;quot;,24],[&amp;quot; \u003d tf.keras.layers.Dense(&amp;quot;,0],[&amp;quot;32&amp;quot;,6],[&amp;quot;, activation\u003d&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;relu&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;)(inputs)\n&amp;quot;,0],[&amp;quot;outputs&amp;quot;,24],[&amp;quot; \u003d tf.keras.layers.Dense(&amp;quot;,0],[&amp;quot;2&amp;quot;,6],[&amp;quot;, activation\u003d&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;softmax&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;, name\u003d&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;output_layer&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;)(x)\n&amp;quot;,0],[&amp;quot;model&amp;quot;,24],[&amp;quot; \u003d tf.keras.Model(inputs\u003dinputs, outputs\u003doutputs)\n\n&amp;quot;,0],[&amp;quot;# Dummy weights initialization&amp;quot;,5],[&amp;quot;\nmodel.compile(optimizer\u003d&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;adam&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;, loss\u003d&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;categorical_crossentropy&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;)\n\n&amp;quot;,0],[&amp;quot;# -------------------------------------------------------------&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;# STEP 2: Define the input signature and convert to ONNX&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;# -------------------------------------------------------------&amp;quot;,5],[&amp;quot;\nprint(&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;Converting model to ONNX...&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;)\n\n&amp;quot;,0],[&amp;quot;# Define the shape and type of the input tensor.&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;# Using &amp;#39;None&amp;#39; for the first dimension allows for dynamic batch sizes.&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;input_signature&amp;quot;,24],[&amp;quot; \u003d [tf.TensorSpec([&amp;quot;,0],[&amp;quot;None&amp;quot;,3],[&amp;quot;, &amp;quot;,0],[&amp;quot;10&amp;quot;,6],[&amp;quot;], tf.float32, name\u003d&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;input_layer&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;)]\n\n&amp;quot;,0],[&amp;quot;# Perform the conversion&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;onnx_model&amp;quot;,24],[&amp;quot;, &amp;quot;,0],[&amp;quot;_&amp;quot;,24],[&amp;quot; \u003d tf2onnx.convert.from_keras(model, input_signature, opset\u003d&amp;quot;,0],[&amp;quot;13&amp;quot;,6],[&amp;quot;)\n\n&amp;quot;,0],[&amp;quot;# Save the ONNX model to disk&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;onnx_path&amp;quot;,24],[&amp;quot; \u003d &amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;model.onnx&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;\n&amp;quot;,0],[&amp;quot;with&amp;quot;,3],[&amp;quot; open(onnx_path, &amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;wb&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;) &amp;quot;,0],[&amp;quot;as&amp;quot;,3],[&amp;quot; &amp;quot;,0],[&amp;quot;f&amp;quot;,24],[&amp;quot;:\n    f.write(onnx_model.SerializeToString())\n\nprint(&amp;quot;,0],[&amp;quot;f&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;Success! Model saved to &amp;quot;,4],[&amp;quot;{onnx_path}&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;)\n\n&amp;quot;,0],[&amp;quot;# -------------------------------------------------------------&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;# STEP 3: Verify the ONNX model using ONNX Runtime&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;# -------------------------------------------------------------&amp;quot;,5],[&amp;quot;\nprint(&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;\\nVerifying ONNX model against original Keras model...&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;)\n\n&amp;quot;,0],[&amp;quot;# Generate random dummy data for a test prediction&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;dummy_input&amp;quot;,24],[&amp;quot; \u003d np.random.randn(&amp;quot;,0],[&amp;quot;1&amp;quot;,6],[&amp;quot;, &amp;quot;,0],[&amp;quot;10&amp;quot;,6],[&amp;quot;).astype(np.float32)\n\n&amp;quot;,0],[&amp;quot;# Get Keras prediction&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;keras_pred&amp;quot;,24],[&amp;quot; \u003d model.predict(dummy_input, verbose\u003d&amp;quot;,0],[&amp;quot;0&amp;quot;,6],[&amp;quot;)\n\n&amp;quot;,0],[&amp;quot;# Get ONNX Runtime prediction&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;ort_session&amp;quot;,24],[&amp;quot; \u003d ort.InferenceSession(onnx_path)\n&amp;quot;,0],[&amp;quot;# ONNX requires a dict mapping input layer names to numpy arrays&amp;quot;,5],[&amp;quot;\n&amp;quot;,0],[&amp;quot;ort_inputs&amp;quot;,24],[&amp;quot; \u003d {ort_session.get_inputs()[&amp;quot;,0],[&amp;quot;0&amp;quot;,6],[&amp;quot;].name: dummy_input}\n&amp;quot;,0],[&amp;quot;ort_pred&amp;quot;,24],[&amp;quot; \u003d ort_session.run(&amp;quot;,0],[&amp;quot;None&amp;quot;,3],[&amp;quot;, ort_inputs)[&amp;quot;,0],[&amp;quot;0&amp;quot;,6],[&amp;quot;]\n\n&amp;quot;,0],[&amp;quot;# Check if outputs match closely&amp;quot;,5],[&amp;quot;\nnp.testing.assert_allclose(keras_pred, ort_pred, rtol\u003d&amp;quot;,0],[&amp;quot;1e-5&amp;quot;,6],[&amp;quot;, atol\u003d&amp;quot;,0],[&amp;quot;1e-5&amp;quot;,6],[&amp;quot;)\nprint(&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;Verification passed! Keras and ONNX outputs are identical.&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;)\nprint(&amp;quot;,0],[&amp;quot;f&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;Keras output: &amp;quot;,4],[&amp;quot;{keras_pred}&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;)\nprint(&amp;quot;,0],[&amp;quot;f&amp;quot;,4],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;ONNX output:  &amp;quot;,4],[&amp;quot;{ort_pred}&amp;quot;,0],[&amp;quot;\&amp;quot;&amp;quot;,4],[&amp;quot;)\n&amp;quot;,0]]]]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="c" jsaction="rcuQ6b:&amp;amp;ZZrqX_1v|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="ZZrqX_1v" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div aria-level="4" class="ZLzG0d ncoeY E8xBUb" data-animation-nesting="" data-complete="true" data-hveid="CAAIDRAA" data-processed="true" data-sae="" data-sfc-cp="" data-sfc-root="c" data-wiz-attrbind="aria-level=ZZrqX_1w/fLk2Md" jsaction="" jscontroller="zg1ZQe#TswZNc" jsuid="ZZrqX_1w" role="heading" style="border-bottom: 0px rgb(232, 234, 242); font-size: 20px; font-weight: 600; margin: 24px 0px 12px;"&gt;Key Considerations for Production&lt;!--TgQPHd|||[[2,[null,null,1,null,null,null,null,null,null,null,null,null,[351768,null,0]],[],null,1]]--&gt;&lt;/div&gt;&lt;ul class="XSq4R KI3fJ" data-complete="true" data-hveid="CAAIDhAA" data-processed="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="wiLEJc#NS0kde" jsuid="ZZrqX_1x" style="border-bottom: 0px rgb(232, 234, 242); font-size: 16px; margin: 12px 0px 16px;"&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIDhAB" data-sae="" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="ZZrqX_1y" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="ZZrqX_1z" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="ZZrqX_20" style="border-bottom: 0px rgb(232, 234, 242); font-weight: 700; margin: 0px;"&gt;Opset Version:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; The &lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="c" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="ZZrqX_21" style="border-bottom: 0.8px solid rgb(44, 46, 53); font-size: 14px; margin: 0px;"&gt;opset=13&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; parameter defines the ONNX operator set version. Newer versions support newer neural network layers. Opset 13 to 15 is generally a safe, highly compatible choice for most edge devices.&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIDhAE" data-sae="" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="ZZrqX_27" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="ZZrqX_28" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="ZZrqX_29" style="border-bottom: 0px rgb(232, 234, 242); font-weight: 700; margin: 0px;"&gt;Dynamic Axes:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; By passing &lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="c" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="ZZrqX_2a" style="border-bottom: 0.8px solid rgb(44, 46, 53); font-size: 14px; margin: 0px;"&gt;[None, 10]&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; in the &lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="c" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="ZZrqX_2b" style="border-bottom: 0.8px solid rgb(44, 46, 53); font-size: 14px; margin: 0px;"&gt;TensorSpec&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, you explicitly tell ONNX that the batch size can change at runtime (e.g., passing 1 image or 32 images at once).&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIDhAH" data-sae="" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="ZZrqX_2h" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="ZZrqX_2i" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="ZZrqX_2j" style="border-bottom: 0px rgb(232, 234, 242); font-weight: 700; margin: 0px;"&gt;Command Line Alternative:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; If you already have a model saved on your disk as a SavedModel folder (&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="c" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="ZZrqX_2k" style="border-bottom: 0.8px solid rgb(44, 46, 53); font-size: 14px; margin: 0px;"&gt;my_model_dir&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;), you don't even need to write Python code. You can convert it directly from your terminal:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;div class="BpxUDf aiModeUiCodeBlock__Container" data-complete="true" data-hveid="CAAIDhAK" data-sfc-cp="" data-sfc-root="c" data-wiz-uids="ZZrqX_2s,ZZrqX_2r" jsaction="" jscontroller="Liu6s#lcO7sb" jsuid="ZZrqX_2q" style="border-bottom: 0px rgb(232, 234, 242); margin: 4px 0px 0px;"&gt;&lt;div style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;div class="rq1a2" data-animation-atomic="true" style="border-bottom: 0.8px solid rgb(44, 46, 53); margin: 0px;"&gt;&lt;div class="a2TNg" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;div class="GlO4G" style="border-bottom: 0px rgb(232, 234, 242); font-size: 20px; margin: 0px;"&gt;bash&lt;/div&gt;&lt;/div&gt;&lt;div class="PGvq2d" dir="ltr" style="border-bottom: 0px rgb(232, 234, 242); font-size: 14px; margin: 0px;"&gt;&lt;pre style="border-bottom: 0px rgb(232, 234, 242); margin: 14px 0px;"&gt;&lt;code jsuid="ZZrqX_2s" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;python -m tf2onnx.convert --saved-model my_model_dir --output model.onnx
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="iMHp6c" data-animation-atomic="true" style="border-bottom: 0.8px solid rgb(44, 46, 53); margin: 3px 0px 0px;"&gt;&lt;div class="ZIumpf" style="border-bottom: 0px rgb(189, 193, 198); font-size: 12px; margin: 0px;"&gt;Use code with caution.&lt;/div&gt;&lt;span data-ved="2ahUKEwjE8ub_mPCXAxUkd2wGHSs6MEwQopQPegYIAAgOEAs" jsaction="action:&amp;amp;ZZrqX_2q|ZUljYd" jsuid="ZZrqX_2r" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;div data-complete="true" data-sfc-cp="" data-sfc-root="c" data-ved="2ahUKEwjE8ub_mPCXAxUkd2wGHSs6MEwQh9gSegYIAAgOEAw" jsaction="" jscontroller="cXTEid#e0nEwf" jsuid="ZZrqX_2t" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;!--TgQPHd||GVEHxc=*Q0pj3b|[]--&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--TgQPHd|||[[&amp;quot;bash&amp;quot;,&amp;quot;python -m tf2onnx.convert --saved-model my_model_dir --output model.onnx\n&amp;quot;,[[&amp;quot;python -m tf2onnx.convert --saved-model my_model_dir --output model.onnx\n&amp;quot;,0]]]]--&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/ul&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="c" jsaction="rcuQ6b:&amp;amp;ZZrqX_2x|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="ZZrqX_2x" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="AHmQrc" data-complete="true" data-hveid="CAAIDxAA" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="c" jsaction="rcuQ6b:&amp;amp;ZZrqX_2y|npT2md" jscontroller="LkYPVc#wdvZmf" jsuid="ZZrqX_2y" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAAIDxAB" data-processed="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="ZZrqX_2z" style="border-bottom: 0px rgb(232, 234, 242); font-size: 16px; margin: 12px 0px 16px;"&gt;You will find many tensorflow/keras model including my patented product application for renewable energy sector in my github repositories.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="c" jsaction="rcuQ6b:&amp;amp;ZZrqX_38|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="ZZrqX_38" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="c" jsaction="rcuQ6b:&amp;amp;ZZrqX_3a|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="ZZrqX_3a" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="c" jsaction="rcuQ6b:&amp;amp;ZZrqX_5u|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="ZZrqX_5u" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="c" data-subtree="aimba" jsaction="" jscontroller="v48bt#VKyOOd" jsuid="ZZrqX_5v" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;span style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="SGF5Lb" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="mk5ZW#TASLyc" jsuid="ZZrqX_8" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;span style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="SGF5Lb" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="mk5ZW#TASLyc" jsuid="ZZrqX_9" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;span style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="SGF5Lb" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="c" jsaction="" jscontroller="mk5ZW#TASLyc" jsuid="ZZrqX_a" style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;span style="border-bottom: 0px rgb(232, 234, 242); margin: 0px;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="" data-complete="true" data-processed="true" data-sfc-root="c" jsaction="" jscontroller="zp3Dsd#fP0RJ" jsuid="ZZrqX_b" style="border-bottom: 0px rgb(232, 234, 242); font-family: &amp;quot;Google Sans&amp;quot;, Arial, sans-serif, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 14px; margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-processed="true" data-xid="aQR2uf" jsaction="aimRestoredThreadVisible:&amp;amp;ZZrqX_1|ZUljYd;requestToggleBottomSheet:&amp;amp;ZZrqX_1|aXD3Gb" jsuid="ZZrqX_2" style="border-bottom: 0px rgb(232, 234, 242); font-family: &amp;quot;Google Sans&amp;quot;, Arial, sans-serif, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 14px; margin: 0px;"&gt;&lt;/div&gt;&lt;div data-complete="true" data-processed="true" data-sfc-inited="2" data-sfc-root="c" data-wiz-uids="ZZrqX_h,ZZrqX_i" jsaction="rcuQ6b:&amp;amp;ZZrqX_g|npT2md" jscontroller="CAwPlc#Hx4Oqd" jsuid="ZZrqX_g" style="border-bottom: 0px rgb(232, 234, 242); font-family: &amp;quot;Google Sans&amp;quot;, Arial, sans-serif, &amp;quot;Noto Color Emoji&amp;quot;; font-size: 14px; margin: 0px;"&gt;&lt;!--TgQPHdZZrqX_1/VWapad;ZZrqX_1/YOIIaf|||[{&amp;quot;s&amp;quot;:false,&amp;quot;i&amp;quot;:&amp;quot;ZZrqX_1/YOIIaf&amp;quot;},{&amp;quot;s&amp;quot;:null,&amp;quot;i&amp;quot;:&amp;quot;ZZrqX_1/VWapad&amp;quot;},156,{&amp;quot;s&amp;quot;:null,&amp;quot;i&amp;quot;:&amp;quot;ZZrqX_1/C5DOxd&amp;quot;},[&amp;quot;AimExportActionToastLink&amp;quot;,309275],&amp;quot;\u0026ZZrqX_1:bREfu&amp;quot;,false]--&gt;&lt;/div&gt;&lt;!--TgQPHd|ZZrqX_1/We76zc;ZZrqX_1/C5DOxd;ZZrqX_1/VWapad;ZZrqX_1/LL5gb;ZZrqX_1/YOIIaf||[[null,0,null,0,null,0,[&amp;quot;give me example for convert tensoflow/keras model to run by onnx&amp;quot;],null,0,[&amp;quot;give me example for convert tensoflow/keras model to run by onnx&amp;quot;],0]]--&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>Anthropic Claude Glossary</title><link>http://dhirajpatra.blogspot.com/2026/11/anthropic-claude-glossary.html</link><category>agent</category><category>agenticai</category><category>antrhopic</category><category>artificial intelligence</category><category>calude</category><category>gen ai</category><pubDate>Tue, 3 Nov 2026 06:00:13 -0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-4030608861455511637</guid><description>&lt;p&gt;&amp;nbsp;&lt;span style="background-color: #f8f8f8; font-family: Monaco, Menlo, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; white-space: pre-wrap;"&gt;Adaptive thinking&lt;/span&gt;&lt;/p&gt;&lt;pre style="background-color: #f8f8f8; border-radius: 4px; border: 1px solid rgb(221, 221, 221); margin: 8px 0px; padding: 8px 12px;"&gt;&lt;span style="font-family: Monaco, Menlo, Consolas, Courier New, monospace;"&gt;&lt;span&gt;&lt;span style="font-size: 12px; text-wrap-mode: wrap;"&gt;Extended thinking where the model itself, rather than you, decides whether to think and how much, based on the complexity of each request. It can reason at length on a hard problem and skip thinking entirely on a trivial one. You steer it with an effort level rather than configuring a token budget. On current Claude models it is the recommended control, and on the newest models it is the only one.

API
Application Programming Interface. The direct way to send requests to Claude from your own code, with full control over the prompt, the model, the parameters, and how the response is handled. Using the API means you are building the surrounding application yourself: the user interface, the conversation history, the error handling, the logging. The tradeoff is maximum flexibility in exchange for owning the infrastructure around it.

Authoritative
Authoritative means the source you have agreed to treat as correct: the partner's system of record, the live policy table, the current price list. When an answer is authoritative, it comes from that trusted source rather than from the model's recollection, so you can stand behind it.

Claude Agent SDK
A managed agent runtime distributed as the @anthropic-ai/claude-agent-sdk package for TypeScript and Python. It gives a partner programmatic access to the same agent loop that powers Claude Code: iteration, tool execution, observation, termination, so the partner can embed an agent inside their own product instead of running Claude Code in a terminal. Distinct from the Anthropic SDK, which is a thin convenience wrapper over the API and does not run an agent loop.

Claude Code
An agentic coding tool that reads files, edits code, runs commands, and executes multi-step engineering tasks under configurable permission boundaries. Distributed as a CLI, IDE plugins (VS Code, JetBrains, and others), a desktop application, and a web product at claude.ai/code. Claude Code is the entry point engineers use to do real development work, and it is customizable through CLAUDE.md, skills, subagents, hooks, MCP servers, and permission settings.

Claude.ai
The end-user chat product hosted by Anthropic. Reached through the web, the mobile apps, and Claude Desktop. Users sign in, open conversations, upload files, share context through Projects, and connect external services through built-in connectors. No code is written. Claude.ai is the entry point for users, not builders, which is why a partner's engineering team usually does not consume Claude.ai when embedding Claude in their own product.

Corpus
The body of documents a retrieval system searches over. A corpus might be a knowledge base, a set of policy documents, a product manual, or a collection of past tickets. The corpus is loaded and indexed ahead of time, which is why it works for stable reference material and not for live state.

CSP delivery route
Cloud Service Provider delivery route: The path that API traffic takes to reach Claude. Anthropic offers a direct route at api.anthropic.com, and the same Claude models are also available through AWS Bedrock, GCP Vertex AI, and Microsoft Foundry on Azure. The route you choose determines where the spend is billed, how the call is authenticated, which region the traffic terminates in, and which contract covers it. It does not affect how the model behaves.

Deterministic rule
A deterministic rule is a rule that always produces the same output for the same input. Same in, same out, every single time, with no variation.

Eval
Eval short for evaluations is a structured test set used to measure whether a model is performing well enough on a defined task. An eval pairs inputs with expected outputs or quality criteria, runs them against the model, and produces a score you can compare across model versions, prompts, or configurations. Evals are how teams decide whether a change is an improvement or a regression before it reaches production.

Extended thinking
The capability where the model works through a problem in a separate block of thinking tokens before it commits to a final answer, rather than responding in one pass. It helps on tasks where a one-shot answer would skip steps. Thinking tokens are billed as output tokens and add latency. How much thinking happens depends on the control mode: a thinking-token budget you configure yourself on older models, or adaptive thinking (see Adaptive thinking) on current ones.

IDE
Integrated Development Environment. A software application that bundles a code editor, debugger, and other tools into one place for writing and running code (e.g., VS Code, PyCharm, Xcode).

Live state
Data that changes during the lifetime of a conversation or process: an order status, an inventory count, a price, a calendar slot, a user's current session. Live state is distinct from static reference material because the correct answer at 10:00 a.m. may be wrong by 10:05. Systems that need live state require a direct lookup against the source of truth, not a stored snapshot.

MCP
Model Context Protocol. An open standard that lets Claude connect to external tools and data sources through a dedicated server, instead of requiring you to write a custom integration for each one. An MCP server exposes tools, prompts, and resources that any MCP-compatible client can use, which means a single integration written once can be reused across applications. MCP shifts the work of building and maintaining tool definitions away from your application code and into reusable servers.

Monolithic
The opposite of progressive: everything the model might need is loaded into context up front, in one block. Monolithic context is simpler to set up and fine for short, contained tasks, but it grows over time, pushes against the context window, and forces the model to attend to material that may not be relevant to the current step. Long-lived deployments built monolithically tend to degrade as the conversation accumulates.

Observability
Ability to see what your system is doing, reconstruct why it behaved a certain way, and detect when something goes wrong.

Parametric knowledge
Parametric knowledge means whatever the model learned during training and carries in its weights (its parameters). It is the model answering from memory, with no outside lookup. The opposite is knowledge the model pulls in at the moment of the request, like a document you hand it or a web search result.

Progressive
An approach where context, instructions, or capabilities are loaded in stages as the work requires them, rather than all at once at the start. Progressive context gives the model only what it needs at each step, which keeps the working set focused and the cost of each call lower. The pattern shows up in skills that load reference files on demand and in agents that gather information through tool calls instead of receiving everything in the initial prompt.

Prompt caching
Prompt caching is a feature that lets you store frequently used parts of a prompt, typically a long system prompt or a large document, so the model doesn't have to reprocess them from scratch on every request. The cached portion is computed once and reused across multiple calls.

Retrieval
Fetching relevant information from an outside source at the moment of the request and handing it to the model along with the question. Instead of relying on what the model learned in training, you pull the current document, record, or passage and put it in front of the model so the answer is grounded in that source.

SDK
Software Development Kit. A language-specific library (Python, TypeScript, and others) that wraps the API in idiomatic code for that language. The SDK handles the request formatting, authentication, retries, and response parsing so you can call Claude with a few lines of code instead of constructing HTTP requests by hand. The SDK is built on top of the API, so anything the API can do, the SDK can do, with less boilerplate. When an engineer says "SDK" they may mean this Anthropic SDK (a wrapper over the API) or the Claude Agent SDK (a managed agent runtime); however, these are two different things.

Shippable
Ready for production use, not just a working demo. Shippable output meets the bar for accuracy, latency, cost, and reliability that the deployment actually requires, and it has passed the evals and review gates the team uses to release changes. The distinction matters because a prototype that handles the happy path is not the same as a system that handles the long tail of real user inputs.

Terminal
A text-based interface for interacting with your computer's operating system by typing commands. Also called a command line or shell (e.g., Terminal on Mac, Command Prompt on Windows).

Tool use
The capability that lets Claude call external functions, APIs, or services during a response instead of only generating text. The model decides when to invoke a tool, what arguments to pass, and how to use the result in its next step. Tool use is what turns Claude from a text generator into a system that can read files, query databases, search the web, or take action in other software.

Wrapper
Code that surrounds or encapsulates another piece of code, library, or API to make it easier to use, add functionality, or translate between interfaces. For example, a Python wrapper around a C library lets you call C functions as if they were native Python.&lt;br /&gt;&lt;br /&gt;5xx errors
The class of HTTP status codes (500–599) indicating a server-side failure to fulfill an otherwise valid request. Common examples include 500 (Internal Server Error), 503 (Service Unavailable) and 529 (Overloaded Error). Usually transient and resolvable with retry and backoff, distinct from 4xx codes which indicate a client-side problem.

BAA (Business Associate Agreement)
A contract required under HIPAA between a covered entity (or business associate) and a vendor that handles protected health information on its behalf. The BAA specifies the safeguards the vendor will apply to PHI. For Claude deployments, BAA coverage is configuration-specific: the same surface may be BAA-covered on one delivery route and not on another. Check coverage by configuration, not by product.

Caching
Caching stores reusable prompt content so the system does not need to reprocess it on every request. It is most effective when the system prompt is long and stable, reducing both token cost and response latency; the response you receive is identical to what you would get without caching.

Circuit breaker
A reliability control that monitors the error rate on a downstream dependency and, when errors exceed a defined threshold, blocks further requests to that dependency for a cooldown window so that one degraded component does not consume the calling system's capacity. Sits at the service boundary, distinct from retries (close to the API call) and fallback chains (in the orchestration layer).

Data-residency pinning
Configuring the integration so that model execution happens in a specified geographic region, typically to satisfy sectoral regulations, or internal data-residency policy. Pinning is implemented at the delivery route level on CSP-mediated integrations. The pin must be set at the integration layer and verified at request time, not assumed by the entry point choice alone.

DPA (Data Processing Agreement)
A contract between a data controller and a data processor defining how personal data may be handled on the controller's behalf, including processing scope, security obligations, sub-processor terms, and breach notification.

Eval
A structured test set used to measure whether a model is performing well enough on a defined task. An eval pairs inputs with expected outputs or quality criteria, runs them against the model, and produces a score you can compare across model versions, prompts, or configurations. Evals are how teams decide whether a change is an improvement or a regression before it reaches production.

Exponential backoff
Exponential backoff is a retry strategy where, after a failed request, the system waits before trying again and each successive wait is longer than the last, typically doubling each time.

GDPR (General Data Protection Regulation)
The European Union (EU) regulation governing the processing of personal data of individuals in the EU and European Economic Area (EEA). Establishes lawful-basis requirements, data subject rights, controller and processor obligations, and fines up to 4% of global annual turnover.

Generator-verifier loop
A two-stage pattern in which a model-generated output is checked by a second pass before being used downstream. The verifier may be a deterministic code-based check (schema validation, comparison against an authoritative value) or a second model call scoped to evaluation. Used as a compensating control where the underlying task requires more precision than single-pass generation reliably provides.

Hallucination rate
The percentage of responses in which the model invented, inferred, or stated information that was not supported by the input, source data, or allowed logic.

Live state
Data that changes during the lifetime of a conversation or process: an order status, an inventory count, a price, a calendar slot, a user's current session. Live state is distinct from static reference material because the correct answer at 10:00 a.m. may be wrong by 10:05. Systems that need live state require a direct lookup against the source of truth, not a stored snapshot.

Median latency
Median latency is the time it takes to complete the middle request in the distribution, which means 50% of requests are faster and 50% are slower. It is also called p50 latency.

p95 (95th-percentile latency)
The latency value below which 95% of requests complete, with the slowest 5% falling above it. Used as a production design target because SLA breaches and user abandonment are driven by the slow tail of the distribution rather than the median.

PHI (Protected Health Information)
Individually identifiable health information held or transmitted by a covered entity or business associate under the US Health Insurance Portability and Accountability Act (HIPAA). Processing PHI requires a Business Associate Agreement with any third party that handles it.

RAG (retrieval-augmented generation)
A pattern in which a knowledge corpus is chunked and indexed in a preprocessing step, and at query time the chunks most relevant to the user input are retrieved and passed into the model's context. Suited to static or slow-moving knowledge such as manuals, internal documentation, and regulatory text. Not suited to live transactional state, where retrieval returns a snapshot that may already be stale and a tool call to the system of record is the correct mechanism.

Rate limit
A server-enforced cap on the number of requests a client may make within a defined time window. When the cap is exceeded, the server rejects further requests (typically with HTTP 429) until the window resets. A rate-limit response indicates throttling rather than failure and is a transient condition that resolves with backoff.

Regex
Regex stands for regular expression. It is a rule-based pattern used to find or validate text that matches a specific format, such as email addresses, phone numbers, Social Security numbers, or credit card patterns.

Schema
The required structure, format, and rules for the output. This defines what fields must appear, their data types, allowed values, and how the response should be organized.

SSO (single sign-on)
An authentication arrangement in which a user signs in once to a central identity provider and gains access to multiple downstream applications without re-authenticating.

Structured fields
Structured fields are those which require specific outputs that must be populated in a defined format, such as customer name, invoice number, date, amount, or policy ID. These are discrete data elements, not free-form narrative text.

Timeout
A failure mode in which a request does not receive a response within the client's or server's configured wait period and is terminated. Typically caused by transient server load, network latency, or a downstream dependency under stress, rather than a permanent fault.

Tool use
The capability that lets Claude call external functions, APIs, or services during a response instead of only generating text. The model decides when to invoke a tool, what arguments to pass, and how to use the result in its next step. Tool use is what turns Claude from a text generator into a system that can read files, query databases, search the web, or take action in other software.

Transient error
A transient error is a temporary failure that is expected to resolve on its own without any permanent fix, meaning if you try the same request again after a short wait, it will likely succeed.&lt;br /&gt;&lt;br /&gt;BAA (Business Associate Agreement)
A contract under HIPAA that permits a vendor to process protected health data on a covered entity's behalf, defining each party's safeguards and liabilities. Without it, handling that data through the vendor is non-compliant regardless of the technical controls.

Consent fatigue
The breakdown of oversight when a reviewer is asked to approve too many actions, so they approve almost everything without real review. It is the failure mode of routing every decision to a human. Verify Anthropic's current framing against anthropic.com.

Constitution
The written document Anthropic uses during training to shape Claude's values and behavior, stating a priority order of broadly safe, ethical, compliant with guidelines, and genuinely helpful. It shapes the model's trained behavior but does not encode any one deployment's domain policy. Verify the current version against anthropic.com.

Control register
A table that maps each compliance obligation to its technical control, an accountable owner, and an evidence artifact, so a regulated deployment can be audited as a register rather than asserted as a narrative.

Data residency
The requirement that data is processed and stored within a specified geographic region, including copies in logs and caches. It is the control behind many data-sovereignty obligations.

Decision logging
Capturing the inputs, retrieved context, model output, and routing for each decision, keyed so one decision can be replayed and explained later. It is the same observability instrumentation pointed at the question of why a specific decision happened.

Evidence artifact
The concrete proof a security and legal reviewer accepts that a control is live: a signed agreement, a configuration screen, an authorization record, or a returning log query. A control named in a design document with no artifact is a claim, not proof.

Fail open vs fail closed
How a guardrail behaves when it itself errors. Fail open passes traffic through unscreened, while fail closed blocks until the control is healthy. For safety controls, failing closed is the deliberate choice, because a control that silently passes traffic offers no protection.

FedRAMP
The FedRAMP classification (low, moderate, or high) that sets the security controls a cloud service must meet to handle US government workloads of a given sensitivity. The required level is set by the workload, and the delivery route must be authorized at or above it.

GDPR
The EU's data protection law regarding how organizations collect, process, store, and transfer the personal data of people in the EU and EEA. It grants individuals rights over their data and requires a lawful basis for processing, data minimization, and protection.

HIPAA
A US federal law setting standards for protecting individuals' health information. It governs how protected health information (PHI) is used, disclosed, and safeguarded by covered entities and their business associates. When a vendor processes PHI on a covered entity's behalf, HIPAA requires a Business Associate Agreement (BAA) defining each party's safeguards and liabilities. In this module it drives the requirement to deliver through a HIPAA-ready plan or first-party API under a signed BAA.

Human-in-the-loop routing
A rule that sends decisions to a person based on confidence, reversibility, and the cost of a wrong answer, rather than by volume, with the reviewer placed pre-action, post-action, or in a sample.

Injection point (fairness)
A specific place where unequal outcomes can enter a system: the retrieval corpus, the prompt framing, the chosen examples, or the downstream routing. Naming them makes fairness an architecture property you can instrument rather than a model attribute you assume.

Input screening
A check that runs before the model call to decide whether a request should reach the model, using a model-based classifier for fuzzy intent like jailbreaks or a deterministic rule for crisp patterns.

Judge model
A model used to score or classify another model's output, for qualities like toxicity or policy compliance that a deterministic rule cannot reliably encode. It can be evaded, which is why it is chained with deterministic checks.

Output screening
A check that runs before the response reaches the user, judging the generated content with a model for qualities like toxicity or a validator for known strings and schema violations.

Tool-call authorization
A check before any action with a side effect that decides whether this caller may perform this action in this context. It should be deterministic, an allowlist plus identity and scope, so the decision is provable and auditable.

Training-time alignment vs inference-time control
Training-time alignment is the safe behavior baked into the model for every user. Inference-time control is the screening and authorization you add at request time to enforce rules specific to your deployment. Conflating the two leaves deployment-specific rules unenforced.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>How Two MAC Behave Like One Supercomputer</title><link>http://dhirajpatra.blogspot.com/2026/10/how-two-mac-behave-like-one.html</link><category>architecture</category><category>artificial intelligence</category><category>computer</category><category>llm</category><category>mac</category><category>memory</category><pubDate>Thu, 15 Oct 2026 19:16:52 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-4421868709059621828</guid><description>&lt;p&gt;&lt;span style="font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Ubuntu, Oxygen, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"&gt;&lt;span style="background-color: white; font-size: 14px; white-space-collapse: preserve;"&gt;The "1TB of unified memory" achieved by two Mac Studios is not a true hardware pooling of memory into one contiguous block, but rather a distributed shared memory cluster built through high-speed interconnect and software coordination.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Ubuntu, Oxygen, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"&gt;&lt;span style="background-color: white; font-size: 14px; white-space-collapse: preserve;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Ubuntu, Oxygen, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"&gt;&lt;span style="background-color: white; font-size: 14px; white-space-collapse: preserve;"&gt;&#129504; &lt;b&gt;Core Mechanism: RDMA over Thunderbolt 5&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;The foundation of this "supercomputer-like" system is RDMA over Thunderbolt technology.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;- Direct Memory Access: RDMA allows one machine to directly read and write memory on another machine, bypassing the operating system's network stack (such as TCP/IP). This avoids the massive overhead of data copying through multiple software layers, drastically reducing latency.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;- Physical Connection: This relies on Thunderbolt 5 cables. Tests show that the actual throughput of Thunderbolt 5 can reach around 8.65 GiB/s (approximately 74 Gbit/s), reaching 93% of its nominal 80 Gbit/s bandwidth, which is the hardware foundation for enabling "memory-like" remote access.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;⚙️ &lt;b&gt;Software Layer: How Data is Distributed&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;While hardware provides the "highway," software determines how models are distributed across these two Macs.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;- MLX Framework: Apple's MLX framework is the key software. It is specifically designed for Apple Silicon's unified memory architecture, with an important characteristic: it currently tends to evenly distribute memory and computational load across nodes.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;- Model Sharding: Taking Llama 4 Scout as an example, this model uses a Mixture of Experts (MoE) architecture. It has a total of 109B parameters, but only 17B parameters are activated per inference. Software must distribute these 109B "expert weights" across the memory of two Macs. During each token generation, the system needs to route computation to the Mac node that holds the relevant expert.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Ubuntu, Oxygen, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"&gt;&lt;span style="background-color: white; font-size: 14px; white-space-collapse: preserve;"&gt;&#128679; &lt;b&gt;Key Technical Limitations and Realities&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;Although Meta describes it as "behaving like one supercomputer," there are clear physical and software boundaries in practice:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;- Local vs. Remote: Each M5 Ultra chip still has only its own physical memory (e.g., 512GB), with local memory bandwidth as high as 1.2 TB/s. But when a GPU needs data residing on another Mac, it must cross the Thunderbolt cable, and the speed difference is in orders of magnitude. RDMA reduces latency, but cannot eliminate the physical bottleneck of external interconnect.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;- Configuration Symmetry Requirements: For the system to work stably, two Macs are best configured with identical memory capacity. Testing shows that if one is 256GB and the other is 128GB, MLX's even distribution characteristic will cause the system to use only 128GB from each, resulting in a total of 256GB, wasting half of the larger machine's capacity.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;- Performance Scaling: Adding machines is not linear speedup. Official data shows that a cluster of four Mac Studios runs AI inference approximately 3x faster than a single machine, not 4x. This is because inter-machine communication overhead consumes time and resources.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Ubuntu, Oxygen, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"&gt;&lt;span style="background-color: white; font-size: 14px; white-space-collapse: preserve;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;&#128142; &lt;b&gt;Summary&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: white; font-family: system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Ubuntu, Oxygen, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 14px; white-space-collapse: preserve;"&gt;The mechanism of "1TB unified memory" is: physical Thunderbolt 5 connections + RDMA low-level memory access + MLX framework's model distribution logic. It achieves a shared memory pool that can run ultra-large models, but the essence remains distributed computing; the speed and efficiency of data exchange between two independent computers are far below the internal unified memory speed within a single chip.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>Check Username Availability with Bloom Filter</title><link>http://dhirajpatra.blogspot.com/2026/10/check-username-availability-with-bloom.html</link><category>architecture</category><category>programming</category><category>python</category><pubDate>Sun, 4 Oct 2026 21:36:17 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-2583119931929327195</guid><description>&lt;p&gt;&lt;span data-processed="true" data-subtree="aimfl" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; margin: 0px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="" data-complete="true" data-sfc-root="ep" jsaction="" jscontroller="zp3Dsd#fP0RJ" jsuid="jdiWYb_r" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-xid="aQR2uf" jsaction="aimRestoredThreadVisible:&amp;amp;jdiWYb_d|ZUljYd;requestToggleBottomSheet:&amp;amp;jdiWYb_d|aXD3Gb" jsuid="jdiWYb_e" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;/div&gt;&lt;div data-complete="true" data-sfc-inited="2" data-sfc-root="c" data-wiz-uids="jdiWYb_x,jdiWYb_y" jsaction="rcuQ6b:&amp;amp;jdiWYb_w|npT2md" jscontroller="CAwPlc#Hx4Oqd" jsuid="jdiWYb_w" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;!--TgQPHdjdiWYb_d/YOIIaf;jdiWYb_d/VWapad|||[{&amp;quot;s&amp;quot;:false,&amp;quot;i&amp;quot;:&amp;quot;jdiWYb_d/YOIIaf&amp;quot;},{&amp;quot;s&amp;quot;:null,&amp;quot;i&amp;quot;:&amp;quot;jdiWYb_d/VWapad&amp;quot;},156,{&amp;quot;s&amp;quot;:null,&amp;quot;i&amp;quot;:&amp;quot;jdiWYb_d/C5DOxd&amp;quot;},[&amp;quot;AimExportActionToastLink&amp;quot;,309275],&amp;quot;\u0026jdiWYb_d:bREfu&amp;quot;,false]--&gt;&lt;/div&gt;&lt;!--TgQPHd|jdiWYb_d/YOIIaf;jdiWYb_d/We76zc;jdiWYb_d/C5DOxd;jdiWYb_d/VWapad;jdiWYb_d/LL5gb||[[null,0,null,0,null,0,[&amp;quot;how to check that username already existing without checking the database for million users&amp;quot;],0,0,[&amp;quot;how to check that username already existing without checking the database for million users&amp;quot;]]]--&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="pWvJNd" data-complete="true" data-sfc-root="ep" jsaction="" jscontroller="zp3Dsd#fP0RJ" jsuid="jdiWYb_h" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;div data-complete="true" data-sfc-root="ep" jsaction="" jscontroller="z34MU#CsVNRe" jsname="s7e4Od" jsuid="jdiWYb_i" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="mZJni Dn7Fzd" data-container-id="main-col" data-ctx-provider="[[[&amp;quot;dMtGDc&amp;quot;,&amp;quot;[false]&amp;quot;]]]" data-sfc-inited="2" data-sfc-root="ep" data-ved="2ahUKEwjQitfFg6KXAxVdUGcHHTkMKzoQ3KYQeggIAggBCAEQAg" data-xid="VpUvz" dir="ltr" jsaction="cC6SSe:&amp;amp;jdiWYb_j|mNzCb;" jscontroller="Aoijq#INwBm" jsname="KFl8ub" jsuid="jdiWYb_j" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAIIAQgHEAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="jdiWYb_14" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none;"&gt;&lt;span data-subtree="aimfl" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;To check if a username exists without querying a massive database of millions of users every time, &lt;/span&gt;&lt;mark class="MAeH" data-complete="true" data-sfc-root="ep" data-ved="2ahUKEwjQitfFg6KXAxVdUGcHHTkMKzoQuJAPeggIAggBCAcQAQ" data-wiz-attrbind="class=jdiWYb_16/cFwyDc" jsaction="click:&amp;amp;jdiWYb_16|ZUljYd;" jscontroller="IyE5S#Mt0KKb" jsuid="jdiWYb_16" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 500; margin: 0px; text-decoration: none;"&gt;large-scale systems use a multi-layered architecture built around a data structure called a &lt;strong class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_17" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 500; margin: 0px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_18" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 500; margin: 0px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_19" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 500; margin: 0px; text-decoration: none;"&gt;Bloom Filter&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt;&lt;!--TgQPHd|||[[[null,null,null,null,null,null,null,null,null,null,null,null,[247864,null,0]]]]--&gt;&lt;/mark&gt;.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAIIAQgdEAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="jdiWYb_1h" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_1i" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;By using a &lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_1j" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;Bloom filter&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; alongside an in-memory cache, platforms can instantly determine if a username is available in a matter of microseconds, entirely bypassing the database for the vast majority of new signups&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;jdiWYb_1r|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="jdiWYb_1r" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr class="s6NV4e" data-complete="true" data-processed="true" data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="gWGJ0d#iOlsLd" jsuid="jdiWYb_1s" style="border-bottom: 0px rgb(128, 128, 128); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 32px 0px; text-decoration: none;" /&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;jdiWYb_1t|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="jdiWYb_1t" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div aria-level="3" class="otQkpb" data-animation-nesting="" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" data-wiz-attrbind="aria-level=jdiWYb_1u/fLk2Md" jsaction="" jscontroller="a7qCn#ZxCkTb" jsuid="jdiWYb_1u" role="heading" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 20px; font-weight: 600; margin: 24px 0px 12px; text-decoration: none;"&gt;The Three-Layer Architecture&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAIIAQgvEAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="jdiWYb_1v" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none;"&gt;Instead of hitting the database directly, the request passes through three distinct gates:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;jdiWYb_23|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="jdiWYb_23" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="BpxUDf aiModeUiCodeBlock__Container" data-complete="true" data-hveid="CAIIAQgwEAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" data-wiz-uids="jdiWYb_26,jdiWYb_25" jsaction="" jscontroller="Liu6s#lcO7sb" jsuid="jdiWYb_24" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 4px 0px 0px; text-decoration: none;"&gt;&lt;div style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;div class="rq1a2" data-animation-atomic="" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;div class="PGvq2d" dir="ltr" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;pre style="border-bottom: 0px rgb(10, 10, 10); font-family: monospace; font-size: 14px; font-weight: 400; margin: 14px 0px; text-decoration: none;"&gt;&lt;code jsuid="jdiWYb_26" style="border-bottom: 0px rgb(10, 10, 10); font-family: monospace; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(10, 10, 10); font-family: monospace; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;[ New Signup Request ] 
          │
          ▼
┌──────────────────┐  Says "No" (Definitely Available) ──► [ Approve Username ]
│ 1. Bloom Filter  ├─────────────────────────────────────────────────┐
└─────────┬────────┘                                                 │
          │ Says "Yes" (Might be taken)                              │
          ▼                                                          │
┌──────────────────┐  Found (Definitely Taken) ─────────────────────┼──► [ Reject ]
│   2. Redis Cache ├─────────────────────────────────────────┐       │
└─────────┬────────┘                                         │       │
          │ Cache Miss (Not found in cache)                  │       │
          ▼                                                  ▼       ▼
┌──────────────────┐  Found ────────────────────────────────► [ Reject &amp;amp; Update Cache ]
│ 3. Main Database │
└──────────────────┘  Not Found ────────────────────────────► [ Save to DB &amp;amp; Update Filter ]
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--TgQPHd|||[[&amp;quot;unset&amp;quot;,&amp;quot;[ New Signup Request ] \n          │\n          ▼\n┌──────────────────┐  Says \&amp;quot;No\&amp;quot; (Definitely Available) ──► [ Approve Username ]\n│ 1. Bloom Filter  ├─────────────────────────────────────────────────┐\n└─────────┬────────┘                                                 │\n          │ Says \&amp;quot;Yes\&amp;quot; (Might be taken)                              │\n          ▼                                                          │\n┌──────────────────┐  Found (Definitely Taken) ─────────────────────┼──► [ Reject ]\n│   2. Redis Cache ├─────────────────────────────────────────┐       │\n└─────────┬────────┘                                         │       │\n          │ Cache Miss (Not found in cache)                  │       │\n          ▼                                                  ▼       ▼\n┌──────────────────┐  Found ────────────────────────────────► [ Reject \u0026 Update Cache ]\n│ 3. Main Database │\n└──────────────────┘  Not Found ────────────────────────────► [ Save to DB \u0026 Update Filter ]\n&amp;quot;,[[&amp;quot;[ New Signup Request ] \n          │\n          ▼\n┌──────────────────┐  Says \&amp;quot;No\&amp;quot; (Definitely Available) ──► [ Approve Username ]\n│ 1. Bloom Filter  ├─────────────────────────────────────────────────┐\n└─────────┬────────┘                                                 │\n          │ Says \&amp;quot;Yes\&amp;quot; (Might be taken)                              │\n          ▼                                                          │\n┌──────────────────┐  Found (Definitely Taken) ─────────────────────┼──► [ Reject ]\n│   2. Redis Cache ├─────────────────────────────────────────┐       │\n└─────────┬────────┘                                         │       │\n          │ Cache Miss (Not found in cache)                  │       │\n          ▼                                                  ▼       ▼\n┌──────────────────┐  Found ────────────────────────────────► [ Reject \u0026 Update Cache ]\n│ 3. Main Database │\n└──────────────────┘  Not Found ────────────────────────────► [ Save to DB \u0026 Update Filter ]\n&amp;quot;,0]]]]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;jdiWYb_27|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="jdiWYb_27" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div aria-level="3" class="otQkpb" data-animation-nesting="" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" data-wiz-attrbind="aria-level=jdiWYb_28/fLk2Md" jsaction="" jscontroller="a7qCn#ZxCkTb" jsuid="jdiWYb_28" role="heading" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 20px; font-weight: 600; margin: 24px 0px 12px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_29" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 20px; font-weight: 600; margin: 0px; text-decoration: none;"&gt;1. The Core Solution: The &lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_2a" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 20px; font-weight: 600; margin: 0px; text-decoration: none;"&gt;Bloom Filter&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAIIAQgyEAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="jdiWYb_2b" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none;"&gt;A &lt;strong class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_2c" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_2d" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_2e" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;Bloom Filter&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt; is a space-efficient, probabilistic data structure designed to tell you if an element is a member of a set. It operates in memory and yields two answers:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;ul class="KsbFXc U6u95" data-complete="true" data-hveid="CAIIAQgzEAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" data-ved="2ahUKEwjQitfFg6KXAxVdUGcHHTkMKzoQ-7AUeggIAggBCDMQAA" jsaction="" jscontroller="mPWODf#NS0kde" jsuid="jdiWYb_2o" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none;"&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAIIAQgzEAE" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="jdiWYb_2p" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_2q" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;strong class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_2r" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;"No, it definitely does not exist":&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt; This answer is &lt;strong class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_2s" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;100% accurate&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_2t" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;. If the &lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_2u" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;Bloom filter&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; says the username isn't there, the application immediately approves the username without ever querying the database&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;.&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAIIAQgzEAc" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="jdiWYb_30" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_31" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;strong class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_32" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;"Yes, it might exist":&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt; There is a small chance of a &lt;strong class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_33" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;false positive&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt; (it might say a username is taken when it actually isn't). When this happens, the system proceeds to Layer 2 and Layer 3 to confirm.&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/ul&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAIIAQg1EAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="jdiWYb_4q" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none;"&gt;&lt;strong class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_4r" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;How it works under the hood:&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt;&lt;br data-complete="true" data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="iO7NKc#B4oRN" jsuid="jdiWYb_4s" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;" /&gt;The filter allocates a fixed bit-array initialized to all &lt;code class="KDcb0c" data-complete="true" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="jdiWYb_4t" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-family: monospace; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;0&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;s. When an existing username is added, it is passed through multiple independent hash functions that output array indices, changing those bits to &lt;code class="KDcb0c" data-complete="true" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="jdiWYb_4u" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-family: monospace; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;1&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;. When a new user queries a username, it is run through the same hashes. If &lt;em class="zhvwWe" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="LFsGHb#ycPkjf" jsuid="jdiWYb_4v" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;any&lt;!--TgQPHd|||[]--&gt;&lt;/em&gt; of the resulting bits are still &lt;code class="KDcb0c" data-complete="true" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="jdiWYb_4w" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-family: monospace; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;0&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, the username is guaranteed to be available.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;jdiWYb_55|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="jdiWYb_55" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div aria-level="3" class="otQkpb" data-animation-nesting="" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" data-wiz-attrbind="aria-level=jdiWYb_56/fLk2Md" jsaction="" jscontroller="a7qCn#ZxCkTb" jsuid="jdiWYb_56" role="heading" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 20px; font-weight: 600; margin: 24px 0px 12px; text-decoration: none;"&gt;2. The Acceleration Layer: In-Memory Cache&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAIIAQg3EAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="jdiWYb_57" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_58" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;If the &lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_59" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;Bloom filter&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; indicates a username &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;em class="zhvwWe" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="LFsGHb#ycPkjf" jsuid="jdiWYb_5a" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;might&lt;!--TgQPHd|||[]--&gt;&lt;/em&gt; be taken, the system queries a fast in-memory key-value cache like &lt;span class="" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="mouseenter:&amp;amp;jdiWYb_5b|ZUljYd;mouseleave:&amp;amp;jdiWYb_5b|aXD3Gb;focusin:&amp;amp;jdiWYb_5b|Mrjwi;focusout:&amp;amp;jdiWYb_5b|CXhG2e;pointerdown:&amp;amp;jdiWYb_5b|wndyDd;click:&amp;amp;jdiWYb_5b|yrMC6;" jscontroller="KMhGd#Mx1qPe" jsuid="jdiWYb_5b" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;a class="H23r4e" data-hveid="CAIIAQg3EAE" data-ved="2ahUKEwjQitfFg6KXAxVdUGcHHTkMKzoQy_kOeggIAggBCDcQAQ" href="https://redis.io/" ping="/url?sa=t&amp;amp;source=web&amp;amp;rct=j&amp;amp;url=https://redis.io/&amp;amp;ved=2ahUKEwjQitfFg6KXAxVdUGcHHTkMKzoQy_kOeggIAggBCDcQAQ&amp;amp;opi=89978449" rel="noopener" style="border-bottom: 0px rgb(21, 88, 214); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 500; margin: 0px; text-decoration: underline 1px rgb(21, 88, 214);" target="_blank"&gt;Redis&lt;/a&gt;&lt;!--TgQPHd|||[[&amp;quot;https://redis.io/&amp;quot;,null,null,[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[{&amp;quot;1218&amp;quot;:[16,null,null,null,[7]]}]],16,null,null,null,null,null,null,[[1791174112560464,124211293,975899705],null,null,null,null,[[2,1,16]]],null,&amp;quot;46ba772f-4eae-4a5f-bc53-a5286a94fdb4&amp;quot;]]--&gt;&lt;/span&gt; or Memcached.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;ul class="KsbFXc U6u95" data-complete="true" data-hveid="CAIIAQg4EAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" data-ved="2ahUKEwjQitfFg6KXAxVdUGcHHTkMKzoQ-7AUeggIAggBCDgQAA" jsaction="" jscontroller="mPWODf#NS0kde" jsuid="jdiWYb_5j" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none;"&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAIIAQg4EAE" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="jdiWYb_5k" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_5l" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;This cache stores recently checked or active usernames.&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAIIAQg4EAI" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="jdiWYb_5m" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_5n" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;If the username is found in the cache, it's rejected instantly.&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAIIAQg4EAM" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="jdiWYb_5o" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_5p" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;This catches popular usernames or rapid, repeated registration attempts.&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/ul&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;jdiWYb_9z|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="jdiWYb_9z" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div aria-level="3" class="otQkpb" data-animation-nesting="" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" data-wiz-attrbind="aria-level=jdiWYb_a0/fLk2Md" jsaction="" jscontroller="a7qCn#ZxCkTb" jsuid="jdiWYb_a0" role="heading" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 20px; font-weight: 600; margin: 24px 0px 12px; text-decoration: none;"&gt;3. The Authoritative Source: The Database&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAIIAQg7EAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="jdiWYb_a1" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_a2" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;The main database (e.g., PostgreSQL, MySQL, or a distributed NoSQL like DynamoDB) is only queried if the &lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_a3" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;Bloom filter&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; results in a "maybe" and the cache results in a "miss"&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;ul class="KsbFXc U6u95" data-complete="true" data-hveid="CAIIAQg8EAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" data-ved="2ahUKEwjQitfFg6KXAxVdUGcHHTkMKzoQ-7AUeggIAggBCDwQAA" jsaction="" jscontroller="mPWODf#NS0kde" jsuid="jdiWYb_ab" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none;"&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAIIAQg8EAE" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="jdiWYb_ac" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_ad" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_ae" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;Because the &lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_af" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;Bloom filter&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; filters out nearly all completely unique, available usernames, the database only deals with a tiny fraction of total check traffic&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;.&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAIIAQg8EAY" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="jdiWYb_al" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_am" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;strong class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_an" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;Crucial Rule:&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt; The database table must have a &lt;code class="KDcb0c" data-complete="true" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="jdiWYb_ao" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-family: monospace; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;UNIQUE&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; constraint or index on the &lt;code class="KDcb0c" data-complete="true" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="jdiWYb_ap" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-family: monospace; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;username&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; column. This ensures that even if a rare race condition passes through the filters, the database will safely reject a duplicate write.&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/ul&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;jdiWYb_az|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="jdiWYb_az" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr class="s6NV4e" data-complete="true" data-processed="true" data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="gWGJ0d#iOlsLd" jsuid="jdiWYb_b0" style="border-bottom: 0px rgb(128, 128, 128); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 32px 0px; text-decoration: none;" /&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;jdiWYb_b1|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="jdiWYb_b1" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div aria-level="3" class="otQkpb" data-animation-nesting="" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" data-wiz-attrbind="aria-level=jdiWYb_b2/fLk2Md" jsaction="" jscontroller="a7qCn#ZxCkTb" jsuid="jdiWYb_b2" role="heading" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 20px; font-weight: 600; margin: 24px 0px 12px; text-decoration: none;"&gt;Implementation Summary Matrix&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;jdiWYb_b3|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="jdiWYb_b3" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="Fv6NCb" data-complete="true" data-hveid="CAIIAQg_EAA" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" data-ved="2ahUKEwjQitfFg6KXAxVdUGcHHTkMKzoQ-q4QeggIAggBCD8QAA" jsaction="rcuQ6b:&amp;amp;jdiWYb_b4|npT2md;scroll:&amp;amp;jdiWYb_b4|ZUljYd" jscontroller="kbUand#UYOFMe" jsuid="jdiWYb_b4" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 4px 0px 12px; text-decoration: none;"&gt;&lt;table class="NRefec" data-animation-nesting="" data-processed="true" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;tbody data-processed="true" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;tr class="cZCYO" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="OkanJc#hv5sFd" jsuid="jdiWYb_b5" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;th class="iry6k" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uuu13#x1Xdt" jsuid="jdiWYb_b6" style="border-bottom: 0.8px solid rgb(220, 223, 229); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;Strategy&lt;!--TgQPHd|||[]--&gt;&lt;/th&gt;&lt;th class="iry6k" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uuu13#x1Xdt" jsuid="jdiWYb_b7" style="border-bottom: 0.8px solid rgb(220, 223, 229); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;Memory Cost&lt;!--TgQPHd|||[]--&gt;&lt;/th&gt;&lt;th class="iry6k" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uuu13#x1Xdt" jsuid="jdiWYb_b8" style="border-bottom: 0.8px solid rgb(220, 223, 229); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;Accuracy&lt;!--TgQPHd|||[]--&gt;&lt;/th&gt;&lt;th class="iry6k" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uuu13#x1Xdt" jsuid="jdiWYb_b9" style="border-bottom: 0.8px solid rgb(220, 223, 229); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;Database Impact&lt;!--TgQPHd|||[]--&gt;&lt;/th&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/tr&gt;&lt;tr class="cZCYO" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="OkanJc#hv5sFd" jsuid="jdiWYb_ba" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;td class="cOeeGf" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="QYassd#cLglr" jsuid="jdiWYb_bb" style="border-bottom: 0.8px solid rgb(220, 223, 229); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;strong class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_bc" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_bd" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_be" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;Bloom Filter&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td class="cOeeGf" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="QYassd#cLglr" jsuid="jdiWYb_bf" style="border-bottom: 0.8px solid rgb(220, 223, 229); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;strong class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_bg" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;Extremely Low&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt; (A few MBs for millions of users)&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td class="cOeeGf" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="QYassd#cLglr" jsuid="jdiWYb_bh" style="border-bottom: 0.8px solid rgb(220, 223, 229); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;Probabilistic (No false negatives; rare false positives)&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td class="cOeeGf" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="QYassd#cLglr" jsuid="jdiWYb_bi" style="border-bottom: 0.8px solid rgb(220, 223, 229); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;strong class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_bj" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;Near Zero&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt; (Blocks ~99% of unnecessary DB queries)&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/tr&gt;&lt;tr class="cZCYO" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="OkanJc#hv5sFd" jsuid="jdiWYb_bk" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;td class="cOeeGf" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="QYassd#cLglr" jsuid="jdiWYb_bl" style="border-bottom: 0.8px solid rgb(220, 223, 229); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;strong class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_bm" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;In-Memory Cache (Redis)&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td class="cOeeGf" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="QYassd#cLglr" jsuid="jdiWYb_bn" style="border-bottom: 0.8px solid rgb(220, 223, 229); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;strong class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_bo" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;Medium&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt; (Scales with the number of keys stored)&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td class="cOeeGf" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="QYassd#cLglr" jsuid="jdiWYb_bp" style="border-bottom: 0.8px solid rgb(220, 223, 229); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;100% Accurate (For cached items)&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td class="cOeeGf" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="QYassd#cLglr" jsuid="jdiWYb_bq" style="border-bottom: 0.8px solid rgb(220, 223, 229); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;strong class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_br" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;Very Low&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt; (Handles repeated lookups)&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/tr&gt;&lt;tr class="cZCYO" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="OkanJc#hv5sFd" jsuid="jdiWYb_bs" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;td class="cOeeGf" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="QYassd#cLglr" jsuid="jdiWYb_bt" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;strong class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_bu" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;Database Index Lookup&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td class="cOeeGf" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="QYassd#cLglr" jsuid="jdiWYb_bv" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;strong class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_bw" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;High&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt; (Disk I/O and large index memory footprints)&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td class="cOeeGf" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="QYassd#cLglr" jsuid="jdiWYb_bx" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;100% Accurate (Authoritative)&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td class="cOeeGf" colspan="undefined" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="QYassd#cLglr" jsuid="jdiWYb_by" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;strong class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_bz" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;High&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt; (If relied upon for every single signup)&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;!--TgQPHd|||[[1,0,0,null,null,&amp;quot;&amp;quot;]]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAIIAQhAEAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="jdiWYb_c0" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none;"&gt;If you'd like, let me know:&lt;span&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;ul class="KsbFXc U6u95" data-complete="true" data-hveid="CAIIAQhBEAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" data-ved="2ahUKEwjQitfFg6KXAxVdUGcHHTkMKzoQ-7AUeggIAggBCEEQAA" jsaction="" jscontroller="mPWODf#NS0kde" jsuid="jdiWYb_c6" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none;"&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAIIAQhBEAE" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="jdiWYb_c7" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_c8" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;What &lt;strong class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_c9" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;programming language or framework&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt; your backend uses (e.g., Node.js, Python, Java)&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAIIAQhBEAQ" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="jdiWYb_cf" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px 0px 12px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_cg" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;Whether your current architecture already uses an &lt;strong class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_ch" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;in-memory data store&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt; like &lt;strong class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="jdiWYb_ci" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px; text-decoration: none;"&gt;Redis&lt;!--TgQPHd|||[]--&gt;&lt;/strong&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/ul&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAIIAQhCEAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="jdiWYb_co" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 12px 0px 16px; text-decoration: none;"&gt;&lt;span class="iNqyIf" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_cp" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;I can provide a concrete code snippet demonstrating how to initialize and connect a &lt;span class="iNqyIf" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="jdiWYb_cq" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;Bloom filter&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; to your signup workflow!&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;jdiWYb_cw|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="jdiWYb_cw" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="SGF5Lb" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="mk5ZW#TASLyc" jsuid="jdiWYb_k" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="SGF5Lb" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="mk5ZW#TASLyc" jsuid="jdiWYb_l" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="SGF5Lb" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="mk5ZW#TASLyc" jsuid="jdiWYb_m" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="SGF5Lb" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="mk5ZW#TASLyc" jsuid="jdiWYb_n" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="SGF5Lb" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="mk5ZW#TASLyc" jsuid="jdiWYb_o" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="SGF5Lb" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="mk5ZW#TASLyc" jsuid="jdiWYb_p" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="SGF5Lb" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="mk5ZW#TASLyc" jsuid="jdiWYb_q" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; font-weight: 400; margin: 0px; text-decoration: none;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;p&gt;&lt;span data-processed="true" data-subtree="aimfl" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; margin: 0px;"&gt;If you are allocating &lt;/span&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_q" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px;"&gt;7 bits&lt;/span&gt;&lt;span style="font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px;"&gt; for each username, you are designing a highly optimized bit-array layout for a &lt;/span&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_r" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px; font-weight: 700; margin: 0px;"&gt;Bloom Filter&lt;/span&gt;&lt;span style="font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 16px;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;div class="pWvJNd" data-complete="true" data-sfc-root="ep" jsaction="" jscontroller="zp3Dsd#fP0RJ" jsuid="aKF1re_5" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; margin: 0px;"&gt;&lt;div data-complete="true" data-sfc-root="ep" jsaction="" jscontroller="z34MU#CsVNRe" jsname="s7e4Od" jsuid="aKF1re_6" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="mZJni Dn7Fzd" data-container-id="main-col" data-ctx-provider="[[[&amp;quot;dMtGDc&amp;quot;,&amp;quot;[false]&amp;quot;]]]" data-sfc-inited="2" data-sfc-root="ep" data-ved="2ahUKEwig1fnFg6KXAxX7T2wGHaQqHcoQ3KYQegYIAAgCEAE" data-xid="VpUvz" dir="ltr" jsaction="cC6SSe:&amp;amp;aKF1re_7|mNzCb;" jscontroller="Aoijq#INwBm" jsname="KFl8ub" jsuid="aKF1re_7" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAAIBxAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="aKF1re_x" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;Let's walk through exactly how this looks visually and mathematically when a user tries to register a username.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_13|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_13" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr class="s6NV4e" data-complete="true" data-processed="true" data-sae="" data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="gWGJ0d#iOlsLd" jsuid="aKF1re_14" style="border-bottom: 0px rgb(128, 128, 128); margin: 32px 0px;" /&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_15|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_15" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div aria-level="3" class="otQkpb" data-animation-nesting="" data-complete="true" data-processed="true" data-sae="" data-sfc-cp="" data-sfc-root="ep" data-wiz-attrbind="aria-level=aKF1re_16/fLk2Md" jsaction="" jscontroller="a7qCn#ZxCkTb" jsuid="aKF1re_16" role="heading" style="border-bottom: 0px rgb(10, 10, 10); font-size: 20px; font-weight: 600; margin: 24px 0px 12px;"&gt;1. Setup &amp;amp; Memory Layout&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAAIChAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="aKF1re_17" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;If you have &lt;span class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_18" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;1,000,000 users&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; and allocate 7 bits per user, your system creates a bit-array of &lt;span class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_19" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;7,000,000 bits&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; (roughly &lt;span class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_1a" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;875 KB&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; of RAM). Every single bit starts at &lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_1b" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;0&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAAICxAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="aKF1re_1h" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;To map usernames to these bits, you choose a set of independent hash functions (usually &lt;span class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_1i" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;5 hash functions&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; is optimal for a 7-bit-per-item ratio).&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_1o|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_1o" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr class="s6NV4e" data-complete="true" data-processed="true" data-sae="" data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="gWGJ0d#iOlsLd" jsuid="aKF1re_1p" style="border-bottom: 0px rgb(128, 128, 128); margin: 32px 0px;" /&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_1q|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_1q" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div aria-level="3" class="otQkpb" data-animation-nesting="" data-complete="true" data-processed="true" data-sae="" data-sfc-cp="" data-sfc-root="ep" data-wiz-attrbind="aria-level=aKF1re_1r/fLk2Md" jsaction="" jscontroller="a7qCn#ZxCkTb" jsuid="aKF1re_1r" role="heading" style="border-bottom: 0px rgb(10, 10, 10); font-size: 20px; font-weight: 600; margin: 24px 0px 12px;"&gt;2. Scenario A: Searching for a TAKEN Username&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAAIDhAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="aKF1re_1s" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;Let's say the username &lt;span class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_1t" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_1u" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;"alex123"&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; is already registered. When they signed up, their username was run through 5 hashes, yielding 5 bit indices, and those bits were flipped to &lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_1v" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;1&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAAIDxAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="aKF1re_21" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;When a new person searches for &lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_22" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;"alex123"&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, the backend runs the exact same process:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;ol class="T9WCjf qkgVBf" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="PnN4Le#N1SbDe" jsuid="aKF1re_28" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIEBAB" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_29" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_2a" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_2b" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Hash the input:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;ul class="KsbFXc U6u95" data-complete="true" data-hveid="CAAIEBAC" data-sfc-cp="" data-sfc-root="ep" data-ved="2ahUKEwig1fnFg6KXAxX7T2wGHaQqHcoQ-7AUegYIAAgQEAI" jsaction="" jscontroller="mPWODf#NS0kde" jsuid="aKF1re_2c" style="border-bottom: 0px rgb(10, 10, 10); margin: 12px 0px 16px;"&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIEBAD" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_2d" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_2e" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_2f" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;Hash1("alex123") % 7,000,000&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; = &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_2g" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Index 42&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIEBAE" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_2h" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_2i" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_2j" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;Hash2("alex123") % 7,000,000&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; = &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_2k" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Index 518,201&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIEBAF" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_2l" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_2m" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_2n" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;Hash3("alex123") % 7,000,000&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; = &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_2o" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Index 2,400,115&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIEBAG" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_2p" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_2q" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_2r" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;Hash4("alex123") % 7,000,000&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; = &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_2s" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Index 4,890,300&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIEBAH" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_2t" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_2u" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_2v" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;Hash5("alex123") % 7,000,000&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; = &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_2w" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Index 6,999,150&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIEBAK" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_32" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_33" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_34" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Look up the bits in memory:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/ol&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_3a|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_3a" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="BpxUDf aiModeUiCodeBlock__Container" data-complete="true" data-hveid="CAAIERAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" data-wiz-uids="aKF1re_3d,aKF1re_3c" jsaction="" jscontroller="Liu6s#lcO7sb" jsuid="aKF1re_3b" style="border-bottom: 0px rgb(10, 10, 10); margin: 4px 0px 0px;"&gt;&lt;div data-processed="true" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;div class="rq1a2" data-animation-atomic="" data-sae="" style="border-bottom: 0.8px solid rgb(240, 242, 245); margin: 0px;"&gt;&lt;div class="PGvq2d" dir="ltr" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;pre style="border-bottom: 0px rgb(10, 10, 10); margin: 14px 0px;"&gt;&lt;code jsuid="aKF1re_3d" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;Bit Array Indices:
[ 0 ] ... [ 42 ] ... [ 518,201 ] ... [ 2,400,115 ] ... [ 4,890,300 ] ... [ 6,999,150 ] ... [ 7,000,000 ]
  ▼         ▼             ▼                ▼                  ▼                  ▼
┌───┐     ┌───┐         ┌───┐            ┌───┐              ┌───┐              ┌───┐
│ 0 │ ... │ 1 │ ...     │ 1 │    ...     │ 1 │     ...      │ 1 │     ...      │ 1 │     ...
└───┘     └───┘         └───┘            └───┘              └───┘              └───┘
            ▲             ▲                ▲                  ▲                  ▲
            └─── All 5 bits are set to 1 ────────────────────────────────────────┘
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--TgQPHd|||[[&amp;quot;unset&amp;quot;,&amp;quot;Bit Array Indices:\n[ 0 ] ... [ 42 ] ... [ 518,201 ] ... [ 2,400,115 ] ... [ 4,890,300 ] ... [ 6,999,150 ] ... [ 7,000,000 ]\n  ▼         ▼             ▼                ▼                  ▼                  ▼\n┌───┐     ┌───┐         ┌───┐            ┌───┐              ┌───┐              ┌───┐\n│ 0 │ ... │ 1 │ ...     │ 1 │    ...     │ 1 │     ...      │ 1 │     ...      │ 1 │     ...\n└───┘     └───┘         └───┘            └───┘              └───┘              └───┘\n            ▲             ▲                ▲                  ▲                  ▲\n            └─── All 5 bits are set to 1 ────────────────────────────────────────┘\n&amp;quot;,[[&amp;quot;Bit Array Indices:\n[ 0 ] ... [ 42 ] ... [ 518,201 ] ... [ 2,400,115 ] ... [ 4,890,300 ] ... [ 6,999,150 ] ... [ 7,000,000 ]\n  ▼         ▼             ▼                ▼                  ▼                  ▼\n┌───┐     ┌───┐         ┌───┐            ┌───┐              ┌───┐              ┌───┐\n│ 0 │ ... │ 1 │ ...     │ 1 │    ...     │ 1 │     ...      │ 1 │     ...      │ 1 │     ...\n└───┘     └───┘         └───┘            └───┘              └───┘              └───┘\n            ▲             ▲                ▲                  ▲                  ▲\n            └─── All 5 bits are set to 1 ────────────────────────────────────────┘\n&amp;quot;,0]]]]--&gt;&lt;/div&gt;&lt;ol class="T9WCjf qkgVBf" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="PnN4Le#N1SbDe" jsuid="aKF1re_3e" start="3" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIEhAB" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_3f" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_3g" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_3h" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;The Result:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Because &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_3i" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;all 5 bits are &lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_3j" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;1&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;, the Bloom Filter responds: &lt;em class="zhvwWe" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="LFsGHb#ycPkjf" jsuid="aKF1re_3k" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;"This username &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_3l" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;MIGHT&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; be taken."&lt;!--TgQPHd|||[]--&gt;&lt;/em&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIEhAC" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_3m" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_3n" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_3o" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Next Step:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; The system goes to Layer 2 (Redis/Database) to double-check. The database confirms it actually exists and rejects the request.&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/ol&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_3u|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_3u" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr class="s6NV4e" data-complete="true" data-processed="true" data-sae="" data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="gWGJ0d#iOlsLd" jsuid="aKF1re_3v" style="border-bottom: 0px rgb(128, 128, 128); margin: 32px 0px;" /&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_3w|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_3w" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div aria-level="3" class="otQkpb" data-animation-nesting="" data-complete="true" data-processed="true" data-sae="" data-sfc-cp="" data-sfc-root="ep" data-wiz-attrbind="aria-level=aKF1re_3x/fLk2Md" jsaction="" jscontroller="a7qCn#ZxCkTb" jsuid="aKF1re_3x" role="heading" style="border-bottom: 0px rgb(10, 10, 10); font-size: 20px; font-weight: 600; margin: 24px 0px 12px;"&gt;3. Scenario B: Searching for an AVAILABLE Username&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAAIFRAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="aKF1re_3y" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;Now a user searches for a completely unique username, like &lt;span class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_3z" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_40" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;"coder_99"&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;ol class="T9WCjf qkgVBf" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="PnN4Le#N1SbDe" jsuid="aKF1re_46" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIFhAB" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_47" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_48" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_49" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Hash the input:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;ul class="KsbFXc U6u95" data-complete="true" data-hveid="CAAIFhAC" data-sfc-cp="" data-sfc-root="ep" data-ved="2ahUKEwig1fnFg6KXAxX7T2wGHaQqHcoQ-7AUegYIAAgWEAI" jsaction="" jscontroller="mPWODf#NS0kde" jsuid="aKF1re_4a" style="border-bottom: 0px rgb(10, 10, 10); margin: 12px 0px 16px;"&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIFhAD" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_4b" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_4c" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_4d" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;Hash1("coder_99") % 7,000,000&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; = &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_4e" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Index 105&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIFhAE" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_4f" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_4g" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_4h" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;Hash2("coder_99") % 7,000,000&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; = &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_4i" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Index 894,001&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIFhAF" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_4j" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_4k" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_4l" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;Hash3("coder_99") % 7,000,000&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; = &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_4m" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Index 3,112,550&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIFhAG" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_4n" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_4o" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_4p" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;Hash4("coder_99") % 7,000,000&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; = &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_4q" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Index 5,000,123&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIFhAH" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_4r" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_4s" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_4t" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;Hash5("coder_99") % 7,000,000&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; = &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_4u" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Index 6,221,800&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIFhAK" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_50" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_51" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_52" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Look up the bits in memory:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/ol&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_58|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_58" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="BpxUDf aiModeUiCodeBlock__Container" data-complete="true" data-hveid="CAAIFxAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" data-wiz-uids="aKF1re_5b,aKF1re_5a" jsaction="" jscontroller="Liu6s#lcO7sb" jsuid="aKF1re_59" style="border-bottom: 0px rgb(10, 10, 10); margin: 4px 0px 0px;"&gt;&lt;div data-processed="true" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;div class="rq1a2" data-animation-atomic="" data-sae="" style="border-bottom: 0.8px solid rgb(240, 242, 245); margin: 0px;"&gt;&lt;div class="PGvq2d" dir="ltr" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;pre style="border-bottom: 0px rgb(10, 10, 10); margin: 14px 0px;"&gt;&lt;code jsuid="aKF1re_5b" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span class="undefined" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;Bit Array Indices:
[ 0 ] ... [ 105 ] ... [ 894,001 ] ... [ 3,112,550 ] ... [ 5,000,123 ] ... [ 6,221,800 ] ... [ 7,000,000 ]
  ▼          ▼             ▼                ▼                  ▼                  ▼
┌───┐      ┌───┐         ┌───┐            ┌───┐              ┌───┐              ┌───┐
│ 0 │ ...  │ 1 │ ...     │ 0 │    ...     │ 1 │     ...      │ 1 │     ...      │ 0 │     ...
└───┘      └───┘         └───┘            └───┘              └───┘              └───┘
                           ▲                                                      ▲
                           └───────── Found a '0' bit! ───────────────────────────┘
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--TgQPHd|||[[&amp;quot;unset&amp;quot;,&amp;quot;Bit Array Indices:\n[ 0 ] ... [ 105 ] ... [ 894,001 ] ... [ 3,112,550 ] ... [ 5,000,123 ] ... [ 6,221,800 ] ... [ 7,000,000 ]\n  ▼          ▼             ▼                ▼                  ▼                  ▼\n┌───┐      ┌───┐         ┌───┐            ┌───┐              ┌───┐              ┌───┐\n│ 0 │ ...  │ 1 │ ...     │ 0 │    ...     │ 1 │     ...      │ 1 │     ...      │ 0 │     ...\n└───┘      └───┘         └───┘            └───┘              └───┘              └───┘\n                           ▲                                                      ▲\n                           └───────── Found a &amp;#39;0&amp;#39; bit! ───────────────────────────┘\n&amp;quot;,[[&amp;quot;Bit Array Indices:\n[ 0 ] ... [ 105 ] ... [ 894,001 ] ... [ 3,112,550 ] ... [ 5,000,123 ] ... [ 6,221,800 ] ... [ 7,000,000 ]\n  ▼          ▼             ▼                ▼                  ▼                  ▼\n┌───┐      ┌───┐         ┌───┐            ┌───┐              ┌───┐              ┌───┐\n│ 0 │ ...  │ 1 │ ...     │ 0 │    ...     │ 1 │     ...      │ 1 │     ...      │ 0 │     ...\n└───┘      └───┘         └───┘            └───┘              └───┘              └───┘\n                           ▲                                                      ▲\n                           └───────── Found a &amp;#39;0&amp;#39; bit! ───────────────────────────┘\n&amp;quot;,0]]]]--&gt;&lt;/div&gt;&lt;ol class="T9WCjf qkgVBf" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="PnN4Le#N1SbDe" jsuid="aKF1re_5c" start="3" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIGBAB" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_5d" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_5e" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_5f" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;The Result:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; The system looks at Index 894,001 and sees a &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_5g" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;&lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_5h" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;0&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;. It doesn't even need to finish checking the rest. If that username had ever been registered, that bit &lt;em class="zhvwWe" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="LFsGHb#ycPkjf" jsuid="aKF1re_5i" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;must&lt;!--TgQPHd|||[]--&gt;&lt;/em&gt; have been flipped to &lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_5j" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;1&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;.&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIGBAE" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_5p" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_5q" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_5r" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Next Step:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; The Bloom Filter immediately stops and responds: &lt;em class="zhvwWe" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="LFsGHb#ycPkjf" jsuid="aKF1re_5s" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;"This username is &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_5t" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;DEFINITELY&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; available."&lt;!--TgQPHd|||[]--&gt;&lt;/em&gt; The database is completely bypassed, and the signup is instantly approved.&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/ol&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_5z|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_5z" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr class="s6NV4e" data-complete="true" data-processed="true" data-sae="" data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="gWGJ0d#iOlsLd" jsuid="aKF1re_60" style="border-bottom: 0px rgb(128, 128, 128); margin: 32px 0px;" /&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_61|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_61" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div aria-level="3" class="otQkpb" data-animation-nesting="" data-complete="true" data-processed="true" data-sae="" data-sfc-cp="" data-sfc-root="ep" data-wiz-attrbind="aria-level=aKF1re_62/fLk2Md" jsaction="" jscontroller="a7qCn#ZxCkTb" jsuid="aKF1re_62" role="heading" style="border-bottom: 0px rgb(10, 10, 10); font-size: 20px; font-weight: 600; margin: 24px 0px 12px;"&gt;What to expect at 7 bits per user (The Math)&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAAIGxAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="aKF1re_63" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;By allocating 7 bits per user and using 5 hash functions, your mathematical &lt;span class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_64" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;False Positive Probability&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; will sit right around &lt;span class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_65" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;8.2%&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAAIHBAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="aKF1re_6b" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;This means:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;ul class="KsbFXc U6u95" data-complete="true" data-hveid="CAAIHRAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" data-ved="2ahUKEwig1fnFg6KXAxX7T2wGHaQqHcoQ-7AUegYIAAgdEAA" jsaction="" jscontroller="mPWODf#NS0kde" jsuid="aKF1re_6h" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIHRAB" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_6i" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_6j" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_6k" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;91.8%&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; of the time someone picks an available username, the database is &lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_6l" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;never touched&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;.&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li class="Z1qcYe" data-complete="true" data-hveid="CAAIHRAC" data-sae="" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="oSLmPe#HokZ0d" jsuid="aKF1re_6m" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px 0px 12px;"&gt;&lt;span class="iNqyIf" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="KdQfFc#d5Qebf" jsuid="aKF1re_6n" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span class="rQesXe MPyX" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_6o" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;8.2%&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; of the time, a clean username might accidentally hit all &lt;code class="KDcb0c" data-complete="true" data-sae="" data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="hNviFe#redMub" jsuid="aKF1re_6p" style="border-bottom: 0.8px solid rgb(240, 242, 245); font-size: 14px; margin: 0px;"&gt;1&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;s because other users' hashes happened to cross paths there. The system will do a quick check against the database, realize it's actually free, and still let the user register it.&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/ul&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_6v|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_6v" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="AHmQrc" data-complete="true" data-hveid="CAAIHhAA" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="LkYPVc#wdvZmf" jsuid="aKF1re_6w" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;div class="n6owBd awi2gc" data-complete="true" data-hveid="CAAIHhAB" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="TDBkbc#Ml18Xb" jsuid="aKF1re_6x" style="border-bottom: 0px rgb(10, 10, 10); font-size: 16px; margin: 12px 0px 16px;"&gt;You like a quick code snippet in &lt;span class="rQesXe MPyX" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="tP2kf#s32ZS" jsuid="aKF1re_6y" style="border-bottom: 0px rgb(10, 10, 10); font-weight: 700; margin: 0px;"&gt;Python&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&amp;nbsp;&lt;a href="https://github.com/dhirajpatra/python_essentials/blob/main/python_coding_interview_prep/bloom%20filter%20to%20check%20username%20availability.py" target="_blank"&gt;here&lt;/a&gt;&amp;nbsp;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_76|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_76" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_78|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_78" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="yhAwj" data-complete="true" data-processed="true" data-sfc-cp="" data-sfc-inited="2" data-sfc-root="ep" jsaction="rcuQ6b:&amp;amp;aKF1re_a6|npT2md" jscontroller="UTzWVc#U8DOt" jsuid="aKF1re_a6" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="SGF5Lb" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="mk5ZW#TASLyc" jsuid="aKF1re_8" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="SGF5Lb" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="mk5ZW#TASLyc" jsuid="aKF1re_9" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="SGF5Lb" data-complete="true" data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="mk5ZW#TASLyc" jsuid="aKF1re_a" style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;span style="border-bottom: 0px rgb(10, 10, 10); margin: 0px;"&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="" data-complete="true" data-sfc-root="ep" jsaction="" jscontroller="zp3Dsd#fP0RJ" jsuid="aKF1re_b" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; margin: 0px;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-xid="aQR2uf" jsaction="aimRestoredThreadVisible:&amp;amp;aKF1re_1|ZUljYd;requestToggleBottomSheet:&amp;amp;aKF1re_1|aXD3Gb" jsuid="aKF1re_2" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; margin: 0px;"&gt;&lt;/div&gt;&lt;div data-complete="true" data-sfc-inited="2" data-sfc-root="c" data-wiz-uids="aKF1re_h,aKF1re_i" jsaction="rcuQ6b:&amp;amp;aKF1re_g|npT2md" jscontroller="CAwPlc#Hx4Oqd" jsuid="aKF1re_g" style="border-bottom: 0px rgb(10, 10, 10); font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; font-size: 14px; margin: 0px;"&gt;&lt;!--TgQPHdaKF1re_1/YOIIaf;aKF1re_1/VWapad|||[{&amp;quot;s&amp;quot;:false,&amp;quot;i&amp;quot;:&amp;quot;aKF1re_1/YOIIaf&amp;quot;},{&amp;quot;s&amp;quot;:null,&amp;quot;i&amp;quot;:&amp;quot;aKF1re_1/VWapad&amp;quot;},156,{&amp;quot;s&amp;quot;:null,&amp;quot;i&amp;quot;:&amp;quot;aKF1re_1/C5DOxd&amp;quot;},[&amp;quot;AimExportActionToastLink&amp;quot;,309275],&amp;quot;\u0026aKF1re_1:bREfu&amp;quot;,false]--&gt;&lt;/div&gt;&lt;!--TgQPHd|aKF1re_1/YOIIaf;aKF1re_1/VWapad;aKF1re_1/C5DOxd;aKF1re_1/LL5gb;aKF1re_1/We76zc||[[null,0,null,0,null,0,[&amp;quot;can you show me if i am using 7 bith for each then how it will look when searching&amp;quot;],null,0,[&amp;quot;can you show me if i am using 7 bith for each then how it will look when searching&amp;quot;]]]--&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>What To Learn For AI</title><link>http://dhirajpatra.blogspot.com/2026/09/what-to-learn-for-ai.html</link><category>artificial intelligence</category><category>machine learning</category><pubDate>Sat, 26 Sep 2026 18:58:04 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-3977045334024362064</guid><description>&lt;p&gt;Amisha Yadav @amisha_explains put together one practical roadmap with videos, GitHub repos, guides, books, research papers, and courses.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;VIDEOS:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;1. LLM Introduction — &lt;a href="https://youtube.com/watch?v=zjkBMFhNj_g"&gt;https://youtube.com/watch?v=zjkBMFhNj_g&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2. LLMs from Scratch — &lt;a href="https://youtube.com/watch?v=9vM4p9NN0Ts"&gt;https://youtube.com/watch?v=9vM4p9NN0Ts&lt;/a&gt;&lt;/p&gt;&lt;p&gt;3. Agentic AI Overview (Stanford) — &lt;a href="https://youtube.com/watch?v=kJLiOGle3Lw"&gt;https://youtube.com/watch?v=kJLiOGle3Lw&lt;/a&gt;&lt;/p&gt;&lt;p&gt;4. Building &amp;amp; Evaluating Agents — &lt;a href="https://youtube.com/watch?v=d5EltXhbcfA"&gt;https://youtube.com/watch?v=d5EltXhbcfA&lt;/a&gt;&lt;/p&gt;&lt;p&gt;5. Building Effective Agents — &lt;a href="https://youtube.com/watch?v=D7_ipDqhtwk"&gt;https://youtube.com/watch?v=D7_ipDqhtwk&lt;/a&gt;&lt;/p&gt;&lt;p&gt;6. Building Agents with MCP — &lt;a href="https://youtube.com/watch?v=kQmXtrmQ5Zg"&gt;https://youtube.com/watch?v=kQmXtrmQ5Zg&lt;/a&gt;&lt;/p&gt;&lt;p&gt;7. Building an Agent from Scratch — &lt;a href="https://youtube.com/watch?v=xzXdLRUyjUg"&gt;https://youtube.com/watch?v=xzXdLRUyjUg&lt;/a&gt;&lt;/p&gt;&lt;p&gt;8. Philo Agents — &lt;a href="https://youtube.com/playlist?list=PLacQJwuclt_sV-tfZmpT1Ov6jldHl30NR"&gt;https://youtube.com/playlist?list=PLacQJwuclt_sV-tfZmpT1Ov6jldHl30NR&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;GITHUB REPOS:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;1. GenAI Agents — &lt;a href="https://github.com/nirdiamant/GenAI_Agents"&gt;https://github.com/nirdiamant/GenAI_Agents&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2. Microsoft AI Agents for Beginners — &lt;a href="https://github.com/microsoft/ai-agents-for-beginners"&gt;https://github.com/microsoft/ai-agents-for-beginners&lt;/a&gt;&lt;/p&gt;&lt;p&gt;3. Prompt Engineering Guide — &lt;a href="https://github.com/dair-ai/Prompt-Engineering-Guide"&gt;https://github.com/dair-ai/Prompt-Engineering-Guide&lt;/a&gt;&lt;/p&gt;&lt;p&gt;4. Hands-On Large Language Models — &lt;a href="https://github.com/HandsOnLLM/Hands-On-Large-Language-Models"&gt;https://github.com/HandsOnLLM/Hands-On-Large-Language-Models&lt;/a&gt;&lt;/p&gt;&lt;p&gt;5. GenAI Agents — &lt;a href="https://github.com/NirDiamant/GenAI_Agents"&gt;https://github.com/NirDiamant/GenAI_Agents&lt;/a&gt;&lt;/p&gt;&lt;p&gt;6. Made with ML — &lt;a href="https://github.com/GokuMohandas/Made-With-ML"&gt;https://github.com/GokuMohandas/Made-With-ML&lt;/a&gt;&lt;/p&gt;&lt;p&gt;7. Hands-On AI Engineering — &lt;a href="https://github.com/Sumanth077/Hands-On-AI-Engineering"&gt;https://github.com/Sumanth077/Hands-On-AI-Engineering&lt;/a&gt;&lt;/p&gt;&lt;p&gt;8. Awesome Generative AI Guide — &lt;a href="https://github.com/aishwaryanr/awesome-generative-ai-guide"&gt;https://github.com/aishwaryanr/awesome-generative-ai-guide&lt;/a&gt;&lt;/p&gt;&lt;p&gt;9. Designing Machine Learning Systems — &lt;a href="https://github.com/chiphuyen/dmls-book"&gt;https://github.com/chiphuyen/dmls-book&lt;/a&gt;&lt;/p&gt;&lt;p&gt;10. Machine Learning for Beginners — &lt;a href="https://github.com/microsoft/ML-For-Beginners"&gt;https://github.com/microsoft/ML-For-Beginners&lt;/a&gt;&lt;/p&gt;&lt;p&gt;11. LLM Course — &lt;a href="https://github.com/mlabonne/llm-course"&gt;https://github.com/mlabonne/llm-course&lt;/a&gt;&lt;/p&gt;&lt;p&gt;12. Jupyter Notebooks for all AI, ML, GenAI, LLMs:&amp;nbsp;&lt;a href="https://github.com/dhirajpatra/jupyter_notebooks" rel="nofollow" target="_blank"&gt;https://github.com/dhirajpatra/jupyter_notebooks&amp;nbsp;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;GUIDES:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;1. Google's Agent Whitepaper — &lt;a href="https://kaggle.com/whitepaper-agents"&gt;https://kaggle.com/whitepaper-agents&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2. Google's Agent Companion — &lt;a href="https://kaggle.com/whitepaper-agent-companion"&gt;https://kaggle.com/whitepaper-agent-companion&lt;/a&gt;&lt;/p&gt;&lt;p&gt;3. Building Effective Agents by Anthropic — &lt;a href="https://anthropic.com/engineering/building-effective-agents"&gt;https://anthropic.com/engineering/building-effective-agents&lt;/a&gt;&lt;/p&gt;&lt;p&gt;4. Claude Code Agentic Coding Practices — &lt;a href="https://code.claude.com/docs/en/best-practices"&gt;https://code.claude.com/docs/en/best-practices&lt;/a&gt;&lt;/p&gt;&lt;p&gt;5. OpenAI's Practical Guide to Building Agents — &lt;a href="https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf"&gt;https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;BOOKS:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;1. Understanding Deep Learning — &lt;a href="https://udlbook.github.io/udlbook/"&gt;https://udlbook.github.io/udlbook/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2. Building an LLM from Scratch — &lt;a href="https://manning.com/books/build-a-large-language-model-from-scratch"&gt;https://manning.com/books/build-a-large-language-model-from-scratch&lt;/a&gt;&lt;/p&gt;&lt;p&gt;3. The LLM Engineering Handbook — &lt;a href="https://oreilly.com/library/view/llm-engineers-handbook/9781836200079/"&gt;https://oreilly.com/library/view/llm-engineers-handbook/9781836200079/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;4. AI Agents: The Definitive Guide — &lt;a href="https://oreilly.com/library/view/ai-agents-the/0642572247775/"&gt;https://oreilly.com/library/view/ai-agents-the/0642572247775/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;5. Building Applications with AI Agents — &lt;a href="https://oreilly.com/library/view/building-applications-with/9781098176495/"&gt;https://oreilly.com/library/view/building-applications-with/9781098176495/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;6. AI Agents with MCP — &lt;a href="https://oreilly.com/library/view/ai-agents-with/9798341639546/"&gt;https://oreilly.com/library/view/ai-agents-with/9798341639546/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;7. AI Engineering — &lt;a href="https://oreilly.com/library/view/ai-engineering/9781098166298/"&gt;https://oreilly.com/library/view/ai-engineering/9781098166298/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;RESEARCH PAPERS:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;1. ReAct — &lt;a href="https://arxiv.org/abs/2210.03629"&gt;https://arxiv.org/abs/2210.03629&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2. Generative Agents — &lt;a href="https://arxiv.org/abs/2304.03442"&gt;https://arxiv.org/abs/2304.03442&lt;/a&gt;&lt;/p&gt;&lt;p&gt;3. Toolformer — &lt;a href="https://proceedings.neurips.cc/paper_files/paper/2023/file/d842425e4bf79ba039352da0f658a906-Paper-Conference.pdf"&gt;https://proceedings.neurips.cc/paper_files/paper/2023/file/d842425e4bf79ba039352da0f658a906-Paper-Conference.pdf&lt;/a&gt;&lt;/p&gt;&lt;p&gt;4. Chain-of-Thought Prompting — &lt;a href="https://arxiv.org/pdf/2201.11903"&gt;https://arxiv.org/pdf/2201.11903&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;COURSES:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;1. Hugging Face Agent Course — &lt;a href="https://huggingface.co/learn/agents-course/en/unit0/introduction"&gt;https://huggingface.co/learn/agents-course/en/unit0/introduction&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2. MCP with Anthropic — &lt;a href="https://deeplearning.ai/courses/mcp-build-rich-context-ai-apps-with-anthropic"&gt;https://deeplearning.ai/courses/mcp-build-rich-context-ai-apps-with-anthropic&lt;/a&gt;&lt;/p&gt;&lt;p&gt;3. Building Vector Databases with Pinecone — &lt;a href="https://deeplearning.ai/courses/building-applications-vector-databases"&gt;https://deeplearning.ai/courses/building-applications-vector-databases&lt;/a&gt;&lt;/p&gt;&lt;p&gt;4. Vector Databases: Embeddings to Apps — &lt;a href="https://deeplearning.ai/courses/vector-databases-embeddings-applications"&gt;https://deeplearning.ai/courses/vector-databases-embeddings-applications&lt;/a&gt;&lt;/p&gt;&lt;p&gt;5. Agent Memory — &lt;a href="https://deeplearning.ai/courses/llms-as-operating-systems-agent-memory"&gt;https://deeplearning.ai/courses/llms-as-operating-systems-agent-memory&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;No endless searching. No information overload. Just resources you can actually use. &#128278;&lt;/p&gt;&lt;p&gt;Your future AI skill set will come from consistent building, experimenting, and learning.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author><enclosure length="-1" type="application/pdf" url="https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>Amisha Yadav @amisha_explains put together one practical roadmap with videos, GitHub repos, guides, books, research papers, and courses. VIDEOS: 1. LLM Introduction — https://youtube.com/watch?v=zjkBMFhNj_g 2. LLMs from Scratch — https://youtube.com/watch?v=9vM4p9NN0Ts 3. Agentic AI Overview (Stanford) — https://youtube.com/watch?v=kJLiOGle3Lw 4. Building &amp;amp; Evaluating Agents — https://youtube.com/watch?v=d5EltXhbcfA 5. Building Effective Agents — https://youtube.com/watch?v=D7_ipDqhtwk 6. Building Agents with MCP — https://youtube.com/watch?v=kQmXtrmQ5Zg 7. Building an Agent from Scratch — https://youtube.com/watch?v=xzXdLRUyjUg 8. Philo Agents — https://youtube.com/playlist?list=PLacQJwuclt_sV-tfZmpT1Ov6jldHl30NR GITHUB REPOS: 1. GenAI Agents — https://github.com/nirdiamant/GenAI_Agents 2. Microsoft AI Agents for Beginners — https://github.com/microsoft/ai-agents-for-beginners 3. Prompt Engineering Guide — https://github.com/dair-ai/Prompt-Engineering-Guide 4. Hands-On Large Language Models — https://github.com/HandsOnLLM/Hands-On-Large-Language-Models 5. GenAI Agents — https://github.com/NirDiamant/GenAI_Agents 6. Made with ML — https://github.com/GokuMohandas/Made-With-ML 7. Hands-On AI Engineering — https://github.com/Sumanth077/Hands-On-AI-Engineering 8. Awesome Generative AI Guide — https://github.com/aishwaryanr/awesome-generative-ai-guide 9. Designing Machine Learning Systems — https://github.com/chiphuyen/dmls-book 10. Machine Learning for Beginners — https://github.com/microsoft/ML-For-Beginners 11. LLM Course — https://github.com/mlabonne/llm-course 12. Jupyter Notebooks for all AI, ML, GenAI, LLMs:&amp;nbsp;https://github.com/dhirajpatra/jupyter_notebooks&amp;nbsp; GUIDES: 1. Google's Agent Whitepaper — https://kaggle.com/whitepaper-agents 2. Google's Agent Companion — https://kaggle.com/whitepaper-agent-companion 3. Building Effective Agents by Anthropic — https://anthropic.com/engineering/building-effective-agents 4. Claude Code Agentic Coding Practices — https://code.claude.com/docs/en/best-practices 5. OpenAI's Practical Guide to Building Agents — https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf BOOKS: 1. Understanding Deep Learning — https://udlbook.github.io/udlbook/ 2. Building an LLM from Scratch — https://manning.com/books/build-a-large-language-model-from-scratch 3. The LLM Engineering Handbook — https://oreilly.com/library/view/llm-engineers-handbook/9781836200079/ 4. AI Agents: The Definitive Guide — https://oreilly.com/library/view/ai-agents-the/0642572247775/ 5. Building Applications with AI Agents — https://oreilly.com/library/view/building-applications-with/9781098176495/ 6. AI Agents with MCP — https://oreilly.com/library/view/ai-agents-with/9798341639546/ 7. AI Engineering — https://oreilly.com/library/view/ai-engineering/9781098166298/ RESEARCH PAPERS: 1. ReAct — https://arxiv.org/abs/2210.03629 2. Generative Agents — https://arxiv.org/abs/2304.03442 3. Toolformer — https://proceedings.neurips.cc/paper_files/paper/2023/file/d842425e4bf79ba039352da0f658a906-Paper-Conference.pdf 4. Chain-of-Thought Prompting — https://arxiv.org/pdf/2201.11903 COURSES: 1. Hugging Face Agent Course — https://huggingface.co/learn/agents-course/en/unit0/introduction 2. MCP with Anthropic — https://deeplearning.ai/courses/mcp-build-rich-context-ai-apps-with-anthropic 3. Building Vector Databases with Pinecone — https://deeplearning.ai/courses/building-applications-vector-databases 4. Vector Databases: Embeddings to Apps — https://deeplearning.ai/courses/vector-databases-embeddings-applications 5. Agent Memory — https://deeplearning.ai/courses/llms-as-operating-systems-agent-memory No endless searching. No information overload. Just resources you can actually use. &#128278; Your future AI skill set will come from consistent building, experimenting, and learning.Open Source Open Mind</itunes:subtitle><itunes:author>dhiraj patra</itunes:author><itunes:summary>Amisha Yadav @amisha_explains put together one practical roadmap with videos, GitHub repos, guides, books, research papers, and courses. VIDEOS: 1. LLM Introduction — https://youtube.com/watch?v=zjkBMFhNj_g 2. LLMs from Scratch — https://youtube.com/watch?v=9vM4p9NN0Ts 3. Agentic AI Overview (Stanford) — https://youtube.com/watch?v=kJLiOGle3Lw 4. Building &amp;amp; Evaluating Agents — https://youtube.com/watch?v=d5EltXhbcfA 5. Building Effective Agents — https://youtube.com/watch?v=D7_ipDqhtwk 6. Building Agents with MCP — https://youtube.com/watch?v=kQmXtrmQ5Zg 7. Building an Agent from Scratch — https://youtube.com/watch?v=xzXdLRUyjUg 8. Philo Agents — https://youtube.com/playlist?list=PLacQJwuclt_sV-tfZmpT1Ov6jldHl30NR GITHUB REPOS: 1. GenAI Agents — https://github.com/nirdiamant/GenAI_Agents 2. Microsoft AI Agents for Beginners — https://github.com/microsoft/ai-agents-for-beginners 3. Prompt Engineering Guide — https://github.com/dair-ai/Prompt-Engineering-Guide 4. Hands-On Large Language Models — https://github.com/HandsOnLLM/Hands-On-Large-Language-Models 5. GenAI Agents — https://github.com/NirDiamant/GenAI_Agents 6. Made with ML — https://github.com/GokuMohandas/Made-With-ML 7. Hands-On AI Engineering — https://github.com/Sumanth077/Hands-On-AI-Engineering 8. Awesome Generative AI Guide — https://github.com/aishwaryanr/awesome-generative-ai-guide 9. Designing Machine Learning Systems — https://github.com/chiphuyen/dmls-book 10. Machine Learning for Beginners — https://github.com/microsoft/ML-For-Beginners 11. LLM Course — https://github.com/mlabonne/llm-course 12. Jupyter Notebooks for all AI, ML, GenAI, LLMs:&amp;nbsp;https://github.com/dhirajpatra/jupyter_notebooks&amp;nbsp; GUIDES: 1. Google's Agent Whitepaper — https://kaggle.com/whitepaper-agents 2. Google's Agent Companion — https://kaggle.com/whitepaper-agent-companion 3. Building Effective Agents by Anthropic — https://anthropic.com/engineering/building-effective-agents 4. Claude Code Agentic Coding Practices — https://code.claude.com/docs/en/best-practices 5. OpenAI's Practical Guide to Building Agents — https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf BOOKS: 1. Understanding Deep Learning — https://udlbook.github.io/udlbook/ 2. Building an LLM from Scratch — https://manning.com/books/build-a-large-language-model-from-scratch 3. The LLM Engineering Handbook — https://oreilly.com/library/view/llm-engineers-handbook/9781836200079/ 4. AI Agents: The Definitive Guide — https://oreilly.com/library/view/ai-agents-the/0642572247775/ 5. Building Applications with AI Agents — https://oreilly.com/library/view/building-applications-with/9781098176495/ 6. AI Agents with MCP — https://oreilly.com/library/view/ai-agents-with/9798341639546/ 7. AI Engineering — https://oreilly.com/library/view/ai-engineering/9781098166298/ RESEARCH PAPERS: 1. ReAct — https://arxiv.org/abs/2210.03629 2. Generative Agents — https://arxiv.org/abs/2304.03442 3. Toolformer — https://proceedings.neurips.cc/paper_files/paper/2023/file/d842425e4bf79ba039352da0f658a906-Paper-Conference.pdf 4. Chain-of-Thought Prompting — https://arxiv.org/pdf/2201.11903 COURSES: 1. Hugging Face Agent Course — https://huggingface.co/learn/agents-course/en/unit0/introduction 2. MCP with Anthropic — https://deeplearning.ai/courses/mcp-build-rich-context-ai-apps-with-anthropic 3. Building Vector Databases with Pinecone — https://deeplearning.ai/courses/building-applications-vector-databases 4. Vector Databases: Embeddings to Apps — https://deeplearning.ai/courses/vector-databases-embeddings-applications 5. Agent Memory — https://deeplearning.ai/courses/llms-as-operating-systems-agent-memory No endless searching. No information overload. Just resources you can actually use. &#128278; Your future AI skill set will come from consistent building, experimenting, and learning.Open Source Open Mind</itunes:summary><itunes:keywords>dhiraj,dhirajpatra,php</itunes:keywords></item><item><title>Designing and implementing AI-driven Cybersecurity Tools using Knowledge Graphs (KGs)</title><link>http://dhirajpatra.blogspot.com/2026/09/designing-and-implementing-ai-driven.html</link><category>agent</category><category>agenticai</category><category>cyber security</category><category>security</category><pubDate>Mon, 21 Sep 2026 01:24:48 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-3376136460131853739</guid><description>&lt;p&gt;&lt;span class="citation-15" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Designing and implementing AI-driven cybersecurity tools using &lt;/span&gt;&lt;b data-index-in-node="63" data-path-to-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Knowledge Graphs (KGs)&lt;/b&gt;&lt;span class="citation-15" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt; as the baseline foundation—and &lt;/span&gt;&lt;b data-index-in-node="117" data-path-to-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;AIVSS (OWASP AI Vulnerability Scoring System)&lt;/b&gt;&lt;span class="citation-15 citation-end-15" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt; as your structural security architecture blueprint—is one of the most effective paradigms for modern threat intelligence.&lt;/span&gt;&lt;/p&gt;&lt;div _ngcontent-ng-c350255325="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel md-content enable-luminous-fast-follows enable-updated-hr-color stronger tutor-markdown-rendering" dir="ltr" id="model-response-message-contentr_8bbb0833e7b755b4" inline-copy-host="" style="--animation-duration: 400ms; --fade-animation-function: ease-out; animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;sources-carousel-inline _nghost-ng-c3540820740="" ng-version="0.0.0-PLACEHOLDER" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;source-inline-chip _ngcontent-ng-c3540820740="" _nghost-ng-c1030636328="" class="ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/source-inline-chip&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/sources-carousel-inline&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="citation-14" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;While traditional security setups process isolated logs and apply flat CVSS scores, this approach models &lt;/span&gt;&lt;b data-index-in-node="105" data-path-to-node="1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;interconnected dependencies&lt;/b&gt;&lt;span class="citation-14" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt; (Graph) and quantifies &lt;/span&gt;&lt;b data-index-in-node="156" data-path-to-node="1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;AI/agentic risk dynamics&lt;/b&gt;&lt;span class="citation-14 citation-end-14" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt; (AIVSS).&lt;source-footnote _nghost-ng-c3926095668="" ng-version="0.0.0-PLACEHOLDER" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;sup _ngcontent-ng-c3926095668="" class="superscript" data-turn-source-index="2" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-color: transparent !important; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(68, 71, 70); clear: none; clip: auto; color: #444746; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-size: 16px !important; gap: normal; hyphens: manual; inset: -10px 2px 10px -2px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(68, 71, 70) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(68, 71, 70); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;/sup&gt;&lt;/source-footnote&gt;&lt;/span&gt;&lt;sources-carousel-inline _nghost-ng-c3540820740="" ng-version="0.0.0-PLACEHOLDER" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;   &lt;!----&gt;&lt;source-inline-chip _ngcontent-ng-c3540820740="" _nghost-ng-c1030636328="" class="ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/source-inline-chip&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/sources-carousel-inline&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 data-path-to-node="3" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;1. Architectural Blueprint: The Core Synergy&lt;/h2&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;In this framework, the &lt;b data-index-in-node="23" data-path-to-node="4" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Knowledge Graph (KG)&lt;/b&gt; acts as the &lt;i data-index-in-node="56" data-path-to-node="4" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;unified state representation&lt;/i&gt; (Context Engine), while &lt;b data-index-in-node="109" data-path-to-node="4" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;AIVSS&lt;/b&gt; provides the &lt;i data-index-in-node="128" data-path-to-node="4" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;quantified risk scoring framework&lt;/i&gt; for AI systems and autonomous agents.&lt;/div&gt;&lt;br /&gt;&lt;response-element class="no-md" ng-version="0.0.0-PLACEHOLDER" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;code-block _nghost-ng-c1745535781="" class="ng-tns-c1745535781-35 enable-luminous-code-block ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c1745535781="" class="code-block ng-tns-c1745535781-35 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjT97ug0f6WAxUAAAAAHQAAAAAQpQE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:W1sicl84YmJiMDgzM2U3Yjc1NWI0IiwiY18zNjZlY2ZiMDUzYzJhYmIwIixudWxsLCJyY19kYzQ0ZTBhNWI0ZTJhMGJjIixudWxsLG51bGwsImVuIixudWxsLDEsbnVsbCxudWxsLDEsMF1d" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c1745535781="" class="formatted-code-block-internal-container ng-tns-c1745535781-35" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(20, 20, 20); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 26px 0px 0px 32px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div _ngcontent-ng-c1745535781="" class="animated-opacity ng-tns-c1745535781-35" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;pre _ngcontent-ng-c1745535781="" class="ng-tns-c1745535781-35" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code _ngcontent-ng-c1745535781="" class="code-container formatted ng-tns-c1745535781-35 no-decoration-radius" data-test-id="code-content" role="text" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 16px 0px 32px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;┌─────────────────────────────────────────────────────────┐
│              Ingestion &amp;amp; Telemetry Pipeline                                                                                   │
│   (Logs, Cloud Assets, Model Weights, Prompts, Traces)                                                       │
└───────────────────────────┬─────────────────────────────┘
                                                                        │
                                                                       ▼
┌─────────────────────────────────────────────────────────┐
│                 Security Knowledge Graph                                                                                      │
│    Entities: (Identity) -[CAN_EXECUTE]-&amp;gt; (Agent)                                                                   │
│               (Agent)   -[ACCESSES]-&amp;gt;    (Data Store)                                                                  │
└──────────────┬───────────────────────────┬──────────────┘
                                      │                                                                      │
                                     ▼                                                                     ▼
┌──────────────────────────────┐ ┌────────────────────────┐
│      Graph Analytics &amp;amp;                                           │ │   AIVSS Risk Engine                           │
│    Ontology-Based AI (RAG)                                │  │ (AARFs &amp;amp; Scoring Matrix                   │
└──────────────┬───────────────┘ └───────────┬────────────┘
                                      │                                                                         │
                                      └──────────────┬─────────────┘
                                                                            │
                                                                            ▼
┌─────────────────────────────────────────────────────────┐
│             Action Engine / Orchestration                                                                                      │
│       (Policy Enforcement, Agent Isolation, SOAR)                                                                    │
└─────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;!----&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/code-block&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/response-element&gt;&lt;h2 data-path-to-node="7" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;2. Knowledge Graph Foundation: Schema &amp;amp; Implementation&lt;/h2&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="citation-13 citation-end-13" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;A security graph maps contextual relationships instead of treating logs as isolated events.&lt;source-footnote _nghost-ng-c3926095668="" ng-version="0.0.0-PLACEHOLDER" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;sup _ngcontent-ng-c3926095668="" class="superscript" data-turn-source-index="3" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-color: transparent !important; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(68, 71, 70); clear: none; clip: auto; color: #444746; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-size: 16px !important; gap: normal; hyphens: manual; inset: -10px 2px 10px -2px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(68, 71, 70) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(68, 71, 70); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;/sup&gt;&lt;/source-footnote&gt;&lt;/span&gt;&lt;sources-carousel-inline _nghost-ng-c3540820740="" ng-version="0.0.0-PLACEHOLDER" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;   &lt;!----&gt;&lt;source-inline-chip _ngcontent-ng-c3540820740="" _nghost-ng-c1030636328="" class="ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/source-inline-chip&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/sources-carousel-inline&gt;&lt;/div&gt;&lt;br /&gt;&lt;h3 data-path-to-node="9" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Key Entities (Nodes) &amp;amp; Relationships (Edges)&lt;/h3&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;To model both IT infrastructure and AI/Agent ecosystems, structure your graph schema (using Neo4j, AWS Neptune, or Memgraph) around these core nodes:&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="11" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="11,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Entities:&lt;/b&gt; &lt;code data-index-in-node="10" data-path-to-node="11,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;User&lt;/code&gt;, &lt;code data-index-in-node="16" data-path-to-node="11,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Agent&lt;/code&gt;, &lt;code data-index-in-node="23" data-path-to-node="11,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Prompt&lt;/code&gt;, &lt;code data-index-in-node="31" data-path-to-node="11,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;LLM_Model&lt;/code&gt;, &lt;code data-index-in-node="42" data-path-to-node="11,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Dataset&lt;/code&gt;, &lt;code data-index-in-node="51" data-path-to-node="11,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;API_Tool&lt;/code&gt;, &lt;code data-index-in-node="61" data-path-to-node="11,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Vulnerability&lt;/code&gt;, &lt;code data-index-in-node="76" data-path-to-node="11,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;CloudResource&lt;/code&gt;.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="11,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Relationships:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="11,1,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code data-index-in-node="0" data-path-to-node="11,1,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;(User)-[:DELEGATES_TO]-&amp;gt;(Agent)&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code data-index-in-node="0" data-path-to-node="11,1,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;(Agent)-[:CALLS_TOOL]-&amp;gt;(API_Tool)&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code data-index-in-node="0" data-path-to-node="11,1,1,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;(Agent)-[:RETRIEVES]-&amp;gt;(Dataset)&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code data-index-in-node="0" data-path-to-node="11,1,1,3,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;(Vulnerability)-[:EXPOSES]-&amp;gt;(LLM_Model)&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-path-to-node="12" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Knowledge Graph Setup Example (Cypher)&lt;/h3&gt;&lt;response-element class="no-md" ng-version="0.0.0-PLACEHOLDER" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;code-block _nghost-ng-c1745535781="" class="ng-tns-c1745535781-36 enable-luminous-code-block ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c1745535781="" class="code-block ng-tns-c1745535781-36 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjT97ug0f6WAxUAAAAAHQAAAAAQpwE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:W1sicl84YmJiMDgzM2U3Yjc1NWI0IiwiY18zNjZlY2ZiMDUzYzJhYmIwIixudWxsLCJyY19kYzQ0ZTBhNWI0ZTJhMGJjIixudWxsLG51bGwsImVuIixudWxsLDEsbnVsbCxudWxsLDEsMF1d" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c1745535781="" class="formatted-code-block-internal-container ng-tns-c1745535781-36" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(20, 20, 20); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 26px 0px 0px 32px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div _ngcontent-ng-c1745535781="" class="animated-opacity ng-tns-c1745535781-36" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div _ngcontent-ng-c1745535781="" class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1745535781-36 ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: -72px auto auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px 11px 0px 0px; page: auto; perspective: none; position: sticky; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span _ngcontent-ng-c1745535781="" class="ng-tns-c1745535781-36" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Cypher&lt;/span&gt;&lt;div _ngcontent-ng-c1745535781="" class="buttons ng-tns-c1745535781-36 ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;gem-icon-button _ngcontent-ng-c1745535781="" _nghost-ng-c3427483756="" aria-describedby="cdk-describedby-message-ng-1-70" arialabel="Download code" cdk-describedby-host="ng-1" class="mat-mdc-tooltip-trigger download-button ng-tns-c1745535781-36 gem-button gem-button-badge-size-small gem-button-size-small gem-button-type-on-surface lm-enabled ng-star-inserted" fonticonname="arrow_circle_down" gemtooltip="Download code" size="small" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;" tabindex="-1" theme="lm" type="onSurface"&gt;&lt;!----&gt;&lt;!----&gt;&lt;button _ngcontent-ng-c3427483756="" aria-label="Download code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" jslog="305704;track:generic_click,impression" mat-ripple-loader-centered="" mat-ripple-loader-class-name="mat-mdc-button-ripple" mat-ripple-loader-uninitialized="" matbadgeposition="after" maticonbutton="" style="animation: auto ease 0s 1 normal none running none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border-color: rgb(0, 0, 0); border-style: none; border-width: 0px; clear: none; clip: auto; color: black; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 24px; font-stretch: normal; font-style: normal; font-variation-settings: normal; font-weight: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 6px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="mat-mdc-button-persistent-ripple mdc-icon-button__ripple" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;gem-icon _ngcontent-ng-c3427483756="" _nghost-ng-c3836313166="" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;mat-icon _ngcontent-ng-c3836313166="" aria-hidden="true" class="mat-icon notranslate lm-icon-l lumi-symbols mat-ligature-font mat-icon-no-color ng-star-inserted" data-mat-icon-name="arrow_circle_down" data-mat-icon-namespace="lumi-symbols" data-mat-icon-type="font" fonticon="arrow_circle_down" role="img" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(255, 255, 255); filter: none; flex-direction: row; flex: 0 0 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/mat-icon&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon&gt;&lt;!----&gt;&lt;span class="mat-focus-indicator" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;span class="mat-mdc-button-touch-target" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: none; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 50% auto auto 50%; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;/button&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon-button&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;gem-icon-button _ngcontent-ng-c1745535781="" _nghost-ng-c3427483756="" aria-describedby="cdk-describedby-message-ng-1-71" arialabel="Copy code" cdk-describedby-host="ng-1" class="mat-mdc-tooltip-trigger copy-button ng-tns-c1745535781-36 gem-button gem-button-badge-size-small gem-button-size-small gem-button-type-on-surface lm-enabled ng-star-inserted" data-test-id="gem-copy-button" fonticonname="copy" gemtooltip="Copy code" size="small" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;" tabindex="-1" theme="lm" type="onSurface"&gt;&lt;!----&gt;&lt;!----&gt;&lt;button _ngcontent-ng-c3427483756="" aria-label="Copy code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" jslog="179062;track:generic_click,impression;BardVeMetadataKey:W1sicl84YmJiMDgzM2U3Yjc1NWI0IiwiY18zNjZlY2ZiMDUzYzJhYmIwIixudWxsLCJyY19kYzQ0ZTBhNWI0ZTJhMGJjIixudWxsLG51bGwsImVuIixudWxsLDEsbnVsbCxudWxsLDEsMF1d;mutable:true" mat-ripple-loader-centered="" mat-ripple-loader-class-name="mat-mdc-button-ripple" mat-ripple-loader-uninitialized="" matbadgeposition="after" maticonbutton="" style="animation: auto ease 0s 1 normal none running none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border-color: rgb(0, 0, 0); border-style: none; border-width: 0px; clear: none; clip: auto; color: black; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 24px; font-stretch: normal; font-style: normal; font-variation-settings: normal; font-weight: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 6px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="mat-mdc-button-persistent-ripple mdc-icon-button__ripple" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;gem-icon _ngcontent-ng-c3427483756="" _nghost-ng-c3836313166="" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;mat-icon _ngcontent-ng-c3836313166="" aria-hidden="true" class="mat-icon notranslate lm-icon-l lumi-symbols mat-ligature-font mat-icon-no-color ng-star-inserted" data-mat-icon-name="copy" data-mat-icon-namespace="lumi-symbols" data-mat-icon-type="font" fonticon="copy" role="img" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(255, 255, 255); filter: none; flex-direction: row; flex: 0 0 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/mat-icon&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon&gt;&lt;!----&gt;&lt;span class="mat-focus-indicator" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;span class="mat-mdc-button-touch-target" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: none; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 50% auto auto 50%; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;/button&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon-button&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;pre _ngcontent-ng-c1745535781="" class="ng-tns-c1745535781-36" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code _ngcontent-ng-c1745535781="" class="code-container formatted ng-tns-c1745535781-36" data-test-id="code-content" role="text" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 16px 0px 32px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;// Create a path showing a high-risk multi-agent execution pipeline
CREATE (a1:Agent {name: "CustomerSupportAgent", risk_tier: "Medium"})
CREATE (a2:Agent {name: "DatabaseAdminAgent", risk_tier: "High"})
CREATE (t:Tool {name: "SQLQueryExecutor", permission: "Write"})
CREATE (v:Vulnerability {type: "PromptInjection", standard: "AIVSS"})

CREATE (a1)-[:DELEGATES_TASK {channel: "IPC"}]-&amp;gt;(a2)
CREATE (a2)-[:USES_TOOL]-&amp;gt;(t)
CREATE (v)-[:EXPLOITS]-&amp;gt;(a1)
&lt;/code&gt;&lt;/pre&gt;&lt;!----&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/code-block&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/response-element&gt;&lt;h2 data-path-to-node="15" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;3. Implementing AIVSS into the Security Engine&lt;/h2&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="citation-12" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;The &lt;/span&gt;&lt;b data-index-in-node="4" data-path-to-node="16" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;OWASP AI Vulnerability Scoring System (AIVSS)&lt;/b&gt;&lt;span class="citation-12 citation-end-12" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt; adapts vulnerability assessment to AI-specific vectors (such as prompt injection, training data poisoning, model supply chain integrity, and agent delegation risks).&lt;source-footnote _nghost-ng-c3926095668="" ng-version="0.0.0-PLACEHOLDER" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;sup _ngcontent-ng-c3926095668="" class="superscript" data-turn-source-index="4" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-color: transparent !important; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(68, 71, 70); clear: none; clip: auto; color: #444746; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-size: 16px !important; gap: normal; hyphens: manual; inset: -10px 2px 10px -2px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(68, 71, 70) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(68, 71, 70); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;/sup&gt;&lt;/source-footnote&gt;&lt;/span&gt;&lt;sources-carousel-inline _nghost-ng-c3540820740="" ng-version="0.0.0-PLACEHOLDER" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;   &lt;!----&gt;&lt;source-inline-chip _ngcontent-ng-c3540820740="" _nghost-ng-c1030636328="" class="ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/source-inline-chip&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/sources-carousel-inline&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Instead of assigning static risk scores, use the &lt;b data-index-in-node="49" data-path-to-node="17" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Knowledge Graph to calculate AIVSS parameters dynamically&lt;/b&gt;.&lt;/div&gt;&lt;br /&gt;&lt;h3 data-path-to-node="18" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Mapping AIVSS Dimensions to Graph Queries&lt;/h3&gt;&lt;table data-path-to-node="19" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 32px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;thead style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;strong style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;AIVSS Scoring Factor&lt;/strong&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;strong style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Graph Query Logic&lt;/strong&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;strong style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Dynamic Calculation&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="19,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="19,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Agentic Risk Amplification / Delegation Depth&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="19,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Count path length (&lt;span class="math-inline" data-index-in-node="19" data-math="N" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;$N$&lt;/span&gt;) between initial input and high-privilege tool execution: &lt;code data-index-in-node="79" data-path-to-node="19,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;(AgentA)-[*1..N]-&amp;gt;(AgentB)-[:USES_TOOL]-&amp;gt;(AdminTool)&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="19,1,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;High graph depth multiplies the AIVSS severity score due to multi-agent cascading risk.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="19,2,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="19,2,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Data Poisoning &amp;amp; Blast Radius&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="19,2,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Traverse downstream downstream dependencies from a compromised node: &lt;code data-index-in-node="69" data-path-to-node="19,2,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;MATCH (d:Dataset {status: 'Untrusted'})-[:USED_BY]-&amp;gt;(m:Model)&amp;lt;-[:DEPENDS_ON]-(a:Agent)&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="19,2,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;The number of affected dependent agents directly scales the AIVSS Impact metric.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="19,3,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="19,3,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Contextual Privilege Access&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="19,3,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Query reachable nodes from an agent's context window: &lt;code data-index-in-node="54" data-path-to-node="19,3,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;MATCH (a:Agent)-[:HAS_CONTEXT]-&amp;gt;(data:SensitiveData)&lt;/code&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="19,3,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Elevates AIVSS score if prompt injection can leak context without needing system privileges.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 data-path-to-node="20" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Python Integration Example: Dynamic AIVSS Risk Calculator&lt;/h3&gt;&lt;response-element class="no-md" ng-version="0.0.0-PLACEHOLDER" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;code-block _nghost-ng-c1745535781="" class="ng-tns-c1745535781-37 enable-luminous-code-block ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c1745535781="" class="code-block ng-tns-c1745535781-37 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahgKEwjT97ug0f6WAxUAAAAAHQAAAAAQqwE" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:W1sicl84YmJiMDgzM2U3Yjc1NWI0IiwiY18zNjZlY2ZiMDUzYzJhYmIwIixudWxsLCJyY19kYzQ0ZTBhNWI0ZTJhMGJjIixudWxsLG51bGwsImVuIixudWxsLDEsbnVsbCxudWxsLDEsMF1d" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c1745535781="" class="formatted-code-block-internal-container ng-tns-c1745535781-37" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(20, 20, 20); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 26px 0px 0px 32px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div _ngcontent-ng-c1745535781="" class="animated-opacity ng-tns-c1745535781-37" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div _ngcontent-ng-c1745535781="" class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c1745535781-37 ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: -72px auto auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px 11px 0px 0px; page: auto; perspective: none; position: sticky; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span _ngcontent-ng-c1745535781="" class="ng-tns-c1745535781-37" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Python&lt;/span&gt;&lt;div _ngcontent-ng-c1745535781="" class="buttons ng-tns-c1745535781-37 ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;gem-icon-button _ngcontent-ng-c1745535781="" _nghost-ng-c3427483756="" aria-describedby="cdk-describedby-message-ng-1-70" arialabel="Download code" cdk-describedby-host="ng-1" class="mat-mdc-tooltip-trigger download-button ng-tns-c1745535781-37 gem-button gem-button-badge-size-small gem-button-size-small gem-button-type-on-surface lm-enabled ng-star-inserted" fonticonname="arrow_circle_down" gemtooltip="Download code" size="small" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;" tabindex="-1" theme="lm" type="onSurface"&gt;&lt;!----&gt;&lt;!----&gt;&lt;button _ngcontent-ng-c3427483756="" aria-label="Download code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" jslog="305704;track:generic_click,impression" mat-ripple-loader-centered="" mat-ripple-loader-class-name="mat-mdc-button-ripple" mat-ripple-loader-uninitialized="" matbadgeposition="after" maticonbutton="" style="animation: auto ease 0s 1 normal none running none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border-color: rgb(0, 0, 0); border-style: none; border-width: 0px; clear: none; clip: auto; color: black; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 24px; font-stretch: normal; font-style: normal; font-variation-settings: normal; font-weight: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 6px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="mat-mdc-button-persistent-ripple mdc-icon-button__ripple" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;gem-icon _ngcontent-ng-c3427483756="" _nghost-ng-c3836313166="" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;mat-icon _ngcontent-ng-c3836313166="" aria-hidden="true" class="mat-icon notranslate lm-icon-l lumi-symbols mat-ligature-font mat-icon-no-color ng-star-inserted" data-mat-icon-name="arrow_circle_down" data-mat-icon-namespace="lumi-symbols" data-mat-icon-type="font" fonticon="arrow_circle_down" role="img" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(255, 255, 255); filter: none; flex-direction: row; flex: 0 0 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/mat-icon&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon&gt;&lt;!----&gt;&lt;span class="mat-focus-indicator" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;span class="mat-mdc-button-touch-target" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: none; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 50% auto auto 50%; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;/button&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon-button&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;gem-icon-button _ngcontent-ng-c1745535781="" _nghost-ng-c3427483756="" aria-describedby="cdk-describedby-message-ng-1-71" arialabel="Copy code" cdk-describedby-host="ng-1" class="mat-mdc-tooltip-trigger copy-button ng-tns-c1745535781-37 gem-button gem-button-badge-size-small gem-button-size-small gem-button-type-on-surface lm-enabled ng-star-inserted" data-test-id="gem-copy-button" fonticonname="copy" gemtooltip="Copy code" size="small" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;" tabindex="-1" theme="lm" type="onSurface"&gt;&lt;!----&gt;&lt;!----&gt;&lt;button _ngcontent-ng-c3427483756="" aria-label="Copy code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" jslog="179062;track:generic_click,impression;BardVeMetadataKey:W1sicl84YmJiMDgzM2U3Yjc1NWI0IiwiY18zNjZlY2ZiMDUzYzJhYmIwIixudWxsLCJyY19kYzQ0ZTBhNWI0ZTJhMGJjIixudWxsLG51bGwsImVuIixudWxsLDEsbnVsbCxudWxsLDEsMF1d;mutable:true" mat-ripple-loader-centered="" mat-ripple-loader-class-name="mat-mdc-button-ripple" mat-ripple-loader-uninitialized="" matbadgeposition="after" maticonbutton="" style="animation: auto ease 0s 1 normal none running none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border-color: rgb(0, 0, 0); border-style: none; border-width: 0px; clear: none; clip: auto; color: black; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 24px; font-stretch: normal; font-style: normal; font-variation-settings: normal; font-weight: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 6px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="mat-mdc-button-persistent-ripple mdc-icon-button__ripple" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;gem-icon _ngcontent-ng-c3427483756="" _nghost-ng-c3836313166="" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;mat-icon _ngcontent-ng-c3836313166="" aria-hidden="true" class="mat-icon notranslate lm-icon-l lumi-symbols mat-ligature-font mat-icon-no-color ng-star-inserted" data-mat-icon-name="copy" data-mat-icon-namespace="lumi-symbols" data-mat-icon-type="font" fonticon="copy" role="img" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(255, 255, 255); filter: none; flex-direction: row; flex: 0 0 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/mat-icon&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon&gt;&lt;!----&gt;&lt;span class="mat-focus-indicator" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;span class="mat-mdc-button-touch-target" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: none; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 50% auto auto 50%; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;/button&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon-button&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;pre _ngcontent-ng-c1745535781="" class="ng-tns-c1745535781-37" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code _ngcontent-ng-c1745535781="" class="code-container formatted ng-tns-c1745535781-37" data-test-id="code-content" role="text" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 16px 0px 32px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="hljs-keyword" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(150, 157, 255); clear: none; clip: auto; color: #969dff; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(150, 157, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(150, 157, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;from&lt;/span&gt; neo4j &lt;span class="hljs-keyword" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(150, 157, 255); clear: none; clip: auto; color: #969dff; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(150, 157, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(150, 157, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;import&lt;/span&gt; GraphDatabase

&lt;span class="hljs-class" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 219, 15); clear: none; clip: auto; color: #ffdb0f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 219, 15) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 219, 15); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="hljs-keyword" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(150, 157, 255); clear: none; clip: auto; color: #969dff; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(150, 157, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(150, 157, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;class&lt;/span&gt; &lt;span class="hljs-title" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 219, 15); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 219, 15) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 219, 15); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;AIVSSRiskEngine&lt;/span&gt;:&lt;/span&gt;
    &lt;span class="hljs-function" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="hljs-keyword" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(150, 157, 255); clear: none; clip: auto; color: #969dff; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(150, 157, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(150, 157, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;def&lt;/span&gt; &lt;span class="hljs-title" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 219, 15); clear: none; clip: auto; color: #ffdb0f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 219, 15) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 219, 15); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;__init__&lt;/span&gt;(&lt;span class="hljs-params" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;self, uri, user, password&lt;/span&gt;):&lt;/span&gt;
        self.driver = GraphDatabase.driver(uri, auth=(user, password))

    &lt;span class="hljs-function" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="hljs-keyword" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(150, 157, 255); clear: none; clip: auto; color: #969dff; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(150, 157, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(150, 157, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;def&lt;/span&gt; &lt;span class="hljs-title" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 219, 15); clear: none; clip: auto; color: #ffdb0f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 219, 15) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 219, 15); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;evaluate_agent_aivss_score&lt;/span&gt;(&lt;span class="hljs-params" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;self, agent_id&lt;/span&gt;):&lt;/span&gt;
        &lt;span class="hljs-keyword" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(150, 157, 255); clear: none; clip: auto; color: #969dff; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(150, 157, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(150, 157, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;with&lt;/span&gt; self.driver.session() &lt;span class="hljs-keyword" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(150, 157, 255); clear: none; clip: auto; color: #969dff; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(150, 157, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(150, 157, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;as&lt;/span&gt; session:
            &lt;span class="hljs-comment" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(128, 128, 128); clear: none; clip: auto; color: grey; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(128, 128, 128) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(128, 128, 128); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;# Query the graph to check blast radius and delegation chain depth&lt;/span&gt;
            query = &lt;span class="hljs-string" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(96, 214, 115); clear: none; clip: auto; color: #60d673; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(96, 214, 115) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(96, 214, 115); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;"""
            MATCH path = (a:Agent {id: $agent_id})-[:DELEGATES_TO|USES_TOOL*1..5]-&amp;gt;(target)
            RETURN length(path) as delegation_depth, 
                   labels(target) as target_type, 
                   target.sensitivity as sensitivity
            """&lt;/span&gt;
            results = session.run(query, agent_id=agent_id)
            
            base_score = &lt;span class="hljs-number" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 150, 218); clear: none; clip: auto; color: #ff96da; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 150, 218) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 150, 218); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;5.0&lt;/span&gt; &lt;span class="hljs-comment" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(128, 128, 128); clear: none; clip: auto; color: grey; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(128, 128, 128) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(128, 128, 128); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;# Base vulnerability metric&lt;/span&gt;
            delegation_multiplier = &lt;span class="hljs-number" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 150, 218); clear: none; clip: auto; color: #ff96da; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 150, 218) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 150, 218); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;1.0&lt;/span&gt;
            impact_score = &lt;span class="hljs-number" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 150, 218); clear: none; clip: auto; color: #ff96da; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 150, 218) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 150, 218); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;1.0&lt;/span&gt;

            &lt;span class="hljs-keyword" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(150, 157, 255); clear: none; clip: auto; color: #969dff; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(150, 157, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(150, 157, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;for&lt;/span&gt; record &lt;span class="hljs-keyword" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(150, 157, 255); clear: none; clip: auto; color: #969dff; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(150, 157, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(150, 157, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;in&lt;/span&gt; results:
                depth = record[&lt;span class="hljs-string" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(96, 214, 115); clear: none; clip: auto; color: #60d673; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(96, 214, 115) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(96, 214, 115); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;"delegation_depth"&lt;/span&gt;]
                &lt;span class="hljs-keyword" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(150, 157, 255); clear: none; clip: auto; color: #969dff; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(150, 157, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(150, 157, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;if&lt;/span&gt; depth &amp;gt; &lt;span class="hljs-number" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 150, 218); clear: none; clip: auto; color: #ff96da; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 150, 218) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 150, 218); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;1&lt;/span&gt;:
                    delegation_multiplier += (&lt;span class="hljs-number" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 150, 218); clear: none; clip: auto; color: #ff96da; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 150, 218) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 150, 218); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;0.15&lt;/span&gt; * depth) &lt;span class="hljs-comment" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(128, 128, 128); clear: none; clip: auto; color: grey; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(128, 128, 128) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(128, 128, 128); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;# Multi-agent risk amplification&lt;/span&gt;
                
                &lt;span class="hljs-keyword" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(150, 157, 255); clear: none; clip: auto; color: #969dff; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(150, 157, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(150, 157, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;if&lt;/span&gt; record[&lt;span class="hljs-string" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(96, 214, 115); clear: none; clip: auto; color: #60d673; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(96, 214, 115) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(96, 214, 115); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;"sensitivity"&lt;/span&gt;] == &lt;span class="hljs-string" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(96, 214, 115); clear: none; clip: auto; color: #60d673; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(96, 214, 115) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(96, 214, 115); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;"High"&lt;/span&gt;:
                    impact_score = &lt;span class="hljs-built_in" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 90, 89); clear: none; clip: auto; color: #ff5a59; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 90, 89) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 90, 89); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;max&lt;/span&gt;(impact_score, &lt;span class="hljs-number" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 150, 218); clear: none; clip: auto; color: #ff96da; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 150, 218) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 150, 218); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;2.5&lt;/span&gt;)

            &lt;span class="hljs-comment" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(128, 128, 128); clear: none; clip: auto; color: grey; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(128, 128, 128) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(128, 128, 128); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;# Calculate final AIVSS Score (capped at 10.0)&lt;/span&gt;
            final_aivss_score = &lt;span class="hljs-built_in" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 90, 89); clear: none; clip: auto; color: #ff5a59; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 90, 89) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 90, 89); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;min&lt;/span&gt;(&lt;span class="hljs-number" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 150, 218); clear: none; clip: auto; color: #ff96da; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 150, 218) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 150, 218); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;10.0&lt;/span&gt;, base_score * delegation_multiplier * impact_score)
            &lt;span class="hljs-keyword" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(150, 157, 255); clear: none; clip: auto; color: #969dff; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(150, 157, 255) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(150, 157, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;return&lt;/span&gt; &lt;span class="hljs-built_in" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 90, 89); clear: none; clip: auto; color: #ff5a59; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 90, 89) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 90, 89); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;round&lt;/span&gt;(final_aivss_score, &lt;span class="hljs-number" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 150, 218); clear: none; clip: auto; color: #ff96da; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 150, 218) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(255, 150, 218); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;2&lt;/span&gt;)
&lt;/code&gt;&lt;/pre&gt;&lt;!----&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/code-block&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/response-element&gt;&lt;h2 data-path-to-node="23" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;4. Key Security Innovation Strategies&lt;/h2&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;To drive true innovation using this setup, consider building these advanced security features:&lt;/div&gt;&lt;br /&gt;&lt;h3 data-path-to-node="25" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;1. Graph RAG for Context-Aware Security Copilots&lt;/h3&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Instead of giving standard LLMs flat log files, feed your Security Copilot subgraphs. When an incident occurs, extract the 2-hop neighborhood around the affected system and convert it into structured text for the LLM. This provides the AI with exact dependency paths, dramatically reducing hallucinated remediation steps.&lt;/div&gt;&lt;br /&gt;&lt;h3 data-path-to-node="27" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;2. Autonomous Blast-Radius Isolation&lt;/h3&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;When an agent or tool breaches an AIVSS threshold (e.g., AIVSS &amp;gt; 8.0), trigger automated graph mutation queries:&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="29" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Automatically sever &lt;code data-index-in-node="20" data-path-to-node="29,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 2.4px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;[:CALLS_TOOL]&lt;/code&gt; edges on high-risk agents.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Quarantining the compromised agent in real time while preserving the rest of the execution pipeline.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-path-to-node="30" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;3. Attack Path Discovery using Graph Neural Networks (GNNs)&lt;/h3&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Train GNN models on your Knowledge Graph to predict &lt;i data-index-in-node="52" data-path-to-node="31" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;unseen vulnerability vectors&lt;/i&gt;. GNNs can identify structural similarities between known malicious prompt-injection chains and benign agent configurations, catching novel attack paths before exploitation.&lt;/div&gt;&lt;div class="attachment-container unknown" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;response-element class="no-md" ng-version="0.0.0-PLACEHOLDER" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;elicitations class="lm-enabled ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px !important; margin-right: 0px !important; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 2.4px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 2.4px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;/elicitations&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/response-element&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>Dynamic Agent Swarm</title><link>http://dhirajpatra.blogspot.com/2026/09/dynamic-agent-swarm.html</link><category>agent</category><category>generativeai</category><category>llm</category><category>swarm</category><pubDate>Wed, 16 Sep 2026 08:46:00 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-5892638791204074534</guid><description>&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyNVsTuMWEvi7ueZwlT3_3yE8nesxNUypW9CFARfktPGGov70_HoYKYFW3ZeKK1zD_bQWC9CMGBB3q2ALVwNamiRQ0SIhzP2hut9S_EiGchaMrjJDXha4EFbz6IzXPXopaFJsLAtkpmbqb2sTmsC8ul7Vc-a5Zy48Ugxo-1gMG48fWpgj7qoXTVdXbKnUD/s1920/image.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1280" data-original-width="1920" height="315" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyNVsTuMWEvi7ueZwlT3_3yE8nesxNUypW9CFARfktPGGov70_HoYKYFW3ZeKK1zD_bQWC9CMGBB3q2ALVwNamiRQ0SIhzP2hut9S_EiGchaMrjJDXha4EFbz6IzXPXopaFJsLAtkpmbqb2sTmsC8ul7Vc-a5Zy48Ugxo-1gMG48fWpgj7qoXTVdXbKnUD/w473-h315/image.jpg" width="473" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;generated by meta ai&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Yes. This is a very useful pattern for advanced Agentic AI: a “dynamic agent swarm” where agents are created as short-lived workers for a specific task, execute independently, return their result, and are then terminated. The closest computer-science analogy is a process/thread pool, although an LLM agent is not literally an OS thread.&lt;/p&gt;&lt;p&gt;An agent swarm isn't just "a lot of agents" - it's a parallel coordination system where one orchestrator spawns 10-100 specialists that work at the same time, share memory, and merge results.&lt;/p&gt;&lt;p&gt;This is the big shift in 2026. The latest example is Kimi K2.5 / K2.6 - Moonshot AI's open-weight model built around &lt;b&gt;Agent Swarm&lt;/b&gt;&amp;nbsp;that can run up to 100 sub-agents in parallel, handle up to 1,500 tool calls per job, and cut execution time by 4.5x vs single-agent sequential execution. K2.6 in April upgraded it to K3 Swarm for large-scale parallel search and batch processing.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;1. Swarm vs. Single Agent vs. Multi-Agent Chain&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Single agent:&lt;/b&gt;&amp;nbsp;One ReAct loop. Thinks -&amp;gt; Acts -&amp;gt; Observes. Bottleneck is serial tool calls.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Multi-agent chain:&lt;/b&gt;&amp;nbsp;A -&amp;gt; B -&amp;gt; C. Like an assembly line. Better specialization, but still serial.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Swarm:&lt;/b&gt;&amp;nbsp;Orchestrator decomposes a task and fires 4 specialist swarms in parallel:&lt;/p&gt;&lt;p&gt;- Recon Agent - gathers context, 8+ tool integrations&lt;/p&gt;&lt;p&gt;- Classifier Agent - maps CVEs, filters false positives&lt;/p&gt;&lt;p&gt;- Exploit/Builder Agent - executes with reasoning model&lt;/p&gt;&lt;p&gt;- Orchestrator - ReAct loop that merges&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The pattern is: &lt;b&gt;Decompose -&amp;gt; Spawn -&amp;gt; Execute in Parallel -&amp;gt; Synthesize&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;2. The 6 topologies that actually work&lt;/b&gt;&lt;/p&gt;&lt;p&gt;From current open-source swarms (Ruflo/Claude-Flow etc):&lt;/p&gt;&lt;p&gt;1. Star: Central orchestrator talks to all workers. Simple, good for 3-8 agents.&lt;/p&gt;&lt;p&gt;2. Mesh: Every agent talks to every agent. Expensive, but resilient.&lt;/p&gt;&lt;p&gt;3. Hierarchical: Orchestrator -&amp;gt; Team Leads -&amp;gt; Workers. This is what Kimi does for 100 agents.&lt;/p&gt;&lt;p&gt;4. Ring: Pass-the-baton for workflows that need ordering.&lt;/p&gt;&lt;p&gt;5. Byzantine Consensus: Workers vote on result. Used when hallucinations are costly.&lt;/p&gt;&lt;p&gt;6. Dynamic / Self-improving: Agents promote learnings to shared swarm memory for cross-agent discovery&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;3. What you need to build one&lt;/b&gt;&lt;/p&gt;&lt;p&gt;a) Orchestrator prompt&lt;/p&gt;&lt;p&gt;&amp;gt; "You are the swarm lead. Decompose this goal into independent sub-tasks. Each sub-task must have clear inputs/outputs and no dependency on others. Spawn agents with bounded contexts."&lt;/p&gt;&lt;p&gt;b) Shared memory layer&lt;/p&gt;&lt;p&gt;- Short-term: Vector DB / Redis for task progress (Desplega's `store-progress.ts` pattern)&lt;/p&gt;&lt;p&gt;- Long-term: Swarm knowledge base that auto-promotes completed research&lt;/p&gt;&lt;p&gt;c) Tooling&lt;/p&gt;&lt;p&gt;- SDK: `SwarmSDK` class for browser-side orchestration&lt;/p&gt;&lt;p&gt;- MCP tools: `inject-learning` to push learnings back into swarm&lt;/p&gt;&lt;p&gt;- Hooks for Human-in-the-Loop nodes when confidence &amp;lt; threshold&lt;/p&gt;&lt;p&gt;d) Minimal code skeleton (Python):&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;```python&lt;/p&gt;&lt;p&gt;from swarm import Swarm, Agent&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;swarm = Swarm(model="kimi-k2.6") # or claude-4, gpt-5&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;researcher = Agent(role="Researcher", tools=[web_search, file_read])&lt;/p&gt;&lt;p&gt;coder = Agent(role="Coder", tools=[python_exec, github])&lt;/p&gt;&lt;p&gt;critic = Agent(role="Critic", tools=[code_review])&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;result = swarm.run(&lt;/p&gt;&lt;p&gt;&amp;nbsp; goal="Build a competitor tracker for Instagram brands",&lt;/p&gt;&lt;p&gt;&amp;nbsp; strategy="parallel", # decomposes automatically&lt;/p&gt;&lt;p&gt;&amp;nbsp; agents=[researcher, coder, critic],&lt;/p&gt;&lt;p&gt;&amp;nbsp; max_parallel=20&lt;/p&gt;&lt;p&gt;)&lt;/p&gt;&lt;p&gt;```&lt;/p&gt;&lt;p&gt;Frameworks to look at right now:&lt;/p&gt;&lt;p&gt;- OpenAI Swarm (lightweight, educational)&lt;/p&gt;&lt;p&gt;- Desplega-ai/agent-swarm - full TypeScript stack with artifact SDK&lt;/p&gt;&lt;p&gt;- Ruflo / Claude-Flow - DDD, enterprise-grade with 6 topologies&lt;/p&gt;&lt;p&gt;- Kimi Agent Swarm - if you need 100+ parallel workers&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;4. When to use a swarm (and when not to)&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Use it for: Research reports with 20 sources, competitive analysis across 50 brands, pentesting, product launch monitoring, anything that needs parallel web/tool calls.&lt;/p&gt;&lt;p&gt;Don't use it for: Simple Q&amp;amp;A, single-file coding task, latency-sensitive chat. The orchestration overhead will kill you.&lt;/p&gt;&lt;p&gt;Biggest pitfalls I see people hit:&lt;/p&gt;&lt;p&gt;1. No bounded context - agents start doing each other's jobs&lt;/p&gt;&lt;p&gt;2. No shared schema for outputs - merging becomes hell&lt;/p&gt;&lt;p&gt;3. No budget cap on tool calls - 100 agents x 15 tools = $$$&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;1. Scenario: Autonomous Financial Investigation Swarm&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Suppose the user asks:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“Investigate why Counterparty ABC breached its exposure limit yesterday and determine the root cause.”&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Instead of one giant agent doing everything sequentially, a Supervisor Agent dynamically creates specialized workers.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                         USER
                           │
                           ▼
                  ┌─────────────────┐
                  │ Supervisor Agent │
                  └────────┬────────┘
                           │
                    Analyze task
                           │
          ┌────────────────┼─────────────────┐
          │                │                 │
          ▼                ▼                 ▼
     Spawn Agent       Spawn Agent       Spawn Agent
     Exposure          Trade              Policy
     Worker            Worker             Worker
          │                │                 │
          ▼                ▼                 ▼
      BigQuery          Trade API        RAG/Search
          │                │                 │
          ▼                ▼                 ▼
       Result 1          Result 2          Result 3
          │                │                 │
          └────────────────┼─────────────────┘
                           ▼
                    Supervisor Agent
                           │
                           ▼
                    Synthesis Agent
                           │
                           ▼
                     Final Answer
                           │
                           ▼
                    DESTROY WORKERS&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The important idea is:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Spawn → Execute → Return Result → Terminate&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;2. Think of it like an Agent Process Pool&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Traditional computing:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Main Process
     │
     ├── Thread 1 → execute → terminate
     ├── Thread 2 → execute → terminate
     ├── Thread 3 → execute → terminate
     └── Thread 4 → execute → terminate&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agentic equivalent:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Supervisor
     │
     ├── Agent A → task → result → destroy
     ├── Agent B → task → result → destroy
     ├── Agent C → task → result → destroy
     └── Agent D → task → result → destroy&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;But architecturally I would call them:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Ephemeral task agents / short-lived worker agents&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;rather than threads.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;3. Dynamic Swarm&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;The supervisor doesn't need to know the number of agents beforehand.&lt;/p&gt;&lt;p&gt;For example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Task
 │
 ▼
Supervisor
 │
 ├── "Need exposure analysis"
 │       ↓
 │    Spawn ExposureAgent
 │
 ├── "Need trade investigation"
 │       ↓
 │    Spawn TradeAgent
 │
 ├── "Need regulatory interpretation"
 │       ↓
 │    Spawn PolicyAgent
 │
 └── "Need anomaly detection"
         ↓
      Spawn AnomalyAgent&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If the task only needs two agents:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Supervisor
 │
 ├── ExposureAgent
 └── PolicyAgent&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If it needs twenty:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Supervisor
 │
 ├── Worker 1
 ├── Worker 2
 ├── ...
 └── Worker 20&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That is the key difference from a fixed multi-agent architecture.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;4. Real example&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Suppose we have 10,000 transactions.&lt;/p&gt;&lt;p&gt;The user asks:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“Find suspicious transactions associated with ABC.”&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Supervisor decides:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                     Supervisor
                          │
             ┌────────────┼─────────────┐
             │            │             │
             ▼            ▼             ▼
         Worker 1      Worker 2      Worker 3
         1–1,000       1,001–2,000   2,001–3,000

             ...
             
         Worker 10
         9,001–10,000&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;All workers operate concurrently.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;10,000 transactions
        │
        ▼
     Partition
        │
 ┌──────┼──────┐
 ▼      ▼      ▼
W1     W2     W3
...
W10
 │      │      │
 └──────┼──────┘
        ▼
    Aggregator
        │
        ▼
   Final result&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Once a worker returns:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Worker
  ↓
Result
  ↓
Object storage / queue
  ↓
Worker terminated&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The agent doesn't need to remain alive.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;5. Architecture&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;A production implementation could look like:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                         USER
                           │
                           ▼
                    API Gateway
                           │
                           ▼
                  Supervisor Agent
                           │
                           ▼
                  Task Decomposition
                           │
                           ▼
                  ┌─────────────────┐
                  │ Task Queue      │
                  │ SQS / Pub/Sub   │
                  │ Service Bus     │
                  └────────┬────────┘
                           │
             ┌─────────────┼─────────────┐
             ▼             ▼             ▼
        Agent Worker   Agent Worker   Agent Worker
             │             │             │
             ▼             ▼             ▼
           RAG            SQL            API
             │             │             │
             └─────────────┼─────────────┘
                           ▼
                    Result Aggregator
                           │
                           ▼
                    Supervisor Agent
                           │
                           ▼
                     Final Response&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is actually closer to a distributed worker architecture than conventional threading.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;6. Spawn mechanism&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;The Supervisor produces a task specification:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-json"&gt;{
  "task_id": "TASK-123",
  "worker_type": "trade-investigator",
  "input": {
    "counterparty": "ABC",
    "date": "2026-09-15"
  },
  "priority": "high",
  "timeout_seconds": 120,
  "max_iterations": 5
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The orchestrator puts this into a queue.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Supervisor
    │
    ▼
Task specification
    │
    ▼
Queue
    │
    ▼
Worker runtime&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;7. Worker lifecycle&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;I would explicitly design an agent lifecycle:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;              SPAWN
                │
                ▼
            INITIALIZE
                │
                ▼
            AUTHENTICATE
                │
                ▼
          LOAD CONTEXT
                │
                ▼
          EXECUTE TASK
                │
                ▼
           VALIDATE
                │
                ▼
         RETURN RESULT
                │
                ▼
         PERSIST RESULT
                │
                ▼
           TERMINATE&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This gives you deterministic lifecycle management.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;8. Example Python implementation&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;A simplified conceptual implementation:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;import asyncio
from dataclasses import dataclass


@dataclass
class AgentTask:
    task_id: str
    agent_type: str
    payload: dict


async def execute_worker(task: AgentTask):

    print(f"Spawned {task.agent_type}")

    try:

        if task.agent_type == "exposure":
            result = await investigate_exposure(task.payload)

        elif task.agent_type == "trade":
            result = await investigate_trades(task.payload)

        elif task.agent_type == "policy":
            result = await search_policy(task.payload)

        else:
            raise ValueError("Unknown worker")

        return {
            "task_id": task.task_id,
            "status": "completed",
            "result": result
        }

    finally:

        # Release resources
        print(f"Terminating {task.agent_type}")


async def swarm(tasks):

    results = await asyncio.gather(
        *(execute_worker(task) for task in tasks)
    )

    return results&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;tasks = [
    AgentTask(
        "T1",
        "exposure",
        {"counterparty": "ABC"}
    ),

    AgentTask(
        "T2",
        "trade",
        {"counterparty": "ABC"}
    ),

    AgentTask(
        "T3",
        "policy",
        {"question": "counterparty breach"}
    )
]

results = await swarm(tasks)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Conceptually:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;              Supervisor
                   │
                   ▼
               asyncio
                   │
       ┌───────────┼───────────┐
       ▼           ▼           ▼
   Exposure      Trade       Policy
   Worker        Worker       Worker
       │           │           │
       ▼           ▼           ▼
    Result       Result       Result
       │           │           │
       └───────────┼───────────┘
                   ▼
              Aggregator&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For production, replace local asyncio workers with durable distributed workers/managed runtimes.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;9. Don't let every agent create another agent&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;This can become dangerous.&lt;/p&gt;&lt;p&gt;Bad:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent A
 ↓
creates B
 ↓
B creates C
 ↓
C creates D
 ↓
D creates E
 ↓
...&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You get an agent explosion.&lt;/p&gt;&lt;p&gt;Instead impose:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;MAX_AGENTS = 20
MAX_DEPTH = 2
MAX_ITERATIONS = 5
MAX_COST = $2
MAX_RUNTIME = 120 sec&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;if swarm_depth &amp;gt;= MAX_DEPTH:
    raise RuntimeError("Agent spawning limit exceeded")&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;10. Agent budget&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Every ephemeral worker should have a budget.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Worker
 │
 ├── Maximum tokens
 ├── Maximum model calls
 ├── Maximum tool calls
 ├── Maximum execution time
 └── Maximum cost&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-json"&gt;{
  "max_tokens": 5000,
  "max_model_calls": 5,
  "max_tool_calls": 10,
  "timeout": 120,
  "max_cost_usd": 0.50
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is essential for production AgentOps.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;11. Early termination&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Suppose 10 agents are searching for evidence.&lt;/p&gt;&lt;p&gt;Agent 3 finds the answer with high confidence.&lt;/p&gt;&lt;p&gt;Instead of waiting:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;W1 ───────────
W2 ───────────
W3 ── FOUND ✓
W4 ───────────
W5 ───────────
...&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Supervisor can cancel remaining tasks when the stopping condition is satisfied.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;W3
 │
 ▼
Evidence confidence = 0.96
 │
 ▼
STOP CONDITION
 │
 ├── Cancel W1
 ├── Cancel W2
 ├── Cancel W4
 └── Cancel W5...&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This reduces:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Latency
Token consumption
Infrastructure cost&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;12. Swarm with priority&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;You can make workers priority-aware:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;HIGH
 ├── Regulatory Agent
 └── Risk Agent

MEDIUM
 ├── Trade Agent
 └── Market Agent

LOW
 └── Historical Agent&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Queue:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;             Task Queue
                  │
        ┌─────────┼─────────┐
        ▼         ▼         ▼
       P1        P2        P3
        │         │         │
       HIGH     MEDIUM      LOW&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;13. Cloud implementation&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;This pattern maps very naturally to all three clouds.&lt;/p&gt;&lt;h3&gt;AWS&lt;/h3&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Supervisor
    │
    ▼
SQS
    │
    ▼
ECS / Lambda / AgentCore
    │
    ▼
Workers
    │
    ▼
Bedrock&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;AWS's Bedrock AgentCore is particularly relevant for managed agent runtime, memory, tools and production agent workloads.&lt;/p&gt;&lt;h3&gt;Azure&lt;/h3&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Supervisor
    │
    ▼
Service Bus
    │
    ▼
Container Apps / Functions
    │
    ▼
Foundry Agent Service&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Microsoft Foundry Agent Service provides managed agent deployment/execution capabilities.&lt;/p&gt;&lt;h3&gt;GCP&lt;/h3&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Supervisor
    │
    ▼
Pub/Sub
    │
    ▼
Cloud Run / GKE
    │
    ▼
Gemini Enterprise Agent Platform&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ADK agents can be deployed using Google's managed agent platform or container environments such as Cloud Run/GKE.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;14. A better architecture: Agent Swarm Scheduler&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;For serious production workloads, don't let the Supervisor directly instantiate infrastructure.&lt;/p&gt;&lt;p&gt;Introduce:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                     Supervisor
                          │
                          ▼
                  Swarm Scheduler
                          │
        ┌─────────────────┼──────────────────┐
        │                 │                  │
        ▼                 ▼                  ▼
   Task Manager       Resource Manager    Policy Engine
        │                 │                  │
        ▼                 ▼                  ▼
      Queue          Concurrency         Security
                         limits            rules
        │
        ▼
    Worker Pool&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The Scheduler determines:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;How many workers?
Which worker type?
What priority?
What resources?
What timeout?
What permissions?
When to terminate?&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;15. Dynamic worker pool&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;This is the closest analogy to OS thread/process pools.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                 Worker Pool
                     │
        ┌────────────┼────────────┐
        ▼            ▼            ▼
     Worker 1     Worker 2     Worker 3
        │            │            │
      BUSY         BUSY         IDLE

                 New Tasks
                     │
                     ▼
                 Scheduler
                     │
                     ▼
                 Worker 3&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;When demand increases:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;2 workers
   ↓
5 workers
   ↓
20 workers&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;When demand decreases:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;20 workers
   ↓
8 workers
   ↓
2 workers&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is essentially autoscaling a pool of ephemeral agent workers.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;16. The critical difference from threads&lt;/span&gt;&lt;/h1&gt;&lt;blockquote&gt;&lt;p&gt;I use the process/thread model as a conceptual analogy. Architecturally, these are ephemeral distributed workers. Each worker has isolated state, identity, resource limits and a lifecycle, and the scheduler can dynamically create, reuse or terminate workers based on task demand.&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;17. When should you use this pattern?&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Excellent use cases:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;✓ Large document analysis
✓ Parallel research
✓ Fraud investigation
✓ Regulatory analysis
✓ Codebase analysis
✓ Multi-source research
✓ Data quality investigation
✓ Large-scale classification
✓ Incident investigation
✓ Complex financial analysis&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Less appropriate:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;✗ Simple chatbot
✗ Simple RAG question
✗ Single database lookup
✗ Simple workflow&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Don't use a swarm where a single deterministic workflow is sufficient.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;18. The most advanced version&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;You can combine:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Dynamic spawning
+
Parallel execution
+
Shared event bus
+
Short-term memory
+
Long-term memory
+
Agent registry
+
Tool registry
+
Budget control
+
Policy enforcement
+
Auto termination&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Architecture:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                         USER
                           │
                           ▼
                     SUPERVISOR
                           │
                           ▼
                   SWARM SCHEDULER
                           │
                ┌──────────┼──────────┐
                ▼          ▼          ▼
              Queue      Registry   Policy
                │
       ┌────────┼────────┬────────┐
       ▼        ▼        ▼        ▼
      W1       W2       W3       W4
       │        │        │        │
       ▼        ▼        ▼        ▼
      RAG      SQL      API      MCP
       │        │        │        │
       └────────┼────────┴────────┘
                ▼
           Event Bus
                │
                ▼
           Aggregator
                │
                ▼
           Supervisor
                │
                ▼
           FINAL RESULT
                │
                ▼
        TERMINATE WORKERS&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The key production principle is:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“Agents are disposable compute units; knowledge, state, audit records and results should live outside the agent.”&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;That separation is extremely important.&lt;/p&gt;&lt;p&gt;For example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent dies ❌
     │
     ▼
Result lost
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;is bad architecture.&lt;/p&gt;&lt;p&gt;Instead:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 │
 ▼
Result
 │
 ▼
Durable Store
 │
 ▼
Agent terminates
 │
 ▼
Supervisor retrieves result&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This gives you fault tolerance, replayability and horizontal scalability.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“I would implement the swarm as an ephemeral distributed-worker architecture rather than treating agents literally as OS threads. A supervisor decomposes the task into independent subtasks and submits them to a scheduler or durable queue. The scheduler dynamically creates or assigns short-lived worker agents with an isolated identity, context, tool permissions, token budget, iteration limit and timeout. Workers execute concurrently, persist their results to durable storage or an event bus, and terminate immediately after completion. The supervisor aggregates the results and can cancel remaining workers once a sufficient-confidence stopping condition is reached.&lt;/p&gt;&lt;p&gt;For production I would enforce maximum swarm depth, concurrency, execution time, model calls and cost to prevent runaway agent spawning. AWS could use SQS + AgentCore/ECS/Lambda + Bedrock, Azure Service Bus + Foundry/Container Apps/Functions, and GCP Pub/Sub + Cloud Run/GKE + Gemini Enterprise Agent Platform. The important design principle is that agent compute is ephemeral, while state, results, audit trails and knowledge are durable.”&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;This pattern is particularly powerful for the kind of enterprise AI architecture you're preparing for because it combines Agentic AI with familiar distributed-systems concepts: worker pools, queues, concurrency control, backpressure, cancellation, circuit breakers, idempotency and autoscaling.&lt;/p&gt;&lt;p&gt;&lt;b&gt;You can start from my demo Agent Swarm MVP application &lt;a href="https://github.com/dhirajpatra/Financial-Compliance-Agent-Swarm" target="_blank"&gt;here&lt;/a&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyNVsTuMWEvi7ueZwlT3_3yE8nesxNUypW9CFARfktPGGov70_HoYKYFW3ZeKK1zD_bQWC9CMGBB3q2ALVwNamiRQ0SIhzP2hut9S_EiGchaMrjJDXha4EFbz6IzXPXopaFJsLAtkpmbqb2sTmsC8ul7Vc-a5Zy48Ugxo-1gMG48fWpgj7qoXTVdXbKnUD/s72-w473-h315-c/image.jpg" width="72"/><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>Text2Cypher for Neo4j with RAG</title><link>http://dhirajpatra.blogspot.com/2026/09/text2cypher-for-neo4j-with-rag.html</link><category>artificial intelligence</category><category>generativeai</category><category>graph</category><category>graphdb</category><category>rag</category><pubDate>Tue, 15 Sep 2026 06:56:09 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-6102742511218997219</guid><description>&lt;p&gt;&lt;span style="background-color: white; color: rgba(0, 0, 0, 0.9); font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; white-space: pre-wrap;"&gt;To convert user questions from a chatbot into Cypher queries to run on Neo4j, the standard approach is using Text2Cypher with GraphRAG. This combines the natural language understanding of Large Language Models (LLMs) with the structured relationship data in your graph database.&lt;/span&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&#129504; How the Pipeline Works&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;1.&amp;nbsp;User Question &amp;amp; RAG Context: Your chatbot receives a question. If you have a RAG retrieval response (e.g., relevant documents or entities), this context is passed along with the question to help the LLM understand specific terminology or domain knowledge.&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;2.&amp;nbsp;Schema Injection: The system automatically fetches your Neo4j graph schema (node labels, relationship types, property keys). This schema is included in the prompt so the LLM knows exactly what structure it is querying.&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;3.&amp;nbsp;Text-to-Cypher Generation: An LLM generates a Cypher query based on the user's question, the provided context, and the database schema.&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;4.&amp;nbsp;Validation &amp;amp; Security: Before execution, the generated Cypher is validated for syntax errors. Crucially, modern implementations use an `EXPLAIN` statement first to detect any write or destructive operations, preventing prompt injection attacks.&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;5.&amp;nbsp;Execution &amp;amp; Answering: The validated query is executed against Neo4j. The raw results are then fed back to the LLM to generate a natural language answer for the user.&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&#128736;️ Recommended Implementation: Neo4j GraphRAG Python Package&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;The most direct way to implement this is using the `neo4j-graphrag` Python library, which provides a `Text2CypherRetriever` specifically for this purpose.&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;1. Installation**&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;```bash&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;pip install neo4j "neo4j-graphrag[openai]"&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;```&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;2. Setup the Retriever**&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;You need to connect to your Neo4j instance and initialize the LLM. You can also provide few-shot examples (question-cypher pairs) to improve accuracy.&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;```python&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;from neo4j import GraphDatabase&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;from neo4j_graphrag.retrievers import Text2CypherRetriever&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;from neo4j_graphrag.llm import OpenAILLM&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;# 1. Connect to Neo4j&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password"))&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;# 2. Initialize the LLM (e.g., GPT-4o)&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;llm = OpenAILLM(model_name="gpt-4o", model_params={"temperature": 0})&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;# 3. Define Examples (optional but highly recommended for better accuracy)&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;examples = [&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;"User: Who are the actors in 'Inception'? Cypher: MATCH (m:Movie {title: 'Inception'})&amp;lt;-[:ACTED_IN]-(a:Person) RETURN a.name"&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;]&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;# 4. Create the Retriever&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;retriever = Text2CypherRetriever(&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;driver=driver,&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;llm=llm,&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;neo4j_schema=None,&amp;nbsp;# None will auto-fetch the schema&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;examples=examples&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;)&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;# 5. Search (This generates &amp;amp; executes the Cypher)&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;query_text = "Which movies did Tom Hanks act in?"&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;results = retriever.search(query_text=query_text)&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;print(results)&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;```&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&#128640; Advanced: Combining RAG Context with Text2Cypher&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;If your RAG response contains specific entities or context that needs to inform the Cypher generation, you can use the **`ToolsRetriever`** in the Neo4j GraphRAG library. This allows the LLM to intelligently choose between a `VectorRetriever` (for unstructured text) and a `Text2CypherRetriever` (for structured queries) based on the user's intent.&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;You can also use the **LangChain `GraphCypherQAChain`** which is a popular alternative. It uses two LLM instances: one (`cypher_llm`) to generate the Cypher query and another (`qa_llm`) to generate the final answer from the results.&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&#128161; Key Considerations for Chatbot Integration&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br style="box-sizing: inherit;" /&gt;&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;- Schema Trimming: If your graph has many labels, passing the entire schema can exceed token limits. You should only inject the relevant portion of the schema into the prompt.&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;- Validation: Always enable Cypher validation (`validate_cypher=True`) to catch syntax errors and prevent malicious queries.&lt;/p&gt;&lt;p style="background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); border: 0px rgba(0, 0, 0, 0.9); box-sizing: inherit; color: rgba(0, 0, 0, 0.9); counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; cursor: text; font-family: -apple-system, system-ui, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Fira Sans&amp;quot;, Ubuntu, Oxygen, &amp;quot;Oxygen Sans&amp;quot;, Cantarell, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;, &amp;quot;Lucida Grande&amp;quot;, Helvetica, Arial, sans-serif; font-size: 20px; line-height: 1.5; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"&gt;- RAG for Schema: You can even use RAG to retrieve the most relevant part of your schema (e.g., "Movie schema") based on the user's question before generating the query.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>Arbitrage Trading Decision Model</title><link>http://dhirajpatra.blogspot.com/2026/09/arbitrage-trading-decision-model.html</link><category>artificial intelligence</category><category>eda</category><category>finaicial engineering</category><category>finance</category><category>kaggle</category><category>machine learning</category><pubDate>Sat, 12 Sep 2026 04:31:40 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-7940672768543844429</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif9kyDo-_RNla1JdxBZZgIfX-_DWyvx0IaZBuOWn2QA8ECbI6W9Z7rf_zhy61Vo2AI2HyQAb0IpxBgUz5-AOY6QyPUUYe_TIGyUu2Dg2ht7zErN27jlUXyENgUF0uxq8LruklJB6P0f3A1KE-Ecu92IcDfqs6t6hFubAsBFgeZASNgcPBUG8R0IP_9kq0J/s1047/Screenshot%20from%202026-09-12%2016-55-17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="467" data-original-width="1047" height="259" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif9kyDo-_RNla1JdxBZZgIfX-_DWyvx0IaZBuOWn2QA8ECbI6W9Z7rf_zhy61Vo2AI2HyQAb0IpxBgUz5-AOY6QyPUUYe_TIGyUu2Dg2ht7zErN27jlUXyENgUF0uxq8LruklJB6P0f3A1KE-Ecu92IcDfqs6t6hFubAsBFgeZASNgcPBUG8R0IP_9kq0J/w579-h259/Screenshot%20from%202026-09-12%2016-55-17.png" width="579" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Directly taken from my Kaggle notebook&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The formula can be adapted into an arbitrage-trading decision model like below, but by itself it is not an arbitrage formula.&lt;/p&gt;&lt;p&gt;&lt;span class="katex"&gt;&lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;/msub&gt;&lt;mi&gt;m&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mi&gt;max&lt;/mi&gt;&lt;mo&gt;⁡&lt;/mo&gt;&lt;/msub&gt;&lt;mn&gt;7&lt;/mn&gt;&lt;/mfrac&gt;&lt;munderover&gt;&lt;mo&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mn&gt;7&lt;/mn&gt;&lt;/munderover&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;R(t)=R_{\max}m(t) =\frac{R_{\max}}{7}\sum_{i=1}^{7}s_i(t)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;where the 7 signals &lt;span class="katex"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;s_i(t)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt; are normalized signals and &lt;span class="katex"&gt;&lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;R(t)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt; is a dynamically calculated risk/reward/allocation value.&lt;/p&gt;&lt;p&gt;For arbitrage, I would use the same concept like this:&lt;/p&gt;&lt;p&gt;&lt;span class="katex"&gt;&lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;7&lt;/mn&gt;&lt;/mfrac&gt;&lt;munderover&gt;&lt;mo&gt;∑&lt;/mo&gt;&lt;mrow&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;/mrow&gt;&lt;mn&gt;7&lt;/mn&gt;&lt;/munderover&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;/msub&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;A(t)=\frac{1}{7}\sum_{i=1}^{7}s_i(t)&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;where the signals could be:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Price spread&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Bid/ask spread&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Trading fees&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Slippage&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Market liquidity&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Transfer/settlement latency&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Historical spread reliability&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Then calculate the actual arbitrage profit:&lt;/p&gt;&lt;p&gt;&lt;span class="katex"&gt;&lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mtext&gt;arb&lt;/mtext&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi&gt;Q&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mtext&gt;sell&lt;/mtext&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mtext&gt;buy&lt;/mtext&gt;&lt;/msub&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mtext&gt;buy&lt;/mtext&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mtext&gt;sell&lt;/mtext&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mtext&gt;buy&lt;/mtext&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;S&lt;/mi&gt;&lt;mtext&gt;sell&lt;/mtext&gt;&lt;/msub&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;C&lt;/mi&gt;&lt;mtext&gt;transfer&lt;/mtext&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;P_{\text{arb}}= Q(P_{\text{sell}}-P_{\text{buy}}) -F_{\text{buy}}-F_{\text{sell}} -S_{\text{buy}}-S_{\text{sell}} -C_{\text{transfer}}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;and the net arbitrage percentage:&lt;/p&gt;&lt;p&gt;&lt;span class="katex"&gt;&lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mtext&gt;arb&lt;/mtext&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mtext&gt;arb&lt;/mtext&gt;&lt;/msub&gt;&lt;mrow&gt;&lt;mi&gt;Q&lt;/mi&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mtext&gt;buy&lt;/mtext&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mn&gt;100&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;ROI_{\text{arb}}= \frac{P_{\text{arb}}}{Q P_{\text{buy}}}\times100&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;For example:&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Parameter&lt;/th&gt;&lt;th align="right"&gt;Exchange A&lt;/th&gt;&lt;th align="right"&gt;Exchange B&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Buy price&lt;/td&gt;&lt;td align="right"&gt;$100,000&lt;/td&gt;&lt;td align="right"&gt;—&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sell price&lt;/td&gt;&lt;td align="right"&gt;—&lt;/td&gt;&lt;td align="right"&gt;$100,800&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Quantity&lt;/td&gt;&lt;td align="right"&gt;0.10 BTC&lt;/td&gt;&lt;td align="right"&gt;0.10 BTC&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Gross spread&lt;/td&gt;&lt;td align="right"&gt;&lt;/td&gt;&lt;td align="right"&gt;$80&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Gross profit:&lt;/p&gt;&lt;p&gt;&lt;span class="katex"&gt;&lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mn&gt;0.10&lt;/mn&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mn&gt;100800&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;100000&lt;/mn&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mi mathvariant="normal"&gt;$&lt;/mi&gt;&lt;mn&gt;80&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;0.10(100800-100000)=\$80&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Suppose total fees + slippage + other costs = $35:&lt;/p&gt;&lt;p&gt;&lt;span class="katex"&gt;&lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mtext&gt;net&lt;/mtext&gt;&lt;/msub&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;80&lt;/mn&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mn&gt;35&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;menclose notation="box"&gt;&lt;mstyle displaystyle="false" scriptlevel="0"&gt;&lt;mstyle displaystyle="false" scriptlevel="0"&gt;&lt;mstyle displaystyle="true" scriptlevel="0"&gt;&lt;mrow&gt;&lt;mi mathvariant="normal"&gt;$&lt;/mi&gt;&lt;mn&gt;45&lt;/mn&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mstyle&gt;&lt;/mstyle&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;P_{\text{net}}=80-35=\boxed{\$45}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;So:&lt;/p&gt;&lt;p&gt;&lt;span class="katex"&gt;&lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;R&lt;/mi&gt;&lt;mi&gt;O&lt;/mi&gt;&lt;mi&gt;I&lt;/mi&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;mn&gt;45&lt;/mn&gt;&lt;mn&gt;10000&lt;/mn&gt;&lt;/mfrac&gt;&lt;mo&gt;×&lt;/mo&gt;&lt;mn&gt;100&lt;/mn&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;menclose notation="box"&gt;&lt;mstyle displaystyle="false" scriptlevel="0"&gt;&lt;mstyle displaystyle="false" scriptlevel="0"&gt;&lt;mstyle displaystyle="true" scriptlevel="0"&gt;&lt;mrow&gt;&lt;mn&gt;0.45&lt;/mn&gt;&lt;mi mathvariant="normal"&gt;%&lt;/mi&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mstyle&gt;&lt;/mstyle&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;ROI=\frac{45}{10000}\times100=\boxed{0.45\%}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Then your 7-signal formula can decide whether to execute:&lt;/p&gt;&lt;p&gt;&lt;span class="katex"&gt;&lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;f&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;p&lt;/mi&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;g&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;q&lt;/mi&gt;&lt;mi&gt;u&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;n&lt;/mi&gt;&lt;mi&gt;c&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;r&lt;/mi&gt;&lt;mi&gt;e&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;b&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;mo&gt;+&lt;/mo&gt;&lt;msub&gt;&lt;mi&gt;s&lt;/mi&gt;&lt;mrow&gt;&lt;mi&gt;v&lt;/mi&gt;&lt;mi&gt;o&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mi&gt;a&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;l&lt;/mi&gt;&lt;mi&gt;i&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;/msub&gt;&lt;/mrow&gt;&lt;mn&gt;7&lt;/mn&gt;&lt;/mfrac&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;A(t)= \frac{ s_{spread}+s_{fee}+s_{slippage}+s_{liquidity}+s_{latency}+s_{reliability}+s_{volatility} }{7}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;For example, if the normalized signals are:&lt;/p&gt;&lt;p&gt;&lt;span class="katex"&gt;&lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mo stretchy="false"&gt;[&lt;/mo&gt;&lt;mn&gt;0.9&lt;/mn&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mn&gt;0.8&lt;/mn&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mn&gt;0.7&lt;/mn&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mn&gt;0.85&lt;/mn&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mn&gt;0.6&lt;/mn&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mn&gt;0.9&lt;/mn&gt;&lt;mo separator="true"&gt;,&lt;/mo&gt;&lt;mn&gt;0.75&lt;/mn&gt;&lt;mo stretchy="false"&gt;]&lt;/mo&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;[0.9,0.8,0.7,0.85,0.6,0.9,0.75]&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;then:&lt;/p&gt;&lt;p&gt;&lt;span class="katex"&gt;&lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;mn&gt;0.786&lt;/mn&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;A(t)=0.786&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;You could define:&lt;/p&gt;&lt;p&gt;&lt;span class="katex"&gt;&lt;math display="block" xmlns="http://www.w3.org/1998/Math/MathML"&gt;&lt;semantics&gt;&lt;mrow&gt;&lt;menclose notation="box"&gt;&lt;mstyle displaystyle="false" scriptlevel="0"&gt;&lt;mstyle displaystyle="false" scriptlevel="0"&gt;&lt;mstyle displaystyle="true" scriptlevel="0"&gt;&lt;mrow&gt;&lt;mtext&gt;Execute if&amp;nbsp;&lt;/mtext&gt;&lt;msub&gt;&lt;mi&gt;P&lt;/mi&gt;&lt;mtext&gt;net&lt;/mtext&gt;&lt;/msub&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;0&lt;/mn&gt;&lt;mtext&gt;&amp;nbsp;AND&amp;nbsp;&lt;/mtext&gt;&lt;mi&gt;A&lt;/mi&gt;&lt;mo stretchy="false"&gt;(&lt;/mo&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;mo stretchy="false"&gt;)&lt;/mo&gt;&lt;mo&gt;&amp;gt;&lt;/mo&gt;&lt;mn&gt;0.75&lt;/mn&gt;&lt;/mrow&gt;&lt;/mstyle&gt;&lt;/mstyle&gt;&lt;/mstyle&gt;&lt;/menclose&gt;&lt;/mrow&gt;&lt;annotation encoding="application/x-tex"&gt;\boxed{\text{Execute if } P_{\text{net}}&amp;gt;0 \text{ AND } A(t)&amp;gt;0.75}&lt;/annotation&gt;&lt;/semantics&gt;&lt;/math&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;This becomes much more interesting when you're thinking about an actual AI/ML arbitrage system: the 7-signal surface can become a dynamic execution score, while the deterministic pricing equation guarantees that you don't execute trades where fees, slippage and latency eliminate the arbitrage.&lt;/p&gt;&lt;p&gt;You can find the full Kaggle notebook &lt;a href="https://www.kaggle.com/code/dhirajpatra/crypto-cross-exchange-arbitrage-r" target="_blank"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEif9kyDo-_RNla1JdxBZZgIfX-_DWyvx0IaZBuOWn2QA8ECbI6W9Z7rf_zhy61Vo2AI2HyQAb0IpxBgUz5-AOY6QyPUUYe_TIGyUu2Dg2ht7zErN27jlUXyENgUF0uxq8LruklJB6P0f3A1KE-Ecu92IcDfqs6t6hFubAsBFgeZASNgcPBUG8R0IP_9kq0J/s72-w579-h259-c/Screenshot%20from%202026-09-12%2016-55-17.png" width="72"/><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>Step-by-step Master Guide for Building Features with AI Coding Agents</title><link>http://dhirajpatra.blogspot.com/2026/09/step-by-step-master-guide-for-building.html</link><category>agent</category><category>ai</category><category>coding</category><pubDate>Fri, 11 Sep 2026 09:37:51 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-6481206946304187590</guid><description>&lt;div _ngcontent-ng-c2292009011="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel md-content enable-luminous-fast-follows enable-updated-hr-color stronger tutor-markdown-rendering" dir="ltr" id="model-response-message-contentr_b97fda2ded6265a5" inline-copy-host="" style="--animation-duration: 400ms; --fade-animation-function: ease-out; animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Here is your step-by-step master guide for building features with AI coding agents before you start a coding project or feature using AI assistance (like GitHub Copilot, Claude Code, or AWS Q Developer).&lt;/div&gt;&lt;br /&gt;&lt;h3 data-path-to-node="2" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Phase 1: Structuring the Repository for Maximum AI Context&lt;/h3&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Before writing a single line of code, the AI agent needs a clean environment to "understand" your system architecture.&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="4" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="4,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;1. Establish an AI Rules File (&lt;code data-index-in-node="31" data-path-to-node="4,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; font-weight: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;.cursorrules&lt;/code&gt; or &lt;code data-index-in-node="47" data-path-to-node="4,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; font-weight: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;CLAUDE.md&lt;/code&gt;)&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="4,0,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Place a context rule file in the root of the repository.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Define architectural constraints, coding standards, language versions, and testing requirements.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="4,0,1,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Example:&lt;/i&gt; Specify "Python 3.12, strict type hints, Pydantic v2 for schema validation, Pytest for unit tests, no raw SQL (use SQLAlchemy ORM)."&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="4,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;2. Implement a Modular, Clean-Architecture Folder Structure&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="4,1,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Keep directory structures predictable so the AI agent doesn't hallucinate paths or mix concerns:&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="4,1,1,0,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code data-index-in-node="0" data-path-to-node="4,1,1,0,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;/src/domain/&lt;/code&gt; (Data models, schemas, entities)&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code data-index-in-node="0" data-path-to-node="4,1,1,0,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;/src/services/&lt;/code&gt; (Business logic, orchestration)&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code data-index-in-node="0" data-path-to-node="4,1,1,0,1,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;/src/adapters/&lt;/code&gt; (Database, API clients, S3 connectors)&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code data-index-in-node="0" data-path-to-node="4,1,1,0,1,3,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;/tests/&lt;/code&gt; (Unit and integration test suites)&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="4,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;3. Provide In-Repo Sample Patterns (Few-Shot Prompting via Code)&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="4,2,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;AI agents copy existing styles. If you have one well-written adapter or service with clean error handling and docstrings, the agent will mirror that exact quality for new features.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-path-to-node="6" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Phase 2: Prompting Strategies That Produce Superior Code&lt;/h3&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;When working with AI coding tools during an interview or production sprint, vague prompts yield poor code. Use these proven prompting patterns:&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="8" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="8,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Strategy 1: Spec-First / Test-Driven Prompting (TDD)&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="8,0,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="8,0,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Prompt Pattern:&lt;/i&gt; Do not ask the agent to write the feature code first. Prompt it to write the &lt;b data-index-in-node="93" data-path-to-node="8,0,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;type definitions&lt;/b&gt; and &lt;b data-index-in-node="114" data-path-to-node="8,0,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;unit tests&lt;/b&gt; based on your functional spec.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="8,0,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Why it works:&lt;/i&gt; Once the AI generated tests pass or fail against defined types, it has a rigid boundary to implement the business logic correctly.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="8,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Strategy 2: The "Chain-of-Thought with Architecture Constraints" Strategy&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="8,1,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="8,1,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Prompt Pattern:&lt;/i&gt; "Explain your technical approach in 3 bullet points before generating code. Ensure you address concurrency limits and input validation using Pydantic."&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="8,1,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Why it works:&lt;/i&gt; Forces the agent to reason about edge cases before committing to a code syntax tree.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="8,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Strategy 3: Context-Slicing via File Tagging&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="8,2,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Avoid attaching the entire codebase to a prompt context window. Tag only the specific interface, database model, and relevant test file (e.g., &lt;code data-index-in-node="143" data-path-to-node="8,2,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;@models.py @service.py&lt;/code&gt;).&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-path-to-node="10" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Phase 3: Step-by-Step Scenario Walkthrough eg.&lt;/h3&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="11" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Scenario:&lt;/b&gt; &lt;i data-index-in-node="10" data-path-to-node="11" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;When you start to use an AI Coding Agent to build a resilient, rate-limited telemetry ingestion module that writes valid metrics to an S3-compatible store and handles bad payloads via a Dead Letter Queue (DLQ).&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;h4 data-path-to-node="12" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="12" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Step 1: Define the Blueprint (Human Strategy &amp;amp; Spec)&lt;/b&gt;&lt;/h4&gt;&lt;ul data-path-to-node="13" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="14" data-path-to-node="13,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;First, create the input contract using Pydantic, define an abstract interface for storage, write unit tests for valid and malformed payloads, and then prompt the AI agent to implement the service logic.&lt;/i&gt;&lt;/div&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4 data-path-to-node="14" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="14" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Step 2: Prompt for Type Schemas &amp;amp; Contracts&lt;/b&gt;&lt;/h4&gt;&lt;ul data-path-to-node="15" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="15,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Prompt to AI:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote data-path-to-node="15,0,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 17px; margin-left: 7.5px; margin-right: 40px; margin-top: 0px !important; margin: 0px 40px 17px 7.5px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 32.5px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="15,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;"Generate a Pydantic v2 model named &lt;code data-index-in-node="36" data-path-to-node="15,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-style: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;TelemetryMetric&lt;/code&gt; containing &lt;code data-index-in-node="63" data-path-to-node="15,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-style: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;device_id&lt;/code&gt; (str), &lt;code data-index-in-node="80" data-path-to-node="15,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-style: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;timestamp&lt;/code&gt; (float), &lt;code data-index-in-node="99" data-path-to-node="15,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-style: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;metric_name&lt;/code&gt; (str), and &lt;code data-index-in-node="122" data-path-to-node="15,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-style: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;value&lt;/code&gt; (float). Add validation ensuring &lt;code data-index-in-node="161" data-path-to-node="15,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-style: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;value&lt;/code&gt; is non-negative and &lt;code data-index-in-node="187" data-path-to-node="15,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-style: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;device_id&lt;/code&gt; matches regex &lt;code data-index-in-node="211" data-path-to-node="15,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-style: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;^[a-zA-Z0-9-]+$&lt;/code&gt;."&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="15,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Human Review:&lt;/b&gt; Verify the generated model. Ensure types match expectations.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4 data-path-to-node="16" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="16" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Step 3: Prompt for Test-Driven Development (TDD)&lt;/b&gt;&lt;/h4&gt;&lt;ul data-path-to-node="17" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="17,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Prompt to AI:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote data-path-to-node="17,0,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 17px; margin-left: 7.5px; margin-right: 40px; margin-top: 0px !important; margin: 0px 40px 17px 7.5px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 32.5px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="17,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;"Write a Pytest suite for a class &lt;code data-index-in-node="34" data-path-to-node="17,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-style: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;TelemetryIngestor&lt;/code&gt;. Write test cases for: 1) Valid payload processing, 2) Malformed JSON/schema validation failure sending payload to DLQ, and 3) Duplicate timestamp deduplication."&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="17,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Human Review:&lt;/b&gt; Check if the unit tests cover edge cases (e.g., boundary values, network exceptions).&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4 data-path-to-node="18" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="18" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Step 4: Implement Service Logic via Iterative AI Prompting&lt;/b&gt;&lt;/h4&gt;&lt;ul data-path-to-node="19" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="19,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Prompt to AI:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote data-path-to-node="19,0,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 17px; margin-left: 7.5px; margin-right: 40px; margin-top: 0px !important; margin: 0px 40px 17px 7.5px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 32.5px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="19,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;"Implement &lt;code data-index-in-node="11" data-path-to-node="19,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-style: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;TelemetryIngestor&lt;/code&gt; using the &lt;code data-index-in-node="39" data-path-to-node="19,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-style: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;TelemetryMetric&lt;/code&gt; schema. Implement an in-memory batching mechanism that triggers a flush every 5 items or 10 seconds. Use Python structured logging. Refer to test constraints."&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="19,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Execution:&lt;/b&gt; Run the tests using the terminal tool. If tests fail, feed the stack trace back to the AI agent: &lt;i data-index-in-node="108" data-path-to-node="19,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;"Tests failed with error X. Fix the bug in &lt;code data-index-in-node="151" data-path-to-node="19,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-style: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;TelemetryIngestor.flush()&lt;/code&gt;."&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4 data-path-to-node="20" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="20" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Step 5: Refactor for Security, Resilience, and AWS Best Practices&lt;/b&gt;&lt;/h4&gt;&lt;ul data-path-to-node="21" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="21,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Prompt to AI:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote data-path-to-node="21,0,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 17px; margin-left: 7.5px; margin-right: 40px; margin-top: 0px !important; margin: 0px 40px 17px 7.5px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 32.5px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="21,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;"Refactor &lt;code data-index-in-node="10" data-path-to-node="21,0,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-style: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;TelemetryIngestor&lt;/code&gt; to handle thread-safe batch flushing and ensure no sensitive API tokens are logged in plain text."&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-path-to-node="23" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Phase 4: Where Human Judgment Still Matters&amp;nbsp;&lt;/h3&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;AI agents excel at syntax generation, boilerplate, unit tests, and local refactoring. However, as a &lt;b data-index-in-node="100" data-path-to-node="24" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;programmer&lt;/b&gt;, you must demonstrate where &lt;b data-index-in-node="155" data-path-to-node="24" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Human Judgment&lt;/b&gt; supersedes the AI:&lt;/div&gt;&lt;br /&gt;&lt;ol data-path-to-node="25" start="1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="25,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Architecture &amp;amp; System Boundaries:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="25,0,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="25,0,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;AI limitation:&lt;/i&gt; An AI agent will write whatever code you ask for, even if a monolith/microservice pattern is wrong for the use case.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="25,0,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Human role:&lt;/i&gt; Deciding &lt;i data-index-in-node="21" data-path-to-node="25,0,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;where&lt;/i&gt; compute should run (e.g., Lambda vs. EKS), how data flows, and defining state boundaries.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="25,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Security &amp;amp; Zero Trust:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="25,1,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="25,1,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;AI limitation:&lt;/i&gt; Agents frequently hardcode fallback secrets, disable SSL verification to pass tests quickly, or over-privilege IAM roles.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="25,1,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Human role:&lt;/i&gt; Enforcing least-privilege access, auditing KMS encryption configurations, and preventing data leakage.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="25,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Cost Optimization (Frugality) &amp;amp; Performance Trade-offs:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="25,2,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="25,2,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;AI limitation:&lt;/i&gt; An agent might suggest an expensive polling algorithm or inefficient database query that works locally but fails or burns budget at scale.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="25,2,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Human role:&lt;/i&gt; Evaluating trade-offs like eventual consistency vs. strong consistency, caching layers (ElastiCache/Redis), and batching strategies.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="25,3,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Edge-Case Analysis &amp;amp; Real-World Failure Modes:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul data-path-to-node="25,3,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="25,3,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;AI limitation:&lt;/i&gt; Agents struggle with complex failure modes like network partitions, thundering herd problems, or distributed lock contention.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;i data-index-in-node="0" data-path-to-node="25,3,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Human role:&lt;/i&gt; Designing idempotency keys, circuit breakers, and backpressure mechanisms.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 data-path-to-node="27" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Summary Checklist for Live Coding with AI Assist&lt;/h3&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table data-path-to-node="28" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 32px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px 0px 32px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;thead style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;strong style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Phase&lt;/strong&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;strong style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Human Action&lt;/strong&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;strong style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px !important; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;AI Agent Action&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="28,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;1. Setup&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Set folder structure, define &lt;code data-index-in-node="29" data-path-to-node="28,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;.cursorrules&lt;/code&gt; / architecture constraints.&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,1,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Context ingestion.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,2,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="28,2,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;2. Spec&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,2,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Define Pydantic models, API contracts, and edge-case boundaries.&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,2,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Generate data models &amp;amp; schemas.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,3,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="28,3,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;3. Tests&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,3,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Review test scenarios for completeness.&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,3,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Generate Pytest/JUnit test cases.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,4,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="28,4,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;4. Code&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,4,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Review code for security flaws, memory leaks, and architectural fit.&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,4,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Generate service logic to pass tests.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,5,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="28,5,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;5. Audit&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,5,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Perform security audit, IAM check, cost review, and edge-case check.&lt;/span&gt;&lt;/td&gt;&lt;td style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 1px solid rgb(196, 199, 197); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 8px 12px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span data-path-to-node="28,5,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; margin: 0px; marker: none; mask-clip: border-box; mask-composite: add; mask-image: none; mask-mode: match-source; mask-origin: border-box; mask-repeat: repeat; mask-size: auto; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Execute refactoring commands based on human feedback.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;You can find more details about the rule file here&amp;nbsp;https://github.com/PatrickJS/awesome-cursorrules/&lt;div&gt;and&amp;nbsp;https://cursorrules.org/&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>Agentic Banking Assistant — Detailed Production Architecture (Azure, GCP &amp; AWS)</title><link>http://dhirajpatra.blogspot.com/2026/09/agentic-banking-assistant-detailed.html</link><category>agenticai</category><category>architecture</category><category>aws</category><category>azure</category><category>gcp</category><pubDate>Thu, 10 Sep 2026 19:48:58 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-4390126566009356202</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo9SyjECeEOSUi6CbzY7OVDYNaap9qO-XSFsdULrfHZEQL9tVeiHgyyeL-ol_DIgh8Cggp87G8lpRyf2nD-ck2zuut2RLNKKoh_iCDz17OZh014V111H2bFjo0U-BcquIWKxyjZC_yksISarUprNi4wml3ElLS_3PAHldegiMS2J-5UrW-qiaMQkLNMZIc/s1231/Gemini_Generated_Image_tyslwktyslwktysl.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="848" data-original-width="1231" height="332" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo9SyjECeEOSUi6CbzY7OVDYNaap9qO-XSFsdULrfHZEQL9tVeiHgyyeL-ol_DIgh8Cggp87G8lpRyf2nD-ck2zuut2RLNKKoh_iCDz17OZh014V111H2bFjo0U-BcquIWKxyjZC_yksISarUprNi4wml3ElLS_3PAHldegiMS2J-5UrW-qiaMQkLNMZIc/w483-h332/Gemini_Generated_Image_tyslwktyslwktysl.png" width="483" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; gemini ai&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;Source diagram:&lt;/b&gt; Multi-agent GenAI chat platform for a bank — Coordinator Agent orchestrating Accounts / Transaction / Service agents over MCP servers, fronted by an edge/API layer, with observability, cost tracking, PII redaction, agent evaluation, and a session store.&lt;/div&gt;&lt;p&gt;This document maps every box in the diagram to concrete, current (2026) Azure and AWS resources, plus the open-source/framework layer (LangGraph, MCP, evaluation, Neo4j) you'd wire underneath either cloud. Where a component is genuinely cloud-native (e.g., the bank's own IdP, Azure/AWS aren't interchangeable at the same layer), that's called out.&lt;/p&gt;&lt;hr /&gt;&lt;h2&gt;1. Layer-by-Layer Component Map&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Diagram component&lt;/th&gt;
&lt;th&gt;Function&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;User Interface (chat)&lt;/td&gt;
&lt;td&gt;Web/mobile chat client for bank customers or staff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Edge Layer (WAF, DDoS, Rate Limits, API Gateway)&lt;/td&gt;
&lt;td&gt;Perimeter defense + traffic shaping&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Authentication (bank's identity provider)&lt;/td&gt;
&lt;td&gt;Federates to the bank's existing IdP (Entra ID, Ping, ForgeRock, etc.)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;API&lt;/td&gt;
&lt;td&gt;Backend-for-frontend / orchestration entry point&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Authorization&lt;/td&gt;
&lt;td&gt;Fine-grained access decisions (who can ask what, which agent can touch which account)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Coordinator Agent&lt;/td&gt;
&lt;td&gt;Top-level orchestrator/router agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Accounts / Transaction / Service Agents&lt;/td&gt;
&lt;td&gt;Domain-specialized sub-agents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Accounts / Transactions / Service MCP Servers&lt;/td&gt;
&lt;td&gt;Tool-serving layer exposing core banking capabilities via MCP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Downstream capabilities (Balance Enquiry, Transaction Details, Statement Request, Change of Address, Cheque Book, KYC update)&lt;/td&gt;
&lt;td&gt;Actual core-banking operations invoked as MCP tools&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;PII Redaction&lt;/td&gt;
&lt;td&gt;Strips/masks sensitive data before it reaches any LLM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Self-Hosted LLM / Third-Party LLM&lt;/td&gt;
&lt;td&gt;Inference layer — open-weight model you host + a frontier model API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Agent Evaluation Suite&lt;/td&gt;
&lt;td&gt;Offline/online eval, regression testing of agent behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Observability (prompts, agent calls, tool calls, CPU/memory/disk)&lt;/td&gt;
&lt;td&gt;Full-stack tracing + infra metrics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Cost Tracker&lt;/td&gt;
&lt;td&gt;Per-agent, per-tenant token/compute cost attribution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Session Store (conversation history, inter-agent shared state)&lt;/td&gt;
&lt;td&gt;Durable + low-latency state layer&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;hr /&gt;&lt;h2&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj16XRxZfnZP291JCaev3DQyzPWQVqz2XDWPJ4k8dwYBi6UjDuXWO0UgcolNlXPwgX6iIT4QVtA9j5YJByYmu9s3W6XMmNL8VPwO6ofZ91bxRHYyTU2ge2iSXmhXjl1iJh_ZQ4vofN6ZSD_LAXbbqw0XQdSk-Ud2Q-SktLk0rtzGcTUX-yy5hr4mQJASTwM/s2720/azure_agentic_banking_architecture.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2320" data-original-width="2720" height="475" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj16XRxZfnZP291JCaev3DQyzPWQVqz2XDWPJ4k8dwYBi6UjDuXWO0UgcolNlXPwgX6iIT4QVtA9j5YJByYmu9s3W6XMmNL8VPwO6ofZ91bxRHYyTU2ge2iSXmhXjl1iJh_ZQ4vofN6ZSD_LAXbbqw0XQdSk-Ud2Q-SktLk0rtzGcTUX-yy5hr4mQJASTwM/w557-h475/azure_agentic_banking_architecture.png" width="557" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;/h2&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNbAo7h1RrKUGbuXaheskF2SHJyi4kJsem_1wim2MDaO-IWAx0NYmsB4S5EEnK7uY2vJMRissBs1EEAE5hncGzRQuMrMCbVnAMCnTzg1cMsvEZRgqAW0_j6dW9TiBdaD6vDkl6i-M0WC52kqX6glZ2YVoJlOPFRYXVrjCh8Ozgkn1H3hoXoacBFQEkUFct/s1536/Azure_architecture_ecommerce.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1024" data-original-width="1536" height="391" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNbAo7h1RrKUGbuXaheskF2SHJyi4kJsem_1wim2MDaO-IWAx0NYmsB4S5EEnK7uY2vJMRissBs1EEAE5hncGzRQuMrMCbVnAMCnTzg1cMsvEZRgqAW0_j6dW9TiBdaD6vDkl6i-M0WC52kqX6glZ2YVoJlOPFRYXVrjCh8Ozgkn1H3hoXoacBFQEkUFct/w588-h391/Azure_architecture_ecommerce.png" width="588" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;2. Azure Reference Architecture&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Primary Azure Resource&lt;/th&gt;
&lt;th&gt;Supporting Resources&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chat UI&lt;/td&gt;
&lt;td&gt;Azure Static Web Apps / App Service (Node/React)&lt;/td&gt;
&lt;td&gt;Azure Front Door (CDN)&lt;/td&gt;
&lt;td&gt;SSR or SPA served via Front Door origin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Edge Layer&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Azure Front Door Premium&lt;/b&gt; (WAF + DDoS + CDN)&lt;/td&gt;
&lt;td&gt;Azure DDoS Protection (Network layer), Azure API Management (APIM) Premium v2 as the &lt;b&gt;AI Gateway&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;Front Door WAF handles L7/bot/geo-filtering; APIM enforces token-rate-limit policies, quotas, semantic caching, and request/response transformation in front of the LLM and MCP endpoints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authentication&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Microsoft Entra ID&lt;/b&gt; (federated to the bank's IdP via SAML/OIDC), Entra External ID if customer-facing&lt;/td&gt;
&lt;td&gt;Entra Conditional Access, Entra ID Protection&lt;/td&gt;
&lt;td&gt;Diagram explicitly shows "bank's identity provider" — Entra acts as the broker/relying party, doing OIDC federation into whatever IdP the bank already runs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API&lt;/td&gt;
&lt;td&gt;Azure API Management (same APIM instance, &lt;code&gt;/api&lt;/code&gt; product) or &lt;b&gt;Azure Container Apps&lt;/b&gt; hosting a FastAPI BFF&lt;/td&gt;
&lt;td&gt;Azure Functions for lightweight routes&lt;/td&gt;
&lt;td&gt;APIM is both edge gateway and AI gateway here — one control point&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authorization&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Microsoft Entra ID + Azure RBAC&lt;/b&gt;, plus fine-grained policy via &lt;b&gt;Azure API Management "validate-jwt" + custom policies&lt;/b&gt;, or externalize to &lt;b&gt;OPA/Cedar sidecar on AKS&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;Entra ID Governance (entitlement management)&lt;/td&gt;
&lt;td&gt;For agent-to-agent delegation and scoped tool access, layer &lt;b&gt;SPIFFE/SPIRE-issued workload identities&lt;/b&gt; or &lt;b&gt;Entra Workload ID&lt;/b&gt; on top so each agent/MCP server has its own verifiable identity, not just a shared service principal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coordinator + domain Agents&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Microsoft Foundry Agent Service&lt;/b&gt; (formerly Azure AI Foundry Agent Service) hosting agents defined via the Microsoft Agent Framework, &lt;b&gt;or&lt;/b&gt; self-hosted &lt;b&gt;LangGraph&lt;/b&gt; agents on &lt;b&gt;Azure Kubernetes Service (AKS)&lt;/b&gt; / Azure Container Apps&lt;/td&gt;
&lt;td&gt;Foundry supports "bring your own framework" (LangGraph, Semantic Kernel, AutoGen, CrewAI) if you don't want to rewrite LangGraph agents&lt;/td&gt;
&lt;td&gt;Given your existing LangGraph stack, the pragmatic path is: keep LangGraph as the orchestration code, deploy it on AKS, and register it with Foundry's control plane for governance/observability rather than porting to Foundry's native agent authoring&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP Servers (Accounts/Transactions/Service)&lt;/td&gt;
&lt;td&gt;&lt;b&gt;AKS-hosted MCP servers&lt;/b&gt; (containerized, one deployment per domain) exposed internally, or registered in &lt;b&gt;Foundry's 1,400+ tool catalog&lt;/b&gt; as MCP-enabled tools&lt;/td&gt;
&lt;td&gt;Azure API Management can front the MCP endpoints too (MCP-aware policies are shipping in APIM's AI Gateway)&lt;/td&gt;
&lt;td&gt;Each MCP server should carry its own workload identity (Entra Workload ID / SPIFFE SVID) so the Authorization layer can scope tool calls per agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Core banking downstream calls&lt;/td&gt;
&lt;td&gt;Azure Logic Apps / Azure Functions as adapters to mainframe or core banking APIs&lt;/td&gt;
&lt;td&gt;Azure Integration Services (Service Bus, Event Grid) for async ops (statement generation, KYC workflow)&lt;/td&gt;
&lt;td&gt;These are the actual "Balance Enquiry / Statement Request / KYC update" leaf nodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PII Redaction&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Azure AI Language — PII Detection &amp;amp; Document PII Redaction&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;Deployed as an APIM inbound policy step ("mask PII before it reaches the model") using &lt;code&gt;send-request&lt;/code&gt; to call the Language service, splicing redacted text back into the prompt&lt;/td&gt;
&lt;td&gt;This matches the diagram's placement — redaction sits between API and the LLM layer, enforced centrally at the gateway, not per-app&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Self-hosted LLM&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Azure Machine Learning Managed Online Endpoints&lt;/b&gt; or &lt;b&gt;AKS + NVIDIA Triton/vLLM&lt;/b&gt; for open-weight models (Llama, Mistral, Phi)&lt;/td&gt;
&lt;td&gt;Azure Container Registry, GPU node pools (NC/ND-series)&lt;/td&gt;
&lt;td&gt;Foundry Local can also run multimodal open models on-prem/edge with zero cloud connectivity if data residency demands it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Third-party LLM&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Microsoft Foundry Models catalog&lt;/b&gt; (Azure OpenAI GPT models, Anthropic Claude on Foundry, Meta Llama, Mistral)&lt;/td&gt;
&lt;td&gt;All routed through the APIM AI Gateway for a single metering/policy point&lt;/td&gt;
&lt;td&gt;Claude and other frontier models are now available directly inside Foundry with Azure governance wrapped around them&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent Evaluation Suite&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Azure AI Foundry Evaluation&lt;/b&gt; (built-in agent eval: groundedness, relevance, safety, task adherence)&lt;/td&gt;
&lt;td&gt;Complement with open-source &lt;b&gt;Ragas / DeepEval / promptfoo&lt;/b&gt; run as an AKS CronJob against a golden dataset in Blob Storage&lt;/td&gt;
&lt;td&gt;Foundry evaluation integrates directly with Agent Service traces&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observability&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Azure Monitor + Application Insights&lt;/b&gt; (distributed tracing for prompts/agent/tool calls via OpenTelemetry), &lt;b&gt;Azure Managed Grafana&lt;/b&gt; for dashboards&lt;/td&gt;
&lt;td&gt;Log Analytics workspace, Container Insights for AKS CPU/memory/disk&lt;/td&gt;
&lt;td&gt;Foundry Agent Service emits OTel traces natively into App Insights&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost Tracker&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Microsoft Cost Management + Billing&lt;/b&gt; (tag-based cost allocation per agent/tenant)&lt;/td&gt;
&lt;td&gt;Custom token-cost dashboard in Grafana/Power BI fed from APIM's token-metering policies + Foundry usage logs&lt;/td&gt;
&lt;td&gt;APIM's &lt;code&gt;llm-token-limit&lt;/code&gt; / &lt;code&gt;azure-openai-token-limit&lt;/code&gt; policies emit per-call token counts you can attribute to a tenant/agent tag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Session Store&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Azure Cosmos DB&lt;/b&gt; (conversation history, multi-region, low-latency) + &lt;b&gt;Azure Cache for Redis&lt;/b&gt; (hot inter-agent shared state / short-term memory)&lt;/td&gt;
&lt;td&gt;Cosmos DB change feed can drive downstream analytics&lt;/td&gt;
&lt;td&gt;Matches your pattern of Cosmos/Redis for durable + ephemeral state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Policy/entitlement graph (cross-cutting)&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Neo4j Aura on Azure Marketplace&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Fits your existing Neo4j Graph RAG and identity-platform-agents work — model agent delegation chains, entitlements, and tool-scoping as a graph&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;hr /&gt;&lt;h2&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZwh4kYT4BFcJZB9ZrWmLk7JdMMvE835l6v2YZrMPk3OKmhGSARkRfFjNnHvbHn56p04jN_yo4rplpGEkRrhrP9d-Rq_t2wrBIts-IzRz3LJePnouX6p-LKSAcsZGCy9Abj0gvpqx1z5WmbDWaPnZOJMzKq55PbnLzthcu5S1-N9pF4gZoWecSLx7bDAdb/s2720/aws_agentic_banking_architecture.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2320" data-original-width="2720" height="425" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZwh4kYT4BFcJZB9ZrWmLk7JdMMvE835l6v2YZrMPk3OKmhGSARkRfFjNnHvbHn56p04jN_yo4rplpGEkRrhrP9d-Rq_t2wrBIts-IzRz3LJePnouX6p-LKSAcsZGCy9Abj0gvpqx1z5WmbDWaPnZOJMzKq55PbnLzthcu5S1-N9pF4gZoWecSLx7bDAdb/w498-h425/aws_agentic_banking_architecture.png" width="498" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&lt;/h2&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgorOVyQQ3XQtt8HMxfUF_aP29VB8xo5NhuclEr5QVtMZHiLOvCEdFZPIWV7z9qYo3tvsGau4ZJZefgba3crIAR8W3HEYY-gHsJnegX6RJGI76DJdl24_DXDhNAQT0_LWBxRPH4VAZHukZRSplREuky9RztyZeB78Ftj0k1xh-KI2qAFUWrOy9_TnVnMOxB/s1366/AWS_architecture_ecommerce.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="768" data-original-width="1366" height="335" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgorOVyQQ3XQtt8HMxfUF_aP29VB8xo5NhuclEr5QVtMZHiLOvCEdFZPIWV7z9qYo3tvsGau4ZJZefgba3crIAR8W3HEYY-gHsJnegX6RJGI76DJdl24_DXDhNAQT0_LWBxRPH4VAZHukZRSplREuky9RztyZeB78Ftj0k1xh-KI2qAFUWrOy9_TnVnMOxB/w596-h335/AWS_architecture_ecommerce.png" width="596" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;3. AWS Reference Architecture&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Primary AWS Resource&lt;/th&gt;
&lt;th&gt;Supporting Resources&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chat UI&lt;/td&gt;
&lt;td&gt;Amazon CloudFront + S3 (static SPA) or AWS Amplify Hosting&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Edge Layer&lt;/td&gt;
&lt;td&gt;&lt;b&gt;AWS Shield Advanced&lt;/b&gt; (DDoS) + &lt;b&gt;AWS WAF&lt;/b&gt; on CloudFront/ALB&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Amazon API Gateway&lt;/b&gt; (REST/HTTP API) for rate limiting, throttling, usage plans&lt;/td&gt;
&lt;td&gt;Shield handles volumetric/L3-L4, WAF handles L7 rules/bot control, API Gateway does per-key throttling and quotas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authentication&lt;/td&gt;
&lt;td&gt;Federation into the &lt;b&gt;bank's identity provider&lt;/b&gt; via &lt;b&gt;Amazon Cognito&lt;/b&gt; (as OIDC/SAML broker) or &lt;b&gt;AWS IAM Identity Center&lt;/b&gt; for workforce-facing use&lt;/td&gt;
&lt;td&gt;Cognito User/Identity Pools&lt;/td&gt;
&lt;td&gt;Cognito plays the same "broker" role Entra plays on Azure — federates to whatever IdP the bank runs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API&lt;/td&gt;
&lt;td&gt;Amazon API Gateway → &lt;b&gt;AWS Lambda&lt;/b&gt; (BFF) or containerized FastAPI on &lt;b&gt;Amazon ECS/Fargate&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;AWS AppSync if GraphQL is preferred&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authorization&lt;/td&gt;
&lt;td&gt;&lt;b&gt;AWS IAM&lt;/b&gt; + &lt;b&gt;Amazon Verified Permissions (Cedar policy engine)&lt;/b&gt; for fine-grained, per-resource authorization&lt;/td&gt;
&lt;td&gt;Cognito authorizers on API Gateway&lt;/td&gt;
&lt;td&gt;Bedrock AgentCore's own Policy component is &lt;b&gt;Cedar-based&lt;/b&gt; — using Verified Permissions keeps your policy language consistent from edge to agent-to-tool calls. Layer SPIFFE/SPIRE or AgentCore Identity for per-agent workload identity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coordinator + domain Agents&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Amazon Bedrock AgentCore Runtime&lt;/b&gt; hosting your &lt;b&gt;LangGraph&lt;/b&gt; (or Strands Agents) coordinator + sub-agents as serverless, auto-scaling microVM-isolated endpoints&lt;/td&gt;
&lt;td&gt;AgentCore natively supports LangGraph, CrewAI, Strands, and raw Python agents — no rewrite needed&lt;/td&gt;
&lt;td&gt;Each user session runs in an isolated microVM; this is a clean fit for a regulated banking workload needing per-session isolation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP Servers (Accounts/Transactions/Service)&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Amazon Bedrock AgentCore Gateway&lt;/b&gt; — converts existing APIs/Lambda functions into MCP-compatible tools with a single managed MCP endpoint&lt;/td&gt;
&lt;td&gt;AgentCore Runtime can also directly host stateful MCP servers (elicitation, sampling, progress notifications)&lt;/td&gt;
&lt;td&gt;Gateway also does &lt;b&gt;semantic tool search&lt;/b&gt;, returning only 10–15 relevant tools instead of dumping your whole API surface into the agent's context — useful once you have Balance/Statement/KYC/Address/Cheque-book as dozens of underlying operations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Core banking downstream calls&lt;/td&gt;
&lt;td&gt;&lt;b&gt;AWS Lambda&lt;/b&gt; adapters to core banking / mainframe APIs, exposed as Gateway tools&lt;/td&gt;
&lt;td&gt;Amazon EventBridge / SQS for async KYC/statement workflows&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PII Redaction&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Amazon Comprehend — PII detection &amp;amp; redaction&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;Invoked from API Gateway (via Lambda authorizer/integration) or from the AgentCore Gateway as a pre-processing tool step before any prompt hits Bedrock&lt;/td&gt;
&lt;td&gt;Same "chokepoint" pattern as Azure: mask centrally, once, before the model sees the payload&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Self-hosted LLM&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Amazon SageMaker Endpoints&lt;/b&gt; (real-time inference) or &lt;b&gt;Amazon EKS + vLLM/Triton on G5/P5 GPU instances&lt;/b&gt; for open-weight models&lt;/td&gt;
&lt;td&gt;ECR for container images&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Third-party LLM&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Amazon Bedrock&lt;/b&gt; (Anthropic Claude, Meta Llama, Mistral, Amazon Nova, and others) via a single unified API&lt;/td&gt;
&lt;td&gt;Bedrock Guardrails for content safety at the model layer&lt;/td&gt;
&lt;td&gt;Bedrock is the direct analog of Foundry Models — one managed multi-provider model catalog&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent Evaluation Suite&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Bedrock AgentCore Evaluation&lt;/b&gt; / &lt;b&gt;Bedrock Agent Evaluation (RAGAS-based)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;Open-source Ragas/DeepEval as scheduled Fargate tasks against a golden set in S3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observability&lt;/td&gt;
&lt;td&gt;&lt;b&gt;AWS X-Ray&lt;/b&gt; (distributed tracing) + &lt;b&gt;Amazon CloudWatch&lt;/b&gt; (logs/metrics/dashboards)&lt;/td&gt;
&lt;td&gt;AgentCore emits OpenTelemetry traces to X-Ray/CloudWatch with minimal instrumentation&lt;/td&gt;
&lt;td&gt;Container Insights on ECS/EKS for CPU/memory/disk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost Tracker&lt;/td&gt;
&lt;td&gt;&lt;b&gt;AWS Cost Explorer + Cost Allocation Tags&lt;/b&gt; (per-agent, per-tenant tagging via AgentCore Runtime/Gateway tags)&lt;/td&gt;
&lt;td&gt;Custom QuickSight dashboard fed from Bedrock's per-invocation token usage in CloudWatch&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Session Store&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Amazon DynamoDB&lt;/b&gt; (conversation history, single-digit-ms latency, global tables for multi-region) + &lt;b&gt;Amazon ElastiCache (Redis/Valkey)&lt;/b&gt; for hot inter-agent state&lt;/td&gt;
&lt;td&gt;AgentCore Memory (built-in short-term session + long-term semantic memory) can replace a chunk of this custom wiring&lt;/td&gt;
&lt;td&gt;AgentCore Memory is purpose-built for exactly this box in the diagram — worth evaluating before building your own Dynamo/Redis layer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Policy/entitlement graph (cross-cutting)&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Neo4j Aura on AWS Marketplace&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Same graph-based entitlement/delegation model as the Azure side&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;hr /&gt;&lt;h2&gt;4. Cross-Cutting Concerns (apply to both clouds)&lt;/h2&gt;&lt;p&gt;&lt;b&gt;Agent identity, not just user identity.&lt;/b&gt; The diagram's Authentication box covers the human/session identity; in a multi-agent system you also need workload identity for the Coordinator, each sub-agent, and each MCP server, so Authorization can answer "can &lt;i&gt;this agent&lt;/i&gt; call &lt;i&gt;this tool&lt;/i&gt; on behalf of &lt;i&gt;this user&lt;/i&gt;." This lines up directly with your identity-platform-agents work — SPIFFE/SPIRE for cryptographic workload identity, IETF AIMS-style agent identity metadata, and OAuth 2.1 token exchange (on-behalf-of) for delegation chains. AWS AgentCore Identity and Azure Entra Workload ID both give you a managed starting point; SPIFFE/SPIRE sits underneath either as the portable, cloud-neutral root of trust if multi-cloud/hybrid is a long-term goal.&lt;/p&gt;&lt;p&gt;&lt;b&gt;PII redaction placement.&lt;/b&gt; Both clouds push you toward the same pattern the diagram shows: redact centrally at the gateway (APIM policy on Azure, API Gateway/AgentCore Gateway step on AWS), not inside each agent. This gives one auditable chokepoint for regulators.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Evaluation as a gate, not just a dashboard.&lt;/b&gt; Wire the Agent Evaluation Suite into CI/CD for agent prompt/tool changes — both Foundry Evaluation and Bedrock AgentCore Evaluation support automated regression runs; block deploys on groundedness/safety score drops given the KYC/account-data surface here.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Data residency &amp;amp; compliance.&lt;/b&gt; For a bank, confirm region pinning for the Session Store, PII redaction service, and any self-hosted LLM (RBI/data-localization rules if this is an India-domiciled bank, given your India context) — Azure Front Door/Cosmos DB and AWS's India regions (Mumbai/Hyderabad) both support in-country residency; Foundry Local / on-prem vLLM are your fallback if a model must never leave the data center.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Cost tracker granularity.&lt;/b&gt; Tag every agent invocation and MCP tool call with &lt;code&gt;tenant_id&lt;/code&gt; + &lt;code&gt;agent_name&lt;/code&gt; + &lt;code&gt;conversation_id&lt;/code&gt; at the gateway layer (APIM policy / AgentCore Gateway tag) — retrofitting this after launch is painful; both cost tools above are only as good as the tags you emit.&lt;/p&gt;&lt;hr /&gt;&lt;h2&gt;5. Suggested Deployment Topology (either cloud)&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;Internet
  │
  ▼
Edge (WAF + DDoS + CDN)
  │
  ▼
AI Gateway (rate limits, PII redaction, token metering)  ──► Cost Tracker
  │
  ▼
BFF / API  ──► Auth (bank IdP federation) + AuthZ (Cedar/OPA + workload identity)
  │
  ▼
Coordinator Agent (LangGraph on AKS / AgentCore Runtime)
  │
  ├─► Accounts Agent ──► Accounts MCP Server ──► Core Banking (Balance)
  ├─► Transaction Agent ──► Transactions MCP Server ──► Core Banking (Txn Details, Statement)
  └─► Service Agent ──► Service MCP Server ──► Core Banking (Address, Cheque Book, KYC)
  │
  ├─► LLM layer (self-hosted open-weight + Bedrock/Foundry third-party models)
  ├─► Session Store (Cosmos+Redis / DynamoDB+ElastiCache or AgentCore Memory)
  └─► Observability (App Insights+Grafana / X-Ray+CloudWatch) + Agent Evaluation Suite
&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h2&gt;6. Framework/Tooling Layer (cloud-agnostic, fits your existing stack)&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Orchestration:&lt;/b&gt; LangGraph (already your stack) — deploy as containers on AKS or AgentCore Runtime; both platforms explicitly support bringing your own LangGraph code rather than rewriting into Foundry's or Bedrock's native agent-authoring format.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Tool serving:&lt;/b&gt; MCP servers per domain (Accounts/Transactions/Service), registered either in Foundry's tool catalog or behind AgentCore Gateway's semantic search — both reduce "tool sprawl" once KYC/address/cheque-book/statement operations multiply.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Graph layer:&lt;/b&gt; Neo4j Aura (Azure or AWS Marketplace) for entitlement/delegation graphs and Graph RAG, consistent with rdb2graph and RegulatoryRisk GraphAgent patterns.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Evaluation:&lt;/b&gt; Ragas/DeepEval/promptfoo as the portable open-source layer, with Foundry Evaluation or Bedrock AgentCore Evaluation as the managed complement.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Identity:&lt;/b&gt; SPIFFE/SPIRE as the cloud-neutral workload-identity root, with Entra Workload ID or AgentCore Identity as the cloud-native token issuers on top.&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt;

























&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSHMGIHQ1l1mWK0rYzy6RW65t5n2IMXa6W9gKgGooSVgup-ZV7aQQlgjG0MHcoyD9ThBzxdfg2VRHuRnZv5-fK7-AFvEONQI8bNU5l1jaBfXPD7esiaY1AfikqsaIu-wxzUpCQVG8_0B95437yONcvR1x7vWfdbhG_72Z6zx9-yAXN6I2QeUBeEL1KE3Rl/s2720/aws_agentic_banking_architecture.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2320" data-original-width="2720" height="455" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSHMGIHQ1l1mWK0rYzy6RW65t5n2IMXa6W9gKgGooSVgup-ZV7aQQlgjG0MHcoyD9ThBzxdfg2VRHuRnZv5-fK7-AFvEONQI8bNU5l1jaBfXPD7esiaY1AfikqsaIu-wxzUpCQVG8_0B95437yONcvR1x7vWfdbhG_72Z6zx9-yAXN6I2QeUBeEL1KE3Rl/w534-h455/aws_agentic_banking_architecture.png" width="534" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AWS&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBevtc0X9RFRVAMbDxoDncNoq0fAZfEgPHFuZtRrziR99MubplDwnN0H3WFeMUF2uGUdAEbyyTAXFs9Q0MaUnOtM0RmtXv8d_c7VvpXm_ZFP62KRJuD8eJvxwjOHeHDTBf7x66vFseRvhDX70FfzqUATVaL6ut_juommQL3gBzijLB82tFLY9wgxmwR1eq/s2720/azure_agentic_banking_architecture.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="2320" data-original-width="2720" height="413" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBevtc0X9RFRVAMbDxoDncNoq0fAZfEgPHFuZtRrziR99MubplDwnN0H3WFeMUF2uGUdAEbyyTAXFs9Q0MaUnOtM0RmtXv8d_c7VvpXm_ZFP62KRJuD8eJvxwjOHeHDTBf7x66vFseRvhDX70FfzqUATVaL6ut_juommQL3gBzijLB82tFLY9wgxmwR1eq/w484-h413/azure_agentic_banking_architecture.png" width="484" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Azure&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;both images generated by Anthropic claude by prompting.&lt;/p&gt;&lt;p&gt;GCP architecture details you can find in my other tutorial posts.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitjxjR6S3qnDZbQDL0xPCxdFeiQBGnjlc6rOZz0Eryfo_yLypb8srVkpGgq9EWSbxj-fleIskJqRosHeVF5VfuqutPMCZfbX6x3IHfHsUrLD7WPDhkjAic5iJSI9K43FWLTtxM5AuSbNDQmhZ_yQx0iEUeY9DP_IYs_FJnN5Sv7xYN1OdKMySm0pq4Sn0N/s1231/Gemini_Generated_Image_tyslwktyslwktysl.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="848" data-original-width="1231" height="431" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitjxjR6S3qnDZbQDL0xPCxdFeiQBGnjlc6rOZz0Eryfo_yLypb8srVkpGgq9EWSbxj-fleIskJqRosHeVF5VfuqutPMCZfbX6x3IHfHsUrLD7WPDhkjAic5iJSI9K43FWLTtxM5AuSbNDQmhZ_yQx0iEUeY9DP_IYs_FJnN5Sv7xYN1OdKMySm0pq4Sn0N/w626-h431/Gemini_Generated_Image_tyslwktyslwktysl.png" width="626" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gemini ai generated&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo9SyjECeEOSUi6CbzY7OVDYNaap9qO-XSFsdULrfHZEQL9tVeiHgyyeL-ol_DIgh8Cggp87G8lpRyf2nD-ck2zuut2RLNKKoh_iCDz17OZh014V111H2bFjo0U-BcquIWKxyjZC_yksISarUprNi4wml3ElLS_3PAHldegiMS2J-5UrW-qiaMQkLNMZIc/s72-w483-h332-c/Gemini_Generated_Image_tyslwktyslwktysl.png" width="72"/><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>Multi Agent Orchestration with Azure Foundry and Microsoft Agent Services</title><link>http://dhirajpatra.blogspot.com/2026/09/multi-agent-orchestration-with-azure.html</link><category>agent</category><category>azure</category><pubDate>Fri, 4 Sep 2026 20:17:36 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-4499761088707179953</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi68FbtGUvJayctd05-uwzuVZbwriqauA-xt_Scf2TUMeMy0LO0SibGrrJEockDpiWa8cm1bUxdzU3vG9hbGUR8bm0VGasYkwTNTCR9vXRWZP7pKVwl8M1oHUVRUQ8xw56Yh10TPKAonsj53vd7XNSibbTiqN9Tl1JgO5rzwZmO8VRkwhv3M_xpzp9SOEN2/s2500/foundry-stack-wp.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1406" data-original-width="2500" height="273" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi68FbtGUvJayctd05-uwzuVZbwriqauA-xt_Scf2TUMeMy0LO0SibGrrJEockDpiWa8cm1bUxdzU3vG9hbGUR8bm0VGasYkwTNTCR9vXRWZP7pKVwl8M1oHUVRUQ8xw56Yh10TPKAonsj53vd7XNSibbTiqN9Tl1JgO5rzwZmO8VRkwhv3M_xpzp9SOEN2/w485-h273/foundry-stack-wp.png" width="485" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; microsoft&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="space-y-3 mt-3"&gt;&lt;div class="group/ai-message-item space-y-3 break-words" id="dKo8XnSeyZ3NLgN3gC3oX-content-0"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Microsoft Azure Foundry now unifies AutoGen and Semantic Kernel into a single agentic framework, making it easier to build, orchestrate, and scale multi-agent systems. The new Azure AI Agent Service provides managed infrastructure, code execution in Azure Container Apps, and seamless integration with tools like file search and code interpreters.&lt;/span&gt;&lt;/p&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#129513; How Azure Foundry + Agent Service Works&lt;/h2&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_Azure_AI_Foundry" role="button" tabindex="0"&gt;Azure AI Foundry&lt;/span&gt;&lt;/strong&gt;: Central hub for deploying GPT‑4o models, managing endpoints, and creating agents.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Azure_AI_Agent_Service" role="button" tabindex="0"&gt;Azure AI Agent Service&lt;/span&gt;&lt;/strong&gt;: Fully managed service to build and run agents without worrying about compute or scaling.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_AutoGen_framework" role="button" tabindex="0"&gt;AutoGen&lt;/span&gt;&lt;/strong&gt;: Provides orchestration primitives (agents, group chats, termination conditions).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_Semantic_Kernel" role="button" tabindex="0"&gt;Semantic Kernel&lt;/span&gt;&lt;/strong&gt;: Adds plugins, memory, and advanced coordination (e.g., MCP plugins for external APIs).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Together, they allow developers to define agents declaratively, attach tools (file search, code interpreter, APIs), and run them in secure Azure environments.&lt;/span&gt;&lt;/p&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128640; Example: Multi-Agent Workflow in Azure Foundry&lt;/h2&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;Scenario: &lt;strong&gt;Data Analysis Assistant + Policy Expert&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;You want two agents:&lt;/span&gt;&lt;/p&gt;&lt;ol class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-5 marker:normal-nums marker:text-sm-strong" role="list" start="1"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Policy Agent&lt;/strong&gt; – answers questions from a PDF (internal policy document).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Data Agent&lt;/strong&gt; – analyzes CSV sales data with Python code execution.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;Steps&lt;/h3&gt;&lt;ol class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-5 marker:normal-nums marker:text-sm-strong" role="list" start="1"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Deploy GPT‑4o in Azure Foundry&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Create a project in AI Foundry, deploy GPT‑4o, and note the endpoint + key.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Create Agents in Agent Service&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Policy Agent → attach &lt;strong&gt;File Search tool&lt;/strong&gt; with the PDF.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Data Agent → attach &lt;strong&gt;Code Interpreter tool&lt;/strong&gt; with the CSV.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Define Group Chat with AutoGen&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="rounded-xl dark:border dark:border-stroke-250" style="opacity: 1;"&gt;&lt;div class="flex w-full items-center justify-between border-b border-white/20 bg-background-static-850 py-2 pe-2.5 ps-4 text-foreground-static-250 text-sm dark:border-stroke-250 dark:bg-background-static-900 rounded-t-xl"&gt;&lt;div class="flex items-center gap-2"&gt;&lt;span class="capitalize"&gt;python&lt;/span&gt;&lt;button aria-expanded="true" class="relative min-h-9 min-w-9 rounded-xl bg-transparent p-2 hover:bg-white/8 active:bg-white/5" title="Collapse code snippet" type="button"&gt;&lt;svg class="size-4 transition-transform -rotate-90" fill="currentColor" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M8.46967 4.21967C8.17678 4.51256 8.17678 4.98744 8.46967 5.28033L15.1893 12L8.46967 18.7197C8.17678 19.0126 8.17678 19.4874 8.46967 19.7803C8.76256 20.0732 9.23744 20.0732 9.53033 19.7803L16.7803 12.5303C17.0732 12.2374 17.0732 11.7626 16.7803 11.4697L9.53033 4.21967C9.23744 3.92678 8.76256 3.92678 8.46967 4.21967Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class="flex items-center gap-2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="rounded-b-xl bg-background-static-850 px-4 pb-1.5 dark:bg-background-static-900"&gt;&lt;div class="horizontal-scrollbar overflow-x-auto whitespace-pre pb-3 pt-4 text-sm"&gt;&lt;pre&gt;&lt;code class="font-ligatures-none text-sm"&gt;&lt;span animate="end" custom="1.374" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.38" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="1.386" initial="start" variants="[object Object]"&gt;autogen &lt;/span&gt;&lt;span animate="end" custom="1.392" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.398" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="1.404" initial="start" variants="[object Object]"&gt;AssistantAgent, &lt;/span&gt;&lt;span animate="end" custom="1.41" initial="start" variants="[object Object]"&gt;RoundRobinGroupChat
&lt;/span&gt;&lt;span animate="end" custom="1.416" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.422" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="1.428" initial="start" variants="[object Object]"&gt;semantic_kernel &lt;/span&gt;&lt;span animate="end" custom="1.434" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.44" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="1.446" initial="start" variants="[object Object]"&gt;Kernel

&lt;/span&gt;&lt;span animate="end" custom="1.452" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Create agents&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.458" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="1.464" initial="start" variants="[object Object]"&gt;policy_agent &lt;/span&gt;&lt;span animate="end" custom="1.47" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="1.476" initial="start" variants="[object Object]"&gt;AssistantAgent(name=&lt;/span&gt;&lt;span animate="end" custom="1.482" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"PolicyAgent"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.488" initial="start" variants="[object Object]"&gt;, &lt;/span&gt;&lt;span animate="end" custom="1.494" initial="start" variants="[object Object]"&gt;system_message=&lt;/span&gt;&lt;span animate="end" custom="1.5" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Answer based on Contoso policy PDF"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.506" initial="start" variants="[object Object]"&gt;)
&lt;/span&gt;&lt;span animate="end" custom="1.512" initial="start" variants="[object Object]"&gt;data_agent &lt;/span&gt;&lt;span animate="end" custom="1.518" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="1.524" initial="start" variants="[object Object]"&gt;AssistantAgent(name=&lt;/span&gt;&lt;span animate="end" custom="1.53" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"DataAgent"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.536" initial="start" variants="[object Object]"&gt;, &lt;/span&gt;&lt;span animate="end" custom="1.542" initial="start" variants="[object Object]"&gt;system_message=&lt;/span&gt;&lt;span animate="end" custom="1.548" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Analyze CSV sales data with Python"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.554" initial="start" variants="[object Object]"&gt;)

&lt;/span&gt;&lt;span animate="end" custom="1.56" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Group chat&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.566" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="1.572" initial="start" variants="[object Object]"&gt;team &lt;/span&gt;&lt;span animate="end" custom="1.578" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="1.584" initial="start" variants="[object Object]"&gt;RoundRobinGroupChat([policy_agent, &lt;/span&gt;&lt;span animate="end" custom="1.59" initial="start" variants="[object Object]"&gt;data_agent])
&lt;/span&gt;&lt;span animate="end" custom="1.596" initial="start" variants="[object Object]"&gt;team.run(&lt;/span&gt;&lt;span animate="end" custom="1.602" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"What are return guidelines and top 5 selling products?"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.608" initial="start" variants="[object Object]"&gt;)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Execution in Azure Container Apps&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Code runs securely in ACA Session Pool.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Outputs include structured answers + charts.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128202; Comparison: Old vs New Approach&lt;/h2&gt;&lt;div class="max-w-full"&gt;&lt;div class="relative max-w-full"&gt;&lt;div aria-label="Scrollable table" class="horizontal-scrollbar font-ligatures-none mt-6 max-w-full overflow-x-auto rounded-lg bg-white/25 outline-2 outline-offset-1 focus-visible:outline focus-visible:outline-stroke-900 dark:bg-black/25" role="group" tabindex="0"&gt;&lt;table class="t-table" style="border-spacing: 10px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;Aspect&lt;/strong&gt;&lt;/th&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;Before (AutoGen only)&lt;/strong&gt;&lt;/th&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;Now (Foundry + Agent Service)&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Manual infra, local execution&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Managed ACA pools, azd deployment&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;&lt;strong&gt;Tooling&lt;/strong&gt;&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Custom code for file/code tools&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Built-in File Search + Code Interpreter&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;&lt;strong&gt;Integration&lt;/strong&gt;&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Limited&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Semantic Kernel plugins (MCP, GitHub, booking)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;&lt;strong&gt;Scalability&lt;/strong&gt;&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Developer-managed&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Fully managed, auto-scaled&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;&lt;strong&gt;Ease of Use&lt;/strong&gt;&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Complex boilerplate&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Few lines of Foundry SDK&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="pointer-events-none absolute inset-0 rounded-lg border border-stroke-300 dark:border-stroke-450"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="mt-3 flex items-center gap-1"&gt;&lt;div class="relative"&gt;&lt;button aria-label="Copy table" class="relative flex items-center text-foreground-800 fill-foreground-800 active:text-foreground-600 active:fill-foreground-600 dark:active:text-foreground-650 dark:active:fill-foreground-650 bg-transparent safe-hover:bg-black/5 active:bg-black/3 dark:safe-hover:bg-white/8 dark:active:bg-white/5 text-sm justify-center size-9 rounded-xl after:rounded-xl after:absolute after:inset-0 after:pointer-events-none after:border after:border-transparent after:contrast-more:border-2 outline-2 outline-offset-1 focus-visible:z-[1] focus-visible:outline focus-visible:outline-stroke-900 forced-colors:transition-none forced-colors:safe-hover:!bg-[Highlight] forced-colors:safe-hover:!text-[HighlightText] forced-colors:safe-hover:!fill-[HighlightText] forced-colors:active:!bg-[Highlight] forced-colors:active:!text-[HighlightText] forced-colors:active:!fill-[HighlightText]" data-spatial-navigation-autofocus="false" data-testid="copy-table-button" data-tooltip-state="closed" type="button"&gt;&lt;div style="opacity: 1;"&gt;&lt;svg class="size-5" fill="currentColor" viewbox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M8 2C6.89543 2 6 2.89543 6 4V14C6 15.1046 6.89543 16 8 16H14C15.1046 16 16 15.1046 16 14V4C16 2.89543 15.1046 2 14 2H8ZM7 4C7 3.44772 7.44772 3 8 3H14C14.5523 3 15 3.44772 15 4V14C15 14.5523 14.5523 15 14 15H8C7.44772 15 7 14.5523 7 14V4ZM4 6.00001C4 5.25973 4.4022 4.61339 5 4.26758V14.5C5 15.8807 6.11929 17 7.5 17H13.7324C13.3866 17.5978 12.7403 18 12 18H7.5C5.567 18 4 16.433 4 14.5V6.00001Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt;&lt;/button&gt;&lt;div class="pointer-events-none absolute -top-12 start-1/2 z-40 [transform:translateX(-50%)] rtl:[transform:translateX(50%)]"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative"&gt;&lt;button aria-label="Download table" class="relative flex items-center text-foreground-800 fill-foreground-800 active:text-foreground-600 active:fill-foreground-600 dark:active:text-foreground-650 dark:active:fill-foreground-650 bg-transparent safe-hover:bg-black/5 active:bg-black/3 dark:safe-hover:bg-white/8 dark:active:bg-white/5 text-sm justify-center size-9 rounded-xl after:rounded-xl after:absolute after:inset-0 after:pointer-events-none after:border after:border-transparent after:contrast-more:border-2 outline-2 outline-offset-1 focus-visible:z-[1] focus-visible:outline focus-visible:outline-stroke-900 forced-colors:transition-none forced-colors:safe-hover:!bg-[Highlight] forced-colors:safe-hover:!text-[HighlightText] forced-colors:safe-hover:!fill-[HighlightText] forced-colors:active:!bg-[Highlight] forced-colors:active:!text-[HighlightText] forced-colors:active:!fill-[HighlightText]" data-spatial-navigation-autofocus="false" data-testid="download-table-button" data-tooltip-state="closed" type="button"&gt;&lt;div style="opacity: 1;"&gt;&lt;svg class="size-5" fill="currentColor" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M18.2498 20.5009C18.664 20.5008 19 20.8365 19 21.2507C19 21.6649 18.6644 22.0008 18.2502 22.0009L5.25022 22.0047C4.836 22.0048 4.5 21.6691 4.5 21.2549C4.5 20.8407 4.83557 20.5048 5.24978 20.5047L18.2498 20.5009ZM11.6482 2.01271L11.75 2.00586C12.1297 2.00586 12.4435 2.28801 12.4932 2.65409L12.5 2.75586L12.499 16.4409L16.2208 12.7205C16.4871 12.4543 16.9038 12.4301 17.1974 12.648L17.2815 12.7206C17.5477 12.9869 17.5719 13.4036 17.354 13.6972L17.2814 13.7813L12.2837 18.7779C12.0176 19.044 11.6012 19.0683 11.3076 18.8507L11.2235 18.7782L6.22003 13.7816C5.92694 13.4889 5.92661 13.014 6.21931 12.7209C6.48539 12.4545 6.90204 12.43 7.1958 12.6477L7.27997 12.7202L10.999 16.4339L11 2.75586C11 2.37616 11.2822 2.06237 11.6482 2.01271L11.75 2.00586L11.6482 2.01271Z" fill="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt;&lt;/button&gt;&lt;div class="pointer-events-none absolute -top-12 start-1/2 z-40 [transform:translateX(-50%)] rtl:[transform:translateX(50%)]"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;⚠️ Key Considerations&lt;/h2&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Security&lt;/strong&gt;: Use managed identities instead of raw API keys for production.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Costs&lt;/strong&gt;: ACA Session Pools scale automatically; monitor usage to avoid overruns.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Extensibility&lt;/strong&gt;: MCP plugins allow integration with external systems (GitHub, restaurant booking, etc.).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Best Practice&lt;/strong&gt;: Start with Foundry playground for prototyping, then move to code-first with AutoGen + Semantic Kernel for production.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;div class="space-y-3 mt-3"&gt;&lt;div class="group/ai-message-item space-y-3 break-words" id="qyQWc5muYiWhkB9mNmHCa-content-0"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Let’s walk through a &lt;strong&gt;hands-on Azure Foundry SDK example&lt;/strong&gt; that mirrors the workshop but uses the new &lt;strong&gt;Agent Service&lt;/strong&gt; (AutoGen + Semantic Kernel unified).&lt;/span&gt;&lt;/p&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128736;️ Example: Creating and Running Agents in Azure Foundry&lt;/h2&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;Step 1: Install SDK&lt;/h3&gt;&lt;div class="rounded-xl dark:border dark:border-stroke-250" style="opacity: 1;"&gt;&lt;div class="flex w-full items-center justify-between border-b border-white/20 bg-background-static-850 py-2 pe-2.5 ps-4 text-foreground-static-250 text-sm dark:border-stroke-250 dark:bg-background-static-900 rounded-t-xl"&gt;&lt;div class="flex items-center gap-2"&gt;&lt;span class="capitalize"&gt;bash&lt;/span&gt;&lt;button aria-expanded="true" class="relative min-h-9 min-w-9 rounded-xl bg-transparent p-2 hover:bg-white/8 active:bg-white/5" title="Collapse code snippet" type="button"&gt;&lt;svg class="size-4 transition-transform -rotate-90" fill="currentColor" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M8.46967 4.21967C8.17678 4.51256 8.17678 4.98744 8.46967 5.28033L15.1893 12L8.46967 18.7197C8.17678 19.0126 8.17678 19.4874 8.46967 19.7803C8.76256 20.0732 9.23744 20.0732 9.53033 19.7803L16.7803 12.5303C17.0732 12.2374 17.0732 11.7626 16.7803 11.4697L9.53033 4.21967C9.23744 3.92678 8.76256 3.92678 8.46967 4.21967Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class="flex items-center gap-2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="rounded-b-xl bg-background-static-850 px-4 pb-1.5 dark:bg-background-static-900"&gt;&lt;div class="horizontal-scrollbar overflow-x-auto whitespace-pre pb-3 pt-4 text-sm"&gt;&lt;pre&gt;&lt;code class="font-ligatures-none text-sm"&gt;&lt;span animate="end" custom="0.252" initial="start" variants="[object Object]"&gt;pip &lt;/span&gt;&lt;span animate="end" custom="0.258" initial="start" variants="[object Object]"&gt;install &lt;/span&gt;&lt;span animate="end" custom="0.264" initial="start" variants="[object Object]"&gt;azure-ai-agents
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;Step 2: Define Agents in Python&lt;/h3&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Here we create two agents — one for &lt;strong&gt;policy Q&amp;amp;A&lt;/strong&gt; (file search tool) and one for &lt;strong&gt;data analysis&lt;/strong&gt; (code interpreter).&lt;/span&gt;&lt;/p&gt;&lt;div class="rounded-xl dark:border dark:border-stroke-250" style="opacity: 1;"&gt;&lt;div class="flex w-full items-center justify-between border-b border-white/20 bg-background-static-850 py-2 pe-2.5 ps-4 text-foreground-static-250 text-sm dark:border-stroke-250 dark:bg-background-static-900 rounded-t-xl"&gt;&lt;div class="flex items-center gap-2"&gt;&lt;span class="capitalize"&gt;python&lt;/span&gt;&lt;button aria-expanded="true" class="relative min-h-9 min-w-9 rounded-xl bg-transparent p-2 hover:bg-white/8 active:bg-white/5" title="Collapse code snippet" type="button"&gt;&lt;svg class="size-4 transition-transform -rotate-90" fill="currentColor" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M8.46967 4.21967C8.17678 4.51256 8.17678 4.98744 8.46967 5.28033L15.1893 12L8.46967 18.7197C8.17678 19.0126 8.17678 19.4874 8.46967 19.7803C8.76256 20.0732 9.23744 20.0732 9.53033 19.7803L16.7803 12.5303C17.0732 12.2374 17.0732 11.7626 16.7803 11.4697L9.53033 4.21967C9.23744 3.92678 8.76256 3.92678 8.46967 4.21967Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class="flex items-center gap-2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="rounded-b-xl bg-background-static-850 px-4 pb-1.5 dark:bg-background-static-900"&gt;&lt;div class="horizontal-scrollbar overflow-x-auto whitespace-pre pb-3 pt-4 text-sm"&gt;&lt;pre&gt;&lt;code class="font-ligatures-none text-sm"&gt;&lt;span animate="end" custom="0.444" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.45" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="0.456" initial="start" variants="[object Object]"&gt;azure.ai.agents &lt;/span&gt;&lt;span animate="end" custom="0.462" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.468" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="0.474" initial="start" variants="[object Object]"&gt;AgentsClient
&lt;/span&gt;&lt;span animate="end" custom="0.48" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.486" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="0.492" initial="start" variants="[object Object]"&gt;azure.identity &lt;/span&gt;&lt;span animate="end" custom="0.498" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.504" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="0.51" initial="start" variants="[object Object]"&gt;DefaultAzureCredential

&lt;/span&gt;&lt;span animate="end" custom="0.516" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Connect to Azure Foundry project&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.522" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="0.528" initial="start" variants="[object Object]"&gt;client &lt;/span&gt;&lt;span animate="end" custom="0.534" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="0.54" initial="start" variants="[object Object]"&gt;AgentsClient(
    &lt;/span&gt;&lt;span animate="end" custom="0.546" initial="start" variants="[object Object]"&gt;endpoint=&lt;/span&gt;&lt;span animate="end" custom="0.552" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"https://&amp;lt;your-foundry-project&amp;gt;.api.azure.com"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.558" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="0.564" initial="start" variants="[object Object]"&gt;credential=DefaultAzureCredential()
&lt;/span&gt;&lt;span animate="end" custom="0.57" initial="start" variants="[object Object]"&gt;)

&lt;/span&gt;&lt;span animate="end" custom="0.576" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Create Policy Agent with File Search&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.582" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="0.588" initial="start" variants="[object Object]"&gt;policy_agent &lt;/span&gt;&lt;span animate="end" custom="0.594" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="0.6" initial="start" variants="[object Object]"&gt;client.agents.create(
    &lt;/span&gt;&lt;span animate="end" custom="0.606" initial="start" variants="[object Object]"&gt;name=&lt;/span&gt;&lt;span animate="end" custom="0.612" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"PolicyAgent"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.618" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="0.624" initial="start" variants="[object Object]"&gt;model=&lt;/span&gt;&lt;span animate="end" custom="0.63" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"gpt-4o"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.636" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="0.642" initial="start" variants="[object Object]"&gt;tools=[{&lt;/span&gt;&lt;span animate="end" custom="0.648" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"type"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.654" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="0.66" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"file_search"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.666" initial="start" variants="[object Object]"&gt;, &lt;/span&gt;&lt;span animate="end" custom="0.672" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"files"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.678" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="0.684" initial="start" variants="[object Object]"&gt;[&lt;/span&gt;&lt;span animate="end" custom="0.69" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"contoso_policy.pdf"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.696" initial="start" variants="[object Object]"&gt;]}],
    &lt;/span&gt;&lt;span animate="end" custom="0.702" initial="start" variants="[object Object]"&gt;instructions=&lt;/span&gt;&lt;span animate="end" custom="0.708" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Answer questions strictly from Contoso policy document."&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.714" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="0.72" initial="start" variants="[object Object]"&gt;)

&lt;/span&gt;&lt;span animate="end" custom="0.726" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Create Data Agent with Code Interpreter&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.732" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="0.738" initial="start" variants="[object Object]"&gt;data_agent &lt;/span&gt;&lt;span animate="end" custom="0.744" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="0.75" initial="start" variants="[object Object]"&gt;client.agents.create(
    &lt;/span&gt;&lt;span animate="end" custom="0.756" initial="start" variants="[object Object]"&gt;name=&lt;/span&gt;&lt;span animate="end" custom="0.762" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"DataAgent"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.768" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="0.774" initial="start" variants="[object Object]"&gt;model=&lt;/span&gt;&lt;span animate="end" custom="0.78" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"gpt-4o"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.786" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="0.792" initial="start" variants="[object Object]"&gt;tools=[{&lt;/span&gt;&lt;span animate="end" custom="0.798" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"type"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.804" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="0.81" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"code_interpreter"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.816" initial="start" variants="[object Object]"&gt;, &lt;/span&gt;&lt;span animate="end" custom="0.822" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"files"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.828" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="0.834" initial="start" variants="[object Object]"&gt;[&lt;/span&gt;&lt;span animate="end" custom="0.84" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"sales_data.csv"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.846" initial="start" variants="[object Object]"&gt;]}],
    &lt;/span&gt;&lt;span animate="end" custom="0.852" initial="start" variants="[object Object]"&gt;instructions=&lt;/span&gt;&lt;span animate="end" custom="0.858" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Analyze sales data and provide insights."&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.864" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="0.87" initial="start" variants="[object Object]"&gt;)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;Step 3: Orchestrate with AutoGen Group Chat&lt;/h3&gt;&lt;div class="rounded-xl dark:border dark:border-stroke-250" style="opacity: 1;"&gt;&lt;div class="flex w-full items-center justify-between border-b border-white/20 bg-background-static-850 py-2 pe-2.5 ps-4 text-foreground-static-250 text-sm dark:border-stroke-250 dark:bg-background-static-900 rounded-t-xl"&gt;&lt;div class="flex items-center gap-2"&gt;&lt;span class="capitalize"&gt;python&lt;/span&gt;&lt;button aria-expanded="true" class="relative min-h-9 min-w-9 rounded-xl bg-transparent p-2 hover:bg-white/8 active:bg-white/5" title="Collapse code snippet" type="button"&gt;&lt;svg class="size-4 transition-transform -rotate-90" fill="currentColor" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M8.46967 4.21967C8.17678 4.51256 8.17678 4.98744 8.46967 5.28033L15.1893 12L8.46967 18.7197C8.17678 19.0126 8.17678 19.4874 8.46967 19.7803C8.76256 20.0732 9.23744 20.0732 9.53033 19.7803L16.7803 12.5303C17.0732 12.2374 17.0732 11.7626 16.7803 11.4697L9.53033 4.21967C9.23744 3.92678 8.76256 3.92678 8.46967 4.21967Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class="flex items-center gap-2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="rounded-b-xl bg-background-static-850 px-4 pb-1.5 dark:bg-background-static-900"&gt;&lt;div class="horizontal-scrollbar overflow-x-auto whitespace-pre pb-3 pt-4 text-sm"&gt;&lt;pre&gt;&lt;code class="font-ligatures-none text-sm"&gt;&lt;span animate="end" custom="0.924" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.93" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="0.936" initial="start" variants="[object Object]"&gt;autogen &lt;/span&gt;&lt;span animate="end" custom="0.942" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.948" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="0.954" initial="start" variants="[object Object]"&gt;RoundRobinGroupChat

&lt;/span&gt;&lt;span animate="end" custom="0.96" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Combine agents into a group chat&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.966" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="0.972" initial="start" variants="[object Object]"&gt;team &lt;/span&gt;&lt;span animate="end" custom="0.978" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="0.984" initial="start" variants="[object Object]"&gt;RoundRobinGroupChat([policy_agent, &lt;/span&gt;&lt;span animate="end" custom="0.99" initial="start" variants="[object Object]"&gt;data_agent])

&lt;/span&gt;&lt;span animate="end" custom="0.996" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Run a query across both agents&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.002" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="1.008" initial="start" variants="[object Object]"&gt;response &lt;/span&gt;&lt;span animate="end" custom="1.014" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="1.02" initial="start" variants="[object Object]"&gt;team.run(&lt;/span&gt;&lt;span animate="end" custom="1.026" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Summarize return guidelines and top 5 selling products."&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.032" initial="start" variants="[object Object]"&gt;)
&lt;/span&gt;&lt;span animate="end" custom="1.038" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-built_in"&gt;print&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.044" initial="start" variants="[object Object]"&gt;(response)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;Step 4: Execution in Azure Container Apps&lt;/h3&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;The &lt;strong&gt;Code Interpreter&lt;/strong&gt; runs securely in ACA Session Pools.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;The &lt;strong&gt;File Search&lt;/strong&gt; tool indexes PDFs and responds with grounded answers.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Results are merged into a single structured response.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128202; Why This Matters&lt;/h2&gt;&lt;div class="max-w-full"&gt;&lt;div class="relative max-w-full"&gt;&lt;div aria-label="Scrollable table" class="horizontal-scrollbar font-ligatures-none mt-6 max-w-full overflow-x-auto rounded-lg bg-white/25 outline-2 outline-offset-1 focus-visible:outline focus-visible:outline-stroke-900 dark:bg-black/25" role="group" tabindex="0"&gt;&lt;table class="t-table" style="border-spacing: 0px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;Feature&lt;/strong&gt;&lt;/th&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;Old Workflow&lt;/strong&gt;&lt;/th&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;New Foundry Workflow&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Setup&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Manual infra, local scripts&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Managed Agent Service&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Tools&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Custom-coded&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Built-in File Search + Code Interpreter&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Scaling&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Developer-managed&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Auto-scaled ACA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Extensibility&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Limited&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Semantic Kernel plugins (MCP, GitHub, APIs)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="pointer-events-none absolute inset-0 rounded-lg border border-stroke-300 dark:border-stroke-450"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="mt-3 flex items-center gap-1"&gt;&lt;div class="relative"&gt;&lt;button aria-label="Copy table" class="relative flex items-center text-foreground-800 fill-foreground-800 active:text-foreground-600 active:fill-foreground-600 dark:active:text-foreground-650 dark:active:fill-foreground-650 bg-transparent safe-hover:bg-black/5 active:bg-black/3 dark:safe-hover:bg-white/8 dark:active:bg-white/5 text-sm justify-center size-9 rounded-xl after:rounded-xl after:absolute after:inset-0 after:pointer-events-none after:border after:border-transparent after:contrast-more:border-2 outline-2 outline-offset-1 focus-visible:z-[1] focus-visible:outline focus-visible:outline-stroke-900 forced-colors:transition-none forced-colors:safe-hover:!bg-[Highlight] forced-colors:safe-hover:!text-[HighlightText] forced-colors:safe-hover:!fill-[HighlightText] forced-colors:active:!bg-[Highlight] forced-colors:active:!text-[HighlightText] forced-colors:active:!fill-[HighlightText]" data-spatial-navigation-autofocus="false" data-testid="copy-table-button" data-tooltip-state="closed" type="button"&gt;&lt;div style="opacity: 1;"&gt;&lt;svg class="size-5" fill="currentColor" viewbox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M8 2C6.89543 2 6 2.89543 6 4V14C6 15.1046 6.89543 16 8 16H14C15.1046 16 16 15.1046 16 14V4C16 2.89543 15.1046 2 14 2H8ZM7 4C7 3.44772 7.44772 3 8 3H14C14.5523 3 15 3.44772 15 4V14C15 14.5523 14.5523 15 14 15H8C7.44772 15 7 14.5523 7 14V4ZM4 6.00001C4 5.25973 4.4022 4.61339 5 4.26758V14.5C5 15.8807 6.11929 17 7.5 17H13.7324C13.3866 17.5978 12.7403 18 12 18H7.5C5.567 18 4 16.433 4 14.5V6.00001Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt;&lt;/button&gt;&lt;div class="pointer-events-none absolute -top-12 start-1/2 z-40 [transform:translateX(-50%)] rtl:[transform:translateX(50%)]"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative"&gt;&lt;button aria-label="Download table" class="relative flex items-center text-foreground-800 fill-foreground-800 active:text-foreground-600 active:fill-foreground-600 dark:active:text-foreground-650 dark:active:fill-foreground-650 bg-transparent safe-hover:bg-black/5 active:bg-black/3 dark:safe-hover:bg-white/8 dark:active:bg-white/5 text-sm justify-center size-9 rounded-xl after:rounded-xl after:absolute after:inset-0 after:pointer-events-none after:border after:border-transparent after:contrast-more:border-2 outline-2 outline-offset-1 focus-visible:z-[1] focus-visible:outline focus-visible:outline-stroke-900 forced-colors:transition-none forced-colors:safe-hover:!bg-[Highlight] forced-colors:safe-hover:!text-[HighlightText] forced-colors:safe-hover:!fill-[HighlightText] forced-colors:active:!bg-[Highlight] forced-colors:active:!text-[HighlightText] forced-colors:active:!fill-[HighlightText]" data-spatial-navigation-autofocus="false" data-testid="download-table-button" data-tooltip-state="closed" type="button"&gt;&lt;div style="opacity: 1;"&gt;&lt;svg class="size-5" fill="currentColor" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M18.2498 20.5009C18.664 20.5008 19 20.8365 19 21.2507C19 21.6649 18.6644 22.0008 18.2502 22.0009L5.25022 22.0047C4.836 22.0048 4.5 21.6691 4.5 21.2549C4.5 20.8407 4.83557 20.5048 5.24978 20.5047L18.2498 20.5009ZM11.6482 2.01271L11.75 2.00586C12.1297 2.00586 12.4435 2.28801 12.4932 2.65409L12.5 2.75586L12.499 16.4409L16.2208 12.7205C16.4871 12.4543 16.9038 12.4301 17.1974 12.648L17.2815 12.7206C17.5477 12.9869 17.5719 13.4036 17.354 13.6972L17.2814 13.7813L12.2837 18.7779C12.0176 19.044 11.6012 19.0683 11.3076 18.8507L11.2235 18.7782L6.22003 13.7816C5.92694 13.4889 5.92661 13.014 6.21931 12.7209C6.48539 12.4545 6.90204 12.43 7.1958 12.6477L7.27997 12.7202L10.999 16.4339L11 2.75586C11 2.37616 11.2822 2.06237 11.6482 2.01271L11.75 2.00586L11.6482 2.01271Z" fill="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt;&lt;/button&gt;&lt;div class="pointer-events-none absolute -top-12 start-1/2 z-40 [transform:translateX(-50%)] rtl:[transform:translateX(50%)]"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128302; Next Steps&lt;/h2&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;You can extend this by:&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Adding a &lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_GitHub_MCP_plugin" role="button" tabindex="0"&gt;GitHub MCP plugin&lt;/span&gt;&lt;/strong&gt; for issue tracking.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Using &lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_Semantic_Kernel_memory" role="button" tabindex="0"&gt;Semantic Kernel memory&lt;/span&gt;&lt;/strong&gt; to persist context across sessions.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Deploying the workflow with &lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_azd_templates" role="button" tabindex="0"&gt;azd templates&lt;/span&gt;&lt;/strong&gt; for production readiness.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;div class="space-y-3 mt-3"&gt;&lt;div class="group/ai-message-item space-y-3 break-words" id="zE9UnXZPMtqpcPtWeXKcx-content-0"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Great — let’s design a &lt;strong&gt;multi‑agent architecture&lt;/strong&gt; that combines &lt;strong&gt;Azure Foundry&lt;/strong&gt;, &lt;strong&gt;Foundry IQ&lt;/strong&gt;, and &lt;strong&gt;Microsoft Fabric&lt;/strong&gt; into a unified pipeline. This mirrors the GitHub workshop but extends it with &lt;strong&gt;data ingestion, orchestration, and agent services&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#127959;️ End‑to‑End Flow with Foundry + Fabric&lt;/h2&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;1. &lt;strong&gt;Data Ingestion (Fabric)&lt;/strong&gt;&lt;/h3&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Use &lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_Microsoft_Fabric" role="button" tabindex="0"&gt;Microsoft Fabric&lt;/span&gt;&lt;/strong&gt; to ingest structured and unstructured data:&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Sales CSVs → Lakehouse tables.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Policy PDFs → OneLake + Indexing.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;IoT/real estate feeds → Eventstream pipelines.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Fabric pipelines clean, transform, and store data in a unified lakehouse.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;2. &lt;strong&gt;Agent Creation (Foundry IQ)&lt;/strong&gt;&lt;/h3&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;In &lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_Azure_AI_Foundry" role="button" tabindex="0"&gt;Azure AI Foundry&lt;/span&gt;&lt;/strong&gt;, define agents declaratively:&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Policy Agent&lt;/strong&gt; → File Search tool bound to Fabric OneLake PDF index.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Data Agent&lt;/strong&gt; → Code Interpreter tool bound to Fabric Lakehouse CSV.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Market Agent&lt;/strong&gt; → Semantic Kernel plugin for external APIs (e.g., property prices, GitHub MCP).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;3. &lt;strong&gt;Agent Orchestration (AutoGen + Semantic Kernel)&lt;/strong&gt;&lt;/h3&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_AutoGen_framework" role="button" tabindex="0"&gt;AutoGen&lt;/span&gt;&lt;/strong&gt; coordinates multi‑agent conversations.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_Semantic_Kernel" role="button" tabindex="0"&gt;Semantic Kernel&lt;/span&gt;&lt;/strong&gt; adds:&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Memory (persist context across sessions).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Plugins (MCP connectors for external systems).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Agents run in &lt;strong&gt;Azure Container Apps Session Pools&lt;/strong&gt; for secure execution.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;4. &lt;strong&gt;Deployment &amp;amp; Scaling&lt;/strong&gt;&lt;/h3&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Deploy via &lt;strong&gt;azd templates&lt;/strong&gt; → auto‑provision ACA, Foundry endpoints, Fabric pipelines.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Scale automatically with ACA pools; monitor via Foundry IQ dashboards.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128202; Example Workflow&lt;/h2&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;User Query:&lt;/strong&gt;  
“Summarize Contoso return guidelines and top 5 selling products in Kochi.”&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Execution Path:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-5 marker:normal-nums marker:text-sm-strong" role="list" start="1"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Fabric ingests &lt;strong&gt;policy PDF&lt;/strong&gt; + &lt;strong&gt;sales CSV&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Policy Agent (File Search) → extracts return guidelines.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Data Agent (Code Interpreter) → runs Python on sales CSV, outputs top 5 products.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Market Agent (Semantic Kernel plugin) → enriches with Kochi property market context.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;AutoGen orchestrates → merges responses into a single structured answer.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128302; Architecture Diagram (Conceptual)&lt;/h2&gt;&lt;div class="rounded-xl dark:border dark:border-stroke-250" style="opacity: 1;"&gt;&lt;div class="flex w-full items-center justify-between border-b border-white/20 bg-background-static-850 py-2 pe-2.5 ps-4 text-foreground-static-250 text-sm dark:border-stroke-250 dark:bg-background-static-900 rounded-t-xl"&gt;&lt;div class="flex items-center gap-2"&gt;&lt;span class="capitalize"&gt;Code&lt;/span&gt;&lt;button aria-expanded="true" class="relative min-h-9 min-w-9 rounded-xl bg-transparent p-2 hover:bg-white/8 active:bg-white/5" title="Collapse code snippet" type="button"&gt;&lt;svg class="size-4 transition-transform -rotate-90" fill="currentColor" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M8.46967 4.21967C8.17678 4.51256 8.17678 4.98744 8.46967 5.28033L15.1893 12L8.46967 18.7197C8.17678 19.0126 8.17678 19.4874 8.46967 19.7803C8.76256 20.0732 9.23744 20.0732 9.53033 19.7803L16.7803 12.5303C17.0732 12.2374 17.0732 11.7626 16.7803 11.4697L9.53033 4.21967C9.23744 3.92678 8.76256 3.92678 8.46967 4.21967Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class="flex items-center gap-2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="rounded-b-xl bg-background-static-850 px-4 pb-1.5 dark:bg-background-static-900"&gt;&lt;div class="horizontal-scrollbar overflow-x-auto whitespace-pre pb-3 pt-4 text-sm"&gt;&lt;pre&gt;&lt;code class="font-ligatures-none text-sm"&gt;Fabric Pipelines → OneLake (PDF, CSV, IoT)
       ↓
Azure Foundry IQ → Agent Service (Policy, Data, Market Agents)
       ↓
AutoGen Orchestration + Semantic Kernel Plugins
       ↓
Azure Container Apps (execution, scaling)
       ↓
Unified Response (guidelines + analytics + market context)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128640; Next Steps&lt;/h2&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Prototype in &lt;strong&gt;Foundry Playground&lt;/strong&gt; → test File Search + Code Interpreter.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Connect Fabric Lakehouse via &lt;strong&gt;Semantic Kernel plugin&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Deploy with &lt;strong&gt;azd multi‑agent template&lt;/strong&gt; for production.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;div class="space-y-3 mt-3"&gt;&lt;div class="group/ai-message-item space-y-3 break-words" id="f2dVqxuEPmBLNvvxse2Ld-content-0"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;You’re absolutely right — the new &lt;strong&gt;Azure AI Agent Service&lt;/strong&gt; is now the recommended way to build multi‑agent systems in &lt;strong&gt;Azure Foundry&lt;/strong&gt;, and it replaces the older AutoGen + Semantic Kernel orchestration. Let’s design a concrete example that uses &lt;strong&gt;Foundry + Foundry IQ + Fabric&lt;/strong&gt; together, end‑to‑end.&lt;/span&gt;&lt;/p&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#127959;️ End‑to‑End Architecture&lt;/h2&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;1. &lt;strong&gt;Data Layer (Fabric)&lt;/strong&gt;&lt;/h3&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_Microsoft_Fabric" role="button" tabindex="0"&gt;Microsoft Fabric&lt;/span&gt;&lt;/strong&gt; handles ingestion and transformation:&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;PDFs (policies, contracts) → stored in &lt;strong&gt;OneLake&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;CSVs (sales, IoT data) → ingested into &lt;strong&gt;Lakehouse&lt;/strong&gt; tables.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Streaming feeds → processed via &lt;strong&gt;Eventstream&lt;/strong&gt; pipelines.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;2. &lt;strong&gt;Agent Layer (Foundry IQ + Agent Service)&lt;/strong&gt;&lt;/h3&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;In &lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_Azure_AI_Foundry" role="button" tabindex="0"&gt;Azure AI Foundry&lt;/span&gt;&lt;/strong&gt;, you define agents declaratively:&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Policy Agent&lt;/strong&gt; → File Search tool bound to Fabric OneLake PDFs.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Data Agent&lt;/strong&gt; → Code Interpreter tool bound to Fabric Lakehouse CSVs.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Market Agent&lt;/strong&gt; → External API plugin (property prices, weather, etc.).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;These agents are deployed and managed by the &lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Azure_AI_Agent_Service" role="button" tabindex="0"&gt;Azure AI Agent Service&lt;/span&gt;&lt;/strong&gt;, which handles scaling, execution, and secure environments.&lt;/span&gt;&lt;/p&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;3. &lt;strong&gt;Orchestration (Foundry IQ)&lt;/strong&gt;&lt;/h3&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Foundry IQ provides &lt;strong&gt;multi‑agent orchestration&lt;/strong&gt;:&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Define workflows declaratively (YAML or SDK).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Agents collaborate in a managed group chat.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Termination conditions and role assignments are built‑in.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;4. &lt;strong&gt;Deployment&lt;/strong&gt;&lt;/h3&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Deploy via &lt;strong&gt;azd templates&lt;/strong&gt; → automatically provisions:&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;ACA Session Pools for execution.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Foundry endpoints for agents.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Fabric pipelines for ingestion.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128640; Example Workflow&lt;/h2&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;User Query:&lt;/strong&gt;  
“Summarize Contoso return guidelines and top 5 selling products in Kochi.”&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Execution Path:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-5 marker:normal-nums marker:text-sm-strong" role="list" start="1"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Fabric pipeline ingests &lt;strong&gt;policy PDF&lt;/strong&gt; + &lt;strong&gt;sales CSV&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Policy Agent (File Search) → extracts return guidelines.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Data Agent (Code Interpreter) → runs Python on sales CSV, outputs top 5 products.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Market Agent (API plugin) → enriches with Kochi property market context.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Foundry IQ orchestrates → merges responses into a single structured answer.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128202; Notebook‑Style Example (Python SDK)&lt;/h2&gt;&lt;div class="rounded-xl dark:border dark:border-stroke-250" style="opacity: 1;"&gt;&lt;div class="flex w-full items-center justify-between border-b border-white/20 bg-background-static-850 py-2 pe-2.5 ps-4 text-foreground-static-250 text-sm dark:border-stroke-250 dark:bg-background-static-900 rounded-t-xl"&gt;&lt;div class="flex items-center gap-2"&gt;&lt;span class="capitalize"&gt;python&lt;/span&gt;&lt;button aria-expanded="true" class="relative min-h-9 min-w-9 rounded-xl bg-transparent p-2 hover:bg-white/8 active:bg-white/5" title="Collapse code snippet" type="button"&gt;&lt;svg class="size-4 transition-transform -rotate-90" fill="currentColor" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M8.46967 4.21967C8.17678 4.51256 8.17678 4.98744 8.46967 5.28033L15.1893 12L8.46967 18.7197C8.17678 19.0126 8.17678 19.4874 8.46967 19.7803C8.76256 20.0732 9.23744 20.0732 9.53033 19.7803L16.7803 12.5303C17.0732 12.2374 17.0732 11.7626 16.7803 11.4697L9.53033 4.21967C9.23744 3.92678 8.76256 3.92678 8.46967 4.21967Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class="flex items-center gap-2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="rounded-b-xl bg-background-static-850 px-4 pb-1.5 dark:bg-background-static-900"&gt;&lt;div class="horizontal-scrollbar overflow-x-auto whitespace-pre pb-3 pt-4 text-sm"&gt;&lt;pre&gt;&lt;code class="font-ligatures-none text-sm"&gt;&lt;span animate="end" custom="1.746" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.752" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="1.758" initial="start" variants="[object Object]"&gt;azure.ai.agents &lt;/span&gt;&lt;span animate="end" custom="1.764" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.77" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="1.776" initial="start" variants="[object Object]"&gt;AgentsClient
&lt;/span&gt;&lt;span animate="end" custom="1.782" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.788" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="1.794" initial="start" variants="[object Object]"&gt;azure.identity &lt;/span&gt;&lt;span animate="end" custom="1.8" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.806" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="1.812" initial="start" variants="[object Object]"&gt;DefaultAzureCredential

&lt;/span&gt;&lt;span animate="end" custom="1.818" initial="start" variants="[object Object]"&gt;client &lt;/span&gt;&lt;span animate="end" custom="1.824" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="1.83" initial="start" variants="[object Object]"&gt;AgentsClient(
    &lt;/span&gt;&lt;span animate="end" custom="1.836" initial="start" variants="[object Object]"&gt;endpoint=&lt;/span&gt;&lt;span animate="end" custom="1.842" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"https://&amp;lt;your-foundry-project&amp;gt;.api.azure.com"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.848" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="1.854" initial="start" variants="[object Object]"&gt;credential=DefaultAzureCredential()
&lt;/span&gt;&lt;span animate="end" custom="1.86" initial="start" variants="[object Object]"&gt;)

&lt;/span&gt;&lt;span animate="end" custom="1.866" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Policy Agent&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.872" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="1.878" initial="start" variants="[object Object]"&gt;policy_agent &lt;/span&gt;&lt;span animate="end" custom="1.884" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="1.89" initial="start" variants="[object Object]"&gt;client.agents.create(
    &lt;/span&gt;&lt;span animate="end" custom="1.896" initial="start" variants="[object Object]"&gt;name=&lt;/span&gt;&lt;span animate="end" custom="1.902" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"PolicyAgent"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.908" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="1.914" initial="start" variants="[object Object]"&gt;model=&lt;/span&gt;&lt;span animate="end" custom="1.92" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"gpt-4o"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.926" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="1.932" initial="start" variants="[object Object]"&gt;tools=[{&lt;/span&gt;&lt;span animate="end" custom="1.938" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"type"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.944" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="1.95" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"file_search"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.956" initial="start" variants="[object Object]"&gt;, &lt;/span&gt;&lt;span animate="end" custom="1.962" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"files"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.968" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="1.974" initial="start" variants="[object Object]"&gt;[&lt;/span&gt;&lt;span animate="end" custom="1.98" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"contoso_policy.pdf"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.986" initial="start" variants="[object Object]"&gt;]}],
    &lt;/span&gt;&lt;span animate="end" custom="1.992" initial="start" variants="[object Object]"&gt;instructions=&lt;/span&gt;&lt;span animate="end" custom="1.998" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Answer strictly from Contoso policy document."&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.004" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="2.01" initial="start" variants="[object Object]"&gt;)

&lt;/span&gt;&lt;span animate="end" custom="2.016" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Data Agent&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.022" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="2.028" initial="start" variants="[object Object]"&gt;data_agent &lt;/span&gt;&lt;span animate="end" custom="2.034" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="2.04" initial="start" variants="[object Object]"&gt;client.agents.create(
    &lt;/span&gt;&lt;span animate="end" custom="2.046" initial="start" variants="[object Object]"&gt;name=&lt;/span&gt;&lt;span animate="end" custom="2.052" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"DataAgent"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.058" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="2.064" initial="start" variants="[object Object]"&gt;model=&lt;/span&gt;&lt;span animate="end" custom="2.07" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"gpt-4o"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.076" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="2.082" initial="start" variants="[object Object]"&gt;tools=[{&lt;/span&gt;&lt;span animate="end" custom="2.088" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"type"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.094" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="2.1" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"code_interpreter"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.106" initial="start" variants="[object Object]"&gt;, &lt;/span&gt;&lt;span animate="end" custom="2.112" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"files"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.118" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="2.124" initial="start" variants="[object Object]"&gt;[&lt;/span&gt;&lt;span animate="end" custom="2.13" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"sales_data.csv"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.136" initial="start" variants="[object Object]"&gt;]}],
    &lt;/span&gt;&lt;span animate="end" custom="2.142" initial="start" variants="[object Object]"&gt;instructions=&lt;/span&gt;&lt;span animate="end" custom="2.148" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Analyze sales data and provide insights."&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.154" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="2.16" initial="start" variants="[object Object]"&gt;)

&lt;/span&gt;&lt;span animate="end" custom="2.166" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Market Agent&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.172" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="2.178" initial="start" variants="[object Object]"&gt;market_agent &lt;/span&gt;&lt;span animate="end" custom="2.184" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="2.19" initial="start" variants="[object Object]"&gt;client.agents.create(
    &lt;/span&gt;&lt;span animate="end" custom="2.196" initial="start" variants="[object Object]"&gt;name=&lt;/span&gt;&lt;span animate="end" custom="2.202" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"MarketAgent"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.208" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="2.214" initial="start" variants="[object Object]"&gt;model=&lt;/span&gt;&lt;span animate="end" custom="2.22" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"gpt-4o"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.226" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="2.232" initial="start" variants="[object Object]"&gt;tools=[{&lt;/span&gt;&lt;span animate="end" custom="2.238" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"type"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.244" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="2.25" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"api_plugin"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.256" initial="start" variants="[object Object]"&gt;, &lt;/span&gt;&lt;span animate="end" custom="2.262" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"endpoint"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.268" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="2.274" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"https://property-prices-kochi/api"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.28" initial="start" variants="[object Object]"&gt;}],
    &lt;/span&gt;&lt;span animate="end" custom="2.286" initial="start" variants="[object Object]"&gt;instructions=&lt;/span&gt;&lt;span animate="end" custom="2.292" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Provide Kochi property market context."&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.298" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="2.304" initial="start" variants="[object Object]"&gt;)

&lt;/span&gt;&lt;span animate="end" custom="2.31" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Orchestrate with Foundry IQ&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.316" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="2.322" initial="start" variants="[object Object]"&gt;workflow &lt;/span&gt;&lt;span animate="end" custom="2.328" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="2.334" initial="start" variants="[object Object]"&gt;client.workflows.create(
    &lt;/span&gt;&lt;span animate="end" custom="2.34" initial="start" variants="[object Object]"&gt;name=&lt;/span&gt;&lt;span animate="end" custom="2.346" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"SalesPolicyWorkflow"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.352" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="2.358" initial="start" variants="[object Object]"&gt;agents=[policy_agent, &lt;/span&gt;&lt;span animate="end" custom="2.364" initial="start" variants="[object Object]"&gt;data_agent, &lt;/span&gt;&lt;span animate="end" custom="2.37" initial="start" variants="[object Object]"&gt;market_agent]
&lt;/span&gt;&lt;span animate="end" custom="2.376" initial="start" variants="[object Object]"&gt;)

&lt;/span&gt;&lt;span animate="end" custom="2.382" initial="start" variants="[object Object]"&gt;response &lt;/span&gt;&lt;span animate="end" custom="2.388" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="2.394" initial="start" variants="[object Object]"&gt;workflow.run(&lt;/span&gt;&lt;span animate="end" custom="2.4" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Summarize return guidelines and top 5 selling products in Kochi."&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.406" initial="start" variants="[object Object]"&gt;)
&lt;/span&gt;&lt;span animate="end" custom="2.412" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-built_in"&gt;print&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="2.418" initial="start" variants="[object Object]"&gt;(response)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128302; Why This Matters&lt;/h2&gt;&lt;div class="max-w-full"&gt;&lt;div class="relative max-w-full"&gt;&lt;div aria-label="Scrollable table" class="horizontal-scrollbar font-ligatures-none mt-6 max-w-full overflow-x-auto rounded-lg bg-white/25 outline-2 outline-offset-1 focus-visible:outline focus-visible:outline-stroke-900 dark:bg-black/25" role="group" tabindex="0"&gt;&lt;table class="t-table" style="border-spacing: 0px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;Feature&lt;/strong&gt;&lt;/th&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;Old (AutoGen/SK)&lt;/strong&gt;&lt;/th&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;New (Agent Service)&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Setup&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Manual orchestration&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Declarative workflows in Foundry IQ&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Tools&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Custom-coded&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Built-in File Search, Code Interpreter, API plugins&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Scaling&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Developer-managed&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Auto-scaled ACA pools&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Integration&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Limited&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Fabric pipelines + OneLake + external APIs&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="pointer-events-none absolute inset-0 rounded-lg border border-stroke-300 dark:border-stroke-450"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="mt-3 flex items-center gap-1"&gt;&lt;div class="relative"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="space-y-3 mt-3"&gt;&lt;div class="group/ai-message-item space-y-3 break-words" id="aEyrsPswgeTsQAuLo3qVk-content-0"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Excellent — let’s build a &lt;strong&gt;full workshop‑style notebook flow&lt;/strong&gt; that combines &lt;strong&gt;Azure Foundry&lt;/strong&gt;, &lt;strong&gt;Foundry IQ&lt;/strong&gt;, and &lt;strong&gt;Microsoft Fabric&lt;/strong&gt;. This mirrors the GitHub multi‑agent workshop but uses the &lt;strong&gt;new Agent Service&lt;/strong&gt; instead of AutoGen/Semantic Kernel.&lt;/span&gt;&lt;/p&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#127959;️ Architecture Overview&lt;/h2&gt;&lt;ol class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-5 marker:normal-nums marker:text-sm-strong" role="list" start="1"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Fabric Pipelines&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Ingest PDFs (policies), CSVs (sales data), and streaming feeds.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Store them in &lt;strong&gt;OneLake&lt;/strong&gt; (for documents) and &lt;strong&gt;Lakehouse&lt;/strong&gt; (for tabular data).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Foundry IQ&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Define agents declaratively.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Attach tools like File Search, Code Interpreter, or API plugins.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Orchestrate multi‑agent workflows with built‑in collaboration logic.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Azure AI Agent Service&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Runs agents securely in &lt;strong&gt;Azure Container Apps Session Pools&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Handles scaling, execution, and environment isolation.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128211; Notebook‑Style Walkthrough&lt;/h2&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;Step 1: Fabric Data Ingestion&lt;/h3&gt;&lt;div class="rounded-xl dark:border dark:border-stroke-250" style="opacity: 1;"&gt;&lt;div class="flex w-full items-center justify-between border-b border-white/20 bg-background-static-850 py-2 pe-2.5 ps-4 text-foreground-static-250 text-sm dark:border-stroke-250 dark:bg-background-static-900 rounded-t-xl"&gt;&lt;div class="flex items-center gap-2"&gt;&lt;span class="capitalize"&gt;python&lt;/span&gt;&lt;button aria-expanded="true" class="relative min-h-9 min-w-9 rounded-xl bg-transparent p-2 hover:bg-white/8 active:bg-white/5" title="Collapse code snippet" type="button"&gt;&lt;svg class="size-4 transition-transform -rotate-90" fill="currentColor" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M8.46967 4.21967C8.17678 4.51256 8.17678 4.98744 8.46967 5.28033L15.1893 12L8.46967 18.7197C8.17678 19.0126 8.17678 19.4874 8.46967 19.7803C8.76256 20.0732 9.23744 20.0732 9.53033 19.7803L16.7803 12.5303C17.0732 12.2374 17.0732 11.7626 16.7803 11.4697L9.53033 4.21967C9.23744 3.92678 8.76256 3.92678 8.46967 4.21967Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class="flex items-center gap-2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="rounded-b-xl bg-background-static-850 px-4 pb-1.5 dark:bg-background-static-900"&gt;&lt;div class="horizontal-scrollbar overflow-x-auto whitespace-pre pb-3 pt-4 text-sm"&gt;&lt;pre&gt;&lt;code class="font-ligatures-none text-sm"&gt;&lt;span animate="end" custom="0.678" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Example: Ingest sales CSV into Fabric Lakehouse&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.684" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="0.69" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.696" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="0.702" initial="start" variants="[object Object]"&gt;microsoft.fabric &lt;/span&gt;&lt;span animate="end" custom="0.708" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.714" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="0.72" initial="start" variants="[object Object]"&gt;LakehouseClient

&lt;/span&gt;&lt;span animate="end" custom="0.726" initial="start" variants="[object Object]"&gt;lakehouse &lt;/span&gt;&lt;span animate="end" custom="0.732" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="0.738" initial="start" variants="[object Object]"&gt;LakehouseClient(workspace=&lt;/span&gt;&lt;span animate="end" custom="0.744" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"ContosoWorkspace"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.75" initial="start" variants="[object Object]"&gt;)
&lt;/span&gt;&lt;span animate="end" custom="0.756" initial="start" variants="[object Object]"&gt;lakehouse.ingest_csv(&lt;/span&gt;&lt;span animate="end" custom="0.762" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"sales_data.csv"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.768" initial="start" variants="[object Object]"&gt;, &lt;/span&gt;&lt;span animate="end" custom="0.774" initial="start" variants="[object Object]"&gt;table_name=&lt;/span&gt;&lt;span animate="end" custom="0.78" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"SalesTable"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.786" initial="start" variants="[object Object]"&gt;)

&lt;/span&gt;&lt;span animate="end" custom="0.792" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Ingest policy PDF into OneLake&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.798" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="0.804" initial="start" variants="[object Object]"&gt;lakehouse.ingest_file(&lt;/span&gt;&lt;span animate="end" custom="0.81" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"contoso_policy.pdf"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.816" initial="start" variants="[object Object]"&gt;, &lt;/span&gt;&lt;span animate="end" custom="0.822" initial="start" variants="[object Object]"&gt;folder=&lt;/span&gt;&lt;span animate="end" custom="0.828" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Policies"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.834" initial="start" variants="[object Object]"&gt;)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;Step 2: Define Agents in Foundry&lt;/h3&gt;&lt;div class="rounded-xl dark:border dark:border-stroke-250" style="opacity: 1;"&gt;&lt;div class="flex w-full items-center justify-between border-b border-white/20 bg-background-static-850 py-2 pe-2.5 ps-4 text-foreground-static-250 text-sm dark:border-stroke-250 dark:bg-background-static-900 rounded-t-xl"&gt;&lt;div class="flex items-center gap-2"&gt;&lt;span class="capitalize"&gt;python&lt;/span&gt;&lt;button aria-expanded="true" class="relative min-h-9 min-w-9 rounded-xl bg-transparent p-2 hover:bg-white/8 active:bg-white/5" title="Collapse code snippet" type="button"&gt;&lt;svg class="size-4 transition-transform -rotate-90" fill="currentColor" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M8.46967 4.21967C8.17678 4.51256 8.17678 4.98744 8.46967 5.28033L15.1893 12L8.46967 18.7197C8.17678 19.0126 8.17678 19.4874 8.46967 19.7803C8.76256 20.0732 9.23744 20.0732 9.53033 19.7803L16.7803 12.5303C17.0732 12.2374 17.0732 11.7626 16.7803 11.4697L9.53033 4.21967C9.23744 3.92678 8.76256 3.92678 8.46967 4.21967Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class="flex items-center gap-2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="rounded-b-xl bg-background-static-850 px-4 pb-1.5 dark:bg-background-static-900"&gt;&lt;div class="horizontal-scrollbar overflow-x-auto whitespace-pre pb-3 pt-4 text-sm"&gt;&lt;pre&gt;&lt;code class="font-ligatures-none text-sm"&gt;&lt;span animate="end" custom="0.882" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.888" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="0.894" initial="start" variants="[object Object]"&gt;azure.ai.agents &lt;/span&gt;&lt;span animate="end" custom="0.9" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.906" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="0.912" initial="start" variants="[object Object]"&gt;AgentsClient
&lt;/span&gt;&lt;span animate="end" custom="0.918" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;from&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.924" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="0.93" initial="start" variants="[object Object]"&gt;azure.identity &lt;/span&gt;&lt;span animate="end" custom="0.936" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-keyword"&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.942" initial="start" variants="[object Object]"&gt; &lt;/span&gt;&lt;span animate="end" custom="0.948" initial="start" variants="[object Object]"&gt;DefaultAzureCredential

&lt;/span&gt;&lt;span animate="end" custom="0.954" initial="start" variants="[object Object]"&gt;client &lt;/span&gt;&lt;span animate="end" custom="0.96" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="0.966" initial="start" variants="[object Object]"&gt;AgentsClient(
    &lt;/span&gt;&lt;span animate="end" custom="0.972" initial="start" variants="[object Object]"&gt;endpoint=&lt;/span&gt;&lt;span animate="end" custom="0.978" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"https://&amp;lt;your-foundry-project&amp;gt;.api.azure.com"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="0.984" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="0.99" initial="start" variants="[object Object]"&gt;credential=DefaultAzureCredential()
&lt;/span&gt;&lt;span animate="end" custom="0.996" initial="start" variants="[object Object]"&gt;)

&lt;/span&gt;&lt;span animate="end" custom="1.002" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Policy Agent&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.008" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="1.014" initial="start" variants="[object Object]"&gt;policy_agent &lt;/span&gt;&lt;span animate="end" custom="1.02" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="1.026" initial="start" variants="[object Object]"&gt;client.agents.create(
    &lt;/span&gt;&lt;span animate="end" custom="1.032" initial="start" variants="[object Object]"&gt;name=&lt;/span&gt;&lt;span animate="end" custom="1.038" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"PolicyAgent"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.044" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="1.05" initial="start" variants="[object Object]"&gt;model=&lt;/span&gt;&lt;span animate="end" custom="1.056" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"gpt-4o"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.062" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="1.068" initial="start" variants="[object Object]"&gt;tools=[{&lt;/span&gt;&lt;span animate="end" custom="1.074" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"type"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.08" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="1.086" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"file_search"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.092" initial="start" variants="[object Object]"&gt;, &lt;/span&gt;&lt;span animate="end" custom="1.098" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"files"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.104" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="1.11" initial="start" variants="[object Object]"&gt;[&lt;/span&gt;&lt;span animate="end" custom="1.116" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"contoso_policy.pdf"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.122" initial="start" variants="[object Object]"&gt;]}],
    &lt;/span&gt;&lt;span animate="end" custom="1.128" initial="start" variants="[object Object]"&gt;instructions=&lt;/span&gt;&lt;span animate="end" custom="1.134" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Answer strictly from Contoso policy document."&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.14" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="1.146" initial="start" variants="[object Object]"&gt;)

&lt;/span&gt;&lt;span animate="end" custom="1.152" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Data Agent&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.158" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="1.164" initial="start" variants="[object Object]"&gt;data_agent &lt;/span&gt;&lt;span animate="end" custom="1.17" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="1.176" initial="start" variants="[object Object]"&gt;client.agents.create(
    &lt;/span&gt;&lt;span animate="end" custom="1.182" initial="start" variants="[object Object]"&gt;name=&lt;/span&gt;&lt;span animate="end" custom="1.188" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"DataAgent"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.194" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="1.2" initial="start" variants="[object Object]"&gt;model=&lt;/span&gt;&lt;span animate="end" custom="1.206" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"gpt-4o"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.212" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="1.218" initial="start" variants="[object Object]"&gt;tools=[{&lt;/span&gt;&lt;span animate="end" custom="1.224" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"type"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.23" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="1.236" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"code_interpreter"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.242" initial="start" variants="[object Object]"&gt;, &lt;/span&gt;&lt;span animate="end" custom="1.248" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"files"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.254" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="1.26" initial="start" variants="[object Object]"&gt;[&lt;/span&gt;&lt;span animate="end" custom="1.266" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"sales_data.csv"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.272" initial="start" variants="[object Object]"&gt;]}],
    &lt;/span&gt;&lt;span animate="end" custom="1.278" initial="start" variants="[object Object]"&gt;instructions=&lt;/span&gt;&lt;span animate="end" custom="1.284" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Analyze sales data and provide insights."&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.29" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="1.296" initial="start" variants="[object Object]"&gt;)

&lt;/span&gt;&lt;span animate="end" custom="1.302" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Market Agent&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.308" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="1.314" initial="start" variants="[object Object]"&gt;market_agent &lt;/span&gt;&lt;span animate="end" custom="1.32" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="1.326" initial="start" variants="[object Object]"&gt;client.agents.create(
    &lt;/span&gt;&lt;span animate="end" custom="1.332" initial="start" variants="[object Object]"&gt;name=&lt;/span&gt;&lt;span animate="end" custom="1.338" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"MarketAgent"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.344" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="1.35" initial="start" variants="[object Object]"&gt;model=&lt;/span&gt;&lt;span animate="end" custom="1.356" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"gpt-4o"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.362" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="1.368" initial="start" variants="[object Object]"&gt;tools=[{&lt;/span&gt;&lt;span animate="end" custom="1.374" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"type"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.38" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="1.386" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"api_plugin"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.392" initial="start" variants="[object Object]"&gt;, &lt;/span&gt;&lt;span animate="end" custom="1.398" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"endpoint"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.404" initial="start" variants="[object Object]"&gt;: &lt;/span&gt;&lt;span animate="end" custom="1.41" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"https://property-prices-kochi/api"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.416" initial="start" variants="[object Object]"&gt;}],
    &lt;/span&gt;&lt;span animate="end" custom="1.422" initial="start" variants="[object Object]"&gt;instructions=&lt;/span&gt;&lt;span animate="end" custom="1.428" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Provide Kochi property market context."&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.434" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="1.44" initial="start" variants="[object Object]"&gt;)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;Step 3: Orchestrate Workflow with Foundry IQ&lt;/h3&gt;&lt;div class="rounded-xl dark:border dark:border-stroke-250" style="opacity: 1;"&gt;&lt;div class="flex w-full items-center justify-between border-b border-white/20 bg-background-static-850 py-2 pe-2.5 ps-4 text-foreground-static-250 text-sm dark:border-stroke-250 dark:bg-background-static-900 rounded-t-xl"&gt;&lt;div class="flex items-center gap-2"&gt;&lt;span class="capitalize"&gt;python&lt;/span&gt;&lt;button aria-expanded="true" class="relative min-h-9 min-w-9 rounded-xl bg-transparent p-2 hover:bg-white/8 active:bg-white/5" title="Collapse code snippet" type="button"&gt;&lt;svg class="size-4 transition-transform -rotate-90" fill="currentColor" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M8.46967 4.21967C8.17678 4.51256 8.17678 4.98744 8.46967 5.28033L15.1893 12L8.46967 18.7197C8.17678 19.0126 8.17678 19.4874 8.46967 19.7803C8.76256 20.0732 9.23744 20.0732 9.53033 19.7803L16.7803 12.5303C17.0732 12.2374 17.0732 11.7626 16.7803 11.4697L9.53033 4.21967C9.23744 3.92678 8.76256 3.92678 8.46967 4.21967Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class="flex items-center gap-2"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="rounded-b-xl bg-background-static-850 px-4 pb-1.5 dark:bg-background-static-900"&gt;&lt;div class="horizontal-scrollbar overflow-x-auto whitespace-pre pb-3 pt-4 text-sm"&gt;&lt;pre&gt;&lt;code class="font-ligatures-none text-sm"&gt;&lt;span animate="end" custom="1.494" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Create workflow&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.5" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="1.506" initial="start" variants="[object Object]"&gt;workflow &lt;/span&gt;&lt;span animate="end" custom="1.512" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="1.518" initial="start" variants="[object Object]"&gt;client.workflows.create(
    &lt;/span&gt;&lt;span animate="end" custom="1.524" initial="start" variants="[object Object]"&gt;name=&lt;/span&gt;&lt;span animate="end" custom="1.53" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"SalesPolicyWorkflow"&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.536" initial="start" variants="[object Object]"&gt;,
    &lt;/span&gt;&lt;span animate="end" custom="1.542" initial="start" variants="[object Object]"&gt;agents=[policy_agent, &lt;/span&gt;&lt;span animate="end" custom="1.548" initial="start" variants="[object Object]"&gt;data_agent, &lt;/span&gt;&lt;span animate="end" custom="1.554" initial="start" variants="[object Object]"&gt;market_agent]
&lt;/span&gt;&lt;span animate="end" custom="1.56" initial="start" variants="[object Object]"&gt;)

&lt;/span&gt;&lt;span animate="end" custom="1.566" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-comment"&gt;# Run query&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.572" initial="start" variants="[object Object]"&gt;
&lt;/span&gt;&lt;span animate="end" custom="1.578" initial="start" variants="[object Object]"&gt;response &lt;/span&gt;&lt;span animate="end" custom="1.584" initial="start" variants="[object Object]"&gt;= &lt;/span&gt;&lt;span animate="end" custom="1.59" initial="start" variants="[object Object]"&gt;workflow.run(&lt;/span&gt;&lt;span animate="end" custom="1.596" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-string"&gt;"Summarize return guidelines and top 5 selling products in Kochi."&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.602" initial="start" variants="[object Object]"&gt;)
&lt;/span&gt;&lt;span animate="end" custom="1.608" initial="start" variants="[object Object]"&gt;&lt;span class="hljs-built_in"&gt;print&lt;/span&gt;&lt;/span&gt;&lt;span animate="end" custom="1.614" initial="start" variants="[object Object]"&gt;(response)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h3 class="text-lg-strong pb-1 [&amp;amp;:not(:first-child)]:pt-3.5"&gt;Step 4: Deployment&lt;/h3&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Use &lt;strong&gt;azd templates&lt;/strong&gt; to deploy the workflow.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;ACA Session Pools handle execution.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Fabric pipelines continuously feed updated data.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Foundry IQ dashboards monitor agent performance.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128202; Benefits of New Approach&lt;/h2&gt;&lt;div class="max-w-full"&gt;&lt;div class="relative max-w-full"&gt;&lt;div aria-label="Scrollable table" class="horizontal-scrollbar font-ligatures-none mt-6 max-w-full overflow-x-auto rounded-lg bg-white/25 outline-2 outline-offset-1 focus-visible:outline focus-visible:outline-stroke-900 dark:bg-black/25" role="group" tabindex="0"&gt;&lt;table class="t-table" style="border-spacing: 0px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;Aspect&lt;/strong&gt;&lt;/th&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;Old (AutoGen/SK)&lt;/strong&gt;&lt;/th&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;New (Agent Service + Foundry IQ)&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Setup&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Manual orchestration&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Declarative workflows&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Tools&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Custom-coded&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Built-in File Search, Code Interpreter, API plugins&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Scaling&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Developer-managed&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Auto-scaled ACA pools&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Integration&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Limited&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Fabric pipelines + OneLake + external APIs&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Monitoring&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Ad hoc&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Foundry IQ dashboards&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="pointer-events-none absolute inset-0 rounded-lg border border-stroke-300 dark:border-stroke-450"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="mt-3 flex items-center gap-1"&gt;&lt;div class="relative"&gt;&lt;button aria-label="Copy table" class="relative flex items-center text-foreground-800 fill-foreground-800 active:text-foreground-600 active:fill-foreground-600 dark:active:text-foreground-650 dark:active:fill-foreground-650 bg-transparent safe-hover:bg-black/5 active:bg-black/3 dark:safe-hover:bg-white/8 dark:active:bg-white/5 text-sm justify-center size-9 rounded-xl after:rounded-xl after:absolute after:inset-0 after:pointer-events-none after:border after:border-transparent after:contrast-more:border-2 outline-2 outline-offset-1 focus-visible:z-[1] focus-visible:outline focus-visible:outline-stroke-900 forced-colors:transition-none forced-colors:safe-hover:!bg-[Highlight] forced-colors:safe-hover:!text-[HighlightText] forced-colors:safe-hover:!fill-[HighlightText] forced-colors:active:!bg-[Highlight] forced-colors:active:!text-[HighlightText] forced-colors:active:!fill-[HighlightText]" data-spatial-navigation-autofocus="false" data-testid="copy-table-button" data-tooltip-state="closed" type="button"&gt;&lt;div style="opacity: 1;"&gt;&lt;svg class="size-5" fill="currentColor" viewbox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M8 2C6.89543 2 6 2.89543 6 4V14C6 15.1046 6.89543 16 8 16H14C15.1046 16 16 15.1046 16 14V4C16 2.89543 15.1046 2 14 2H8ZM7 4C7 3.44772 7.44772 3 8 3H14C14.5523 3 15 3.44772 15 4V14C15 14.5523 14.5523 15 14 15H8C7.44772 15 7 14.5523 7 14V4ZM4 6.00001C4 5.25973 4.4022 4.61339 5 4.26758V14.5C5 15.8807 6.11929 17 7.5 17H13.7324C13.3866 17.5978 12.7403 18 12 18H7.5C5.567 18 4 16.433 4 14.5V6.00001Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt;&lt;/button&gt;&lt;div class="pointer-events-none absolute -top-12 start-1/2 z-40 [transform:translateX(-50%)] rtl:[transform:translateX(50%)]"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative"&gt;&lt;button aria-label="Download table" class="relative flex items-center text-foreground-800 fill-foreground-800 active:text-foreground-600 active:fill-foreground-600 dark:active:text-foreground-650 dark:active:fill-foreground-650 bg-transparent safe-hover:bg-black/5 active:bg-black/3 dark:safe-hover:bg-white/8 dark:active:bg-white/5 text-sm justify-center size-9 rounded-xl after:rounded-xl after:absolute after:inset-0 after:pointer-events-none after:border after:border-transparent after:contrast-more:border-2 outline-2 outline-offset-1 focus-visible:z-[1] focus-visible:outline focus-visible:outline-stroke-900 forced-colors:transition-none forced-colors:safe-hover:!bg-[Highlight] forced-colors:safe-hover:!text-[HighlightText] forced-colors:safe-hover:!fill-[HighlightText] forced-colors:active:!bg-[Highlight] forced-colors:active:!text-[HighlightText] forced-colors:active:!fill-[HighlightText]" data-spatial-navigation-autofocus="false" data-testid="download-table-button" data-tooltip-state="closed" type="button"&gt;&lt;div style="opacity: 1;"&gt;&lt;svg class="size-5" fill="currentColor" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M18.2498 20.5009C18.664 20.5008 19 20.8365 19 21.2507C19 21.6649 18.6644 22.0008 18.2502 22.0009L5.25022 22.0047C4.836 22.0048 4.5 21.6691 4.5 21.2549C4.5 20.8407 4.83557 20.5048 5.24978 20.5047L18.2498 20.5009ZM11.6482 2.01271L11.75 2.00586C12.1297 2.00586 12.4435 2.28801 12.4932 2.65409L12.5 2.75586L12.499 16.4409L16.2208 12.7205C16.4871 12.4543 16.9038 12.4301 17.1974 12.648L17.2815 12.7206C17.5477 12.9869 17.5719 13.4036 17.354 13.6972L17.2814 13.7813L12.2837 18.7779C12.0176 19.044 11.6012 19.0683 11.3076 18.8507L11.2235 18.7782L6.22003 13.7816C5.92694 13.4889 5.92661 13.014 6.21931 12.7209C6.48539 12.4545 6.90204 12.43 7.1958 12.6477L7.27997 12.7202L10.999 16.4339L11 2.75586C11 2.37616 11.2822 2.06237 11.6482 2.01271L11.75 2.00586L11.6482 2.01271Z" fill="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt;&lt;/button&gt;&lt;div class="pointer-events-none absolute -top-12 start-1/2 z-40 [transform:translateX(-50%)] rtl:[transform:translateX(50%)]"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128302; Next Steps&lt;/h2&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Extend with &lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_Fabric_Eventstream" role="button" tabindex="0"&gt;Fabric Eventstream&lt;/span&gt;&lt;/strong&gt; for real‑time ingestion.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Add &lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_Foundry_IQ_dashboards" role="button" tabindex="0"&gt;Foundry IQ dashboards&lt;/span&gt;&lt;/strong&gt; for monitoring agent collaboration.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Use &lt;strong&gt;&lt;span class="text-start underline-offset-[0.25em] underline decoration-dotted decoration-foreground-450 decoration-2 hover:decoration-solid hover:cursor-pointer" data-url="ca://s?q=Explain_azd_templates" role="button" tabindex="0"&gt;azd deployment templates&lt;/span&gt;&lt;/strong&gt; for production rollout.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="group/ai-message-item space-y-3 break-words" id="f2dVqxuEPmBLNvvxse2Ld-content-1"&gt;&lt;div data-ads-rg="548fc8aac03e4841a77ecc450d51d11a" data-testid="ads-card"&gt;&lt;div class="isolate group relative w-full bg-white/45 text-foreground-750 dark:bg-background-650/10" style="clip-path: var(--clip-path-squircle-36);"&gt;&lt;div class="w-full items-center py-3 text-foreground-750 text-sm"&gt;&lt;div aria-label="Ads have been generated. Summary: Azure accounts unlock seamless deployment across clouds and on-premises, ideal for integrating Foundry agents with Fabric pipelines for end-to-end AI workflows.. Content: Text ad. Title: Microsoft Azure - Create Your Account Now. Description: Create, Deploy &amp;amp; Manage Applications Across Multiple Clouds, On-Premises &amp;amp; At the Edge. Build Cloud-Connected Mobile Experiences Based On Customer Interests &amp;amp; Behaviors..." class="text-sm" style="height: auto; opacity: 1;" tabindex="0"&gt;&lt;div class="flex flex-col gap-2"&gt;&lt;div class="relative isolate bg-background-300/20 dark:bg-background-650/5 group/ad mx-3" style="clip-path: var(--clip-path-squircle-24);"&gt;&lt;div class="before:border-transparent before:border-[20px] pointer-events-none absolute inset-0 before:absolute before:inset-0 before:rounded-inherit" style="clip-path: var(--clip-path-squircle-stroke-24);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="before:border-black/10 dark:before:border-white/10 before:border-[20px] will-change-transform pointer-events-none absolute inset-0 before:absolute before:inset-0 before:rounded-inherit" style="clip-path: var(--clip-path-squircle-stroke-36);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="group/ai-message-item space-y-3 break-words" id="qyQWc5muYiWhkB9mNmHCa-content-1"&gt;&lt;div data-ads-rg="8d61f2562d9d4c2cb1f8b8c184062d58" data-testid="ads-card"&gt;&lt;div class="isolate group relative w-full bg-white/45 text-foreground-750 dark:bg-background-650/10" style="clip-path: var(--clip-path-squircle-36);"&gt;&lt;div class="w-full items-center py-3 text-foreground-750 text-sm"&gt;&lt;div aria-label="Ads have been generated. Summary: Microsoft Azure offers tools to deploy and manage multi-cloud workloads, ideal for developers experimenting with Foundry SDK agents and integrating AI-driven services seamlessly.. Content: Text ad. Title: Microsoft Azure Developer - Create Workloads In Azure. Description: Create, Deploy &amp;amp; Manage Applications Across Multiple Clouds, On-Premises &amp;amp; At the Edge. Build Cloud-Connected Mobile Experiences Based On Customer Interests &amp;amp; Behaviors..." class="text-sm" style="height: auto; opacity: 1;" tabindex="0"&gt;&lt;div class="flex flex-col gap-2"&gt;&lt;div class="relative isolate bg-background-300/20 dark:bg-background-650/5 group/ad mx-3" style="clip-path: var(--clip-path-squircle-24);"&gt;&lt;div class="before:border-transparent before:border-[20px] pointer-events-none absolute inset-0 before:absolute before:inset-0 before:rounded-inherit" style="clip-path: var(--clip-path-squircle-stroke-24);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="before:border-black/10 dark:before:border-white/10 before:border-[20px] will-change-transform pointer-events-none absolute inset-0 before:absolute before:inset-0 before:rounded-inherit" style="clip-path: var(--clip-path-squircle-stroke-36);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="group/ai-message-item space-y-3 break-words" id="dKo8XnSeyZ3NLgN3gC3oX-content-1"&gt;&lt;div data-ads-rg="f41cfc29e8554d9fb256a1535aead641" data-testid="ads-card"&gt;&lt;div class="isolate group relative w-full bg-white/45 text-foreground-750 dark:bg-background-650/10" style="clip-path: var(--clip-path-squircle-36);"&gt;&lt;div class="w-full items-center py-3 text-foreground-750 text-sm"&gt;&lt;div aria-label="Ads have been generated. Summary: Microsoft Azure lets developers quickly deploy multi-agent systems with Foundry and Agent Service, offering managed compute, seamless scaling, and integration with AI tools—ideal for prototyping complex workflows.. Content: Text ad. Title: Microsoft Azure Official Site - Create Your Free Account Today. Description: Our Products and Cloud Services Are Designed To Help You Bring New Ideas To Life. Reliable and Innovative Cloud Solutions For Your Needs. No Upfront Costs..." class="text-sm" style="height: auto; opacity: 1;" tabindex="0"&gt;&lt;div class="flex flex-col gap-2"&gt;&lt;div class="relative isolate bg-background-300/20 dark:bg-background-650/5 group/ad mx-3" style="clip-path: var(--clip-path-squircle-24);"&gt;&lt;div class="before:border-transparent before:border-[20px] pointer-events-none absolute inset-0 before:absolute before:inset-0 before:rounded-inherit" style="clip-path: var(--clip-path-squircle-stroke-24);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="before:border-black/10 dark:before:border-white/10 before:border-[20px] will-change-transform pointer-events-none absolute inset-0 before:absolute before:inset-0 before:rounded-inherit" style="clip-path: var(--clip-path-squircle-stroke-36);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi68FbtGUvJayctd05-uwzuVZbwriqauA-xt_Scf2TUMeMy0LO0SibGrrJEockDpiWa8cm1bUxdzU3vG9hbGUR8bm0VGasYkwTNTCR9vXRWZP7pKVwl8M1oHUVRUQ8xw56Yh10TPKAonsj53vd7XNSibbTiqN9Tl1JgO5rzwZmO8VRkwhv3M_xpzp9SOEN2/s72-w485-h273-c/foundry-stack-wp.png" width="72"/><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>Skill Routing For Your Coding Agent</title><link>http://dhirajpatra.blogspot.com/2026/09/skill-routing-for-your-coding-agent.html</link><category>agent</category><category>artificial intelligence</category><category>code generation</category><pubDate>Fri, 4 Sep 2026 03:33:40 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-5879932672980132022</guid><description>&lt;p&gt;&amp;nbsp;&lt;span style="color: #1f1f1f; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif;"&gt;In an AI-native engineering architecture, the &lt;/span&gt;&lt;b data-index-in-node="46" data-path-to-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code data-index-in-node="46" data-path-to-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; font-weight: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;skills.md&lt;/code&gt;&lt;/b&gt;&lt;span style="color: #1f1f1f; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif;"&gt; file acts as a centralized &lt;/span&gt;&lt;b data-index-in-node="83" data-path-to-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;agent capability index and skill-routing table&lt;/b&gt;&lt;span style="color: #1f1f1f; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif;"&gt; within the hidden system context directory (&lt;/span&gt;&lt;code data-index-in-node="174" data-path-to-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;.gemini/&lt;/code&gt;&lt;span style="color: #1f1f1f; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif;"&gt;, &lt;/span&gt;&lt;code data-index-in-node="184" data-path-to-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;.cursor/&lt;/code&gt;&lt;span style="color: #1f1f1f; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif;"&gt;, or &lt;/span&gt;&lt;code data-index-in-node="197" data-path-to-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;.windsurf/&lt;/code&gt;&lt;span style="color: #1f1f1f; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif;"&gt;).&lt;/span&gt;&lt;/p&gt;&lt;div _ngcontent-ng-c2153783771="" aria-busy="false" aria-live="off" class="markdown markdown-main-panel md-content enable-luminous-fast-follows enable-updated-hr-color stronger tutor-markdown-rendering" dir="ltr" id="model-response-message-contentr_d5f4cb5522749a2f" inline-copy-host="" style="--animation-duration: 400ms; --fade-animation-function: ease-out; animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;br /&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Its primary purpose is to solve the &lt;b data-index-in-node="36" data-path-to-node="1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;context window expansion problem&lt;/b&gt; by decoupling task intent from heavy architectural definitions. Instead of injecting all project rules, schemas, linting standards, and tooling instructions into the system prompt simultaneously—which wastes context budget and degrades reasoning—&lt;code data-index-in-node="315" data-path-to-node="1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;skills.md&lt;/code&gt; maintains a lightweight semantic index mapping agent goals to specific rule files or external tools.&lt;/div&gt;&lt;br /&gt;&lt;h3 data-path-to-node="2" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Core Architecture &amp;amp; Responsibilities&lt;/h3&gt;&lt;response-element class="no-md" ng-version="0.0.0-PLACEHOLDER" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;code-block _nghost-ng-c533500236="" class="ng-tns-c533500236-96 enable-luminous-code-block ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c533500236="" class="code-block ng-tns-c533500236-96 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="3" jslog="223238;track:impression,attention;BardVeMetadataKey:[[&amp;quot;r_d5f4cb5522749a2f&amp;quot;,&amp;quot;c_1d27e9dc5b8d30b2&amp;quot;,null,&amp;quot;rc_5ba2ffd73611c68d&amp;quot;,null,null,&amp;quot;en&amp;quot;,null,1,null,null,1,1]]" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: -16px; margin-right: -16px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c533500236="" class="formatted-code-block-internal-container ng-tns-c533500236-96" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(20, 20, 20); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 26px 0px 0px 32px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div _ngcontent-ng-c533500236="" class="animated-opacity ng-tns-c533500236-96" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div _ngcontent-ng-c533500236="" class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c533500236-96 ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: -72px auto auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px 11px 0px 0px; page: auto; perspective: none; position: sticky; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span _ngcontent-ng-c533500236="" class="ng-tns-c533500236-96" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Plaintext&lt;/span&gt;&lt;div _ngcontent-ng-c533500236="" class="buttons ng-tns-c533500236-96 ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;gem-icon-button _ngcontent-ng-c533500236="" _nghost-ng-c2991972892="" aria-describedby="cdk-describedby-message-ng-1-20" arialabel="Download code" cdk-describedby-host="ng-1" class="mat-mdc-tooltip-trigger download-button ng-tns-c533500236-96 gem-button gem-button-badge-size-small gem-button-size-small gem-button-type-on-surface lm-enabled ng-star-inserted" fonticonname="arrow_circle_down" gemtooltip="Download code" size="small" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;" tabindex="-1" theme="lm" type="onSurface"&gt;&lt;!----&gt;&lt;!----&gt;&lt;button _ngcontent-ng-c2991972892="" aria-label="Download code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed _mat-animation-noopable mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" jslog="305704;track:generic_click,impression" mat-ripple-loader-centered="" mat-ripple-loader-class-name="mat-mdc-button-ripple" mat-ripple-loader-uninitialized="" matbadgeposition="after" maticonbutton="" style="animation: auto ease 0s 1 normal none running none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border-color: rgb(0, 0, 0); border-style: none; border-width: 0px; clear: none; clip: auto; color: black; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 24px; font-stretch: normal; font-style: normal; font-variation-settings: normal; font-weight: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 6px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: none; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="mat-mdc-button-persistent-ripple mdc-icon-button__ripple" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;gem-icon _ngcontent-ng-c2991972892="" _nghost-ng-c1575874796="" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;mat-icon _ngcontent-ng-c1575874796="" aria-hidden="true" class="mat-icon notranslate lm-icon-l lumi-symbols mat-ligature-font mat-icon-no-color ng-star-inserted" data-mat-icon-name="arrow_circle_down" data-mat-icon-namespace="lumi-symbols" data-mat-icon-type="font" fonticon="arrow_circle_down" role="img" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(255, 255, 255); filter: none; flex-direction: row; flex: 0 0 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/mat-icon&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon&gt;&lt;!----&gt;&lt;span class="mat-focus-indicator" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;span class="mat-mdc-button-touch-target" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: none; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 50% auto auto 50%; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;/button&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon-button&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;gem-icon-button _ngcontent-ng-c533500236="" _nghost-ng-c2991972892="" aria-describedby="cdk-describedby-message-ng-1-21" arialabel="Copy code" cdk-describedby-host="ng-1" class="mat-mdc-tooltip-trigger copy-button ng-tns-c533500236-96 gem-button gem-button-badge-size-small gem-button-size-small gem-button-type-on-surface lm-enabled ng-star-inserted" data-test-id="gem-copy-button" fonticonname="copy" gemtooltip="Copy code" size="small" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;" tabindex="-1" theme="lm" type="onSurface"&gt;&lt;!----&gt;&lt;!----&gt;&lt;button _ngcontent-ng-c2991972892="" aria-label="Copy code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed _mat-animation-noopable mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" jslog="179062;track:generic_click,impression;BardVeMetadataKey:[[&amp;quot;r_d5f4cb5522749a2f&amp;quot;,&amp;quot;c_1d27e9dc5b8d30b2&amp;quot;,null,&amp;quot;rc_5ba2ffd73611c68d&amp;quot;,null,null,&amp;quot;en&amp;quot;,null,1,null,null,1,1]];mutable:true" mat-ripple-loader-centered="" mat-ripple-loader-class-name="mat-mdc-button-ripple" mat-ripple-loader-uninitialized="" matbadgeposition="after" maticonbutton="" style="animation: auto ease 0s 1 normal none running none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border-color: rgb(0, 0, 0); border-style: none; border-width: 0px; clear: none; clip: auto; color: black; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 24px; font-stretch: normal; font-style: normal; font-variation-settings: normal; font-weight: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 6px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: none; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="mat-mdc-button-persistent-ripple mdc-icon-button__ripple" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;gem-icon _ngcontent-ng-c2991972892="" _nghost-ng-c1575874796="" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;mat-icon _ngcontent-ng-c1575874796="" aria-hidden="true" class="mat-icon notranslate lm-icon-l lumi-symbols mat-ligature-font mat-icon-no-color ng-star-inserted" data-mat-icon-name="copy" data-mat-icon-namespace="lumi-symbols" data-mat-icon-type="font" fonticon="copy" role="img" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(255, 255, 255); filter: none; flex-direction: row; flex: 0 0 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/mat-icon&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon&gt;&lt;!----&gt;&lt;span class="mat-focus-indicator" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;span class="mat-mdc-button-touch-target" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: none; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 50% auto auto 50%; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;/button&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon-button&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;pre _ngcontent-ng-c533500236="" class="ng-tns-c533500236-96" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code _ngcontent-ng-c533500236="" class="code-container formatted ng-tns-c533500236-96" data-test-id="code-content" role="text" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 16px 0px 32px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;                        ┌────────────────────────┐
                        │   User / Agent Task    │
                        └───────────┬────────────┘
                                    &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;│ Reads Skill Index
                                    &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;▼
                        ┌────────────────────────┐
                        │       skills.md       &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt; │
                        │ (Routing &amp;amp; Scope Maps) &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;│
                        └───────────┬────────────┘
                                    &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;│
           ┌────────────────────────┼────────────────────────┐
           │ Dynamic Load           &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;│ Dynamic Load           &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;│ Dynamic Load
           ▼                        &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;▼                        &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;▼
┌────────────────────┐    ┌────────────────────┐    ┌────────────────────┐
│ .gemini/rules/     &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;│    │ .gemini/context/   &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;│    │ System / MCP Tools &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;│
│ frontend.md        &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;│    │ schema.sql         &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;│    │ (Ruff, ESLint, DB) &lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;│
└────────────────────┘    └────────────────────┘    └────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;!----&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/code-block&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/response-element&gt;&lt;ol data-path-to-node="4" start="1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="4,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Lazy Context Resolution:&lt;/b&gt; It defines explicit scope triggers (e.g., &lt;code data-index-in-node="67" data-path-to-node="4,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;apps/web/&lt;/code&gt; vs &lt;code data-index-in-node="80" data-path-to-node="4,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;apps/api/&lt;/code&gt;) and directs the agent to load heavy domain specifications (like database DDLs, OpenAPI schemas, or complex business logic) &lt;b data-index-in-node="214" data-path-to-node="4,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;only&lt;/b&gt; when execution paths demand them.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="4,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Deterministic Tool &amp;amp; Command Mapping:&lt;/b&gt; It specifies exact execution commands (e.g., &lt;code data-index-in-node="83" data-path-to-node="4,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;ruff check&lt;/code&gt;, &lt;code data-index-in-node="95" data-path-to-node="4,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;pytest&lt;/code&gt;, &lt;code data-index-in-node="103" data-path-to-node="4,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;npm run lint&lt;/code&gt;) associated with specific stack boundaries, ensuring the agent uses deterministic tooling instead of guessing environment configurations.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="4,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Cross-Stack Isolation:&lt;/b&gt; It establishes explicit system guardrails and forbidden imports at the orchestration level, preventing the coding agent from introducing cross-stack anti-patterns or violating domain boundaries across monorepo packages.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>Azure AI Foundry, Azure OpenAI, Microsoft Fabric, and Copilot Studio</title><link>http://dhirajpatra.blogspot.com/2026/09/azure-ai-foundry-azure-openai-microsoft.html</link><category>agent</category><category>artificial intelligence</category><category>azure</category><category>llm</category><pubDate>Wed, 2 Sep 2026 08:02:13 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-4972158424330589403</guid><description>&lt;p&gt;Azure AI Foundry, Azure OpenAI, Microsoft Fabric, and Copilot Studio are complementary but distinct parts of Microsoft’s AI ecosystem: Foundry is the developer platform, OpenAI is the raw model API, Fabric is the unified data layer, and Copilot Studio is the low-code agent builder. Together, they integrate with Entra ID (Azure AD) to manage agent identity, authentication, and enterprise governance.&lt;/p&gt;&lt;div class="space-y-3 mt-3"&gt;&lt;div class="group/ai-message-item space-y-3 break-words" id="mjLqQaPoFaYap6ZryGcPN-content-0"&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128273; Differences Among the Platforms&lt;/h2&gt;&lt;div class="max-w-full"&gt;&lt;div class="relative max-w-full"&gt;&lt;div aria-label="Scrollable table" class="horizontal-scrollbar font-ligatures-none mt-6 max-w-full overflow-x-auto rounded-lg bg-white/25 outline-2 outline-offset-1 focus-visible:outline focus-visible:outline-stroke-900 dark:bg-black/25" role="group" tabindex="0"&gt;&lt;table class="t-table" style="border-spacing: 10px;" border="1"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;Azure AI Foundry&lt;/strong&gt;&lt;/th&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;Azure OpenAI&lt;/strong&gt;&lt;/th&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;Microsoft Fabric&lt;/strong&gt;&lt;/th&gt;&lt;th scope="col" style="opacity: 1;"&gt;&lt;strong&gt;Copilot Studio&lt;/strong&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Full developer platform for building, fine-tuning, and deploying AI apps at scale&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Direct access to GPT-family models (text, embeddings, multimodal)&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Unified data analytics platform combining Power BI, Synapse, Data Factory&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Low-code tool for building and publishing AI copilots/agents&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Best for ML engineers &amp;amp; pro developers&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Best for developers needing raw model control&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Best for data engineers &amp;amp; analysts&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Best for business analysts &amp;amp; low-code developers&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;Offers orchestration, pipelines, multimodal flows, compliance&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Provides fine-tuning, embeddings, prompt engineering&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Provides data ingestion, governance, and analytics&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Provides templates, connectors, orchestration of agent flows&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" style="opacity: 1;"&gt;High customization, requires Azure skills&lt;/th&gt;&lt;td style="opacity: 1;"&gt;Lowest latency for direct model calls&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Centralized data governance &amp;amp; integration&lt;/td&gt;&lt;td style="opacity: 1;"&gt;Fast agent creation, integrates with Teams, M365, external apps&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="pointer-events-none absolute inset-0 rounded-lg border border-stroke-300 dark:border-stroke-450"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="mt-3 flex items-center gap-1"&gt;&lt;div class="relative"&gt;&lt;button aria-label="Copy table" class="relative flex items-center text-foreground-800 fill-foreground-800 active:text-foreground-600 active:fill-foreground-600 dark:active:text-foreground-650 dark:active:fill-foreground-650 bg-transparent safe-hover:bg-black/5 active:bg-black/3 dark:safe-hover:bg-white/8 dark:active:bg-white/5 text-sm justify-center size-9 rounded-xl after:rounded-xl after:absolute after:inset-0 after:pointer-events-none after:border after:border-transparent after:contrast-more:border-2 outline-2 outline-offset-1 focus-visible:z-[1] focus-visible:outline focus-visible:outline-stroke-900 forced-colors:transition-none forced-colors:safe-hover:!bg-[Highlight] forced-colors:safe-hover:!text-[HighlightText] forced-colors:safe-hover:!fill-[HighlightText] forced-colors:active:!bg-[Highlight] forced-colors:active:!text-[HighlightText] forced-colors:active:!fill-[HighlightText]" data-spatial-navigation-autofocus="false" data-testid="copy-table-button" data-tooltip-state="closed" type="button"&gt;&lt;div style="opacity: 1;"&gt;&lt;svg class="size-5" fill="currentColor" viewbox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M8 2C6.89543 2 6 2.89543 6 4V14C6 15.1046 6.89543 16 8 16H14C15.1046 16 16 15.1046 16 14V4C16 2.89543 15.1046 2 14 2H8ZM7 4C7 3.44772 7.44772 3 8 3H14C14.5523 3 15 3.44772 15 4V14C15 14.5523 14.5523 15 14 15H8C7.44772 15 7 14.5523 7 14V4ZM4 6.00001C4 5.25973 4.4022 4.61339 5 4.26758V14.5C5 15.8807 6.11929 17 7.5 17H13.7324C13.3866 17.5978 12.7403 18 12 18H7.5C5.567 18 4 16.433 4 14.5V6.00001Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt;&lt;/button&gt;&lt;div class="pointer-events-none absolute -top-12 start-1/2 z-40 [transform:translateX(-50%)] rtl:[transform:translateX(50%)]"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="relative"&gt;&lt;button aria-label="Download table" class="relative flex items-center text-foreground-800 fill-foreground-800 active:text-foreground-600 active:fill-foreground-600 dark:active:text-foreground-650 dark:active:fill-foreground-650 bg-transparent safe-hover:bg-black/5 active:bg-black/3 dark:safe-hover:bg-white/8 dark:active:bg-white/5 text-sm justify-center size-9 rounded-xl after:rounded-xl after:absolute after:inset-0 after:pointer-events-none after:border after:border-transparent after:contrast-more:border-2 outline-2 outline-offset-1 focus-visible:z-[1] focus-visible:outline focus-visible:outline-stroke-900 forced-colors:transition-none forced-colors:safe-hover:!bg-[Highlight] forced-colors:safe-hover:!text-[HighlightText] forced-colors:safe-hover:!fill-[HighlightText] forced-colors:active:!bg-[Highlight] forced-colors:active:!text-[HighlightText] forced-colors:active:!fill-[HighlightText]" data-spatial-navigation-autofocus="false" data-testid="download-table-button" data-tooltip-state="closed" type="button"&gt;&lt;div style="opacity: 1;"&gt;&lt;svg class="size-5" fill="currentColor" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"&gt;&lt;path d="M18.2498 20.5009C18.664 20.5008 19 20.8365 19 21.2507C19 21.6649 18.6644 22.0008 18.2502 22.0009L5.25022 22.0047C4.836 22.0048 4.5 21.6691 4.5 21.2549C4.5 20.8407 4.83557 20.5048 5.24978 20.5047L18.2498 20.5009ZM11.6482 2.01271L11.75 2.00586C12.1297 2.00586 12.4435 2.28801 12.4932 2.65409L12.5 2.75586L12.499 16.4409L16.2208 12.7205C16.4871 12.4543 16.9038 12.4301 17.1974 12.648L17.2815 12.7206C17.5477 12.9869 17.5719 13.4036 17.354 13.6972L17.2814 13.7813L12.2837 18.7779C12.0176 19.044 11.6012 19.0683 11.3076 18.8507L11.2235 18.7782L6.22003 13.7816C5.92694 13.4889 5.92661 13.014 6.21931 12.7209C6.48539 12.4545 6.90204 12.43 7.1958 12.6477L7.27997 12.7202L10.999 16.4339L11 2.75586C11 2.37616 11.2822 2.06237 11.6482 2.01271L11.75 2.00586L11.6482 2.01271Z" fill="currentColor"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/div&gt;&lt;/button&gt;&lt;div class="pointer-events-none absolute -top-12 start-1/2 z-40 [transform:translateX(-50%)] rtl:[transform:translateX(50%)]"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#129513; How They Work Together&lt;/h2&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Fabric&lt;/strong&gt; → Provides the &lt;strong&gt;data foundation&lt;/strong&gt; (structured, governed, analytics-ready).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Azure OpenAI&lt;/strong&gt; → Provides the &lt;strong&gt;raw intelligence models&lt;/strong&gt; (LLMs, embeddings).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Azure AI Foundry&lt;/strong&gt; → Provides the &lt;strong&gt;engineering environment&lt;/strong&gt; to orchestrate models, data, and pipelines.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Copilot Studio&lt;/strong&gt; → Provides the &lt;strong&gt;low-code interface&lt;/strong&gt; to build task-specific copilots that leverage Foundry + OpenAI + Fabric.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Think of it as: &lt;em&gt;Fabric = data layer, OpenAI = brain, Foundry = lab, Copilot Studio = workshop.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;&#128272; Agent Identity with Entra ID&lt;/h2&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Entra ID (formerly Azure AD)&lt;/strong&gt; is the identity backbone:&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Every &lt;strong&gt;agent&lt;/strong&gt; created in Copilot Studio or Foundry is registered as an &lt;strong&gt;application identity&lt;/strong&gt; in Entra ID.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;This ensures &lt;strong&gt;authentication&lt;/strong&gt; (who can run the agent), &lt;strong&gt;authorization&lt;/strong&gt; (what data/tools it can access), and &lt;strong&gt;auditing&lt;/strong&gt; (logs of usage).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Agent ID&lt;/strong&gt; is essentially an &lt;strong&gt;Entra service principal&lt;/strong&gt; or managed identity:&lt;/span&gt;&lt;/p&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;When an agent calls Fabric datasets or OpenAI models, Entra ID issues tokens.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;Permissions are scoped via &lt;strong&gt;role assignments&lt;/strong&gt; (RBAC) and &lt;strong&gt;conditional access policies&lt;/strong&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;This allows enterprises to enforce &lt;strong&gt;data governance&lt;/strong&gt; and &lt;strong&gt;compliance&lt;/strong&gt; across all AI agents.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;h2 class="text-xl-medium [&amp;amp;:not(:first-child)]:pt-3.5 pb-1"&gt;⚠️ Key Trade-offs &amp;amp; Risks&lt;/h2&gt;&lt;ul class="relative list-outside marker:text-foreground-750 dark:marker:text-foreground-600 flex flex-col ms-4 px-1" role="list"&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Latency vs. Control&lt;/strong&gt;: Direct OpenAI calls are faster, but Foundry/Copilot orchestration adds governance and observability.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Skill Requirements&lt;/strong&gt;: Foundry demands Azure/ML expertise; Copilot Studio lowers the barrier but limits deep customization.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Data Governance&lt;/strong&gt;: Fabric centralizes compliance, but misconfigured Entra roles can expose sensitive data.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li class="ps-2" style="opacity: 1;"&gt;&lt;p&gt;&lt;span class="font-ligatures-none whitespace-pre-wrap"&gt;&lt;strong&gt;Cost Scaling&lt;/strong&gt;: OpenAI usage scales with tokens; Foundry adds orchestration overhead; Fabric storage/compute costs grow with data volume.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="relative pb-6 w-full after:border-b after:border-stroke-300 after:w-full after:absolute after:mt-3"&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="group/ai-message-item space-y-3 break-words" id="mjLqQaPoFaYap6ZryGcPN-content-1"&gt;&lt;div data-ads-rg="464b91d36c2140759f533968e575179c" data-testid="ads-card"&gt;&lt;div class="isolate group relative w-full bg-white/45 text-foreground-750 dark:bg-background-650/10" style="clip-path: var(--clip-path-squircle-36);"&gt;&lt;div class="w-full items-center py-3 text-foreground-750 text-sm"&gt;&lt;div aria-label="Ads have been generated. Summary: Microsoft Azure offers a free account that lets developers experiment with AI models, integrate Entra ID for secure agent management, and test solutions across Foundry, OpenAI, Fabric, and Copilot Studio.. Content: Text ad. Title: Microsoft Azure Official Site - Create Your Free Account Today. Description: Designed for Developers and Data Scientist—Explore Azure AI Models. Try for Free. Start Building with Azure AI. Build Your Own Azure AI Solutions with a Free Account..." class="text-sm" style="height: auto; opacity: 1; overflow: hidden;" tabindex="0"&gt;&lt;div class="flex flex-col gap-2"&gt;&lt;div class="relative isolate bg-background-300/20 dark:bg-background-650/5 group/ad mx-3" style="clip-path: var(--clip-path-squircle-24);"&gt;&lt;div class="before:border-transparent before:border-[20px] pointer-events-none absolute inset-0 before:absolute before:inset-0 before:rounded-inherit" style="clip-path: var(--clip-path-squircle-stroke-24);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="before:border-black/10 dark:before:border-white/10 before:border-[20px] will-change-transform pointer-events-none absolute inset-0 before:absolute before:inset-0 before:rounded-inherit" style="clip-path: var(--clip-path-squircle-stroke-36);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="pt-1"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>How to Use a Coding Tool Like an Expert</title><link>http://dhirajpatra.blogspot.com/2026/08/how-to-use-coding-tool-like-expert.html</link><category>artificial intelligence</category><category>code generation</category><category>dynamic programming</category><category>generativeai</category><category>mcp</category><category>programming</category><pubDate>Mon, 31 Aug 2026 21:41:46 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-6511578356441790199</guid><description>&lt;p&gt;When executing multi-file refactors, I manage, restrict, and structure my local codebase context using a strict &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="BYKzWc_1" style="font-weight: bold;"&gt;hierarchical filtering system&lt;/span&gt; designed to maximize accuracy and minimize token waste.&lt;/p&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="BYKzWc_2" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Here is exactly how I structure and execute that process:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="BYKzWc_3" role="heading" style="font-size: 20px;"&gt;1. Discovery and Map Generation&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="BYKzWc_4" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Before reading or editing any files, I construct an abstract map of the codebase. I do not pull full source code at this stage.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="BYKzWc_5"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="BYKzWc_6"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="BYKzWc_7" style="font-weight: bold;"&gt;Directory Trees:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; I run a shallow directory listing to understand the project's layout.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="BYKzWc_8"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="BYKzWc_9" style="font-weight: bold;"&gt;Symbols and Signatures:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; I search for class definitions, method signatures, and export statements across the target modules.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="BYKzWc_a"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="BYKzWc_b" style="font-weight: bold;"&gt;Dependency Graphs:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; I map out how the target files import one another to identify the upstream and downstream impacts of the refactor.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="BYKzWc_c" role="heading" style="font-size: 20px;"&gt;2. Context Restriction (The "Need-to-Know" Filter)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="BYKzWc_d" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;To prevent token bloat and LLM confusion, I categorize files into three strict isolation zones:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="BYKzWc_e"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="BYKzWc_f"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="BYKzWc_g" style="font-weight: bold;"&gt;The Edit Zone:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; These are the exact files that require code modifications. I ingest these files completely.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="BYKzWc_h"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="BYKzWc_i" style="font-weight: bold;"&gt;The Reference Zone:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; These are files that interact directly with the Edit Zone (e.g., types, interfaces, or parent classes). I only ingest their structural definitions, type signatures, or relevant snippets—never the full implementation.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="BYKzWc_j"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="BYKzWc_k" style="font-weight: bold;"&gt;The Noise Zone:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Implementation details of unrelated modules, external dependencies, and build artifacts. These are completely blocked from my context.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="BYKzWc_l" role="heading" style="font-size: 20px;"&gt;3. Structured Multi-File Ingestion&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="BYKzWc_m" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;When I load the required files into my active context window, I enforce a clean XML/Markdown boundary structure. This structure prevents me from blending different files together or hallucinating missing links:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="BYKzWc_n" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-xml"&gt;&amp;lt;&lt;span style="color: #9334e6;"&gt;file&lt;/span&gt; &lt;span style="color: #9334e6;"&gt;path&lt;/span&gt;=&lt;span style="color: #188038;"&gt;"src/user/service.ts"&lt;/span&gt;&amp;gt;
// Exact, unedited source code goes here
&amp;lt;/&lt;span style="color: #9334e6;"&gt;file&lt;/span&gt;&amp;gt;

&amp;lt;&lt;span style="color: #9334e6;"&gt;file&lt;/span&gt; &lt;span style="color: #9334e6;"&gt;path&lt;/span&gt;=&lt;span style="color: #188038;"&gt;"src/user/types.ts"&lt;/span&gt;&amp;gt;
// Exact, unedited source code goes here
&amp;lt;/&lt;span style="color: #9334e6;"&gt;file&lt;/span&gt;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="BYKzWc_o" role="heading" style="font-size: 20px;"&gt;4. Fragmented Execution (Avoiding the "All-at-Once" Trap)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="BYKzWc_p" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Instead of rewriting five files in a single pass—which drastically increases the risk of hallucinations—I execute refactors sequentially using a strict state machine:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uae3nf#pGIJIb" jsuid="BYKzWc_q"&gt;&lt;div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="BYKzWc_r"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="BYKzWc_s" style="font-weight: bold;"&gt;Plan:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; I generate a plaintext implementation plan outlining the exact order of changes.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="BYKzWc_t"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="BYKzWc_u" style="font-weight: bold;"&gt;Modify:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; I apply changes to &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="BYKzWc_v" style="font-weight: bold;"&gt;one file at a time&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;, starting from the lowest dependency (e.g., types first, then core logic, then entry points).&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="BYKzWc_w"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="BYKzWc_x" style="font-weight: bold;"&gt;Verify:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; After each file modification, I review the updated file against the rest of the context to ensure type safety and logic consistency before moving to the next file.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="BYKzWc_17" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="PhXPId_0" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;To see how this works in practice, here is a concrete example of a multi-file refactor where &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_1" style="font-weight: bold;"&gt;Claude&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; utilizes custom tool skills, &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_2" style="font-weight: bold;"&gt;MCP (Model Context Protocol)&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; servers, &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_3" style="font-weight: bold;"&gt;GitLab&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;, and &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_4" style="font-weight: bold;"&gt;Jira&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; to update a Python user authentication system.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="PhXPId_5" role="heading" style="font-size: 20px;"&gt;The Scenario&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="PhXPId_6" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_7" style="font-weight: bold;"&gt;Jira Ticket (AUTH-42):&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Migrating a legacy Python codebase from custom dictionary-based user sessions to structured &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_8" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;Pydantic&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; models across a service layer, a route layer, and tests.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="PhXPId_9" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-unset"&gt;&#128193; my-python-app/
├── &#128193; src/
│   ├── auth.py         &amp;lt;-- Edit Zone (Route Layer)
│   ├── user_service.py &amp;lt;-- Edit Zone (Service Layer)
│   └── schemas.py      &amp;lt;-- Edit Zone (Data Types)
├── &#128193; tests/
│   └── test_auth.py    &amp;lt;-- Edit Zone (Unit Tests)
└── main.py             &amp;lt;-- Reference Zone (App Initialization)
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="PhXPId_a" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="PhXPId_b" role="heading" style="font-size: 20px;"&gt;Step 1: Discovery &amp;amp; Map Generation&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="PhXPId_c" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Claude receives the Jira ticket via an &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_d" style="font-weight: bold;"&gt;MCP Jira Server&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; connection. Before reading any code, Claude invokes a custom &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_e" style="font-weight: bold;"&gt;codebase-indexer skill&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; (via a local Filesystem/Git MCP server) to map the directory.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="PhXPId_f"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_g"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_h" style="font-weight: bold;"&gt;Tool Call:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_i" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;mcp__filesystem__list_directory(path="./src")&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_j"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_k" style="font-weight: bold;"&gt;Tool Call:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_l" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;mcp__grep__search(pattern="def login")&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_m"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_n" style="font-weight: bold;"&gt;Output Matrix:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Claude maps out that &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_o" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;auth.py&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; imports &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_p" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;user_service.py&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, which in turn relies on &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_q" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;schemas.py&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;. &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_r" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;main.py&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; initializes the app but does not manipulate user dictionaries directly.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="PhXPId_s" role="heading" style="font-size: 20px;"&gt;Step 2: Context Restriction&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="PhXPId_t" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Claude explicitly partitions the project files into the three strict isolation zones, dropping everything else to save tokens.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="PhXPId_u"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_v"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_w" style="font-weight: bold;"&gt;Edit Zone (Full Ingestion):&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_x" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;schemas.py&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_y" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;user_service.py&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_z" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;auth.py&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_10" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;test_auth.py&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_11"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_12" style="font-weight: bold;"&gt;Reference Zone (Signatures Only):&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_13" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;main.py&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; (Claude uses an MCP tool to fetch &lt;em data-sfc-root="ep" jsaction="" jscontroller="ABoAEd#jBqpid" jsuid="PhXPId_14" style="font-weight: inherit;"&gt;only&lt;!--TgQPHd|||[]--&gt;&lt;/em&gt; the top 10 lines showing how the app starts, ignoring the database configuration logic below it).&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_15"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_16" style="font-weight: bold;"&gt;Noise Zone (Blocked):&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Dockerfiles, CI/CD configuration files, and unrelated business logic folders.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="PhXPId_17" role="heading" style="font-size: 20px;"&gt;Step 3: Structured Multi-File Ingestion&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="PhXPId_18" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Claude pulls the Edit Zone files into the active context window, isolating them cleanly inside explicit structural tags so the code logic never bleeds together.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="PhXPId_19" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-xml"&gt;&amp;lt;&lt;span style="color: #9334e6;"&gt;file&lt;/span&gt; &lt;span style="color: #9334e6;"&gt;path&lt;/span&gt;=&lt;span style="color: #188038;"&gt;"src/schemas.py"&lt;/span&gt;&amp;gt;
# Current legacy state
class UserSession:
    def __init__(self, data: dict):
        self.data = data
&amp;lt;/&lt;span style="color: #9334e6;"&gt;file&lt;/span&gt;&amp;gt;

&amp;lt;&lt;span style="color: #9334e6;"&gt;file&lt;/span&gt; &lt;span style="color: #9334e6;"&gt;path&lt;/span&gt;=&lt;span style="color: #188038;"&gt;"src/user_service.py"&lt;/span&gt;&amp;gt;
from src.schemas import UserSession
def get_user_session(user_id: int):
    # Returns raw dict inside legacy class
    return UserSession({"id": user_id, "role": "admin"})
&amp;lt;/&lt;span style="color: #9334e6;"&gt;file&lt;/span&gt;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="PhXPId_1a" role="heading" style="font-size: 20px;"&gt;Step 4: Fragmented Execution &amp;amp; Workflow Integration&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="PhXPId_1b" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Instead of outputting all changes at once, Claude executes a sequential state machine, executing terminal commands and Git operations via &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_1c" style="font-weight: bold;"&gt;MCP&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; at each milestone.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uae3nf#pGIJIb" jsuid="PhXPId_1d"&gt;&lt;div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_1e"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_1f" style="font-weight: bold;"&gt;Modify Lowest Dependency (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_1g" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;schemas.py&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;):&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Claude overwrites the file to use Pydantic.&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="PhXPId_1h"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_1i"&gt;&lt;em data-sfc-root="ep" jsaction="" jscontroller="ABoAEd#jBqpid" jsuid="PhXPId_1j" style="font-weight: inherit;"&gt;Tool Call:&lt;!--TgQPHd|||[]--&gt;&lt;/em&gt; &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_1k" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;mcp__filesystem__write_file(path="src/schemas.py", text="from pydantic import BaseModel\nclass UserSession(BaseModel):\n    id: int\n    role: str")&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_1l"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_1m" style="font-weight: bold;"&gt;Modify Middle Layer (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_1n" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;user_service.py&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;):&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Claude adjusts the service layer to instantiate the new Pydantic model.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_1o"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_1p" style="font-weight: bold;"&gt;Modify Top Layer &amp;amp; Tests (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_1q" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;auth.py&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; &amp;amp; &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_1r" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;test_auth.py&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;):&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Claude updates the endpoints and rewrites the test assertions from dictionary lookups (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_1s" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;session['id']&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;) to object attributes (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_1t" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;session.id&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;).&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_1u"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_1v" style="font-weight: bold;"&gt;Automated Verification:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Claude runs pytest via the terminal MCP server to ensure type safety and logic integrity.&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="PhXPId_1w"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_1x"&gt;&lt;em data-sfc-root="ep" jsaction="" jscontroller="ABoAEd#jBqpid" jsuid="PhXPId_1y" style="font-weight: inherit;"&gt;Tool Call:&lt;!--TgQPHd|||[]--&gt;&lt;/em&gt; &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_1z" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;mcp__terminal__execute_command(command="poetry run pytest")&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_20"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_21" style="font-weight: bold;"&gt;GitLab &amp;amp; Jira Update:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Once tests pass 100%, Claude uses the &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_22" style="font-weight: bold;"&gt;GitLab MCP Server&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; to create a branch, commit the changes, and push a Merge Request, concluding by updating the &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="PhXPId_23" style="font-weight: bold;"&gt;Jira&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; ticket status.&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="PhXPId_24"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_25"&gt;&lt;em data-sfc-root="ep" jsaction="" jscontroller="ABoAEd#jBqpid" jsuid="PhXPId_26" style="font-weight: inherit;"&gt;Tool Call:&lt;!--TgQPHd|||[]--&gt;&lt;/em&gt; &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_27" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;mcp__gitlab__create_merge_request(branch="feature/AUTH-42-pydantic-migration", title="Refactor sessions to Pydantic")&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="PhXPId_28"&gt;&lt;em data-sfc-root="ep" jsaction="" jscontroller="ABoAEd#jBqpid" jsuid="PhXPId_29" style="font-weight: inherit;"&gt;Tool Call:&lt;!--TgQPHd|||[]--&gt;&lt;/em&gt; &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="PhXPId_2a" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;mcp__jira__update_issue(ticket_id="AUTH-42", status="In Review", comment="Refactor complete. MR opened in GitLab.")&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ol&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="PhXPId_2b" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="PhXPId_2d" style="text-align: left;"&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="KPcoff_0" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Here is the exact setup and configuration guide to bind &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_1" style="font-weight: bold;"&gt;Claude Desktop / Claude Code&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; to your workflow using the official and community-standard &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_2" style="font-weight: bold;"&gt;MCP (Model Context Protocol)&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; servers, paired with a robust Python verification stack.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="KPcoff_3" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="KPcoff_4" role="heading" style="font-size: 20px;"&gt;Part 1: Initializing &amp;amp; Configuring MCP Servers&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="KPcoff_5" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;MCP configurations are stored centrally in a JSON file. If you are using &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_6" style="font-weight: bold;"&gt;Claude Desktop&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;, this file is located at:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="KPcoff_7"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="KPcoff_8"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="KPcoff_9"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_a" style="font-weight: bold;"&gt;Mac/Linux:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_b" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;~/.claude/mcp.json&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="KPcoff_c"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_d" style="font-weight: bold;"&gt;Windows:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_e" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;%APPDATA%\Claude\mcp.json&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="KPcoff_f"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="KPcoff_g" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Add the following standard configurations to your &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_h" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;mcp.json&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; to link Claude to your system:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="KPcoff_i" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-json"&gt;{
  &lt;span style="color: #188038;"&gt;"mcpServers"&lt;/span&gt;: {
    &lt;span style="color: #188038;"&gt;"gitlab"&lt;/span&gt;: {
      &lt;span style="color: #188038;"&gt;"command"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"npx"&lt;/span&gt;,
      &lt;span style="color: #188038;"&gt;"args"&lt;/span&gt;: [
        &lt;span style="color: #188038;"&gt;"-y"&lt;/span&gt;,
        &lt;span style="color: #188038;"&gt;"mcp-remote"&lt;/span&gt;,
        &lt;span style="color: #188038;"&gt;"https://gitlab.com"&lt;/span&gt;
      ]
    },
    &lt;span style="color: #188038;"&gt;"jira"&lt;/span&gt;: {
      &lt;span style="color: #188038;"&gt;"command"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"npx"&lt;/span&gt;,
      &lt;span style="color: #188038;"&gt;"args"&lt;/span&gt;: [
        &lt;span style="color: #188038;"&gt;"-y"&lt;/span&gt;,
        &lt;span style="color: #188038;"&gt;"@hainanzhao/mcp-gitlab-jira"&lt;/span&gt;
      ],
      &lt;span style="color: #188038;"&gt;"env"&lt;/span&gt;: {
        &lt;span style="color: #188038;"&gt;"JIRA_HOST"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"https://your-domain.atlassian.net"&lt;/span&gt;,
        &lt;span style="color: #188038;"&gt;"JIRA_USER_EMAIL"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"your-email@example.com"&lt;/span&gt;,
        &lt;span style="color: #188038;"&gt;"JIRA_API_TOKEN"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"YOUR_ATLASSIAN_API_TOKEN"&lt;/span&gt;
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="KPcoff_j" role="heading" style="font-size: 16px;"&gt;Step-by-Step Initialization:&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uae3nf#pGIJIb" jsuid="KPcoff_k"&gt;&lt;div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="KPcoff_l"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_m" style="font-weight: bold;"&gt;GitLab Setup:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; The official &lt;a data-sfc-cp="" data-sfc-root="ep" href="https://docs.gitlab.com/user/model_context_protocol/mcp_server/" jsaction="" jscontroller="SKtXpe#xR6Anb" jsuid="KPcoff_n"&gt;GitLab MCP Server&lt;!--TgQPHd|||[]--&gt;&lt;/a&gt; uses an elegant HTTP OAuth 2.0 transport flow. When Claude starts for the first time, your web browser will automatically open to securely authorize the connection directly to your GitLab account.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="KPcoff_o"&gt; [1] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="KPcoff_p"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_q" style="font-weight: bold;"&gt;Jira Setup:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Generate a Jira API token inside your Atlassian Account Settings under Security. Paste that token into the &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_r" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;JIRA_API_TOKEN&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; environment variable in the JSON configuration above.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="KPcoff_s"&gt; [2, 3] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="KPcoff_t"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_u" style="font-weight: bold;"&gt;Restart Claude:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Fully quit and restart Claude Desktop (or relaunch your terminal if using Claude Code via &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_v" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;/mcp&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;) to activate the connections.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="KPcoff_w"&gt; [1, 4] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ol&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="KPcoff_x" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="KPcoff_y" role="heading" style="font-size: 20px;"&gt;Part 2: The Python Verification Stack (Pre-Push Checks)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="KPcoff_z" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;To guarantee that Claude does not push broken code, it must use a local execution environment to test code variations &lt;em data-sfc-root="ep" jsaction="" jscontroller="ABoAEd#jBqpid" jsuid="KPcoff_10" style="font-weight: inherit;"&gt;before&lt;!--TgQPHd|||[]--&gt;&lt;/em&gt; opening a GitLab Merge Request. Integrate these three core tools via your build pipeline (e.g., inside a &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_11" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;pyproject.toml&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; using &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_12" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;poetry&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; or &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_13" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;pipenv&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;):&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;table data-sfc-cp="" data-sfc-root="ep" export-element-id="aim-table-24" jsaction="" jscontroller="U6LtHc#vHIioc" jsuid="KPcoff_14" style="border-collapse: collapse; border: none; line-height: 1.2; table-layout: fixed; width: 100%;"&gt;&lt;tbody&gt;&lt;tr data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qKcKWd#x8sSEf" jsuid="KPcoff_15"&gt;&lt;th data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="hcxKFe#NgVKOb" jsuid="KPcoff_16" style="border: 1pt solid #000000; overflow-wrap: break-word; padding: 5pt; text-align: left; vertical-align: top;"&gt;Tool&lt;!--TgQPHd|||[]--&gt;&lt;/th&gt;&lt;th data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="hcxKFe#NgVKOb" jsuid="KPcoff_17" style="border: 1pt solid #000000; overflow-wrap: break-word; padding: 5pt; text-align: left; vertical-align: top;"&gt;Verification Role&lt;!--TgQPHd|||[]--&gt;&lt;/th&gt;&lt;th data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="hcxKFe#NgVKOb" jsuid="KPcoff_18" style="border: 1pt solid #000000; overflow-wrap: break-word; padding: 5pt; text-align: left; vertical-align: top;"&gt;Claude Execution Command&lt;!--TgQPHd|||[]--&gt;&lt;/th&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/tr&gt;&lt;tr data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qKcKWd#x8sSEf" jsuid="KPcoff_19"&gt;&lt;td data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="hcxKFe#NgVKOb" jsuid="KPcoff_1a" style="border: 1pt solid rgb(0, 0, 0); overflow-wrap: break-word; padding: 5pt; vertical-align: top;"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_1b" style="font-weight: bold;"&gt;&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_1c" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;ruff&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="hcxKFe#NgVKOb" jsuid="KPcoff_1d" style="border: 1pt solid rgb(0, 0, 0); overflow-wrap: break-word; padding: 5pt; vertical-align: top;"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_1e" style="font-weight: bold;"&gt;Linting &amp;amp; Code Style:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Instantly catches syntax errors, unused imports, or bad formatting across edited files without executing code.&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="hcxKFe#NgVKOb" jsuid="KPcoff_1f" style="border: 1pt solid rgb(0, 0, 0); overflow-wrap: break-word; padding: 5pt; vertical-align: top;"&gt;&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_1g" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;poetry run ruff check src/&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/tr&gt;&lt;tr data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qKcKWd#x8sSEf" jsuid="KPcoff_1h"&gt;&lt;td data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="hcxKFe#NgVKOb" jsuid="KPcoff_1i" style="border: 1pt solid rgb(0, 0, 0); overflow-wrap: break-word; padding: 5pt; vertical-align: top;"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_1j" style="font-weight: bold;"&gt;&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_1k" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;mypy&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="hcxKFe#NgVKOb" jsuid="KPcoff_1l" style="border: 1pt solid rgb(0, 0, 0); overflow-wrap: break-word; padding: 5pt; vertical-align: top;"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_1m" style="font-weight: bold;"&gt;Static Type Checking:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Vital when refactoring interfaces (like dictionaries to Pydantic). Catches type conflicts upstream or downstream.&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="hcxKFe#NgVKOb" jsuid="KPcoff_1n" style="border: 1pt solid rgb(0, 0, 0); overflow-wrap: break-word; padding: 5pt; vertical-align: top;"&gt;&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_1o" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;poetry run mypy src/&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/tr&gt;&lt;tr data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qKcKWd#x8sSEf" jsuid="KPcoff_1p"&gt;&lt;td data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="hcxKFe#NgVKOb" jsuid="KPcoff_1q" style="border: 1pt solid rgb(0, 0, 0); overflow-wrap: break-word; padding: 5pt; vertical-align: top;"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_1r" style="font-weight: bold;"&gt;&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_1s" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;pytest&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="hcxKFe#NgVKOb" jsuid="KPcoff_1t" style="border: 1pt solid rgb(0, 0, 0); overflow-wrap: break-word; padding: 5pt; vertical-align: top;"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="KPcoff_1u" style="font-weight: bold;"&gt;Functional Unit Testing:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Executes unit tests to verify behavior and ensure that updated code matches expected outputs.&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;td data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="hcxKFe#NgVKOb" jsuid="KPcoff_1v" style="border: 1pt solid rgb(0, 0, 0); overflow-wrap: break-word; padding: 5pt; vertical-align: top;"&gt;&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="KPcoff_1w" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;poetry run pytest&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/td&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/tr&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="KPcoff_1x" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="KPcoff_1y" role="heading" style="font-size: 20px;"&gt;Part 3: The Complete Automated Workflow&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="KPcoff_1z" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Once everything is wired together, a typical interaction loop handles the entire task seamlessly from start to finish:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="KPcoff_20" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px; text-align: left;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-unset"&gt;[User Request] ➔ "Claude, look at ticket AUTH-42 and refactor the user session schemas."
       │
       ├── 1. Read Jira Ticket via MCP (Jira Server)
       ├── 2. Segment context into Isolation Zones (Filesystem MCP)
       ├── 3. Sequentially rewrite schemas, services, and tests (File-by-file)
       ├── 4. Trigger Pre-Push Checks:
       │      ├── ruff check (No lint errors)
       │      ├── mypy check (Type safety intact)
       │      └── pytest     (All tests passing 100%)
       │
       └── 5. Final Action:
              ├── GitLab: Commit code, create branch, and open Merge Request
              └── Jira: Progress ticket status to "In Review" and attach the MR link&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="KPcoff_22" style="text-align: left;"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="kVZO2c#SfSkjb" jsuid="KPcoff_2a"&gt;&lt;br /&gt;&lt;div&gt;[1] &lt;a href="https://gitlab.com/gitlab-community/gitlab-org/gitlab/-/blob/438702-gcp-secret-manager-service-account-impersonation/doc/user/model_context_protocol/mcp_server.md"&gt;https://gitlab.com&lt;/a&gt;&lt;/div&gt;&lt;div&gt;[2] &lt;a href="https://mcpservers.org/servers/edrich13/mcp-jira-server"&gt;https://mcpservers.org&lt;/a&gt;&lt;/div&gt;&lt;div&gt;[3] &lt;a href="https://skywork.ai/skypage/en/ai-devops-gitlab-jira/1978656785630011392"&gt;https://skywork.ai&lt;/a&gt;&lt;/div&gt;&lt;div&gt;[4] &lt;a href="https://explainx.ai/mcp-servers/gitlab-jira"&gt;https://explainx.ai&lt;/a&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="KPcoff_2b"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="KPcoff_2c"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="kVZO2c#SfSkjb" jsuid="PhXPId_2j"&gt;&lt;br /&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="PhXPId_2k"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="PhXPId_2l"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="kVZO2c#SfSkjb" jsuid="BYKzWc_18"&gt;&lt;br /&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="BYKzWc_19"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="BYKzWc_1a"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>AgenticAI Application Deployment in AWS, Azure and GCP</title><link>http://dhirajpatra.blogspot.com/2026/08/agenticai-application-deployment-in-aws.html</link><category>agent</category><category>agenticai</category><category>artificial intelligence</category><category>aws</category><category>azure</category><category>gcp</category><category>genai</category><category>mlops</category><pubDate>Wed, 26 Aug 2026 21:48:53 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-2014910733163986083</guid><description>&lt;p&gt;To deploy your agentic AI application across cloud providers, you should &lt;mark data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="CoGy3c#Gbmioe" jsuid="hHaUJc_1" style="background: rgb(211, 227, 253); font-weight: bold;"&gt;treat your infrastructure as code using &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_2"&gt;Terraform&lt;/span&gt;&lt;/mark&gt;. This ensures your databases, vector stores, compute environments, and IAM policies are version-controlled, repeatable, and secure.&lt;/p&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="hHaUJc_3" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="hHaUJc_4" role="heading" style="font-size: 20px;"&gt;The Core Terraform Workflow&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="hHaUJc_5" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Every Terraform deployment follows the same four-step lifecycle:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="hHaUJc_6" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0px; overflow: auto hidden;"&gt;&lt;code class="language-mermaid"&gt;graph LR
    A[1. Write .tf Files] --&amp;gt; B[2. terraform init]
    B --&amp;gt; C[3. terraform plan]
    C --&amp;gt; D[4. terraform apply]
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uae3nf#pGIJIb" jsuid="hHaUJc_7"&gt;&lt;div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="hHaUJc_8"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_9" style="font-weight: bold;"&gt;Write:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Define your infrastructure components inside &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="hHaUJc_a" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;.tf&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; files using HashiCorp Configuration Language (HCL).&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="hHaUJc_b"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_c" style="font-weight: bold;"&gt;Init:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Run &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="hHaUJc_d" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;terraform init&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; to download the specific cloud providers (AWS, Azure, or GCP) and setup the backend storage.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="hHaUJc_e"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_f" style="font-weight: bold;"&gt;Plan:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Run &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="hHaUJc_g" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;terraform plan&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; to preview exactly what changes, creations, or deletions will happen.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="hHaUJc_h"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_i" style="font-weight: bold;"&gt;Apply:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Run &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="hHaUJc_j" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;terraform apply&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; to execute the plan and provision live cloud resources.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ol&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="hHaUJc_k" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="hHaUJc_l" role="heading" style="font-size: 20px;"&gt;Cross-Cloud Terraform Architecture Blueprints&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="hHaUJc_m" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Below are production-ready code blocks to deploy the foundational agentic AI components for AWS, Azure, and GCP.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="hHaUJc_n" role="heading" style="font-size: 16px;"&gt;Option A: AWS Deployment Blueprint&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="hHaUJc_o" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;This script provisions an &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_p" style="font-weight: bold;"&gt;Amazon Bedrock Agent&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;, maps it to an &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_q" style="font-weight: bold;"&gt;S3 Knowledge Base&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; for RAG, and configures an &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_r" style="font-weight: bold;"&gt;Aurora Serverless v2 PostgreSQL&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; cluster for memory storage.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="hHaUJc_s" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0px; overflow: auto hidden;"&gt;&lt;code class="language-hcl"&gt;# 1. Define AWS Provider
provider "aws" {
  region = "us-east-1"
}

# 2. Storage for Unstructured Files (Vector Source)
resource "aws_s3_bucket" "agent_knowledge_base" {
  bucket = "enterprise-agent-knowledge-base-prod"
}

# 3. Aurora Serverless v2 for Relational/Long-Term Memory
resource "aws_rds_cluster" "agent_memory_db" {
  cluster_identifier   = "agent-memory-cluster"
  engine               = "aurora-postgresql"
  engine_mode          = "provisioned"
  engine_version       = "16.1"
  database_name        = "agent_memory"
  master_username      = "db_admin"
  master_password      = "SecurePasswordChangeMe123!" # Ideally sourced via AWS Secret Manager

  serverless_v2_scaling_configuration {
    max_capacity = 16
    min_capacity = 0.5
  }
}

# 4. Amazon Bedrock Agent Setup
resource "aws_bedrockagent_agent" "ai_agent" {
  agent_name                  = "enterprise-core-agent"
  foundation_model            = "amazon.nova-pro-v1:0" # Utilizing the Nova architecture
  instruction                 = "You are an enterprise orchestrator. Use your tools to query database states and check the knowledge base."
  agent_resource_role_arn     = aws_iam_role.agent_execution_role.arn
}
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="hHaUJc_t" role="heading" style="font-size: 16px;"&gt;Option B: Azure Deployment Blueprint&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="hHaUJc_u" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;This script provisions the &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_v" style="font-weight: bold;"&gt;Azure OpenAI Service&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;, hooks up an &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_w" style="font-weight: bold;"&gt;Azure AI Search&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; instance for vector indexing, and launches &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_x" style="font-weight: bold;"&gt;Azure Container Apps&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; to run your LangGraph/AutoGen Docker container.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="hHaUJc_y" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0px; overflow: auto hidden;"&gt;&lt;code class="language-hcl"&gt;# 1. Define Azure Provider
provider "azurerm" {
  features {}
}

# 2. Resource Group
resource "azurerm_resource_group" "ai_rg" {
  name     = "rg-enterprise-agent-prod"
  location = "East US"
}

# 3. Azure OpenAI Service Deployment
resource "azurerm_cognitive_account" "openai" {
  name                = "cog-enterprise-openai-prod"
  location            = azurerm_resource_group.ai_rg.location
  resource_group_name = azurerm_resource_group.ai_rg.name
  kind                = "OpenAI"
  sku_name            = "S0"
}

# 4. Azure AI Search (Vector Store)
resource "azurerm_search_service" "vector_db" {
  name                = "src-agent-vector-store"
  resource_group_name = azurerm_resource_group.ai_rg.name
  location            = azurerm_resource_group.ai_rg.location
  sku                 = "standard"
}

# 5. Azure Container Apps (Orchestration Compute Runtime)
resource "azurerm_container_app" "agent_compute" {
  name                         = "ca-agent-orchestrator"
  resource_group_name          = azurerm_resource_group.ai_rg.name
  container_app_environment_id = azurerm_container_app_environment.main.id
  revision_mode                = "Single"

  template {
    container {
      name   = "agent-app"
      image  = "myregistry.azurecr.io/agentic-app:latest"
      cpu    = "0.5"
      memory = "1.0Gi"
      
      env {
        name  = "OPENAI_API_KEY"
        value = azurerm_cognitive_account.openai.primary_access_key
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="hHaUJc_z" role="heading" style="font-size: 16px;"&gt;Option C: GCP Deployment Blueprint&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="hHaUJc_10" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;This script provisions &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_11" style="font-weight: bold;"&gt;Vertex AI Search&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; (Agent Builder backend), maps it to a &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_12" style="font-weight: bold;"&gt;Cloud Storage&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; landing bucket, and configures a serverless &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_13" style="font-weight: bold;"&gt;Cloud Run&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; environment to run containerized Model Context Protocol (MCP) tooling.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="hHaUJc_14" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0px; overflow: auto hidden;"&gt;&lt;code class="language-hcl"&gt;# 1. Define GCP Provider
provider "google" {
  project = "enterprise-agentic-ai-prod"
  region  = "us-central1"
}

# 2. Storage Bucket for Data Lake
resource "google_storage_bucket" "agent_docs" {
  name     = "gcs-agent-unstructured-docs"
  location = "US"
}

# 3. Vertex AI Search / Discovery Engine Data Store
resource "google_discovery_engine_data_store" "rag_store" {
  location            = "global"
  data_store_id       = "agent-knowledge-base-store"
  display_name        = "Agent Knowledge Base"
  industry_vertical   = "GENERIC"
  content_config      = "CONTENT_REQUIRED"
  solution_types      = ["SOLUTION_TYPE_SEARCH"]
}

# 4. Cloud Run for MCP Tooling / Custom Python Code Logic
resource "google_cloud_run_v2_service" "mcp_tool_service" {
  name     = "cr-mcp-database-toolbox"
  location = "us-central1"

  template {
    containers {
      image = "gcr.io/enterprise-agentic-ai-prod/mcp-database-tool:latest"
      
      resources {
        limits = {
          cpu    = "2"
          memory = "2Gi"
        }
      }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="hHaUJc_15" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="hHaUJc_16" role="heading" style="font-size: 20px;"&gt;Operational Best Practices for AI Terraform Pipelines&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="hHaUJc_17"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="hHaUJc_18"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_19" style="font-weight: bold;"&gt;Never Hardcode Secrets:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Never pass model API keys, database admin passwords, or access strings inside &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="hHaUJc_1a" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;.tf&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; files. Use variables or refer directly to managed vaults (e.g., &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="hHaUJc_1b" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;aws_secretsmanager_secret&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="hHaUJc_1c" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;azurerm_key_vault&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, or GCP &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="hHaUJc_1d" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;google_secret_manager_secret&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;).&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="hHaUJc_1e"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_1f" style="font-weight: bold;"&gt;Secure Your State File:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; The &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="hHaUJc_1g" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;terraform.tfstate&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; file contains plain-text architectures and passwords. Always configure a &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_1h" style="font-weight: bold;"&gt;Remote Backend&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; (like an encrypted AWS S3 bucket with DynamoDB locking, or Azure Blob Storage with lease blocks) to share state securely across your development team.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="hHaUJc_1i"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="hHaUJc_1j" style="font-weight: bold;"&gt;Isolate Environments:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Maintain distinct folder paths for &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="hHaUJc_1k" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;staging/&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; and &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="hHaUJc_1l" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;production/&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; environments to prevent accidental compute or database deletions during testing phases.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="hHaUJc_1m" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="hHaUJc_1n" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="MY6Oyb_0" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;These modular files cleanly supplement the &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="MY6Oyb_2" style="font-weight: bold;"&gt;AWS Deployment Blueprint&lt;/span&gt; provided earlier, allowing you to externalize configurations and expose connection strings safely.&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="MY6Oyb_3" role="heading" style="font-size: 20px;"&gt;Summary of Generated Files&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="MY6Oyb_4" role="heading" style="font-size: 16px;"&gt;1. &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="MY6Oyb_5" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;variables.tf&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="MY6Oyb_6"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="MY6Oyb_7"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="MY6Oyb_8"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="MY6Oyb_9" style="font-weight: bold;"&gt;Input Isolation:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Parametrizes key cloud configuration targets, allowing you to easily swap regions, staging environments (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="MY6Oyb_a" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;prod&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; vs &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="MY6Oyb_b" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;dev&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;), and names without editing main backend files.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="MY6Oyb_c"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="MY6Oyb_d" style="font-weight: bold;"&gt;Database Sizing:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Configures serverless boundaries (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="MY6Oyb_e" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;db_min_capacity&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="MY6Oyb_f" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;db_max_capacity&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;) in Aurora Capacity Units (ACUs) to strictly limit unexpected hosting scaling costs.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="MY6Oyb_g"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="MY6Oyb_h" style="font-weight: bold;"&gt;Model Routing:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Provides a clean variable targeting your primary reasoning model (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="MY6Oyb_i" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;amazon.nova-pro-v1:0&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;), making it easy to swap variants later.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="MY6Oyb_j"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="MY6Oyb_k" role="heading" style="font-size: 16px;"&gt;2. &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="MY6Oyb_l" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;outputs.tf&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="MY6Oyb_m"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="MY6Oyb_n"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="MY6Oyb_o"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="MY6Oyb_p" style="font-weight: bold;"&gt;Network &amp;amp; App Ingestion:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Exposes &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="MY6Oyb_q" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;database_cluster_endpoint&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; so your local container or serverless runtime loops know exactly where to push transactional application state arrays.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="MY6Oyb_r"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="MY6Oyb_s" style="font-weight: bold;"&gt;Data Flow Targets:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Provides bucket domain routing indicators needed to wire up external data-lake synchronization tools or automated document upload bridges.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="MY6Oyb_t"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="MY6Oyb_u" style="font-weight: bold;"&gt;Execution Routing:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Returns &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="MY6Oyb_v" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;bedrock_agent_arn&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, allowing front-end API gateways or client channels to target your autonomous engine deployment during operational validation steps.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="MY6Oyb_w"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="MY6Oyb_x" role="heading" style="font-size: 20px;"&gt;How to use these in your workspace&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uae3nf#pGIJIb" jsuid="MY6Oyb_y"&gt;&lt;div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="MY6Oyb_z"&gt;Place &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="MY6Oyb_10" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;variables.tf&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="MY6Oyb_11" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;outputs.tf&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, and your main code file (e.g., &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="MY6Oyb_12" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;main.tf&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;) into the &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="MY6Oyb_13" style="font-weight: bold;"&gt;same project directory&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="MY6Oyb_14"&gt;Update the main code file to ingest these variables using &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="MY6Oyb_15" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;var.variable_name&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; syntax:&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="MY6Oyb_16" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-hcl"&gt;# Example substitution snippet within your main.tf
resource "aws_s3_bucket" "agent_knowledge_base" {
  bucket = var.knowledge_base_bucket_name
}
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="MY6Oyb_17"&gt;Execute your workspace setup from your command line terminal:&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="MY6Oyb_18" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-bash"&gt;terraform init
terraform plan -out=tfplan.binary
terraform apply tfplan.binary
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ol&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="MY6Oyb_19" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;&lt;br /&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="kVZO2c#SfSkjb" jsuid="MY6Oyb_1c"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="hHaUJc_1x"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="hHaUJc_1y"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>AgenticAi Application Deploying into GCP</title><link>http://dhirajpatra.blogspot.com/2026/08/agenticai-application-deploying-into-gcp.html</link><category>agent</category><category>agenticai</category><category>artificial intelligence</category><category>gcp</category><category>genai</category><category>mlops</category><pubDate>Wed, 26 Aug 2026 21:47:55 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-3091144547823769581</guid><description>&lt;p&gt;Deploying a production-ready, feature-complete Agentic AI application on &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_1" style="font-weight: bold;"&gt;Google Cloud Platform (GCP)&lt;/span&gt; requires &lt;mark data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="CoGy3c#Gbmioe" jsuid="QpPIPc_2" style="background: rgb(211, 227, 253); font-weight: bold;"&gt;leveraging the &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_3"&gt;&lt;a data-sfc-cp="" data-sfc-root="ep" href="https://cloud.google.com/blog/products/ai-machine-learning/more-ways-to-build-and-scale-ai-agents-with-vertex-ai-agent-builder" jsaction="" jscontroller="SKtXpe#xR6Anb" jsuid="QpPIPc_4"&gt;Vertex AI Agent Builder&lt;/a&gt;&lt;/span&gt; ecosystem&lt;/mark&gt;. This managed framework handles long-running multi-agent execution loops, session state persistence, and native &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_5" style="font-weight: bold;"&gt;Model Context Protocol (MCP)&lt;/span&gt; tool discovery.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_6"&gt; [1, 2, 3]&lt;/span&gt;&lt;/p&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="QpPIPc_0" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_6"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="QpPIPc_7" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="QpPIPc_8" role="heading" style="font-size: 20px;"&gt;Step 1: Initialize Infrastructure &amp;amp; Core Reasoning Models&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="QpPIPc_9" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Set up your compute project boundaries and configure your primary intelligence layers.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="QpPIPc_a"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_b"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_c"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_d" style="font-weight: bold;"&gt;Enable APIs:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Activate &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="QpPIPc_e" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;://googleapis.com&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="QpPIPc_f" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;://googleapis.com&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="QpPIPc_g" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;://googleapis.com&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, and &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="QpPIPc_h" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;://googleapis.com&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; inside your Google Cloud Console.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_i"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_j" style="font-weight: bold;"&gt;Model Selection:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Provisions foundation models (such as &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_k" style="font-weight: bold;"&gt;Gemini 1.5 Pro&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; or &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_l" style="font-weight: bold;"&gt;Gemini 2.0 Flash&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;) via &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_m" style="font-weight: bold;"&gt;Vertex AI Model Garden&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; to execute complex multi-step orchestration workflows.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_n"&gt; [4, 5, 6] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_o"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="QpPIPc_p" role="heading" style="font-size: 20px;"&gt;Step 2: Establish the Enterprise Data Connection Layer&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="QpPIPc_q" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Connect unstructured, structured, and open data meshes using managed data connectors.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_r"&gt; [5] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="QpPIPc_s"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="QpPIPc_t"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_u"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_v"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_w" style="font-weight: bold;"&gt;Unstructured Data Retrieval (RAG):&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Create a &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_x" style="font-weight: bold;"&gt;Vertex AI Search Data Store&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;. Point it at an &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_y" style="font-weight: bold;"&gt;&lt;a data-sfc-cp="" data-sfc-root="ep" href="https://cloud.google.com/data-cloud" jsaction="" jscontroller="SKtXpe#xR6Anb" jsuid="QpPIPc_z"&gt;Agentic Data Cloud Storage&lt;!--TgQPHd|||[]--&gt;&lt;/a&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; bucket containing PDFs, logs, or documentation to serve as your agent grounding source.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_10"&gt; [6, 7, 8] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_11"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_12" style="font-weight: bold;"&gt;Structured Enterprise Systems:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Deploy the &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_13" style="font-weight: bold;"&gt;MCP Toolbox for Databases&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; on &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_14" style="font-weight: bold;"&gt;Cloud Run&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; to connect structured systems like &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_15" style="font-weight: bold;"&gt;AlloyDB for PostgreSQL&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; or Cloud SQL. This allows agents to safely query database schemas using open-standard protocols.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_16"&gt; [3, 9, 10] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_17"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_18" style="font-weight: bold;"&gt;Cross-Cloud Analytics Data:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Connect analytical data lakes using &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_19" style="font-weight: bold;"&gt;BigQuery Omni&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;, allowing your agent to analyze open table formats (like Apache Iceberg) on GCP or AWS without moving data.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_1a"&gt; [7] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_1b"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="QpPIPc_1c" role="heading" style="font-size: 20px;"&gt;Step 3: Package Agent Logic with the Google ADK&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="QpPIPc_1d" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Wrap your custom orchestrations (whether built via LangGraph, CrewAI, or Google's native framework) using the &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_1e" style="font-weight: bold;"&gt;Agent Development Kit (ADK)&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_1f"&gt; [5, 11] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="QpPIPc_1g"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_1h"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_1i"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_1j" style="font-weight: bold;"&gt;Define App Wrapping:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Import &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="QpPIPc_1k" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;adk&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; and bundle your multi-agent routing configurations inside a production-grade application script.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_1l"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_1m" style="font-weight: bold;"&gt;Configure Memory Pipelines:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Link your runtime configurations to &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_1n" style="font-weight: bold;"&gt;Gemini Enterprise Agent Platform Sessions&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; or &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_1o" style="font-weight: bold;"&gt;Memory Bank&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;. This allows the agent to pull from persistent short-term thread states and long-term user fact histories.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_1p"&gt; [2, 3, 12] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_1q"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="QpPIPc_1r" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0px; overflow: auto hidden;"&gt;&lt;code class="language-python"&gt;&lt;span style="color: #9334e6;"&gt;from&lt;/span&gt; &lt;span style="color: #b45908;"&gt;google&lt;/span&gt;.&lt;span style="color: #b45908;"&gt;cloud&lt;/span&gt; &lt;span style="color: #9334e6;"&gt;import&lt;/span&gt; &lt;span style="color: #b45908;"&gt;aiplatform_v1beta1&lt;/span&gt; &lt;span style="color: #9334e6;"&gt;as&lt;/span&gt; vertex_ai
&lt;span style="color: #9334e6;"&gt;from&lt;/span&gt; &lt;span style="color: #b45908;"&gt;vertex_adk&lt;/span&gt; &lt;span style="color: #9334e6;"&gt;import&lt;/span&gt; &lt;span style="color: #b45908;"&gt;AgentApplication&lt;/span&gt;

&lt;span style="color: #80868b; font-style: italic;"&gt;# Bind reasoning model and session-state handlers&lt;/span&gt;
&lt;span style="color: #b45908;"&gt;app&lt;/span&gt; = AgentApplication(
    model=&lt;span style="color: #188038;"&gt;"&lt;/span&gt;&lt;span style="color: #188038;"&gt;gemini-1.5-pro&lt;/span&gt;&lt;span style="color: #188038;"&gt;"&lt;/span&gt;,
    memory_provider=&lt;span style="color: #188038;"&gt;"&lt;/span&gt;&lt;span style="color: #188038;"&gt;vertex-session-service&lt;/span&gt;&lt;span style="color: #188038;"&gt;"&lt;/span&gt; &lt;span style="color: #80868b; font-style: italic;"&gt;# Automatic multi-turn state tracking&lt;/span&gt;
)

@app.tool
&lt;span style="color: #9334e6;"&gt;def&lt;/span&gt; &lt;span style="color: #b45908;"&gt;run_database_query&lt;/span&gt;(&lt;span style="color: #b45908;"&gt;query&lt;/span&gt;: str):
    &lt;span style="color: #188038;"&gt;"""&lt;/span&gt;&lt;span style="color: #188038;"&gt;Executes validated analytical operations via BigQuery.&lt;/span&gt;&lt;span style="color: #188038;"&gt;"""&lt;/span&gt;
    &lt;span style="color: #80868b; font-style: italic;"&gt;# Automated schema discovery mechanism hooks here&lt;/span&gt;
    &lt;span style="color: #9334e6;"&gt;pass&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="QpPIPc_1s" role="heading" style="font-size: 20px;"&gt;Step 4: Containerize &amp;amp; Choose Compute Runtime&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="QpPIPc_1t" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Depending on your enterprise topology, choose between an opinionated managed environment or an open cloud-native landscape.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_1u"&gt; [11] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="QpPIPc_1v"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_1w"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_1x"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_1y" style="font-weight: bold;"&gt;Option A — Vertex AI Agent Engine (Recommended):&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Package your application code using the &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_1z" style="font-weight: bold;"&gt;Inline Source spec&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;. Upload files to a staging Cloud Storage bucket and execute &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="QpPIPc_20" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;aiplatform.developer_connect&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; to push it straight into &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_21" style="font-weight: bold;"&gt;Agent Engine&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; as a managed runtime.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_22"&gt; [4, 13, 14, 15] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_23"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_24" style="font-weight: bold;"&gt;Option B — Cloud Run (Flexible / Microservices):&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Build a Docker container containing your agent scripts, store the image in &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_25" style="font-weight: bold;"&gt;Artifact Registry&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;, and host it on &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_26" style="font-weight: bold;"&gt;Cloud Run&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; using worker pools for scalable background execution.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_27"&gt; [16] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_28"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="QpPIPc_29" role="heading" style="font-size: 20px;"&gt;Step 5: Implement IAM Least-Privilege &amp;amp; Network Boundaries&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="QpPIPc_2a" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Lock down interactions between your autonomous agent, user directories, and storage blocks.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_2b"&gt; [4, 9] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="QpPIPc_2c"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_2d"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_2e"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_2f" style="font-weight: bold;"&gt;User-Assigned Service Accounts:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Provision a specific worker service account with permissions strictly bound to &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="QpPIPc_2g" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid rgb(244, 246, 247); padding: 2px 4px;"&gt;roles/aiplatform.user&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; and storage bucket discovery roles.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_2h"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_2i" style="font-weight: bold;"&gt;VPC Service Controls:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Place your orchestration containers, database clusters, and MCP tooling nodes inside a isolated &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_2j" style="font-weight: bold;"&gt;VPC Service Controls perimeter&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; to completely halt unauthorized exfiltration vectors.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_2k"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_2l" style="font-weight: bold;"&gt;Secret Ingestion:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Store operational API keys (e.g., Salesforce or third-party web tools) inside &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_2m" style="font-weight: bold;"&gt;Secret Manager&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;, loading them dynamically at runtime.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_2n"&gt; [4, 9] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_2o"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="QpPIPc_2p" role="heading" style="font-size: 20px;"&gt;Step 6: Bind Model Armor and Operational Safeguards&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="QpPIPc_2q" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Filter input data arrays and output code execution tasks before they exit boundary perimeters.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="QpPIPc_2r"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_2s"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_2t"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_2u" style="font-weight: bold;"&gt;Model Armor Guardrails:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Mount &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_2v" style="font-weight: bold;"&gt;Vertex AI Model Armor&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; instances over the ingestion flow. This stops jailbreak prompt injections, redacts PII metrics (such as passwords and phone lines), and verifies grounding accuracy tags to block hallucinations.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_2w"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_2x" style="font-weight: bold;"&gt;Human-In-The-Loop (HITL) Triggers:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Set up conditional programmatic evaluations that halt agent progress and escalate tasks to an operational dashboard whenever an agent tries to finalize a high-risk financial transaction.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_2y"&gt; [7, 9, 17] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_2z"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="QpPIPc_30" role="heading" style="font-size: 20px;"&gt;Step 7: Observe and Continuous Evaluation&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="QpPIPc_31" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Maintain performance clarity and run real-time debugging against distributed multi-agent operations.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_32"&gt; [1, 4] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="QpPIPc_33"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_34"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_35"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_36" style="font-weight: bold;"&gt;Execution Tracing:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Connect &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_37" style="font-weight: bold;"&gt;Cloud Trace&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; to visualize granular execution timelines. This maps out exactly how long specific agent decisions take compared to underlying tool executions.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="QpPIPc_38"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_39" style="font-weight: bold;"&gt;Telemetry Dashboards:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Track CPU runtime variations, request-per-second thresholds, and overall model token consumption volumes within the active &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QpPIPc_3a" style="font-weight: bold;"&gt;Agent Engine UI&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; dashboard.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QpPIPc_3b"&gt; [2, 4]&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="kVZO2c#SfSkjb" jsuid="QpPIPc_3p"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="QpPIPc_3q"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>AgenticAI Deploying into Azure</title><link>http://dhirajpatra.blogspot.com/2026/08/agenticai-deploying-into-azure.html</link><category>agenticai</category><category>artificial intelligence</category><category>azure</category><category>genai</category><pubDate>Wed, 26 Aug 2026 21:46:32 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-6075963697462559887</guid><description>&lt;p&gt;Deploying a production-grade agentic AI application on &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_1" style="font-weight: bold;"&gt;Microsoft Azure&lt;/span&gt; requires orchestrating foundation models, vector databases, multi-agent frameworks, and secure access management.&lt;/p&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="gD7Ond_2" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Here is the step-by-step production deployment blueprint.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="gD7Ond_3" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="gD7Ond_4" role="heading" style="font-size: 20px;"&gt;1. Provision the Enterprise AI Infrastructure&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="gD7Ond_5"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_6"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_7"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_8" style="font-weight: bold;"&gt;Azure OpenAI Service:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Deploy core reasoning models (&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_9" style="font-weight: bold;"&gt;GPT-4o&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; or &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_a" style="font-weight: bold;"&gt;o1&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;) via Azure AI Studio to handle complex multi-step planning and orchestration tasks.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_b"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_c" style="font-weight: bold;"&gt;Azure AI Search:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Provision this managed service to serve as your high-performance enterprise vector database, handling hybrid search and document indexing.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_d"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_e" style="font-weight: bold;"&gt;Private Endpoints:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Lock down network traffic by forcing all communication between compute resources and AI services to travel via private virtual networks (&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_f" style="font-weight: bold;"&gt;VNet&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;).&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_g"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="gD7Ond_h" role="heading" style="font-size: 20px;"&gt;2. Configure Enterprise Datasources &amp;amp; Ingestion&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="gD7Ond_i"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_j"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_k"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_l" style="font-weight: bold;"&gt;Storage Accounts:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Upload raw unstructured data (PDFs, docs) into secure &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_m" style="font-weight: bold;"&gt;Azure Blob Storage&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; containers protected by localized firewalls.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_n"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_o" style="font-weight: bold;"&gt;Structured Data:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Connect transactional databases like &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_p" style="font-weight: bold;"&gt;Azure SQL Database&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; or Cosmos DB using managed identity credentials rather than hardcoded keys.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_q"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_r" style="font-weight: bold;"&gt;Ingestion Pipelines:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Build &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_s" style="font-weight: bold;"&gt;Azure Data Factory&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; or Azure AI Studio indexers to automatically chunk text, generate embeddings, and update the vector store.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_t"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="gD7Ond_u" role="heading" style="font-size: 20px;"&gt;3. Containerise and Package the Agent&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="gD7Ond_v"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_w"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_x"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_y" style="font-weight: bold;"&gt;Orchestration Code:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Bundle your multi-agent code framework (such as &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_z" style="font-weight: bold;"&gt;LangGraph&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;, &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_10" style="font-weight: bold;"&gt;AutoGen&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;, or &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_11" style="font-weight: bold;"&gt;Semantic Kernel&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;) inside a lightweight Docker container image.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_12"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_13" style="font-weight: bold;"&gt;Container Registry:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Push your finalized enterprise production container images directly into a private &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_14" style="font-weight: bold;"&gt;Azure Container Registry (ACR)&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; repository.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_15"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_16" style="font-weight: bold;"&gt;Environment Configuration:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Store runtime application secrets, external API keys, and endpoint configurations inside a secure &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_17" style="font-weight: bold;"&gt;Azure Key Vault&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; instance.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_18"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="gD7Ond_19" role="heading" style="font-size: 20px;"&gt;4. Deploy the Agent Compute Layer&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="gD7Ond_1a"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_1b"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_1c"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_1d" style="font-weight: bold;"&gt;Azure Container Apps (ACA):&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Deploy the multi-agent container into ACA for serverless scaling, built-in event routing, and clean HTTP microservice isolation.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_1e"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_1f" style="font-weight: bold;"&gt;Event-Driven Workflows:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Attach &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_1g" style="font-weight: bold;"&gt;Azure Functions&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; or Service Bus to trigger background agent tasks automatically when files upload or databases update.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_1h"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_1i" style="font-weight: bold;"&gt;Managed Identities:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Assign a user-assigned &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_1j" style="font-weight: bold;"&gt;Managed Identity&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; to the compute cluster to authenticate seamlessly with Azure OpenAI and databases.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_1k"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="gD7Ond_1l" role="heading" style="font-size: 20px;"&gt;5. Implement Operational Safeguards &amp;amp; Monitoring&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="qhbHec#lPvkWe" jsuid="gD7Ond_1m"&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_1n"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_1o"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_1p" style="font-weight: bold;"&gt;Azure AI Content Safety:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Intercept user inputs and agent outputs in real-time to block jailbreaks, toxic speech, and protected material.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_1q"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_1r" style="font-weight: bold;"&gt;Application Insights:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Track runtime agent latency, asynchronous execution step durations, custom exceptions, and underlying model response structures.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_1s"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_1t" style="font-weight: bold;"&gt;Cost Controls:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Configure granular &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="gD7Ond_1u" style="font-weight: bold;"&gt;Azure Cost Management&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; budgets and token caps per API deployment to prevent recursive agent loops from spiking bills.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="gD7Ond_1v"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ul&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="gD7Ond_1w" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="gD7Ond_1x" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="kVZO2c#SfSkjb" jsuid="gD7Ond_26"&gt;&lt;br /&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="gD7Ond_27"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="gD7Ond_28"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>Azure  - Financial Services Application with RAG and AgenticAI</title><link>http://dhirajpatra.blogspot.com/2026/08/azure-financial-services-application.html</link><category>agent</category><category>agenticai</category><category>artificial intelligence</category><category>azure</category><category>rag</category><pubDate>Wed, 19 Aug 2026 08:23:54 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-8542245466616850256</guid><description>&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZWZCRaUk5-8tUk2ueXpjLTB4SADOm3AdmnB7t3Z-sOVoKWAc1VV9_vJQIIulOVjm7p3JRL0wQerFNEO8azK06b5lHY9dxEmLX4x35AYduV2SIexjCQ8nXcRi6OLALSO3pIcgDSIsgYhyphenhyphenRYWg2I6Lp9aiShhL0uiyKBLBgSIH9pVLQA7SVnT5D4Qwmi61-/s1536/Azure_architecture_ecommerce.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1024" data-original-width="1536" height="381" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZWZCRaUk5-8tUk2ueXpjLTB4SADOm3AdmnB7t3Z-sOVoKWAc1VV9_vJQIIulOVjm7p3JRL0wQerFNEO8azK06b5lHY9dxEmLX4x35AYduV2SIexjCQ8nXcRi6OLALSO3pIcgDSIsgYhyphenhyphenRYWg2I6Lp9aiShhL0uiyKBLBgSIH9pVLQA7SVnT5D4Qwmi61-/w572-h381/Azure_architecture_ecommerce.png" width="572" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="text-align: left;"&gt;generated by microsoft copilot&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;I would make the Azure version slightly more advanced than the AWS/GCP versions because Azure now has a particularly strong enterprise story around Microsoft Foundry + Agent 365 + Entra + Defender + Purview.&lt;/p&gt;&lt;p&gt;I also want to update two terms in your original architecture for interview accuracy:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Use “Microsoft Foundry” / “Microsoft Foundry Agent Service” rather than treating the older Azure AI Foundry naming as the whole platform.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;“Agent 365” is now a real enterprise control plane for discovering, governing, securing and managing agents across Microsoft and third-party ecosystems. It became generally available for the commercial segment on May 1, 2026. (&lt;a href="https://learn.microsoft.com/en-us/microsoft-agent-365/overview?utm_source=chatgpt.com" title="Microsoft Agent 365 overview | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Azure API Management now has dedicated AI Gateway capabilities, including token quotas, semantic caching, model routing/governance and MCP management. The dedicated AI Gateway tier is currently preview, so for production architecture I would distinguish the generally available APIM AI-gateway capabilities from the preview tier. (&lt;a href="https://learn.microsoft.com/en-us/azure/api-management/genai-gateway-capabilities?utm_source=chatgpt.com" title="AI gateway capabilities in Azure API Management | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Azure AI Search now also has “agentic retrieval” and underpins Foundry IQ, Microsoft's managed, permission-aware knowledge layer for agents. (&lt;a href="https://learn.microsoft.com/en-us/azure/search/vector-search-overview?utm_source=chatgpt.com" title="Vector Search Overview - Azure AI Search | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;1. Business scenario&lt;/h1&gt;&lt;p&gt;We'll use exactly the same financial-services problem:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“Investigate why counterparty ABC breached its exposure limit yesterday and recommend what action should be taken.”&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The solution needs:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                    FINANCIAL AI PLATFORM

        ┌────────────────────────────────────────┐
        │                                        │
        │  Unstructured Knowledge                │
        │  ├── Risk policies                     │
        │  ├── Regulatory documents              │
        │  ├── Credit policies                   │
        │  └── Procedures                        │
        │                                        │
        │  Structured Data                       │
        │  ├── Trades                            │
        │  ├── Exposure                          │
        │  ├── Limits                            │
        │  ├── P&amp;amp;L                               │
        │  └── Risk metrics                      │
        │                                        │
        │  Enterprise Tools                      │
        │  ├── Risk APIs                         │
        │  ├── Trade APIs                        │
        │  ├── Workflow                          │
        │  └── Microsoft 365                     │
        │                                        │
        └────────────────────────────────────────┘&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is therefore:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;RAG
+
Agentic AI
+
Enterprise Data
+
Enterprise Tools
+
Security
+
Governance
+
Observability&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;2. Complete Azure architecture&lt;/h1&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                              USERS
                                │
                                ▼
                    ┌─────────────────────┐
                    │ Azure Application    │
                    │ Gateway + WAF        │
                    └──────────┬──────────┘
                               │
                         Azure Firewall
                        / Egress Control
                               │
                               ▼
                  ┌─────────────────────────┐
                  │ Azure App Service       │
                  │ / Container Apps / AKS  │
                  │                         │
                  │ API                     │
                  │ UI                      │
                  │ Orchestrator            │
                  └───────────┬─────────────┘
                              │
                              ▼
                 ┌──────────────────────────┐
                 │ Azure API Management     │
                 │ AI Gateway               │
                 │                          │
                 │ Auth                     │
                 │ Rate limits              │
                 │ Token quotas             │
                 │ Model routing            │
                 │ Semantic caching         │
                 │ Cost tracking            │
                 │ MCP governance           │
                 └────────────┬─────────────┘
                              │
                 ┌────────────┼──────────────┐
                 │            │              │
                 ▼            ▼              ▼
          Microsoft        Azure AI        Agent
          Foundry          Search          Tools
                 │            │              │
                 │            │              ├── Functions
                 │            │              ├── Logic Apps
                 │            │              ├── APIs
                 │            │              ├── SQL
                 │            │              └── MCP
                 │            │
                 ▼            ▼
          Foundry Models   RAG / Vector
          / Model Catalog   / Hybrid Search
                 │
                 ▼
           Foundry Agent
               Service
                 │
                 ▼
            Model Armor /
          Content Safety
                 │
                 ▼
          Human Approval
                 │
                 ▼
               USER&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Security and governance wrap around the entire architecture:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Entra ID
   │
   ├── Identity
   ├── RBAC
   └── Managed Identity

Agent 365
   │
   ├── Agent inventory
   ├── Governance
   ├── Ownership
   ├── Lifecycle
   └── Risk controls

Defender
   │
   ├── Threat detection
   └── Runtime protection

Purview
   │
   ├── Data governance
   ├── Classification
   └── Compliance

Private Endpoints
   │
   └── Private connectivity&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;3. Perimeter&lt;/h1&gt;&lt;p&gt;The request first hits:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Internet
   │
   ▼
Azure Application Gateway
   │
   ▼
WAF
   │
   ├── SQL injection
   ├── XSS
   ├── malicious payloads
   ├── IP rules
   └── HTTP attacks
   │
   ▼
Backend&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For a larger global architecture I would consider:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Azure Front Door
        │
        ▼
Application Gateway
        │
        ▼
Regional workload&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That gives:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Global traffic management
+
Regional ingress
+
WAF
+
Application routing&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;4. Compute layer&lt;/h1&gt;&lt;p&gt;Your original proposal uses App Service.&lt;/p&gt;&lt;p&gt;That is perfectly reasonable for:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Frontend
REST APIs
Lightweight orchestration
Stateless services&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;But for a senior architect interview, explain the alternatives:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                    Azure Compute
                         │
          ┌──────────────┼──────────────┐
          ▼              ▼              ▼
     App Service    Container Apps     AKS
          │              │              │
       Simple          Serverless      Complex
       APIs            containers      Kubernetes&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;My decision:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;App Service
   ↓
Simple enterprise web/API application

Container Apps
   ↓
Microservices + event-driven agents

AKS
   ↓
Complex Kubernetes platform,
GPU/custom models,
advanced scheduling&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For our architecture:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Application Gateway
        │
        ▼
Azure Container Apps / App Service
        │
        ├── API
        ├── UI
        └── Orchestration&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And use AKS only where justified.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;5. Azure API Management as AI Gateway&lt;/h1&gt;&lt;p&gt;This is one of the most important parts.&lt;/p&gt;&lt;p&gt;Do not allow:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;App
 │
 ├────► Gemini
 ├────► Claude
 ├────► GPT
 └────► other models&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Instead:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                 Applications
                      │
                      ▼
              Azure API Management
                    AI Gateway
                      │
          ┌───────────┼───────────┐
          │           │           │
       Security     Routing      Cost
          │           │           │
          ▼           ▼           ▼
        IAM       Model choice  Tokens
                      │
          ┌───────────┼───────────┐
          ▼           ▼           ▼
       Foundry      Azure       External
        Models      OpenAI       Models&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Azure APIM's current AI gateway capabilities include token rate limiting, semantic caching, model routing/governance and support for model APIs from multiple providers. (&lt;a href="https://learn.microsoft.com/en-us/azure/api-management/genai-gateway-capabilities?utm_source=chatgpt.com" title="AI gateway capabilities in Azure API Management | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;6. Token governance&lt;/h1&gt;&lt;p&gt;Imagine three departments:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Risk
Compliance
Research&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Without a gateway:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Risk
  │
  └── consumes entire model quota

Compliance
  │
  └── 429 errors

Research
  │
  └── 429 errors&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;APIM solves this with token-aware policies.&lt;/p&gt;&lt;p&gt;Conceptually:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Risk
   │
   ▼
100K TPM

Compliance
   │
   ▼
50K TPM

Research
   │
   ▼
25K TPM&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Azure API Management supports token limits based on consumers such as subscription keys or arbitrary policy keys. (&lt;a href="https://learn.microsoft.com/en-us/azure/api-management/genai-gateway-capabilities?utm_source=chatgpt.com" title="AI gateway capabilities in Azure API Management | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;7. Semantic caching&lt;/h1&gt;&lt;p&gt;This is particularly useful for enterprise assistants.&lt;/p&gt;&lt;p&gt;User asks:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“What is the counterparty limit policy?”&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Another user asks:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“What is the approved exposure limit policy for counterparties?”&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The prompts aren't identical but may be semantically equivalent.&lt;/p&gt;&lt;p&gt;Instead of:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Request
 ↓
LLM
 ↓
expensive inference&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;we can have:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Request
 ↓
Semantic Cache
 │
 ├── HIT ──► cached response
 │
 └── MISS
       ↓
      LLM&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Azure APIM supports semantic caching with Azure Managed Redis or another compatible external cache. (&lt;a href="https://learn.microsoft.com/en-us/azure/api-management/azure-openai-enable-semantic-caching?utm_source=chatgpt.com" title="Enable Semantic Caching for LLM APIs in Azure API Management | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;8. Microsoft Foundry&lt;/h1&gt;&lt;p&gt;Now we reach the AI platform.&lt;/p&gt;&lt;p&gt;Conceptually:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                 Microsoft Foundry
                       │
       ┌───────────────┼────────────────┐
       │               │                │
       ▼               ▼                ▼
     Models          Agents          Evaluation
       │               │                │
       ▼               ▼                ▼
    Model Catalog   Agent Service     Testing&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Foundry becomes the AI engineering platform.&lt;/p&gt;&lt;p&gt;The architecture is:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Developer
   │
   ▼
Foundry
   │
   ├── Model selection
   ├── Agent development
   ├── Tools
   ├── Evaluation
   ├── Deployment
   └── Monitoring&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;9. Foundry Agent Service&lt;/h1&gt;&lt;p&gt;The agent receives:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;"Investigate ABC exposure breach."&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It can:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;PLAN
 ↓
retrieve information
 ↓
call tools
 ↓
reason
 ↓
retrieve more information
 ↓
validate
 ↓
recommend action&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Architecture:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                     USER
                       │
                       ▼
                Foundry Agent
                    Service
                       │
                 ┌─────┴─────┐
                 │   Planner │
                 └─────┬─────┘
                       │
        ┌──────────────┼──────────────┐
        ▼              ▼              ▼
      RAG            Tools          APIs
        │              │              │
        ▼              ▼              ▼
 AI Search        Functions      Enterprise
                                  systems&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;10. Agent state&lt;/h1&gt;&lt;p&gt;Your original proposal uses Cosmos DB.&lt;/p&gt;&lt;p&gt;That's a good architectural choice.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                    Agent
                      │
                      ▼
                 Cosmos DB
                      │
       ┌──────────────┼──────────────┐
       ▼              ▼              ▼
 conversation      state          metadata
 history&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-json"&gt;{
  "conversation_id": "abc-123",
  "user_id": "u-987",
  "tenant_id": "bank-a",
  "agent": "risk-investigator",
  "state": {
    "counterparty": "ABC",
    "exposure": 125000000,
    "limit": 100000000,
    "breach": 25000000
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;But I would separate:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Conversation state
       ↓
Cosmos DB

Financial source of truth
       ↓
PostgreSQL / Fabric / Databricks / core systems&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Never make agent memory the financial system of record.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;11. RAG&lt;/h1&gt;&lt;p&gt;Now the knowledge layer.&lt;/p&gt;&lt;p&gt;Documents:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Azure Blob Storage
│
├── Credit Policy.pdf
├── Market Risk Policy.pdf
├── Counterparty Policy.pdf
├── Basel Regulations.pdf
└── Internal Procedures.pdf&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pipeline:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                 Blob Storage
                      │
                      ▼
                Azure AI Search
                      │
          ┌───────────┼───────────┐
          ▼           ▼           ▼
        Chunk       Embed       Metadata
          │           │           │
          └───────────┼───────────┘
                      ▼
                Search Index
                      │
           ┌──────────┼──────────┐
           ▼          ▼          ▼
        Keyword     Vector     Hybrid
        Search      Search     Search&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Azure AI Search currently supports vector, keyword, hybrid and multimodal search. (&lt;a href="https://learn.microsoft.com/en-us/azure/search/vector-search-overview?utm_source=chatgpt.com" title="Vector Search Overview - Azure AI Search | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;12. Hybrid search&lt;/h1&gt;&lt;p&gt;Don't rely exclusively on vector search.&lt;/p&gt;&lt;p&gt;For financial applications:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;User:

"Find policy CR-1024 regarding
BBB- rated counterparties."&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The exact identifier:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;CR-1024&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;is better handled by lexical search.&lt;/p&gt;&lt;p&gt;But:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;"What happens if the counterparty's
credit quality deteriorates?"&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;is better suited to semantic retrieval.&lt;/p&gt;&lt;p&gt;Therefore:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                 Query
                   │
          ┌────────┴────────┐
          ▼                 ▼
     Keyword Search    Vector Search
          │                 │
          └────────┬────────┘
                   ▼
             Hybrid ranking
                   │
                   ▼
             Top documents&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Azure AI Search explicitly supports hybrid vector + keyword queries. (&lt;a href="https://learn.microsoft.com/en-us/azure/search/vector-search-overview?utm_source=chatgpt.com" title="Vector Search Overview - Azure AI Search | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;13. Agentic retrieval&lt;/h1&gt;&lt;p&gt;This is an important newer Azure capability.&lt;/p&gt;&lt;p&gt;Instead of a simplistic:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;question
 ↓
vector search
 ↓
documents&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;agentic retrieval can reason about the retrieval process itself.&lt;/p&gt;&lt;p&gt;Conceptually:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;User Question
      │
      ▼
Retrieval Agent
      │
      ├── Understand question
      ├── Break into subqueries
      ├── Search
      ├── Filter
      ├── Rank
      └── Produce evidence
             │
             ▼
          Main Agent&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Azure AI Search documentation now includes agentic retrieval and identifies Azure AI Search as the foundation for Foundry IQ's permission-aware knowledge layer. (&lt;a href="https://learn.microsoft.com/en-us/azure///search/?utm_source=chatgpt.com" title="Azure AI Search documentation - Azure AI Search | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;14. Security-aware RAG&lt;/h1&gt;&lt;p&gt;This is critical for banking.&lt;/p&gt;&lt;p&gt;Suppose:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Consultant A
   ↓
Client A

Consultant B
   ↓
Client B&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The search index contains:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-json"&gt;{
  "document_id": "DOC-123",
  "tenant_id": "BANK-A",
  "classification": "CONFIDENTIAL",
  "business_unit": "MARKET_RISK"
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The retrieval request must incorporate authorization context.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;User
 │
 ▼
Entra ID
 │
 ▼
Claims
 │
 ├── tenant
 ├── role
 ├── region
 └── classification
 │
 ▼
Azure AI Search
 │
 ▼
Authorized results&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Azure AI Search supports role-based access approaches, and current Microsoft documentation emphasizes permission-aware retrieval through the Foundry IQ knowledge layer. (&lt;a href="https://learn.microsoft.com/en-us/azure/search/vector-search-overview?utm_source=chatgpt.com" title="Vector Search Overview - Azure AI Search | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;15. Microsoft Entra ID&lt;/h1&gt;&lt;p&gt;Entra becomes the identity backbone.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                    Entra ID
                       │
        ┌──────────────┼──────────────┐
        ▼              ▼              ▼
      Users          Agents         Services
        │              │              │
        ▼              ▼              ▼
      RBAC       Agent Identity    Managed Identity&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Avoid:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;API_KEY = "xxxxxxxx"&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Prefer:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Managed Identity
        │
        ▼
Entra
        │
        ▼
Azure resource&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This eliminates unnecessary secret distribution.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;16. Azure Agent 365&lt;/h1&gt;&lt;p&gt;This is where your Azure architecture becomes substantially different from AWS/GCP.&lt;/p&gt;&lt;p&gt;Think of Agent 365 as the enterprise agent control plane.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                  Agent 365
                      │
       ┌──────────────┼─────────────────┐
       ▼              ▼                 ▼
   Inventory       Governance        Security
       │              │                 │
       ▼              ▼                 ▼
 Agent registry   Policies          Threat detection
 Ownership        Permissions       Runtime protection
 Lifecycle         Compliance       Risk&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Microsoft describes Agent 365 as a centralized control plane for discovering, managing, governing and securing agents across Microsoft and third-party ecosystems. (&lt;a href="https://learn.microsoft.com/en-us/office365/servicedescriptions/microsoft-agent-365/microsoft-agent-365?utm_source=chatgpt.com" title="Microsoft Agent 365 - Service Descriptions | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;17. Agent lifecycle&lt;/h1&gt;&lt;p&gt;This is an excellent interview concept.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;              CREATE
                │
                ▼
             TEST
                │
                ▼
           EVALUATE
                │
                ▼
            APPROVE
                │
                ▼
           REGISTER
                │
                ▼
            DEPLOY
                │
                ▼
            MONITOR
                │
                ▼
             AUDIT
                │
                ▼
            RETIRE&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agent 365 provides governance capabilities around onboarding, ownership, activation, blocking and lifecycle management. (&lt;a href="https://learn.microsoft.com/en-us/training/modules/agent-365-govern/?utm_source=chatgpt.com" title="Govern agents using Agent 365 - Training | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;18. Agent identity&lt;/h1&gt;&lt;p&gt;A modern Azure architecture should treat an agent as an identity-bearing enterprise entity.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Human
 │
 ▼
Entra Identity
 │
 ▼
Agent
 │
 ▼
Agent Identity
 │
 ├── permissions
 ├── owner
 ├── environment
 ├── risk classification
 └── allowed tools&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Risk Agent
   │
   ├── READ exposure
   ├── READ policies
   ├── READ trades
   └── REQUEST approval

NOT:

   ├── DELETE trades
   ├── change credit limit
   └── transfer money&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;19. Defender&lt;/h1&gt;&lt;p&gt;Add Microsoft Defender around runtime security.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 │
 ▼
Defender
 │
 ├── threat detection
 ├── malicious behavior
 ├── suspicious activity
 └── runtime protection&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Microsoft's current Agent 365 security model integrates Defender capabilities for continuous threat detection and runtime protection. (&lt;a href="https://learn.microsoft.com/en-us/microsoft-agent-365/overview?utm_source=chatgpt.com" title="Microsoft Agent 365 overview | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;20. Purview&lt;/h1&gt;&lt;p&gt;Purview answers a different question:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"What data is this, who is allowed to access it, and what compliance rules apply?"&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Architecture:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                  Microsoft Purview
                         │
        ┌────────────────┼────────────────┐
        ▼                ▼                ▼
   Classification     Lineage         Compliance
        │                │                │
        ▼                ▼                ▼
  Confidential       Data flow       Policies
  PII                dependencies
  Financial&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For a financial-services GenAI platform:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 ↓
Data request
 ↓
Purview classification/governance
 ↓
Authorized data&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;21. Model safety&lt;/h1&gt;&lt;p&gt;Use the current Microsoft AI safety stack rather than relying on one control.&lt;/p&gt;&lt;p&gt;Conceptually:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;USER
 │
 ▼
APIM
 │
 ▼
Input safety
 │
 ▼
Foundry Agent
 │
 ▼
Model
 │
 ▼
Output safety
 │
 ▼
APIM
 │
 ▼
USER&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For interview purposes, distinguish:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Application security
        ↓
WAF / Firewall / Entra

Data security
        ↓
Purview / RBAC / Private Endpoint

AI safety
        ↓
Content safety / model safety controls

Agent security
        ↓
Agent 365 / Defender

LLM grounding
        ↓
Azure AI Search / RAG / citations&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Don't claim that any single component "prevents hallucinations."&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;22. Data architecture&lt;/h1&gt;&lt;p&gt;Now incorporate your Microsoft data stack.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                         DATA PLATFORM
                              │
          ┌───────────────────┼────────────────────┐
          │                   │                    │
          ▼                   ▼                    ▼
     Microsoft Fabric     Databricks          Operational DBs
          │                   │                    │
          ▼                   ▼                    ▼
       OneLake            Lakehouse          PostgreSQL
          │                   │                    │
          └───────────────────┼────────────────────┘
                              ▼
                       Agent / Analytics&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I would use Fabric for:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Enterprise analytics
OneLake
Power BI
Data integration
Governed analytics&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Databricks for:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Advanced data engineering
Spark
ML workloads
Existing Databricks estate&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;PostgreSQL for:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Transactional application data
Agent metadata
Business services&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Cosmos DB for:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent state
Conversation history
High-scale JSON/session data&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Redis for:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Semantic cache
Session cache
Hot data
Rate-related state&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;23. Microsoft Fabric&lt;/h1&gt;&lt;p&gt;For your financial architecture:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                  Microsoft Fabric
                        │
        ┌───────────────┼─────────────────┐
        ▼               ▼                 ▼
     OneLake         Data Factory       Power BI
        │               │                 │
        ▼               ▼                 ▼
 Historical         Pipelines          Executive
 financial data                       dashboard&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 │
 ├── RAG → AI Search
 │
 └── Analytics → Fabric&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is a powerful separation.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;24. Agent tools&lt;/h1&gt;&lt;p&gt;Define deterministic tools.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;async def get_counterparty_exposure(
    counterparty_id: str
):
    ...


async def get_counterparty_limit(
    counterparty_id: str
):
    ...


async def get_recent_trades(
    counterparty_id: str,
    hours: int
):
    ...


async def search_risk_policy(
    question: str
):
    ...


async def create_risk_case(
    counterparty_id: str,
    reason: str
):
    ...&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The agent gets capabilities, not unrestricted access.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;25. Azure Functions&lt;/h1&gt;&lt;p&gt;Functions are ideal for short deterministic operations.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 │
 ▼
Azure Function
 │
 ├── Validate
 ├── Calculate
 ├── Transform
 ├── Call API
 └── Return result&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;def calculate_breach(exposure, limit):

    breach = max(exposure - limit, 0)

    return {
        "exposure": exposure,
        "limit": limit,
        "breach": breach,
        "is_breach": breach &amp;gt; 0
    }&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is better than asking the LLM to perform every business calculation.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;26. Logic Apps&lt;/h1&gt;&lt;p&gt;Use Logic Apps for enterprise workflow integration.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 │
 ▼
Logic Apps
 │
 ├── Send email
 ├── Teams notification
 ├── Create approval
 ├── Update CRM
 ├── Create ServiceNow case
 └── Trigger workflow&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent detects breach
        │
        ▼
Logic Apps
        │
        ▼
Risk Manager
        │
        ▼
Microsoft Teams
        │
        ▼
Approval&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;27. Microsoft 365 integration&lt;/h1&gt;&lt;p&gt;This is where Azure becomes especially attractive for Microsoft-heavy enterprises.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                    Agent
                      │
          ┌───────────┼────────────┐
          ▼           ▼            ▼
       Outlook      Teams      SharePoint
          │           │            │
          ▼           ▼            ▼
       Email       Approval      Documents&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The agent could:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Find policy
      ↓
Investigate breach
      ↓
Create Teams approval
      ↓
Send Outlook notification
      ↓
Update SharePoint case&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;But permissions must remain delegated and governed rather than allowing the agent unrestricted Microsoft 365 access.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;28. Complete agent workflow&lt;/h1&gt;&lt;p&gt;User:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“Investigate ABC's exposure breach.”&lt;/p&gt;&lt;/blockquote&gt;&lt;pre&gt;&lt;code class="language-text"&gt;USER
 │
 ▼
Application Gateway
 │
 ▼
WAF
 │
 ▼
App Service / Container Apps
 │
 ▼
API Management
 │
 ▼
Entra authentication
 │
 ▼
Foundry Agent Service
 │
 ├── get_exposure()
 │       │
 │       ▼
 │    PostgreSQL/API
 │
 ├── get_limit()
 │       │
 │       ▼
 │    PostgreSQL
 │
 ├── get_recent_trades()
 │       │
 │       ▼
 │    Databricks/Fabric/API
 │
 ├── search_policy()
 │       │
 │       ▼
 │    Azure AI Search
 │
 └── calculate_breach()
         │
         ▼
      Azure Function
 │
 ▼
Agent reasoning
 │
 ▼
Recommendation
 │
 ▼
Human approval
 │
 ▼
Logic Apps
 │
 ▼
Teams / Outlook / workflow&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;29. Example result&lt;/h1&gt;&lt;p&gt;The tools return:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Counterparty: ABC

Exposure:
$125M

Approved limit:
$100M

Breach:
$25M

Primary driver:
Trade XYZ

Policy:
Counterparty Policy §4.3&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The agent produces:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;ABC currently exceeds its approved counterparty
limit by $25M.

The breach is primarily attributable to Trade XYZ.

The applicable policy requires escalation to
Risk Control.

Recommendation:

1. Escalate the breach.
2. Review Trade XYZ.
3. Obtain Risk Control approval before changing
   the exposure limit.&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;30. Human-in-the-loop&lt;/h1&gt;&lt;p&gt;Never allow:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 ↓
Change credit limit&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Instead:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 ↓
Recommendation
 ↓
Logic Apps
 ↓
Approval
 ↓
Risk Manager
 ┌───────────────┐
 │               │
 ▼               ▼
APPROVE        REJECT
 │               │
 ▼               ▼
Execute        Stop&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For regulated financial workloads, this is one of the strongest architecture decisions you can explain in an interview.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;31. MCP&lt;/h1&gt;&lt;p&gt;For a modern Azure architecture, add MCP.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                         Agent
                           │
                           ▼
                       MCP Client
                           │
          ┌────────────────┼────────────────┐
          ▼                ▼                ▼
      Risk MCP         Trade MCP        Policy MCP
          │                │                │
          ▼                ▼                ▼
      Risk API          Trade API       AI Search&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Azure API Management can expose and govern MCP servers, and its AI gateway capabilities also include MCP-related governance. (&lt;a href="https://learn.microsoft.com/en-us/azure/api-management/genai-gateway-capabilities?utm_source=chatgpt.com" title="AI gateway capabilities in Azure API Management | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;This is particularly useful when you have:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Many agents
+
Many tools
+
Many teams&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;32. Multi-agent architecture&lt;/h1&gt;&lt;p&gt;For a more sophisticated financial platform:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                    Supervisor Agent
                           │
          ┌────────────────┼────────────────┐
          ▼                ▼                ▼
     Risk Agent       Compliance Agent    Trade Agent
          │                │                │
          ▼                ▼                ▼
      Risk APIs          Policies         Trade APIs
          │                │                │
          └────────────────┼────────────────┘
                           ▼
                    Decision Agent
                           │
                           ▼
                    Human Approval&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;But don't use multi-agent just because you can.&lt;/p&gt;&lt;p&gt;A strong interview statement:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;“I start with a single agent and deterministic tools. I introduce specialized agents only when responsibility boundaries, security isolation, independent evaluation or organizational ownership justify the additional orchestration complexity.”&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;h1&gt;33. Agent 365 across the architecture&lt;/h1&gt;&lt;p&gt;This is important.&lt;/p&gt;&lt;p&gt;Agent 365 should not be thought of as another model or agent framework.&lt;/p&gt;&lt;p&gt;Think:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                 AGENT 365
              ENTERPRISE CONTROL
                   PLANE
                      │
        ┌─────────────┼──────────────┐
        ▼             ▼              ▼
      FOUNDry       Copilot       3rd Party
       Agents        Agents         Agents
        │             │              │
        └─────────────┼──────────────┘
                      ▼
             Common governance&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Microsoft says Agent 365 can also surface agents built on third-party platforms such as Google Vertex AI and Amazon Bedrock in the Microsoft 365 admin center. (&lt;a href="https://learn.microsoft.com/en-us/microsoft-agent-365/third-party-agents?utm_source=chatgpt.com" title="Ecosystem partner agents available in Agent 365 | Microsoft Learn"&gt;Microsoft Learn&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;That is a very important enterprise capability.&lt;/p&gt;&lt;p&gt;It means your enterprise architecture can be:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Azure Agent
      +
AWS Agent
      +
GCP Agent
      +
Microsoft 365 Agent
      ↓
Agent 365 governance&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;34. Evaluation&lt;/h1&gt;&lt;p&gt;Your original list:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;F1
BLEU
GLEU
METEOR
ROUGE&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;is useful, but I would modernize the evaluation framework.&lt;/p&gt;&lt;p&gt;For an enterprise RAG/agent platform:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                 EVALUATION
                     │
       ┌─────────────┼─────────────┐
       ▼             ▼             ▼
   Retrieval       Answer        Agent
       │             │             │
       ▼             ▼             ▼
 Precision        Correctness   Tool selection
 Recall           Grounding     Tool arguments
 MRR              Relevance     Trajectory
 NDCG             Citation      Safety&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;35. Traditional NLP metrics&lt;/h1&gt;&lt;p&gt;Use:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;BLEU
ROUGE
METEOR
GLEU&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;when appropriate for text-overlap-oriented tasks.&lt;/p&gt;&lt;p&gt;But for modern GenAI:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;BLEU
ROUGE&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;alone are insufficient.&lt;/p&gt;&lt;p&gt;For RAG:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Context precision
Context recall
Faithfulness
Groundedness
Answer relevance
Citation correctness&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For agents:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Tool selection accuracy
Tool argument accuracy
Trajectory correctness
Task completion
Policy compliance
Safety
Latency
Cost&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;36. Evaluation pipeline&lt;/h1&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Historical questions
        │
        ▼
Evaluation Dataset
        │
        ▼
Agent
        │
        ▼
┌─────────────────────────┐
│ Evaluation              │
│                         │
│ Retrieval               │
│ Grounding               │
│ Answer                  │
│ Tool usage              │
│ Safety                  │
│ Cost                    │
│ Latency                 │
└────────────┬────────────┘
             │
             ▼
        Scorecard
             │
       ┌─────┴─────┐
       ▼           ▼
    PASS          FAIL
       │           │
       ▼           ▼
 Production      Improve&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;37. Observability&lt;/h1&gt;&lt;p&gt;Use Azure Monitor ecosystem:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Application
    │
    ├── Azure Monitor
    ├── Application Insights
    ├── Log Analytics
    └── Distributed tracing
             │
             ▼
        Observability&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Capture:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Request ID
Tenant ID
Agent ID
Model
Prompt tokens
Completion tokens
Latency
Tool calls
RAG retrieval
Search scores
Errors
Retries
Guardrail events
Cost&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;38. Agent trajectory&lt;/h1&gt;&lt;p&gt;Don't log only:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Request → Response&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Log:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Request
 │
 ▼
Agent
 │
 ├── RAG
 │    └── AI Search
 │
 ├── Tool
 │    └── Exposure API
 │
 ├── Tool
 │    └── Trade API
 │
 ├── Function
 │
 └── Model
      │
      ▼
   Response&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This lets you diagnose:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Why was the answer wrong?

Why was the agent slow?

Why did it call the wrong tool?

Why did it retrieve the wrong document?

Why did cost increase?&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;39. Scaling&lt;/h1&gt;&lt;p&gt;This directly addresses your earlier architecture concern.&lt;/p&gt;&lt;p&gt;Don't autoscale GenAI applications only using CPU.&lt;/p&gt;&lt;p&gt;Monitor:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;CPU
Memory
Request rate
Concurrent requests
Queue depth
LLM latency
RAG latency
Token rate
Search latency
Tool latency
Cache hit rate&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Architecture:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                 Traffic
                    │
                    ▼
              App Gateway
                    │
                    ▼
               Container
                 Apps
                    │
             ┌──────┴───────┐
             ▼              ▼
          Instance 1      Instance 2
             │              │
             └──────┬───────┘
                    ▼
                APIM
                    │
                    ▼
                  Model&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For self-hosted models on AKS:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;GPU utilization
GPU memory
batch size
tokens/sec
queue depth
KV cache
concurrency&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;must also be monitored.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;40. Failure handling&lt;/h1&gt;&lt;p&gt;Production AI must assume failures.&lt;/p&gt;&lt;h3&gt;AI model failure&lt;/h3&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Primary model
     │
     X
     │
     ▼
Fallback model
     │
     X
     │
     ▼
Graceful degradation&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;AI Search failure&lt;/h3&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 │
 ▼
AI Search
 │
 X
 │
 ▼
Retry
 │
 ▼
Circuit breaker
 │
 ▼
"Knowledge retrieval unavailable"&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Enterprise API failure&lt;/h3&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 │
 ▼
Risk API
 │
 X
 │
 ▼
Retry
 │
 ▼
Timeout
 │
 ▼
No recommendation&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Never hallucinate missing financial data.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;41. Private networking&lt;/h1&gt;&lt;p&gt;Your proposed architecture is correct in principle, but I would draw it more explicitly:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                       INTERNET
                           │
                           ▼
                  Application Gateway
                           │
                          WAF
                           │
                           ▼
                     Azure VNet
                           │
               ┌───────────┴────────────┐
               │                        │
               ▼                        ▼
        App Service /              Container Apps
        private access
               │                        │
               └───────────┬────────────┘
                           │
                    API Management
                           │
                    Private Endpoint
                           │
          ┌────────────────┼─────────────────┐
          ▼                ▼                 ▼
      AI Search         Cosmos DB         PostgreSQL
          │                │                 │
          └────────────────┼─────────────────┘
                           ▼
                     Azure Services&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And outbound traffic:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Private workloads
       │
       ▼
Azure Firewall
       │
       ├── ALLOW approved destination
       │
       └── BLOCK everything else&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;42. Complete security architecture&lt;/h1&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                         USER
                           │
                           ▼
                 Application Gateway
                           │
                         WAF
                           │
                           ▼
                     Azure VNet
                           │
                    Azure Firewall
                           │
                           ▼
              App Service / Container Apps
                           │
                           ▼
                 API Management
                           │
                     Entra ID
                           │
                           ▼
                 Foundry Agent Service
                           │
          ┌────────────────┼─────────────────┐
          ▼                ▼                 ▼
       AI Search        Cosmos DB        Enterprise APIs
          │                │                 │
          └────────────────┼─────────────────┘
                           │
                   Private Endpoints
                           │
                  ┌────────┴────────┐
                  ▼                 ▼
               Purview           Defender
                  │                 │
                  └────────┬────────┘
                           ▼
                       Agent 365&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;43. Complete production architecture&lt;/h1&gt;&lt;p&gt;This is the diagram I would memorize.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                              USERS
                                │
                                ▼
                   ┌────────────────────────┐
                   │ Azure Front Door       │
                   │ / Application Gateway  │
                   └───────────┬────────────┘
                               │
                              WAF
                               │
                               ▼
                    ┌───────────────────────┐
                    │ Azure VNet            │
                    │                       │
                    │ App Service           │
                    │ Container Apps        │
                    │ AKS                   │
                    └───────────┬───────────┘
                                │
                                ▼
                 ┌──────────────────────────┐
                 │ Azure API Management     │
                 │ AI Gateway               │
                 │                          │
                 │ Auth                     │
                 │ Token quotas             │
                 │ Rate limits              │
                 │ Model routing            │
                 │ Semantic cache           │
                 │ MCP governance           │
                 │ Cost tracking            │
                 └────────────┬─────────────┘
                              │
                 ┌────────────┼────────────────┐
                 │            │                │
                 ▼            ▼                ▼
           Microsoft       Azure AI         Tool Layer
           Foundry         Search               │
                 │            │                  │
       ┌─────────┼──────┐     │          ┌──────┼──────┐
       │         │      │     │          ▼      ▼      ▼
     Models    Agent  Eval   RAG       Functions Logic APIs
       │       Service       │         Apps
       │         │           │
       ▼         ▼           ▼
    Foundry    Agent      Vector/
    Models     Runtime    Hybrid Search
       │         │           │
       └─────────┼───────────┘
                 │
                 ▼
          Enterprise Data
                 │
      ┌──────────┼─────────────┐
      ▼          ▼             ▼
   Cosmos DB  PostgreSQL    Fabric/Databricks
      │                         │
      └──────────┬──────────────┘
                 ▼
          Business Systems
                 │
                 ▼
          Human Approval
                 │
                 ▼
              USER


     ┌───────────────────────────────────────────┐
     │          ENTERPRISE CONTROL PLANE         │
     │                                           │
     │ Entra ID                                  │
     │ Agent 365                                 │
     │ Defender                                  │
     │ Purview                                   │
     │ Azure Monitor                             │
     │ Application Insights                      │
     │ Azure Firewall                            │
     │ Private Endpoints                         │
     └───────────────────────────────────────────┘&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;44. Azure mental model&lt;/h1&gt;&lt;p&gt;For your interview, remember:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;AWS                    GCP                    AZURE

CloudFront             Cloud LB              Front Door
WAF                     Cloud Armor           WAF
ALB                     Cloud LB              App Gateway
ECS/EKS                 Cloud Run/GKE         App Service/
                                             Container Apps/AKS

Bedrock                 Gemini Platform       Microsoft Foundry

Bedrock KB              Vertex/GCP RAG        Azure AI Search
OpenSearch              BigQuery Vector       AI Search
Aurora                  Cloud SQL             PostgreSQL

IAM                     IAM                   Entra ID

KMS                     Cloud KMS             Key Vault

PrivateLink             PSC                   Private Endpoint

CloudWatch              Monitoring            Azure Monitor

X-Ray                   Trace                 App Insights

S3                      Cloud Storage         Blob Storage

SQS/SNS                 Pub/Sub               Service Bus/Event Grid

Redis                   Memorystore           Azure Managed Redis

SageMaker               Vertex AI             Foundry/ML

API Gateway             API Gateway            APIM

Guardrails              Model Armor          AI safety controls

Agent governance        Agent Platform       Agent 365&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;Azure enterprise ready&lt;/h1&gt;&lt;p&gt;Enterprise AI&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;      │
      ├── Identity
      │     └── Entra
      │
      ├── AI Gateway
      │     └── APIM
      │
      ├── AI Platform
      │     └── Foundry
      │
      ├── Knowledge
      │     └── AI Search / Foundry IQ
      │
      ├── Data
      │     └── Fabric / Databricks / Cosmos /
      │         PostgreSQL
      │
      ├── Agent Governance
      │     └── Agent 365
      │
      ├── Security
      │     └── Defender / WAF / Firewall
      │
      ├── Data Governance
      │     └── Purview
      │
      ├── Networking
      │     └── Private Endpoints
      │
      └── Observability
            └── Azure Monitor&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That is the architecture-level answer.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt9E-0Q43x4RI0heeUSKkAXBVIVsuVEdG39WuKlobPxsDVHal11YdWOAHKpvi8YVI_7O2aB8g259vti7ZrUp9LRXH1f7Hp9GuFxOtNqiG1CoZGxbmfrsp2s0548tlsOE58WUszVFg7FXmfyexu0lb87deucQJp3YRWfuPQJ4bkEBAE5jMxFtqguhlwr36y/s1536/Azure_architecture_ecommerce.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1024" data-original-width="1536" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt9E-0Q43x4RI0heeUSKkAXBVIVsuVEdG39WuKlobPxsDVHal11YdWOAHKpvi8YVI_7O2aB8g259vti7ZrUp9LRXH1f7Hp9GuFxOtNqiG1CoZGxbmfrsp2s0548tlsOE58WUszVFg7FXmfyexu0lb87deucQJp3YRWfuPQJ4bkEBAE5jMxFtqguhlwr36y/s320/Azure_architecture_ecommerce.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZWZCRaUk5-8tUk2ueXpjLTB4SADOm3AdmnB7t3Z-sOVoKWAc1VV9_vJQIIulOVjm7p3JRL0wQerFNEO8azK06b5lHY9dxEmLX4x35AYduV2SIexjCQ8nXcRi6OLALSO3pIcgDSIsgYhyphenhyphenRYWg2I6Lp9aiShhL0uiyKBLBgSIH9pVLQA7SVnT5D4Qwmi61-/s72-w572-h381-c/Azure_architecture_ecommerce.png" width="72"/><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>GCP - Financial Services Application with RAG and AgenticAI</title><link>http://dhirajpatra.blogspot.com/2026/08/gcp-financial-services-application-with.html</link><category>agent</category><category>agenticai</category><category>artificial intelligence</category><category>gcp</category><category>generativeai</category><category>rag</category><pubDate>Wed, 19 Aug 2026 08:19:58 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-1342071459867994489</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUerB97VCVj81CI47QZVunGJBSH8NJ1JpPCHK-lUJhmvcOUre9xz3vPC1F8826XdB9N69-pTrv5L6Lj69EthstZMJm93xEjC2M_4zfvABP7xfn1Lke61THA1svzh9VChyphenhyphen_EQAXl-fk-52aoB3IIQ4oy-bIirpD3OgG0hHGeMH3HzLeObxWPnEiHHLGvaiz/s1024/GCP_architecture_ecommerce.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="576" data-original-width="1024" height="357" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUerB97VCVj81CI47QZVunGJBSH8NJ1JpPCHK-lUJhmvcOUre9xz3vPC1F8826XdB9N69-pTrv5L6Lj69EthstZMJm93xEjC2M_4zfvABP7xfn1Lke61THA1svzh9VChyphenhyphen_EQAXl-fk-52aoB3IIQ4oy-bIirpD3OgG0hHGeMH3HzLeObxWPnEiHHLGvaiz/w635-h357/GCP_architecture_ecommerce.jpeg" width="635" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; generated by gemini&lt;p&gt;I would build the GCP version around the same financial-services use case as the AWS architecture, but use the current 2026 Google Cloud stack: Gemini Enterprise Agent Platform, ADK, Agent Runtime, Model Garden, Model Armor, GKE, BigQuery Vector Search, Cloud Storage, VPC Service Controls, IAM, Cloud KMS, Cloud Logging/Monitoring, and MCP/A2A where appropriate.&lt;/p&gt;&lt;p&gt;Google's current Agent Platform has evolved from the older Vertex AI-centric terminology and now provides model access, agent development, evaluation, deployment, orchestration and governance. ADK can run agents on Agent Runtime, Cloud Run or GKE. (&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/introducing-gemini-enterprise-agent-platform?utm_source=chatgpt.com" title="Introducing Gemini Enterprise Agent Platform | Google Cloud Blog"&gt;Google Cloud&lt;/a&gt;)&lt;/p&gt;&lt;h1&gt;GCP Enterprise GenAI + Agentic AI Architecture&lt;/h1&gt;&lt;h2&gt;1. The business problem&lt;/h2&gt;&lt;p&gt;Let's use the same banking scenario:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"Investigate why counterparty ABC breached its exposure limit yesterday and tell me what action should be taken."&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The system needs to combine:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Unstructured knowledge
        │
        ├── Risk policies
        ├── Regulatory documents
        ├── Credit policies
        └── Internal procedures

Structured data
        │
        ├── Counterparty exposure
        ├── Credit limits
        ├── Trades
        ├── P&amp;amp;L
        └── Risk metrics

Enterprise tools
        │
        ├── Risk APIs
        ├── Trade APIs
        ├── SQL
        └── Workflow systems&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is therefore not merely a chatbot.&lt;/p&gt;&lt;p&gt;It is:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;RAG + Agent + Enterprise Data + Enterprise Tools&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;2. Complete GCP architecture&lt;/h1&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                              USERS
                                │
                                ▼
                    ┌─────────────────────┐
                    │ Cloud Load Balancer  │
                    └──────────┬──────────┘
                               │
                         Cloud Armor
                       WAF + DDoS Defense
                               │
                               ▼
                    ┌─────────────────────┐
                    │ API / Ingress Layer │
                    └──────────┬──────────┘
                               │
                        PRIVATE NETWORK
                               │
              ┌────────────────┴────────────────┐
              │                                 │
              ▼                                 ▼
       ┌───────────────┐                 ┌───────────────┐
       │ GKE           │                 │ Cloud Run     │
       │               │                 │               │
       │ APIs          │                 │ Lightweight   │
       │ UI            │                 │ services      │
       │ AI Gateway    │                 │ Agent APIs    │
       └───────┬───────┘                 └───────┬───────┘
               │                                 │
               └────────────────┬────────────────┘
                                ▼
                ┌───────────────────────────────┐
                │ Gemini Enterprise            │
                │ Agent Platform               │
                │                               │
                │ Agent Runtime                 │
                │ ADK                           │
                │ Agent Studio                  │
                │ Model Garden                  │
                └───────────────┬───────────────┘
                                │
             ┌──────────────────┼───────────────────┐
             │                  │                   │
             ▼                  ▼                   ▼
        Model Armor          RAG Layer           Tool Layer
             │                  │                   │
             ▼                  ▼                   ▼
          Gemini          BigQuery Vector       Enterprise APIs
          Claude          Search                MCP
          Gemma           Cloud Storage          SQL
             │                  │                 A2A
             │                  │
             │             ┌────┴─────┐
             │             ▼          ▼
             │         BigQuery   Cloud Storage
             │         tables      documents
             │
             └──────────────────────┐
                                    ▼
                         Cloud Monitoring
                         Cloud Logging
                         Cloud Trace&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This architecture is consistent with Google's current direction: ADK supports agent development, evaluation and deployment, and agents can be deployed to Agent Runtime, Cloud Run or GKE. (&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/adk?hl=en&amp;amp;utm_source=chatgpt.com" title="Agent Development Kit  |  Gemini Enterprise Agent Platform  |  Google Cloud Documentation"&gt;Google Cloud Documentation&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;3. Perimeter and ingress&lt;/h1&gt;&lt;p&gt;The first layer is:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Internet
   │
   ▼
Cloud Load Balancing
   │
   ▼
Cloud Armor
   │
   ├── WAF
   ├── DDoS protection
   ├── IP rules
   ├── Rate controls
   └── Threat filtering
   │
   ▼
GKE / Cloud Run&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I would make Cloud Armor the first major security control rather than allowing the application itself to deal with malicious traffic.&lt;/p&gt;&lt;p&gt;Example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Attacker
   │
   ▼
Cloud Load Balancer
   │
   ▼
Cloud Armor
   │
   ├── BLOCK ──► malicious request
   │
   └── ALLOW
          │
          ▼
       GKE&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;4. Why GKE?&lt;/h1&gt;&lt;p&gt;For this particular architecture, GKE makes sense because we have:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Multiple microservices
+
Agent orchestration
+
High concurrency
+
Custom networking
+
MCP services
+
Tool services
+
Potential GPU workloads
+
Fine-grained scaling&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A possible GKE cluster:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;GKE CLUSTER
│
├── ingress-service
│
├── frontend-service
│
├── api-service
│
├── ai-gateway
│
├── rag-service
│
├── agent-service
│
├── tool-service
│
├── mcp-server
│
└── background-workers&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;But I would not automatically put everything into GKE.&lt;/p&gt;&lt;p&gt;A senior architect answer is:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"I use GKE when Kubernetes control, workload diversity, networking or GPU scheduling justifies it. For lightweight stateless APIs or simple agents, Cloud Run can reduce operational overhead."&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Google's own current architecture supports ADK agents on GKE, Cloud Run and Agent Runtime. (&lt;a href="https://docs.cloud.google.com/architecture/single-agent-ai-system-adk-cloud-run?utm_source=chatgpt.com" title="Single-agent AI system using ADK and Cloud Run  |  Cloud Architecture Center  |  Google Cloud Documentation"&gt;Google Cloud Documentation&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;5. AI Gateway&lt;/h1&gt;&lt;p&gt;Don't let every microservice call Gemini directly.&lt;/p&gt;&lt;p&gt;Bad:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Service A ──► Gemini
Service B ──► Gemini
Service C ──► Gemini
Service D ──► Gemini&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Instead:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                 Applications
                      │
                      ▼
                AI Gateway
                      │
       ┌──────────────┼──────────────┐
       │              │              │
    Security       Routing         Cost
       │              │              │
       ▼              ▼              ▼
    IAM         Model selection   Token tracking
       │              │              │
       └──────────────┼──────────────┘
                      ▼
                Agent Platform
                      │
               ┌──────┼──────┐
               ▼      ▼      ▼
             Gemini Claude  Gemma&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The gateway can implement:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Authentication
Authorization
Tenant isolation
Rate limiting
Model routing
Prompt policies
Cost tracking
Token budgets
Observability
Circuit breakers&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;6. Gemini Enterprise Agent Platform&lt;/h1&gt;&lt;p&gt;The current Google architecture gives you a managed platform for the agent lifecycle.&lt;/p&gt;&lt;p&gt;Conceptually:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                  Agent Platform
                       │
       ┌───────────────┼────────────────┐
       │               │                │
       ▼               ▼                ▼
  Model Garden     Agent Studio      Agent Runtime
       │               │                │
       ▼               ▼                ▼
   Models          Build agents       Deploy agents&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Model Garden provides access to Google's models and third-party models. Google describes Agent Platform as the evolution of Vertex AI for building, scaling, governing and optimizing agents. (&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/introducing-gemini-enterprise-agent-platform?utm_source=chatgpt.com" title="Introducing Gemini Enterprise Agent Platform | Google Cloud Blog"&gt;Google Cloud&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;For code-first development, I would use ADK.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;7. ADK&lt;/h1&gt;&lt;p&gt;ADK becomes the programming framework for our agent.&lt;/p&gt;&lt;p&gt;Very simplified:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;from google.adk.agents import Agent

root_agent = Agent(
    name="risk_investigation_agent",
    model="gemini-3.5-flash",
    instruction="""
    You are a financial risk investigation agent.

    Investigate counterparty exposure breaches.

    Never execute financial actions without
    human approval.

    Always provide evidence for conclusions.
    """,
    tools=[
        get_counterparty_exposure,
        get_counterparty_limit,
        get_recent_trades,
        search_risk_policy
    ]
)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The exact model/version should be selected from the currently available models in the target region/project rather than hard-coding an interview answer around a particular model.&lt;/p&gt;&lt;p&gt;ADK currently supports Python, TypeScript, Go and Java and supports multi-agent architectures and tool integrations. (&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/adk?hl=en&amp;amp;utm_source=chatgpt.com" title="Agent Development Kit  |  Gemini Enterprise Agent Platform  |  Google Cloud Documentation"&gt;Google Cloud Documentation&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;8. Model Garden&lt;/h1&gt;&lt;p&gt;Model Garden is your model abstraction layer.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                  Model Garden
                       │
        ┌──────────────┼──────────────┐
        ▼              ▼              ▼
      Gemini        Third-party      Open
                     models         models
        │              │              │
        └──────────────┼──────────────┘
                       ▼
                  Agent Platform&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The architectural benefit is model optionality.&lt;/p&gt;&lt;p&gt;For example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;High reasoning requirement
       ↓
larger Gemini model

High-volume classification
       ↓
smaller/faster model

Specialized workload
       ↓
third-party model&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Google currently describes Model Garden as providing access to 200+ models. (&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/introducing-gemini-enterprise-agent-platform?utm_source=chatgpt.com" title="Introducing Gemini Enterprise Agent Platform | Google Cloud Blog"&gt;Google Cloud&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;9. RAG architecture&lt;/h1&gt;&lt;p&gt;Now let's build the RAG component.&lt;/p&gt;&lt;p&gt;Suppose we have:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Cloud Storage
│
├── credit_policy.pdf
├── counterparty_policy.pdf
├── market_risk_policy.pdf
├── Basel_rules.pdf
└── escalation_procedure.pdf&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pipeline:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                  Cloud Storage
                       │
                       ▼
                 Document pipeline
                       │
              ┌────────┼────────┐
              ▼        ▼        ▼
           Parse     Chunk    Metadata
              │        │        │
              └────────┼────────┘
                       ▼
                   Embedding
                       │
                       ▼
                 BigQuery Vector
                       │
                       ▼
                  Vector Search&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;BigQuery is particularly attractive here because the same platform can hold structured financial data and support vector search.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;10. Why BigQuery is powerful for this architecture&lt;/h1&gt;&lt;p&gt;This is one of the strongest differences from the AWS example.&lt;/p&gt;&lt;p&gt;AWS:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;OpenSearch
       +
Aurora
       +
S3&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;GCP can consolidate more of this:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                 BigQuery
                    │
        ┌───────────┴───────────┐
        │                       │
   Structured data          Vector data
        │                       │
   exposures                embeddings
   trades                   documents
   limits                   chunks
   P&amp;amp;L                      metadata&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now the agent can combine:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;SQL analytics
+
Vector retrieval&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;within the same analytical environment.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;11. Example BigQuery data model&lt;/h1&gt;&lt;p&gt;Structured table:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;counterparty_exposure
────────────────────────────
counterparty_id
exposure
currency
timestamp
desk
region&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Limits:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;counterparty_limits
────────────────────
counterparty_id
approved_limit
currency
rating
effective_date&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Document chunks:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;risk_policy_chunks
────────────────────────
document_id
chunk_id
content
embedding
tenant_id
classification
policy_type
effective_date&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;12. Vector retrieval&lt;/h1&gt;&lt;p&gt;Conceptually:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-sql"&gt;SELECT
    document_id,
    chunk_id,
    content,
    distance
FROM VECTOR_SEARCH(
    TABLE `risk.risk_policy_chunks`,
    'embedding',
    (
        SELECT embedding
        FROM `risk.query_embedding`
    ),
    top_k =&amp;gt; 5
)
ORDER BY distance;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In production you would also apply authorization and business metadata filters.&lt;/p&gt;&lt;p&gt;For example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;tenant_id
region
classification
business_unit
effective_date&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;13. Authorization-aware RAG&lt;/h1&gt;&lt;p&gt;This is critical.&lt;/p&gt;&lt;p&gt;Never:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;User
 ↓
Vector Search
 ↓
All documents&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Instead:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;User
 │
 ▼
IAM
 │
 ▼
Identity context
 │
 ├── tenant
 ├── role
 ├── region
 └── classification
        │
        ▼
   Vector Search
        │
        ▼
Authorized documents only&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;filters = {
    "tenant_id": user.tenant_id,
    "region": user.region,
    "classification": {
        "$in": user.allowed_classifications
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The exact filtering implementation depends on the chosen BigQuery/vector architecture, but the security principle is essential:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;Retrieval authorization must happen before information reaches the LLM.&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;h1&gt;14. RAG request flow&lt;/h1&gt;&lt;p&gt;User:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"What happens when a counterparty falls below investment grade?"&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Flow:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;USER
 │
 ▼
Cloud Armor
 │
 ▼
GKE API
 │
 ▼
AI Gateway
 │
 ▼
Model Armor
 │
 ▼
Query embedding
 │
 ▼
BigQuery Vector Search
 │
 ▼
Top-K authorized chunks
 │
 ▼
Prompt construction
 │
 ▼
Gemini
 │
 ▼
Model Armor
 │
 ▼
Answer + citations&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;15. Model Armor&lt;/h1&gt;&lt;p&gt;Model Armor belongs around the model interaction rather than being treated as a replacement for application security.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;              USER
                │
                ▼
          Model Armor
          INPUT CHECK
                │
                ▼
          Agent / RAG
                │
                ▼
             Gemini
                │
                ▼
          Model Armor
         OUTPUT CHECK
                │
                ▼
             USER&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It can be used to address AI-specific threats such as prompt injection and sensitive information leakage. Google has also documented Model Armor protecting AI inference running on GKE. (&lt;a href="https://cloud.google.com/blog/products/identity-security/securing-ai-inference-on-gke-with-model-armor?utm_source=chatgpt.com" title="Securing AI inference on GKE with Model Armor | Google Cloud Blog"&gt;Google Cloud&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;But don't claim:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"Model Armor guarantees no hallucinations."&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Instead:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Hallucination control
=
RAG grounding
+
tool constraints
+
structured outputs
+
evaluation
+
citations
+
business validation
+
Model Armor&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;16. Agentic AI architecture&lt;/h1&gt;&lt;p&gt;Now we extend RAG.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                         USER
                           │
                           ▼
                    Risk Agent
                           │
                   ┌───────┴────────┐
                   │   Planner      │
                   └───────┬────────┘
                           │
       ┌───────────────────┼────────────────────┐
       │                   │                    │
       ▼                   ▼                    ▼
   RAG Agent          Exposure Tool         Trade Tool
       │                   │                    │
       ▼                   ▼                    ▼
 BigQuery Vector       BigQuery/API       Trade System
       │                   │                    │
       └───────────────────┼────────────────────┘
                           ▼
                    Reasoning Agent
                           │
                           ▼
                    Risk Assessment
                           │
                           ▼
                    Human Approval&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;17. The agent's tools&lt;/h1&gt;&lt;p&gt;We define deterministic tools.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;async def get_exposure(counterparty_id: str):
    ...


async def get_limit(counterparty_id: str):
    ...


async def get_recent_trades(
    counterparty_id: str,
    hours: int
):
    ...


async def search_risk_policy(
    question: str
):
    ...


async def calculate_breach(
    exposure: float,
    limit: float
):
    ...&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The LLM doesn't get unrestricted database access.&lt;/p&gt;&lt;p&gt;It gets controlled capabilities.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;18. Example investigation&lt;/h1&gt;&lt;p&gt;User:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"Investigate ABC's exposure breach."&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Agent workflow:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                User
                  │
                  ▼
             Risk Agent
                  │
                  ▼
        get_exposure("ABC")
                  │
                  ▼
             $125M
                  │
                  ▼
         get_limit("ABC")
                  │
                  ▼
             $100M
                  │
                  ▼
        calculate_breach()
                  │
                  ▼
              $25M breach
                  │
                  ▼
       get_recent_trades("ABC")
                  │
                  ▼
         Trade information
                  │
                  ▼
       search_risk_policy()
                  │
                  ▼
          Policy evidence
                  │
                  ▼
           Risk conclusion&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;19. BigQuery becomes extremely powerful here&lt;/h1&gt;&lt;p&gt;Imagine:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-sql"&gt;SELECT
    counterparty_id,
    SUM(exposure) AS exposure
FROM
    `risk.trades`
WHERE
    counterparty_id = 'ABC'
    AND trade_date &amp;gt;= CURRENT_DATE() - 1
GROUP BY
    counterparty_id;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agent gets:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;ABC
Exposure = $125M&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-sql"&gt;SELECT
    approved_limit
FROM
    `risk.counterparty_limits`
WHERE
    counterparty_id = 'ABC'
ORDER BY effective_date DESC
LIMIT 1;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Returns:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Limit = $100M&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then the agent can combine this with RAG:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Structured evidence
        +
Policy evidence
        +
Trade evidence
        ↓
Agent reasoning&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is what makes the architecture genuinely useful for financial engineering.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;20. RAG + SQL + Tools&lt;/h1&gt;&lt;p&gt;Think of the agent as having three knowledge mechanisms:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                         AGENT
                           │
        ┌──────────────────┼──────────────────┐
        │                  │                  │
        ▼                  ▼                  ▼
       RAG                 SQL               API
        │                  │                  │
        ▼                  ▼                  ▼
Documents            Financial data     Enterprise systems&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;RAG answers:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"What does the policy say?"&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;SQL answers:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"What actually happened?"&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;API/tool answers:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"What does the enterprise system currently report?"&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Agent combines all three.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;21. MCP&lt;/h1&gt;&lt;p&gt;For a modern GCP architecture, I would also introduce MCP.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                    Agent
                      │
                      ▼
                  MCP Client
                      │
          ┌───────────┼────────────┐
          ▼           ▼            ▼
       Risk MCP    Trade MCP    Policy MCP
          │           │            │
          ▼           ▼            ▼
       Risk API     Trade API    BigQuery&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This creates a standardized tool interface.&lt;/p&gt;&lt;p&gt;Google's current agent architecture documentation explicitly discusses MCP, and Google's Agent Registry can authenticate agents to remote agents or MCP toolsets. (&lt;a href="https://docs.cloud.google.com/architecture/single-agent-ai-system-adk-cloud-run?utm_source=chatgpt.com" title="Single-agent AI system using ADK and Cloud Run  |  Cloud Architecture Center  |  Google Cloud Documentation"&gt;Google Cloud Documentation&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;22. Multi-agent architecture&lt;/h1&gt;&lt;p&gt;For a more advanced interview answer:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                       Supervisor Agent
                              │
          ┌───────────────────┼──────────────────┐
          ▼                   ▼                  ▼
    Risk Agent          Compliance Agent     Trade Agent
          │                   │                  │
          ▼                   ▼                  ▼
    Risk Data             Policies          Trade Data
          │                   │                  │
          └───────────────────┼──────────────────┘
                              ▼
                         Decision Agent
                              │
                              ▼
                       Human Approval&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ADK supports multi-agent architectures where specialized agents can collaborate and delegate tasks. (&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/adk?hl=en&amp;amp;utm_source=chatgpt.com" title="Agent Development Kit  |  Gemini Enterprise Agent Platform  |  Google Cloud Documentation"&gt;Google Cloud Documentation&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;But don't introduce multi-agent architecture just because it sounds sophisticated.&lt;/p&gt;&lt;p&gt;My interview answer would be:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"I start with a single agent and deterministic tools. I introduce multiple agents only when separation of responsibility, independent evaluation, security boundaries or organizational ownership justify the additional orchestration complexity."&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;That is a much stronger architect answer.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;23. Human-in-the-loop&lt;/h1&gt;&lt;p&gt;For financial services:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 │
 ▼
Recommendation
 │
 ▼
Risk Officer
 │
 ├──── APPROVE
 │       │
 │       ▼
 │   Execute action
 │
 └──── REJECT
         │
         ▼
       Stop&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent:

ABC exceeds its approved limit by $25M.

Evidence:
- Exposure: $125M
- Limit: $100M
- Policy: Section 4.3
- Primary driver: Trade XYZ

Recommendation:
Escalate to Risk Control.&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The agent should not automatically change the credit limit.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;24. Security architecture&lt;/h1&gt;&lt;p&gt;Now the most important enterprise part.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                       INTERNET
                           │
                           ▼
                   Cloud Load Balancer
                           │
                           ▼
                     Cloud Armor
                           │
                           ▼
                         GKE
                           │
                  ┌────────┴────────┐
                  │                 │
                  ▼                 ▼
                IAM           Service Accounts
                  │                 │
                  └────────┬────────┘
                           ▼
                    VPC Service
                      Controls
                           │
             ┌─────────────┼─────────────┐
             ▼             ▼             ▼
          BigQuery      Cloud Storage   Agent Platform&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;25. IAM&lt;/h1&gt;&lt;p&gt;Use separate service identities.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;User
 │
 ▼
Identity
 │
 ▼
IAM
 │
 ├── Analyst
 ├── Risk Manager
 ├── Admin
 └── Agent Service Account&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Don't give the agent:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;roles/owner&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Instead:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent Service Account

 ├── Read risk tables
 ├── Read approved documents
 ├── Execute selected APIs
 └── No unrestricted write access&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;26. VPC Service Controls&lt;/h1&gt;&lt;p&gt;This is one of the strongest GCP security controls for this architecture.&lt;/p&gt;&lt;p&gt;Conceptually:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;             SECURITY PERIMETER
        ┌───────────────────────────┐
        │                           │
        │       Financial Data      │
        │                           │
        │   BigQuery                │
        │   Cloud Storage           │
        │   AI services             │
        │                           │
        └───────────────────────────┘
                    │
              VPC Service
                 Controls
                    │
              Data exfiltration
                 prevention&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Even if an identity is compromised, VPC-SC provides a network-level/data-perimeter control.&lt;/p&gt;&lt;p&gt;Google specifically recommends VPC Service Controls as a key perimeter guardrail for agentic AI workloads and has added newer capabilities aimed at agentic workloads. (&lt;a href="https://cloud.google.com/blog/products/identity-security/securing-agentic-ai-whats-new-in-vpc-service-controls?utm_source=chatgpt.com" title="Securing agentic AI: What's new in VPC Service Controls | Google Cloud Blog"&gt;Google Cloud&lt;/a&gt;)&lt;/p&gt;&lt;p&gt;Current Agent Platform security controls include VPC Service Controls, CMEK and Access Transparency, subject to service-specific support. (&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/machine-learning/security-controls?authuser=0&amp;amp;utm_source=chatgpt.com" title="Security controls for machine learning services  |  Gemini Enterprise Agent Platform  |  Google Cloud Documentation"&gt;Google Cloud Documentation&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;27. Cloud KMS&lt;/h1&gt;&lt;p&gt;For highly regulated environments:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Data
 │
 ▼
Cloud KMS
 │
 ▼
Customer-managed encryption key
 │
 ├── BigQuery
 ├── Cloud Storage
 └── Other supported services&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Use CMEK where the service and compliance requirements justify it.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;28. Complete secure network architecture&lt;/h1&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                         INTERNET
                            │
                            ▼
                ┌─────────────────────┐
                │ Cloud Load Balancer  │
                └──────────┬──────────┘
                           │
                     Cloud Armor
                     WAF + DDoS
                           │
                           ▼
                    PRIVATE GKE
                           │
              ┌────────────┼────────────┐
              │            │            │
              ▼            ▼            ▼
          API Layer    AI Gateway    Agent Layer
              │            │            │
              └────────────┼────────────┘
                           │
                  VPC Service Controls
                           │
             ┌─────────────┼─────────────┐
             │             │             │
             ▼             ▼             ▼
          BigQuery     Cloud Storage   Agent Platform
             │             │             │
             ▼             ▼             ▼
         Vector DB      Documents       Gemini&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;29. Observability&lt;/h1&gt;&lt;p&gt;For production, instrument everything.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                      Application
                           │
              ┌────────────┼────────────┐
              ▼            ▼            ▼
           Metrics        Logs         Traces
              │            │            │
              └────────────┼────────────┘
                           ▼
                  Cloud Monitoring
                  Cloud Logging
                  Cloud Trace
                           │
                           ▼
                       Dashboard&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Monitor:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;API latency
p50
p95
p99

Agent latency
RAG latency
BigQuery latency
LLM latency

Tokens
Cost
Requests
Errors

Tool failures
Agent retries
Agent loops
Prompt injection
Guardrail blocks

GPU utilization
GPU memory
Queue depth&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For agents, trace the entire trajectory:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Request
 │
 ├── Guardrail
 │
 ├── Agent
 │
 ├── RAG
 │    └── BigQuery
 │
 ├── Tool
 │    └── Risk API
 │
 ├── Tool
 │    └── Trade API
 │
 └── Gemini&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Google's current Agent Platform tooling supports evaluation and observability around agent execution, and Cloud Trace is used in the current Agents CLI deployment workflow. (&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/agents/quickstart-adk?hl=en&amp;amp;utm_source=chatgpt.com" title="Build an agent with ADK and Agents CLI in Agent Platform  |  Gemini Enterprise Agent Platform  |  Google Cloud Documentation"&gt;Google Cloud Documentation&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;30. Agent evaluation&lt;/h1&gt;&lt;p&gt;This is something I would add to your original architecture because it is important for a senior GenAI interview.&lt;/p&gt;&lt;p&gt;Don't deploy an agent simply because:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;"It works."&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create an evaluation dataset:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;100–1,000 historical questions
          │
          ▼
      Agent runs
          │
          ▼
       Evaluate
          │
 ┌────────┼────────┐
 ▼        ▼        ▼
Accuracy Grounding Safety&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Measure:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Answer correctness
Citation correctness
Retrieval precision
Retrieval recall
Groundedness
Tool selection
Tool arguments
Trajectory correctness
Safety
Latency
Cost&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ADK and Agent Platform now provide evaluation capabilities for testing agent execution and trajectories. (&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/agents/quickstart-adk?hl=en&amp;amp;utm_source=chatgpt.com" title="Build an agent with ADK and Agents CLI in Agent Platform  |  Gemini Enterprise Agent Platform  |  Google Cloud Documentation"&gt;Google Cloud Documentation&lt;/a&gt;)&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;31. CI/CD architecture&lt;/h1&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Developer
    │
    ▼
Git
    │
    ▼
Cloud Build
    │
    ├── Unit tests
    ├── Security scan
    ├── Agent evaluation
    ├── RAG evaluation
    └── Prompt tests
            │
            ▼
      Artifact Registry
            │
            ▼
          GKE
            │
       ┌────┴─────┐
       ▼          ▼
    Staging     Production
       │
       ▼
   Evaluation
       │
       ▼
    Approval&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;32. Production scaling&lt;/h1&gt;&lt;p&gt;This addresses the architecture problems you asked about earlier.&lt;/p&gt;&lt;p&gt;Don't scale only based on CPU.&lt;/p&gt;&lt;p&gt;For GenAI:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;GKE
 │
 ├── CPU
 ├── Memory
 ├── Requests
 ├── Queue depth
 ├── Agent concurrency
 ├── RAG latency
 └── Model latency&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For GPU workloads:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;GPU utilization
GPU memory
tokens/sec
requests/sec
queue depth
KV-cache pressure&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;             Load
               │
               ▼
          GKE Autoscaler
               │
       ┌───────┼────────┐
       ▼       ▼        ▼
     Pod 1   Pod 2    Pod 3
       │       │        │
       └───────┼────────┘
               ▼
            Gemini&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For managed Gemini inference, you generally don't manage the underlying GPU concurrency yourself in the same way you would for self-hosted models. If you deploy custom models on GKE, however, GPU capacity, batching, concurrency and memory become your responsibility.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;33. Failure architecture&lt;/h1&gt;&lt;p&gt;This is another important senior-level topic.&lt;/p&gt;&lt;h3&gt;BigQuery temporarily unavailable&lt;/h3&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 │
 ▼
BigQuery
 │
 X
 │
 ▼
Cache / fallback
 │
 ▼
Graceful response&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Tool API unavailable&lt;/h3&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 │
 ▼
Risk API
 │
 X
 │
 ▼
Retry
 │
 ▼
Circuit breaker
 │
 ▼
Agent explains
"Exposure data unavailable"&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Gemini unavailable&lt;/h3&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 │
 ▼
Primary model
 │
 X
 │
 ▼
Fallback model
 │
 ▼
Response&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Model routing can therefore become:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Primary
 Gemini
   │
   X
   ▼
Fallback
 Claude / other approved model
   │
   X
   ▼
Graceful degradation&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;34. The final production architecture&lt;/h1&gt;&lt;p&gt;This is the diagram I would memorize for your GCP interview:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                              USERS
                                │
                                ▼
                    ┌──────────────────────┐
                    │ Cloud Load Balancer   │
                    └──────────┬───────────┘
                               │
                         Cloud Armor
                        WAF + DDoS
                               │
                               ▼
                    ┌──────────────────────┐
                    │ GKE PRIVATE CLUSTER  │
                    │                      │
                    │ API                  │
                    │ AI Gateway           │
                    │ RAG Service          │
                    │ Agent Service        │
                    │ MCP Services         │
                    └──────────┬───────────┘
                               │
                       IAM / Service Accounts
                               │
                       VPC SERVICE CONTROLS
                               │
             ┌─────────────────┼──────────────────┐
             │                 │                  │
             ▼                 ▼                  ▼
       Agent Platform       BigQuery          Cloud Storage
             │                 │                  │
       ┌─────┼─────┐           │             Documents
       │     │     │           │                  │
       ▼     ▼     ▼           ▼                  │
    Gemini Claude Gemma    SQL + Vector            │
       │           │        Search                 │
       └─────┬─────┘           │                   │
             │                 │                   │
             └────────┬────────┘                   │
                      ▼                            │
                  AGENT                            │
                      │                            │
         ┌────────────┼──────────────┐             │
         ▼            ▼              ▼             │
       RAG          SQL/API         MCP            │
         │            │              │             │
         └────────────┼──────────────┘             │
                      ▼                            │
               Model Armor                         │
                      │                            │
                      ▼                            │
                Human Approval                     │
                      │                            │
                      ▼                            │
                    USER                           │
                                                   │
          ┌────────────────────────────────────────┘
          │
          ▼
   Cloud Monitoring
   Cloud Logging
   Cloud Trace
   Cloud KMS
   IAM Audit Logs&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;35. AWS → GCP mental mapping&lt;/h1&gt;&lt;p&gt;For your interviews, memorize this:&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;AWS&lt;/th&gt;&lt;th&gt;GCP&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;CloudFront&lt;/td&gt;&lt;td&gt;Cloud CDN / Cloud Load Balancing&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;AWS WAF&lt;/td&gt;&lt;td&gt;Cloud Armor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;AWS Shield&lt;/td&gt;&lt;td&gt;Cloud Armor / Google Cloud DDoS protection&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ALB&lt;/td&gt;&lt;td&gt;Cloud Load Balancing&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ECS&lt;/td&gt;&lt;td&gt;Cloud Run / GKE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;EKS&lt;/td&gt;&lt;td&gt;GKE&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Bedrock&lt;/td&gt;&lt;td&gt;Gemini Enterprise Agent Platform / Model Garden&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Bedrock Guardrails&lt;/td&gt;&lt;td&gt;Model Armor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Bedrock Knowledge Bases&lt;/td&gt;&lt;td&gt;Agent Platform RAG capabilities / custom RAG&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;OpenSearch&lt;/td&gt;&lt;td&gt;BigQuery Vector Search / Vertex AI Vector Search&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Aurora pgvector&lt;/td&gt;&lt;td&gt;AlloyDB / Cloud SQL with pgvector&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;S3&lt;/td&gt;&lt;td&gt;Cloud Storage&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;IAM&lt;/td&gt;&lt;td&gt;Cloud IAM&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;KMS&lt;/td&gt;&lt;td&gt;Cloud KMS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;PrivateLink&lt;/td&gt;&lt;td&gt;Private Service Connect / VPC connectivity patterns&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CloudWatch&lt;/td&gt;&lt;td&gt;Cloud Monitoring + Cloud Logging&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;X-Ray&lt;/td&gt;&lt;td&gt;Cloud Trace&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;EventBridge&lt;/td&gt;&lt;td&gt;Eventarc&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SQS&lt;/td&gt;&lt;td&gt;Cloud Tasks / Pub/Sub depending on pattern&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SNS&lt;/td&gt;&lt;td&gt;Pub/Sub&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Redshift&lt;/td&gt;&lt;td&gt;BigQuery&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SageMaker&lt;/td&gt;&lt;td&gt;Vertex AI / Agent Platform&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ECR&lt;/td&gt;&lt;td&gt;Artifact Registry&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CodeBuild&lt;/td&gt;&lt;td&gt;Cloud Build&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;EKS autoscaling&lt;/td&gt;&lt;td&gt;GKE autoscaling&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;One nuance: there isn't always a strict one-to-one mapping; for example, GCP's networking and managed AI services often combine capabilities that are separate AWS products.&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUerB97VCVj81CI47QZVunGJBSH8NJ1JpPCHK-lUJhmvcOUre9xz3vPC1F8826XdB9N69-pTrv5L6Lj69EthstZMJm93xEjC2M_4zfvABP7xfn1Lke61THA1svzh9VChyphenhyphen_EQAXl-fk-52aoB3IIQ4oy-bIirpD3OgG0hHGeMH3HzLeObxWPnEiHHLGvaiz/s72-w635-h357-c/GCP_architecture_ecommerce.jpeg" width="72"/><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>AWS - Financial Services Application with RAG and AgenticAI</title><link>http://dhirajpatra.blogspot.com/2026/08/aws-financial-services-application-with.html</link><category>agent</category><category>agenticai</category><category>artificial intelligence</category><category>aws</category><category>generativeai</category><category>rag</category><pubDate>Wed, 19 Aug 2026 08:08:39 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-3416123471575420147</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijKxSpnXNt6l07NeCJERwa7WmQ_3n4-EdX_Zq5H87q5p52Y8ny9AXopy8OOKQQMSJuu7zLvZ2bmkY337JXcNYyody0Ooc2L4ncpgxurTw4fXogPypgCYtVJd2hTLwbXjDRZZUpnf1yKLTDEIW3WRl3434Jwt386NqpAiaZs2URmdU09MBQC9fiJhJmqlOE/s1366/AWS_architecture_ecommerce.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="768" data-original-width="1366" height="362" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijKxSpnXNt6l07NeCJERwa7WmQ_3n4-EdX_Zq5H87q5p52Y8ny9AXopy8OOKQQMSJuu7zLvZ2bmkY337JXcNYyody0Ooc2L4ncpgxurTw4fXogPypgCYtVJd2hTLwbXjDRZZUpnf1yKLTDEIW3WRl3434Jwt386NqpAiaZs2URmdU09MBQC9fiJhJmqlOE/w644-h362/AWS_architecture_ecommerce.png" width="644" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;generated by chatgpt&lt;p&gt;The best way to understand this architecture is to build one realistic financial-services application twice:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;RAG application — "Risk Policy Assistant"&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Agentic AI application — "Risk Investigation Agent"&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Guardrails can detect/filter certain unsafe or policy-violating content and can help with grounding-related controls, but hallucination prevention fundamentally comes from architecture: RAG grounding, tool constraints, evaluation, citations, and validation.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;1. Real-world example&lt;/h1&gt;&lt;p&gt;Imagine a bank has thousands of documents:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Risk Policies
Credit Policies
Liquidity Policies
Market Risk Policies
Counterparty Policies
Basel Documents
Regulatory Documents
Internal Procedures
Trade Processing Manuals&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A user asks:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"What is the bank's policy for counterparty exposure when the credit rating falls below investment grade?"&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;We want:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;User
 ↓
AWS security perimeter
 ↓
AI Gateway
 ↓
RAG
 ↓
Authorized documents
 ↓
Bedrock
 ↓
Guardrails
 ↓
Answer + citations&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then we extend it.&lt;/p&gt;&lt;p&gt;User asks:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"Investigate why counterparty ABC breached its exposure limit yesterday and tell me what action should be taken."&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Now we need an agent.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;User
 ↓
Agent
 ├── Search risk policy
 ├── Retrieve counterparty data
 ├── Retrieve trades
 ├── Calculate exposure
 ├── Compare against limit
 ├── Investigate breach
 └── Recommend action&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That is the difference between RAG and Agentic AI.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;2. Complete AWS architecture&lt;/h1&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                         ┌─────────────────┐
                         │      USER       │
                         └────────┬────────┘
                                  │
                                  ▼
                         ┌─────────────────┐
                         │ Amazon         │
                         │ CloudFront     │
                         └────────┬────────┘
                                  │
                         ┌────────▼────────┐
                         │ AWS WAF         │
                         │ AWS Shield      │
                         └────────┬────────┘
                                  │
                                  ▼
                       ┌─────────────────────┐
                       │ Application Load    │
                       │ Balancer            │
                       └──────────┬──────────┘
                                  │
                         PRIVATE SUBNETS
                                  │
                    ┌─────────────▼─────────────┐
                    │ ECS / EKS                 │
                    │                           │
                    │ Frontend                  │
                    │ API                       │
                    │ RAG Service               │
                    │ Agent Service             │
                    └─────────────┬─────────────┘
                                  │
                         ┌────────▼────────┐
                         │ AI Gateway      │
                         │                 │
                         │ Auth            │
                         │ Rate Limit      │
                         │ Tenant          │
                         │ Cost Tracking   │
                         │ Model Routing   │
                         └────────┬─────────┘
                                  │
                     ┌────────────┼─────────────┐
                     │            │             │
                     ▼            ▼             ▼
               Bedrock       Knowledge      Application
               Guardrails     Bases          Tools
                     │            │             │
                     ▼            ▼             ▼
                  Bedrock      OpenSearch     APIs
                  Claude       / Aurora       DB
                  Llama       pgvector        Kafka
                  Titan&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Network path:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Internet
   │
   ▼
CloudFront
   │
   ▼
WAF + Shield
   │
   ▼
ALB
   │
   ▼
Private ECS/EKS
   │
   ▼
AI Gateway
   │
   ├───────────────► Bedrock
   │
   ├───────────────► Knowledge Base
   │
   └───────────────► Internal APIs&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;3. RAG application&lt;/h1&gt;&lt;p&gt;Let's build the simpler system first.&lt;/p&gt;&lt;h2&gt;User question&lt;/h2&gt;&lt;pre&gt;&lt;code class="language-text"&gt;"What is the counterparty exposure policy
for below-investment-grade entities?"&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Architecture:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                     USER
                       │
                       ▼
                 API Gateway
                       │
                       ▼
                  AI Gateway
                       │
                       ▼
                Bedrock Guardrail
                       │
                       ▼
             Bedrock Knowledge Base
                       │
                       ▼
             Vector Search / OpenSearch
                       │
                  Top K documents
                       │
                       ▼
                   Claude
                       │
                       ▼
               Grounded answer
                       │
                       ▼
                     USER&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;4. Document ingestion&lt;/h1&gt;&lt;p&gt;Suppose we have:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;s3://bank-risk-documents/

├── credit/
│   ├── credit_policy.pdf
│   └── rating_policy.pdf
│
├── market/
│   └── market_risk_policy.pdf
│
└── liquidity/
    └── liquidity_policy.pdf&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The pipeline is:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;PDF
 │
 ▼
Amazon S3
 │
 ▼
Bedrock Knowledge Base
 │
 ├── Parse
 ├── Chunk
 ├── Embed
 └── Index
       │
       ▼
Amazon OpenSearch Serverless&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The embedding model converts:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;"Counterparty exposure must not exceed..."&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;into something like:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;[0.021, -0.182, 0.731, ...]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The vector is stored in the vector index.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;5. Retrieval&lt;/h1&gt;&lt;p&gt;User asks:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;"What happens if rating falls below BBB?"&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The question becomes:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;query
 ↓
embedding
 ↓
vector similarity
 ↓
Top 5 chunks&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Document 1 → similarity 0.92
Document 2 → similarity 0.88
Document 3 → similarity 0.84
Document 4 → similarity 0.81
Document 5 → similarity 0.79&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Those documents become context for the LLM.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;6. Important enterprise feature: authorization-aware RAG&lt;/h1&gt;&lt;p&gt;This is where your architecture becomes enterprise-grade.&lt;/p&gt;&lt;p&gt;Suppose:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Consultant A
    │
    └── Client A documents

Consultant B
    │
    └── Client B documents&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Never do:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;results = vector_db.search(query)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Do:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;results = vector_db.search(
    query=query,
    filter={
        "tenant_id": user.tenant_id,
        "classification": {
            "$in": user.allowed_classifications
        }
    }
)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Metadata:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-json"&gt;{
  "document_id": "RISK-001",
  "tenant_id": "BANK-A",
  "classification": "CONFIDENTIAL",
  "department": "MARKET_RISK",
  "region": "EU"
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This prevents:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Client A
   ↓
Client B's documents
   ↓
DATA LEAK&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;7. RAG code&lt;/h1&gt;&lt;p&gt;A simplified Python service:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Query(BaseModel):
    question: str
    tenant_id: str


@app.post("/rag")
async def rag(query: Query):

    documents = await retrieve_documents(
        question=query.question,
        tenant_id=query.tenant_id
    )

    context = "\n\n".join(
        document["text"]
        for document in documents
    )

    prompt = f"""
You are an enterprise risk assistant.

Answer only from the supplied context.

If the answer is not available,
say that the information is unavailable.

Context:
{context}

Question:
{query.question}
"""

    response = await invoke_bedrock(
        prompt=prompt
    )

    return {
        "answer": response,
        "sources": [
            d["document_id"]
            for d in documents
        ]
    }&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Notice the architecture:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;FastAPI
   │
   ├── Authorization
   │
   ├── Retrieval
   │
   ├── Prompt construction
   │
   ├── Bedrock
   │
   └── Citation&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;8. Bedrock model invocation&lt;/h1&gt;&lt;p&gt;Your application should not directly scatter Bedrock calls everywhere.&lt;/p&gt;&lt;p&gt;Bad:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;bedrock.invoke_model(...)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;from 20 different microservices.&lt;/p&gt;&lt;p&gt;Better:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Applications
     │
     ▼
AI Gateway
     │
     ▼
Bedrock&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The gateway provides:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Authentication
Authorization
Rate limiting
Tenant isolation
Model routing
Cost tracking
Prompt policy
Guardrails
Observability&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;9. LiteLLM architecture&lt;/h1&gt;&lt;p&gt;If you use LiteLLM:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                  Applications
                       │
                       ▼
                   LiteLLM
                       │
             ┌─────────┼─────────┐
             ▼         ▼         ▼
          Claude     Llama      Titan
             │         │         │
             └─────────┼─────────┘
                       ▼
                    Bedrock&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now your application doesn't need to know which model is being used.&lt;/p&gt;&lt;p&gt;For example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;response = completion(
    model="bedrock/anthropic.claude",
    messages=[
        {
            "role": "user",
            "content": prompt
        }
    ]
)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then your gateway can implement:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Premium request
      ↓
Claude

Normal request
      ↓
Llama

Low-cost request
      ↓
smaller model&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;10. Where Guardrails belong&lt;/h1&gt;&lt;p&gt;There are actually multiple guardrail points.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                    USER
                      │
                      ▼
              Input Guardrail
                      │
                      ▼
                 AI Gateway
                      │
                      ▼
                    RAG
                      │
                      ▼
                  Bedrock
                      │
                      ▼
             Output Guardrail
                      │
                      ▼
                    USER&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Check:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Input:
├── Prompt injection
├── Toxicity
├── PII
└── Policy violations

Output:
├── PII
├── Unsafe content
├── Policy violations
└── Grounding/citation requirements&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;11. Now let's make it Agentic AI&lt;/h1&gt;&lt;p&gt;RAG answers:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"What does the policy say?"&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Agentic AI can answer:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"Why did this counterparty breach its exposure limit?"&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;That requires multiple actions.&lt;/p&gt;&lt;p&gt;Architecture:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                         USER
                           │
                           ▼
                      Agent API
                           │
                           ▼
                      AI Gateway
                           │
                           ▼
                       Agent
                           │
           ┌───────────────┼────────────────┐
           │               │                │
           ▼               ▼                ▼
      Policy RAG      Exposure API      Trade API
           │               │                │
           ▼               ▼                ▼
      Knowledge Base    Risk Engine       Trade DB
           │               │                │
           └───────────────┼────────────────┘
                           ▼
                        Gemini/Claude
                           │
                           ▼
                    Final Explanation&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;12. Agent's tools&lt;/h1&gt;&lt;p&gt;Define tools explicitly.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;tools = [

    get_counterparty_exposure,

    get_counterparty_limit,

    get_recent_trades,

    search_risk_policy,

    calculate_potential_exposure,

    create_risk_case
]&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The LLM doesn't directly access databases.&lt;/p&gt;&lt;p&gt;Instead:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
  │
  ├── get_exposure()
  │
  ├── get_limit()
  │
  ├── search_policy()
  │
  └── get_trades()&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is critical for security.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;13. Example Agent Workflow&lt;/h1&gt;&lt;p&gt;User:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"Investigate ABC's exposure breach."&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Agent thinks in terms of actions:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;STEP 1
Get ABC exposure

       ↓

STEP 2
Get ABC approved limit

       ↓

STEP 3
Compare exposure vs limit

       ↓

STEP 4
If breach:
      search relevant policy

       ↓

STEP 5
Get recent trades

       ↓

STEP 6
Determine likely cause

       ↓

STEP 7
Generate recommendation

       ↓

STEP 8
Ask human approval
if action has financial impact&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;14. Agent architecture&lt;/h1&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                    ┌───────────────┐
                    │     USER      │
                    └───────┬───────┘
                            │
                            ▼
                    ┌───────────────┐
                    │  Agent        │
                    │  Orchestrator │
                    └───────┬───────┘
                            │
                    ┌───────▼────────┐
                    │   Planner      │
                    └───────┬────────┘
                            │
          ┌─────────────────┼──────────────────┐
          ▼                 ▼                  ▼
     Policy Tool       Exposure Tool       Trade Tool
          │                 │                  │
          ▼                 ▼                  ▼
     RAG/KB             Risk API            Trade DB
          │                 │                  │
          └─────────────────┼──────────────────┘
                            ▼
                     Result Aggregator
                            │
                            ▼
                         LLM Judge
                            │
                            ▼
                       Human Review
                            │
                            ▼
                         Response&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;15. Example Agent Tool&lt;/h1&gt;&lt;pre&gt;&lt;code class="language-python"&gt;async def get_counterparty_exposure(
    counterparty_id: str
):

    response = await risk_api.get(
        f"/counterparty/{counterparty_id}/exposure"
    )

    return {
        "counterparty": counterparty_id,
        "exposure": response["exposure"],
        "currency": response["currency"],
        "timestamp": response["timestamp"]
    }&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Another:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;async def get_counterparty_limit(
    counterparty_id: str
):

    response = await risk_api.get(
        f"/counterparty/{counterparty_id}/limit"
    )

    return {
        "limit": response["limit"],
        "currency": response["currency"]
    }&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;16. Agent decision&lt;/h1&gt;&lt;p&gt;Suppose tools return:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Exposure = $125M

Limit = $100M

Breach = $25M&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Agent then calls:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;search_risk_policy(
    "counterparty exposure breach"
)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;RAG returns:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;"If exposure exceeds approved limit,
the breach must be escalated to Risk Control..."&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
 │
 ├── Exposure = $125M
 ├── Limit = $100M
 ├── Breach = $25M
 │
 └── Policy = escalation required&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Final answer:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;ABC currently exceeds its approved counterparty
limit by $25M.

The applicable risk policy requires escalation
to Risk Control.

Recent trade activity indicates that the breach
was primarily driven by ...

Recommended action:
Escalate to Risk Control and review the
transactions responsible for the increase.&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;17. Human-in-the-loop&lt;/h1&gt;&lt;p&gt;This is extremely important in financial services.&lt;/p&gt;&lt;p&gt;Never let the agent autonomously execute:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Cancel trade
Change credit limit
Transfer money
Approve transaction
Modify collateral&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Instead:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent
  │
  ▼
Recommendation
  │
  ▼
Human Approval
  │
 ┌┴────────────┐
 ▼             ▼
Approve       Reject
 │
 ▼
Tool execution&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For example:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Agent:

"I recommend reducing the exposure limit
from $100M to $80M."

             ↓

Risk Officer:

[ APPROVE ] [ REJECT ]&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;18. Agent + RAG together&lt;/h1&gt;&lt;p&gt;This is the architecture you should really understand.&lt;/p&gt;&lt;p&gt;RAG is a capability.&lt;/p&gt;&lt;p&gt;Agentic AI is an orchestration pattern.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                   AGENT
                     │
        ┌────────────┼────────────┐
        │            │            │
        ▼            ▼            ▼
       RAG          API          SQL
        │            │            │
        ▼            ▼            ▼
 Knowledge       Risk Engine    Database
 Base&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Therefore:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;RAG ≠ Agent

Agent can USE RAG.&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;19. AWS network architecture&lt;/h1&gt;&lt;p&gt;Now incorporate your PrivateLink requirement.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                         INTERNET
                            │
                            ▼
                       CloudFront
                            │
                            ▼
                    WAF + Shield
                            │
                            ▼
                         ALB
                            │
                    PUBLIC SUBNET
                            │
                  ──────────┼──────────
                            │
                   PRIVATE SUBNET
                            │
                    ┌───────▼───────┐
                    │ ECS / EKS     │
                    │               │
                    │ RAG Service   │
                    │ Agent Service │
                    │ API Gateway   │
                    └───────┬───────┘
                            │
                    VPC Endpoints
                            │
               ┌────────────┼────────────┐
               ▼            ▼            ▼
            Bedrock      S3          OpenSearch&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The important idea is:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Application
     │
     ▼
Private VPC
     │
     ▼
Interface VPC Endpoint
     │
     ▼
AWS service&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;So your workloads don't need public internet paths to reach supported AWS services.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;20. ECS vs EKS&lt;/h1&gt;&lt;p&gt;For the example, I would start with ECS unless Kubernetes is explicitly required.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;ECS
│
├── RAG API
├── Agent API
├── AI Gateway
└── Worker&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Use EKS when you need:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Complex Kubernetes workloads
Custom scheduling
Service mesh
GPU workloads
Large microservice platform
Existing Kubernetes organization&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For an interview, say:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"I would default to ECS/Fargate for a relatively straightforward stateless GenAI platform because it reduces operational overhead. I would choose EKS where Kubernetes-level control, GPU scheduling, service mesh or an existing enterprise Kubernetes platform justifies the additional complexity."&lt;/p&gt;&lt;/blockquote&gt;&lt;hr /&gt;&lt;h1&gt;21. Complete Agentic AI request&lt;/h1&gt;&lt;p&gt;Here is the complete request flow:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;USER
 │
 │ "Investigate ABC exposure breach"
 ▼
CloudFront
 │
 ▼
WAF
 │
 ▼
Shield
 │
 ▼
ALB
 │
 ▼
ECS
 │
 ▼
AI Gateway
 │
 ├── Authentication
 ├── Tenant validation
 ├── Rate limit
 ├── Cost tracking
 └── Guardrails
 │
 ▼
Agent
 │
 ├──────────────┐
 │              │
 ▼              ▼
RAG           Tools
 │              │
 ▼              ├── Exposure API
Bedrock KB      ├── Limit API
 │              ├── Trade API
 ▼              └── Risk DB
OpenSearch
 │
 └──────────────┐
                ▼
             Bedrock
                │
                ▼
           Reasoning
                │
                ▼
        Recommendation
                │
                ▼
       Human approval
                │
                ▼
              User&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;22. Production observability&lt;/h1&gt;&lt;p&gt;You should instrument every agent step.&lt;/p&gt;&lt;p&gt;Example trace:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Trace ID: ABC-123

00ms  API Gateway
  15ms Authentication
  20ms Guardrail
  35ms Agent started
  90ms RAG retrieval
 150ms Exposure API
 180ms Limit API
 250ms Trade API
 400ms Bedrock
 430ms Output guardrail&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then you can answer:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;"Why is the agent slow?"&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Maybe:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;LLM = 120ms
RAG = 40ms
Risk API = 20ms
Trade API = 800ms   ← bottleneck&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is much better than simply looking at total latency.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;23. Cost tracking&lt;/h1&gt;&lt;p&gt;Your AI Gateway should attach:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-json"&gt;{
  "tenant_id": "BANK-A",
  "user_id": "U123",
  "application": "risk-agent",
  "model": "claude",
  "input_tokens": 4200,
  "output_tokens": 850,
  "latency_ms": 1430
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;Tenant
   │
   ▼
AI Gateway
   │
   ├── Token accounting
   ├── Model accounting
   ├── Request accounting
   └── Cost accounting
          │
          ▼
       BigQuery/S3
          │
          ▼
       Dashboard&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;24. What makes this architecture "Senior Architect" level?&lt;/h1&gt;&lt;p&gt;Not:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;CloudFront
+
ECS
+
Bedrock
+
OpenSearch&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Anyone can draw AWS services.&lt;/p&gt;&lt;p&gt;The architecture becomes senior-level when you explain:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                    ┌──────────────┐
                    │ REQUIREMENTS │
                    └──────┬───────┘
                           │
         ┌─────────────────┼─────────────────┐
         ▼                 ▼                 ▼
      Security          Reliability       Cost
         │                 │                 │
         ▼                 ▼                 ▼
      IAM/WAF          Retry/CB          Model routing
      KMS              Fallback          Caching
      VPC              Queue             Token budget
         │                 │                 │
         └─────────────────┼─────────────────┘
                           ▼
                      Scalability
                           │
                           ▼
                      Observability&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And especially:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-text"&gt;RAG:
"Find the right information."

Agent:
"Decide which actions/tools are required
to solve the problem."

LLM:
"Reason/generate."

Tools:
"Actually interact with enterprise systems."

Guardrails:
"Constrain what the system is allowed to do."

Human:
"Approve high-impact decisions."&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That distinction is one of the strongest concepts to internalize for an AWS GenAI Architect interview.&lt;/p&gt;&lt;h3&gt;One final architecture to memorize&lt;/h3&gt;&lt;pre&gt;&lt;code class="language-text"&gt;                     ┌─────────────────────┐
                     │       USER          │
                     └──────────┬──────────┘
                                ▼
                     ┌─────────────────────┐
                     │ CloudFront          │
                     │ WAF + Shield        │
                     └──────────┬──────────┘
                                ▼
                     ┌─────────────────────┐
                     │ ALB                 │
                     └──────────┬──────────┘
                                ▼
                 ┌─────────────────────────────┐
                 │ ECS / EKS PRIVATE SUBNET   │
                 │                             │
                 │ AI Gateway                  │
                 │ Agent Orchestrator          │
                 │ RAG Service                 │
                 └─────────────┬───────────────┘
                               │
             ┌─────────────────┼─────────────────┐
             ▼                 ▼                 ▼
        Guardrails         Knowledge Base       Tools
             │                 │                 │
             │                 ▼                 ├── Risk API
             │            OpenSearch              ├── Trade API
             │            / Aurora                ├── SQL
             │                 │                 └── MCP
             │                 │
             └─────────────────┼─────────────────┐
                               ▼                 │
                         Amazon Bedrock          │
                         Claude/Llama/Titan      │
                               │                 │
                               ▼                 │
                          Agent Result ◄─────────┘
                               │
                               ▼
                       Human Approval
                               │
                               ▼
                             USER&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This single architecture can answer a surprisingly large number of AWS GenAI Architect interview questions: RAG, agents, Bedrock, security, networking, multi-tenancy, governance, scalability, observability, cost optimization, human-in-the-loop, and enterprise integration.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijKxSpnXNt6l07NeCJERwa7WmQ_3n4-EdX_Zq5H87q5p52Y8ny9AXopy8OOKQQMSJuu7zLvZ2bmkY337JXcNYyody0Ooc2L4ncpgxurTw4fXogPypgCYtVJd2hTLwbXjDRZZUpnf1yKLTDEIW3WRl3434Jwt386NqpAiaZs2URmdU09MBQC9fiJhJmqlOE/s72-w644-h362-c/AWS_architecture_ecommerce.png" width="72"/><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>Keep Data Local Architecture for AgenticAI</title><link>http://dhirajpatra.blogspot.com/2026/08/keep-data-local-architecture-for.html</link><category>agent</category><category>agenticai</category><category>architecture</category><category>artificial intelligence</category><category>data</category><category>data architect</category><category>generativeai</category><pubDate>Tue, 18 Aug 2026 20:49:29 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-3376260556659290834</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr2r14nYwDNCbLaBiPTSTII6vko6ADcs953mR95fagbRusDh1qi4eWermDDLINSvAxmp77UH0EER0DVQgbZnQ7zb0Mh8TMtVMxbJbgN-uq5nvRStfKBBEJFMnPpcN5o2GXf4cRxow9MQ5egWOAm_bpGJ_GA8-PevE4IDSnL1I6KwNNirH9HWdlU9w-v-CQ/s1920/bank_on_premise_private_ai_architecture.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1280" data-original-width="1920" height="305" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr2r14nYwDNCbLaBiPTSTII6vko6ADcs953mR95fagbRusDh1qi4eWermDDLINSvAxmp77UH0EER0DVQgbZnQ7zb0Mh8TMtVMxbJbgN-uq5nvRStfKBBEJFMnPpcN5o2GXf4cRxow9MQ5egWOAm_bpGJ_GA8-PevE4IDSnL1I6KwNNirH9HWdlU9w-v-CQ/w458-h305/bank_on_premise_private_ai_architecture.jpg" width="458" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;generated by meta ai&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div _ngcontent-ng-c1372448136="" aria-busy="false" aria-live="polite" class="markdown markdown-main-panel md-content enable-luminous-fast-follows enable-updated-hr-color stronger tutor-markdown-rendering" dir="ltr" id="model-response-message-contentr_106aa530444a3457" inline-copy-host="" style="--animation-duration: 400ms; --fade-animation-function: ease-out; animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; color: #1f1f1f; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: column; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; gap: 0px; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;If a bank refuses to send raw or sensitive data outside its perimeter, you can build an agentic AI application using OpenAI, Gemini, or Claude APIs by adopting architectural patterns that &lt;b data-index-in-node="188" data-path-to-node="0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;keep raw data local while using public models strictly for high-level reasoning and orchestrating tasks&lt;/b&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;The primary strategies to achieve this include:&lt;/div&gt;&lt;br /&gt;&lt;h2 data-path-to-node="3" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;1. Local Anonymization &amp;amp; Data Masking (PII Redaction)&lt;/h2&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Before sending any prompt to the API, pass the internal data through a local processing layer that strips out or replaces sensitive information (PII, account numbers, names, financial balances) with synthetic placeholders.&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="5" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="5,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;How it works:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;ol data-path-to-node="5,0,1" start="1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;A local service intercepts the query and masks data: &lt;code data-index-in-node="53" data-path-to-node="5,0,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;"John Doe's balance is $50,000"&lt;/code&gt; &lt;span class="math-inline" data-index-in-node="85" data-math="\rightarrow" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;$\rightarrow$&lt;/span&gt; &lt;code data-index-in-node="97" data-path-to-node="5,0,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;"User_1's balance is [VAR_1]"&lt;/code&gt;.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;The masked prompt is sent to the LLM (OpenAI/Gemini/Claude).&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;The model processes the logic and returns an agentic plan or response.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;The local application unmasks the placeholders back to real data before displaying it or running a local tool.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="5,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Tools:&lt;/b&gt; Presidio (Microsoft), Private AI, or custom regex/NLP pipelines running strictly within the bank's network.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-path-to-node="7" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;2. Hybrid Agentic Architecture (Local Tools, External Brain)&lt;/h2&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;In an agentic workflow, an LLM acts as the &lt;b data-index-in-node="43" data-path-to-node="8" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;reasoning engine&lt;/b&gt;, while external code (tools/APIs) handles data access. The LLM does not need to store or directly process raw data if you separate planning from execution.&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="9" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="9,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;How it works:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="9,0,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="9,0,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Metadata/Schema Sharing:&lt;/b&gt; Share only database schemas, function signatures, or sanitized metadata with the LLM API.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="9,0,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;SQL / Tool Generation:&lt;/b&gt; Ask the API to write SQL queries or API call parameters based on user intents without giving it the actual database content.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="9,0,1,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Local Execution:&lt;/b&gt; Your internal microservices run the generated SQL query or call internal banking endpoints inside the bank's secure perimeter.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="9,0,1,3,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Local Summarization:&lt;/b&gt; If necessary, filter or compute aggregate statistics locally before passing small, sanitized summaries back to the LLM for the final step.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-path-to-node="11" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;3. Enterprise VPC &amp;amp; Private Link Connectivity&lt;/h2&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Commercial API providers offer dedicated enterprise instances hosted inside isolated clouds (e.g., Azure OpenAI Service, AWS Bedrock for Claude, or Google Cloud Vertex AI for Gemini).&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="13" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="13,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Key Controls:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="13,0,1" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="13,0,1,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Zero Data Retention (ZDR):&lt;/b&gt; Contractually guarantee that input/output prompts are deleted immediately after inference and are never logged or used for model training.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="13,0,1,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Private Endpoints (Azure Private Link / AWS PrivateLink):&lt;/b&gt; API traffic travels over a private connection, completely bypassing the public internet.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;b data-index-in-node="0" data-path-to-node="13,0,1,2,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Customer-Managed Encryption Keys (CMEK):&lt;/b&gt; Ensure the cloud provider cannot decrypt payload memory or cached data.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-path-to-node="15" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;4. Local Vector DBs &amp;amp; Local Embeddings for RAG&lt;/h2&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;If your agent relies on Retrieval-Augmented Generation (RAG) to query internal banking documents, run the vector search infrastructure inside the bank:&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="17" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Generate embeddings and store vectors locally using self-hosted vector databases (e.g., Qdrant, Milvus, PGVector).&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Run lightweight open-source embedding models locally (e.g., &lt;code data-index-in-node="60" data-path-to-node="17,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;bge-large&lt;/code&gt;, &lt;code data-index-in-node="71" data-path-to-node="17,1,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(242, 240, 240); border: 0px rgba(0, 0, 0, 0.55); clear: none; clip: auto; color: rgba(0, 0, 0, 0.55); columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 15px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgba(0, 0, 0, 0.55) none 3px; overlay: none; padding: 4px 6px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgba(0, 0, 0, 0.55); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;e5&lt;/code&gt;).&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Extract relevant document chunks, sanitize them locally, and feed only the minimal required context to the API.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 data-path-to-node="19" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;5. Local Orchestration Frameworks&lt;/h2&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Use agent frameworks that allow local tool routing and strict policy enforcement:&lt;/div&gt;&lt;br /&gt;&lt;ul data-path-to-node="21" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding-inline-start: 32px; padding: 0px 0px 0px 3.36px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Frameworks like &lt;b data-index-in-node="16" data-path-to-node="21,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;LangGraph&lt;/b&gt;, &lt;b data-index-in-node="27" data-path-to-node="21,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;CrewAI&lt;/b&gt;, or &lt;b data-index-in-node="38" data-path-to-node="21,0,0" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;LlamaIndex&lt;/b&gt; can be deployed entirely inside the bank's infrastructure.&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 36px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px 0px 0px 4px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Set up middleware guardrails (e.g., NeMo Guardrails or Llama Guard) to inspect and block any accidental data leaks in prompts before they exit the firewall.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-path-to-node="23" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Architectural Summary&lt;/h3&gt;&lt;response-element class="no-md" ng-version="0.0.0-PLACEHOLDER" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;code-block _nghost-ng-c2189877342="" class="ng-tns-c2189877342-43 enable-luminous-code-block ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c2189877342="" class="code-block ng-tns-c2189877342-43 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" data-hveid="0" data-ved="0CAAQhtANahcKEwii55eN4quWAxUAAAAAHQAAAAAQJQ" decode-data-ved="1" jslog="223238;track:impression,attention;BardVeMetadataKey:[[&amp;quot;r_106aa530444a3457&amp;quot;,&amp;quot;c_00a009247c875fd6&amp;quot;,null,&amp;quot;rc_1722a73538b10cb2&amp;quot;,null,null,&amp;quot;en&amp;quot;,null,1,null,null,1,0]]" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: -16px; margin-right: -16px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;!----&gt;&lt;div _ngcontent-ng-c2189877342="" class="formatted-code-block-internal-container ng-tns-c2189877342-43" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(20, 20, 20); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 26px 0px 0px 32px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div _ngcontent-ng-c2189877342="" class="animated-opacity ng-tns-c2189877342-43" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;div _ngcontent-ng-c2189877342="" class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c2189877342-43 ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: -72px auto auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px 11px 0px 0px; page: auto; perspective: none; position: sticky; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span _ngcontent-ng-c2189877342="" class="ng-tns-c2189877342-43" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;Plaintext&lt;/span&gt;&lt;div _ngcontent-ng-c2189877342="" class="buttons ng-tns-c2189877342-43 ng-star-inserted" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;gem-icon-button _ngcontent-ng-c2189877342="" _nghost-ng-c3576132223="" aria-describedby="cdk-describedby-message-ng-1-16" arialabel="Download code" cdk-describedby-host="ng-1" class="mat-mdc-tooltip-trigger download-button ng-tns-c2189877342-43 gem-button gem-button-badge-size-small gem-button-size-small gem-button-type-on-surface lm-enabled ng-star-inserted" fonticonname="arrow_circle_down" gemtooltip="Download code" size="small" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;" tabindex="-1" theme="lm" type="onSurface"&gt;&lt;!----&gt;&lt;!----&gt;&lt;button _ngcontent-ng-c3576132223="" aria-label="Download code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" jslog="305704;track:generic_click,impression" mat-ripple-loader-centered="" mat-ripple-loader-class-name="mat-mdc-button-ripple" mat-ripple-loader-uninitialized="" matbadgeposition="after" maticonbutton="" style="animation: auto ease 0s 1 normal none running none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border-color: rgb(0, 0, 0); border-style: none; border-width: 0px; clear: none; clip: auto; color: black; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 24px; font-stretch: normal; font-style: normal; font-variation-settings: normal; font-weight: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 6px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="mat-mdc-button-persistent-ripple mdc-icon-button__ripple" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;gem-icon _ngcontent-ng-c3576132223="" _nghost-ng-c3933130945="" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;mat-icon _ngcontent-ng-c3933130945="" aria-hidden="true" class="mat-icon notranslate lm-icon-l lumi-symbols mat-ligature-font mat-icon-no-color ng-star-inserted" data-mat-icon-name="arrow_circle_down" data-mat-icon-namespace="lumi-symbols" data-mat-icon-type="font" fonticon="arrow_circle_down" role="img" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(255, 255, 255); filter: none; flex-direction: row; flex: 0 0 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/mat-icon&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon&gt;&lt;!----&gt;&lt;span class="mat-focus-indicator" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;span class="mat-mdc-button-touch-target" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: none; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 50% auto auto 50%; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;/button&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon-button&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;gem-icon-button _ngcontent-ng-c2189877342="" _nghost-ng-c3576132223="" aria-describedby="cdk-describedby-message-ng-1-17" arialabel="Copy code" cdk-describedby-host="ng-1" class="mat-mdc-tooltip-trigger copy-button ng-tns-c2189877342-43 gem-button gem-button-badge-size-small gem-button-size-small gem-button-type-on-surface lm-enabled ng-star-inserted" data-test-id="gem-copy-button" fonticonname="copy" gemtooltip="Copy code" size="small" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline-block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;" tabindex="-1" theme="lm" type="onSurface"&gt;&lt;!----&gt;&lt;!----&gt;&lt;button _ngcontent-ng-c3576132223="" aria-label="Copy code" class="mdc-icon-button mat-mdc-icon-button mat-mdc-button-base mat-badge mat-unthemed mat-badge-overlap mat-badge-above mat-badge-after mat-badge-small mat-badge-hidden ng-star-inserted" jslog="179062;track:generic_click,impression;BardVeMetadataKey:[[&amp;quot;r_106aa530444a3457&amp;quot;,&amp;quot;c_00a009247c875fd6&amp;quot;,null,&amp;quot;rc_1722a73538b10cb2&amp;quot;,null,null,&amp;quot;en&amp;quot;,null,1,null,null,1,0]];mutable:true" mat-ripple-loader-centered="" mat-ripple-loader-class-name="mat-mdc-button-ripple" mat-ripple-loader-uninitialized="" matbadgeposition="after" maticonbutton="" style="animation: auto ease 0s 1 normal none running none; background-attachment: scroll; background-clip: border-box; background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; border-color: rgb(0, 0, 0); border-style: none; border-width: 0px; clear: none; clip: auto; color: black; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 24px; font-stretch: normal; font-style: normal; font-variation-settings: normal; font-weight: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 6px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;span class="mat-mdc-button-persistent-ripple mdc-icon-button__ripple" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;gem-icon _ngcontent-ng-c3576132223="" _nghost-ng-c3933130945="" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 0 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;mat-icon _ngcontent-ng-c3933130945="" aria-hidden="true" class="mat-icon notranslate lm-icon-l lumi-symbols mat-ligature-font mat-icon-no-color ng-star-inserted" data-mat-icon-name="copy" data-mat-icon-namespace="lumi-symbols" data-mat-icon-type="font" fonticon="copy" role="img" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto no-repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; fill: rgb(255, 255, 255); filter: none; flex-direction: row; flex: 0 0 auto; float: none; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: relative; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/mat-icon&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon&gt;&lt;!----&gt;&lt;span class="mat-focus-indicator" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 0px; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;span class="mat-mdc-button-touch-target" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(0, 0, 0); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: pointer; cx: 0px; cy: 0px; d: none; direction: ltr; display: none; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: 50% auto auto 50%; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(0, 0, 0) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: absolute; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(0, 0, 0); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;/span&gt;&lt;/button&gt;&lt;!----&gt;&lt;!----&gt;&lt;/gem-icon-button&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;/div&gt;&lt;!----&gt;&lt;pre _ngcontent-ng-c2189877342="" class="ng-tns-c2189877342-43" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(31, 31, 31); clear: none; clip: auto; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(31, 31, 31) none 3px; overlay: none; padding: 0px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(31, 31, 31); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;&lt;code _ngcontent-ng-c2189877342="" class="code-container formatted ng-tns-c2189877342-43" data-test-id="code-content" role="text" style="animation: auto ease 0s 1 normal none running none; appearance: none; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); border: 0px rgb(255, 255, 255); clear: none; clip: auto; color: white; columns: auto; contain: none; container: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; fill: rgb(0, 0, 0); filter: none; flex-direction: row; flex: 0 1 auto; float: none; font-family: &amp;quot;Google Sans Text&amp;quot;, sans-serif !important; font-feature-settings: normal; font-kerning: auto; font-language-override: normal; font-optical-sizing: auto; font-size-adjust: none; font-size: 14px; font-stretch: normal; font-variant: normal; font-variation-settings: normal; gap: normal; hyphens: manual; inset: auto; interactivity: auto; isolation: auto; line-height: 1.15 !important; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px !important; marker: none; mask: none; offset: normal; opacity: 1; order: 0; outline: rgb(255, 255, 255) none 3px; overlay: none; padding: 16px 0px 32px; page: auto; perspective: none; position: static; quotes: auto; r: 0px; resize: none; rotate: none; rule: 3px rgb(255, 255, 255); rx: auto; ry: auto; scale: none; speak: normal; stroke: none; transform: none; transition: all; translate: none; visibility: visible; x: 0px; y: 0px; zoom: 1;"&gt;[ User / Bank System ] 
        │
        ▼
[ Local Middleware: Guardrails &amp;amp; PII Masking ]
        │
        ├─── Send Sanitized/Metadata Prompt ───► [ Cloud API: OpenAI / Gemini / Claude ]
        │                                                     │
        │◄─── Return Tool Call / Plan / SQL Query ────────────┘
        │
[ Local Tool Execution (DBs, Core Banking APIs) ]
        │
[ Local Unmasking &amp;amp; Final Output ]
&lt;/code&gt;&lt;/pre&gt;&lt;!----&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/code-block&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;!----&gt;&lt;/response-element&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr2r14nYwDNCbLaBiPTSTII6vko6ADcs953mR95fagbRusDh1qi4eWermDDLINSvAxmp77UH0EER0DVQgbZnQ7zb0Mh8TMtVMxbJbgN-uq5nvRStfKBBEJFMnPpcN5o2GXf4cRxow9MQ5egWOAm_bpGJ_GA8-PevE4IDSnL1I6KwNNirH9HWdlU9w-v-CQ/s72-w458-h305-c/bank_on_premise_private_ai_architecture.jpg" width="72"/><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>ML self-service pipeline that abstracts Kubernetes complexity</title><link>http://dhirajpatra.blogspot.com/2026/08/ml-self-service-pipeline-that-abstracts.html</link><category>gpu</category><category>kubernetes</category><category>mlops</category><pubDate>Mon, 10 Aug 2026 08:19:45 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-5833307942319390168</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;span&gt;To successfully bridge the gap between machine learning engineering and cluster operations, you need to &lt;span style="background: #D3E3FD; font-weight: bold;"&gt;build a self-service pipeline that abstracts Kubernetes complexity&lt;/span&gt;. The goal is to let ML practitioners provision GPUs and scale workloads using simple configurations, while Operations maintains guardrails around costs and resources.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span data-di="" style="font-size: 11pt;"&gt;&lt;br style="line-height: 11pt;" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span&gt;Here is the operational blueprint to build, scale, and operationalize your ML-focused Kubernetes platform. &lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span data-di="" style="font-size: 11pt;"&gt;&lt;br style="line-height: 11pt;" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span&gt;1. Provision the ML Development Cluster &lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span data-di="" style="font-size: 11pt;"&gt;&lt;br style="line-height: 11pt;" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-size: 13pt; font-weight: bold; margin-bottom: 11pt;"&gt;&lt;span&gt;Setting up a dedicated ML development cluster requires integrating hardware acceleration into the Kubernetes control plane from day one. &lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Select the Infrastructure:&lt;/span&gt; Use cloud-managed services (AWS EKS, GCP GKE, or Azure AKS) for stable control planes and automated node OS provisioning. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Install GPU Drivers:&lt;/span&gt; Deploy the &lt;span style="font-weight: bold;"&gt;NVIDIA GPU Operator&lt;/span&gt; via Helm. This automatically manages the NVIDIA driver, container toolkit, and device plug-in across all GPU nodes. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Configure Node Pools:&lt;/span&gt; Create distinct, labeled node groups. &lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;CPU Pool:&lt;/span&gt; For the cluster control plane, core services, and light tooling (e.g., ). &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;GPU Pool:&lt;/span&gt; For training and inference (e.g.,  or ).&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Apply Taints and Labels:&lt;/span&gt; Prevent non-ML workloads from scheduling on expensive GPU hardware. &lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;Add taint:  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Add label:&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;&lt;span&gt;2. Implement Automated GPU Provisioning &lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span data-di="" style="font-size: 11pt;"&gt;&lt;br style="line-height: 11pt;" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-size: 13pt; font-weight: bold; margin-bottom: 11pt;"&gt;&lt;span&gt;ML workloads have highly variable resource demands. Standard scaling is too slow; you need just-in-time provisioning. &lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Deploy Karpenter:&lt;/span&gt; Replace the standard Cluster Autoscaler with &lt;span style="font-weight: bold;"&gt;Karpenter&lt;/span&gt;. It evaluates pending pods and launches the optimal EC2/Compute instance type in seconds. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Define NodePools:&lt;/span&gt; Configure Karpenter to recognize ML constraints. Set limits on maximum cloud spend and allowed instance types. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Enable Multi-Instance GPU (MIG):&lt;/span&gt; For dev workloads, split large physical GPUs (like A100s) into smaller, isolated instances. This allows multiple practitioners to share a single card for light experimentation. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Enforce Resource Quotas:&lt;/span&gt; Implement Kubernetes  and  per namespace. This ensures a single user cannot accidentally spin up 50 GPU instances and drain the budget.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span&gt;3. Enable Dynamic Autoscaling for ML Workloads &lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span data-di="" style="font-size: 11pt;"&gt;&lt;br style="line-height: 11pt;" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-size: 13pt; font-weight: bold; margin-bottom: 11pt;"&gt;&lt;span&gt;ML workloads require scaling based on real-time metrics like GPU utilization or API request queues, rather than standard CPU/Memory metrics. &lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Deploy KEDA (Kubernetes Event-driven Autoscaling):&lt;/span&gt; KEDA extends the Horizontal Pod Autoscaler (HPA) to scale workloads based on external metrics. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Inference Autoscaling:&lt;/span&gt; Configure KEDA to monitor your ingress controller or a message broker (like RabbitMQ/Kafka). Scale the model serving pods based on &lt;span style="font-weight: bold;"&gt;concurrent request volume&lt;/span&gt; or &lt;span&gt;&lt;span style="font-weight: bold;"&gt;queue length&lt;/span&gt;.&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Training Autoscaling:&lt;/span&gt; For distributed training, use the &lt;span style="font-weight: bold;"&gt;Training Operator (Kubeflow)&lt;/span&gt;. It orchestrates PyTorch or TensorFlow jobs, dynamically scaling worker pods up for the job and tearing them down immediately upon completion. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Scale-to-Zero:&lt;/span&gt; Configure KEDA to scale inference models down to &lt;span style="font-weight: bold;"&gt;0 replicas&lt;/span&gt; during off-hours if no requests are received, eliminating idle GPU costs.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span&gt;4. Create the Self-Service Interface &lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span data-di="" style="font-size: 11pt;"&gt;&lt;br style="line-height: 11pt;" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-size: 13pt; font-weight: bold; margin-bottom: 11pt;"&gt;&lt;span&gt;ML practitioners should not write raw Kubernetes YAML. Abstract the infrastructure into familiar interfaces. &lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Standardize with Helm/Kustomize:&lt;/span&gt; Create internal charts for standard ML patterns (e.g., "Jupyter Notebook Dev Environment" or "Triton Model Server Deployment"). &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Expose User Interfaces:&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Kubeflow / OpenDataHub:&lt;/span&gt; Provide a centralized dashboard where users can click a button to launch a Jupyter, VS Code, or RStudio instance backed by a requested number of GPUs. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Internal CLI/Internal Developer Portal (Backstage):&lt;/span&gt; Allow practitioners to deploy a model to production by filling out a simple form specifying only the model registry path and required GPU memory.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Simplify the Pod Spec:&lt;/span&gt; Users should only need to add a simple  block and a toleration to their configuration: &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span&gt;5. Establish Production Guardrails and Observability &lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span data-di="" style="font-size: 11pt;"&gt;&lt;br style="line-height: 11pt;" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="font-size: 13pt; font-weight: bold; margin-bottom: 11pt;"&gt;&lt;span&gt;Moving from dev to GPU-backed production requires strict monitoring and cost-attribution pipelines. &lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Deploy DCGM Exporter:&lt;/span&gt; The Data Center GPU Manager (DCGM) exporter feeds hardware-level metrics (GPU temperature, VRAM usage, SM utilization) into Prometheus. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Set Up Cost Allocation:&lt;/span&gt; Deploy &lt;span style="font-weight: bold;"&gt;KubeCost&lt;/span&gt;. Tag namespaces by team, project, or individual practitioner to track exactly who is driving cloud spend. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Configure Spot Instances:&lt;/span&gt; Train Karpenter to use &lt;span style="font-weight: bold;"&gt;Spot GPUs&lt;/span&gt; for fault-tolerant, interruptible training jobs, reducing compute costs by up to 70%. Use On-Demand GPUs strictly for production inference. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Implement Progressive Delivery:&lt;/span&gt; Use a service mesh (like Istio) or advanced ingress (like Argo Rollouts) to perform Canary deployments for new models, ensuring traffic is split safely before shifting full volume to new GPU pods.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-size: 13pt; font-weight: bold; margin-bottom: 11pt;"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-size: 13pt; font-weight: bold; margin-bottom: 11pt;"&gt;&lt;span&gt;To align this setup perfectly with your current workflow:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To build this self-service machine learning platform on Azure, you will use &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="d3HNPd_1" style="font-weight: bold;"&gt;Azure Kubernetes Service (AKS)&lt;/span&gt;, the &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="d3HNPd_2" style="font-weight: bold;"&gt;NVIDIA GPU Operator&lt;/span&gt;, &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="d3HNPd_3" style="font-weight: bold;"&gt;Karpenter&lt;/span&gt; (now natively supported on AKS via the Node Auto-Provisioning provider), and &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="d3HNPd_4" style="font-weight: bold;"&gt;KEDA&lt;/span&gt;.&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="d3HNPd_5" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Here is the turnkey deployment blueprint, complete with configurations that abstract infrastructure management away from your ML practitioners.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="d3HNPd_6" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="d3HNPd_7" role="heading" style="font-size: 20px;"&gt;1. Configure the Infrastructure (Operations Setup)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="d3HNPd_8" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Operations must first provision an AKS cluster configured for automated node generation and GPU drivers.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="d3HNPd_9" role="heading" style="font-size: 16px;"&gt;Install the NVIDIA GPU Operator via Helm&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="d3HNPd_a" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Run this command to handle automated driver installation, container toolkit setup, and health monitoring across any GPU instances AKS spins up:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="d3HNPd_b" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-bash"&gt;helm repo add nvidia https://github.io
helm repo update
helm install gpu-operator nvidia/gpu-operator \
  --namespace gpu-operator \
  --create-namespace \
  --&lt;span style="color: #9334e6;"&gt;set&lt;/span&gt; driver.enabled=true
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="d3HNPd_c" role="heading" style="font-size: 16px;"&gt;Define the Karpenter NodePool (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="d3HNPd_d" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;nodepool.yaml&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="d3HNPd_e" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;This configuration enables automated, just-in-time GPU node provisioning on Azure. It allows your cluster to dynamically spin up &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="d3HNPd_f" style="font-weight: bold;"&gt;Standard_NCs_v3&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; (NVIDIA V100) or &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="d3HNPd_g" style="font-weight: bold;"&gt;Standard_NDs_v4&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; (NVIDIA A100) machines based solely on developer requests, utilizing lower-cost &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="d3HNPd_h" style="font-weight: bold;"&gt;Spot instances&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; with an automatic fallback to On-Demand compute.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="d3HNPd_i" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-yaml"&gt;&lt;span style="color: #b45908;"&gt;apiVersion&lt;/span&gt;: karpenter.sh/v1beta1
&lt;span style="color: #b45908;"&gt;kind&lt;/span&gt;: NodePool
&lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: ml-gpu-pool
&lt;span style="color: #b45908;"&gt;spec&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;template&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
      &lt;span style="color: #b45908;"&gt;labels&lt;/span&gt;:
        &lt;span style="color: #b45908;"&gt;tier&lt;/span&gt;: machine-learning
        &lt;span style="color: #b45908;"&gt;accelerator&lt;/span&gt;: nvidia-gpu
    &lt;span style="color: #b45908;"&gt;spec&lt;/span&gt;:
      &lt;span style="color: #b45908;"&gt;requirements&lt;/span&gt;:
        - &lt;span style="color: #b45908;"&gt;key&lt;/span&gt;: karpenter.sh/capacity-type
          &lt;span style="color: #b45908;"&gt;operator&lt;/span&gt;: In
          &lt;span style="color: #b45908;"&gt;values&lt;/span&gt;: [&lt;span style="color: #188038;"&gt;"spot"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"on-demand"&lt;/span&gt;]
        - &lt;span style="color: #b45908;"&gt;key&lt;/span&gt;: kubernetes.io/arch
          &lt;span style="color: #b45908;"&gt;operator&lt;/span&gt;: In
          &lt;span style="color: #b45908;"&gt;values&lt;/span&gt;: [&lt;span style="color: #188038;"&gt;"amd64"&lt;/span&gt;]
        - &lt;span style="color: #b45908;"&gt;key&lt;/span&gt;: node.kubernetes.io/instance-type
          &lt;span style="color: #b45908;"&gt;operator&lt;/span&gt;: In
          &lt;span style="color: #b45908;"&gt;values&lt;/span&gt;: [&lt;span style="color: #188038;"&gt;"Standard_NC6s_v3"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"Standard_NC12s_v3"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"Standard_ND96asr_v4"&lt;/span&gt;]
      &lt;span style="color: #b45908;"&gt;taints&lt;/span&gt;:
        - &lt;span style="color: #b45908;"&gt;key&lt;/span&gt;: ://nvidia.com
          &lt;span style="color: #b45908;"&gt;operator&lt;/span&gt;: Exists
          &lt;span style="color: #b45908;"&gt;effect&lt;/span&gt;: NoSchedule
  &lt;span style="color: #b45908;"&gt;limits&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;cpu&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"1000"&lt;/span&gt;
    &lt;span style="color: #b45908;"&gt;memory&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;4000&lt;/span&gt;Gi
  &lt;span style="color: #b45908;"&gt;disruption&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;consolidationPolicy&lt;/span&gt;: WhenUnderutilized
    &lt;span style="color: #b45908;"&gt;expireAfter&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;720&lt;/span&gt;h
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="d3HNPd_j" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="d3HNPd_k" role="heading" style="font-size: 20px;"&gt;2. Implement Dynamic Metrics Scaling (KEDA)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="d3HNPd_l" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;ML workloads are rarely constrained by traditional CPU or Memory limits; traffic concurrency and GPU memory are the true scale metrics. Use this &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="d3HNPd_m" style="font-weight: bold;"&gt;KEDA ScaledObject&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; to monitor your model endpoint and automatically scale your inference pods to zero during periods of inactivity.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="d3HNPd_n" role="heading" style="font-size: 16px;"&gt;Create the KEDA Scaler (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="d3HNPd_o" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;keda-scaler.yaml&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="d3HNPd_p" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-yaml"&gt;&lt;span style="color: #b45908;"&gt;apiVersion&lt;/span&gt;: keda.sh/v1alpha1
&lt;span style="color: #b45908;"&gt;kind&lt;/span&gt;: ScaledObject
&lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: ml-model-scaler
  &lt;span style="color: #b45908;"&gt;namespace&lt;/span&gt;: ml-workloads
&lt;span style="color: #b45908;"&gt;spec&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;scaleTargetRef&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;apiVersion&lt;/span&gt;: apps/v1
    &lt;span style="color: #b45908;"&gt;kind&lt;/span&gt;: Deployment
    &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: vllm-inference-service
  &lt;span style="color: #b45908;"&gt;minReplicaCount&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;0&lt;/span&gt;  &lt;span style="color: #80868b; font-style: italic;"&gt;# Enables scale-to-zero to save Azure costs&lt;/span&gt;
  &lt;span style="color: #b45908;"&gt;maxReplicaCount&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;5&lt;/span&gt;
  &lt;span style="color: #b45908;"&gt;cooldownPeriod&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;300&lt;/span&gt; &lt;span style="color: #80868b; font-style: italic;"&gt;# Wait 5 minutes before spinning down nodes&lt;/span&gt;
  &lt;span style="color: #b45908;"&gt;triggers&lt;/span&gt;:
    - &lt;span style="color: #b45908;"&gt;type&lt;/span&gt;: prometheus
      &lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
        &lt;span style="color: #b45908;"&gt;serverAddress&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;http&lt;/span&gt;://cluster.local
        &lt;span style="color: #80868b; font-style: italic;"&gt;# Scales based on concurrent requests processing inside your serving framework&lt;/span&gt;
        &lt;span style="color: #b45908;"&gt;metricName&lt;/span&gt;: vllm_num_requests_waiting
        &lt;span style="color: #b45908;"&gt;threshold&lt;/span&gt;: &lt;span style="color: #188038;"&gt;'5'&lt;/span&gt;
        &lt;span style="color: #b45908;"&gt;query&lt;/span&gt;: sum(vllm_num_requests_waiting)
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="d3HNPd_q" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="d3HNPd_r" role="heading" style="font-size: 20px;"&gt;3. Build the Self-Service Interface (Developer Templates)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="d3HNPd_s" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;ML engineers should only interacting with high-level configurations. Package the infrastructure complexity into a standardized template.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="d3HNPd_t" role="heading" style="font-size: 16px;"&gt;The Simplified Developer Manifest (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="d3HNPd_u" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;deployment.yaml&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="d3HNPd_v" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;To deploy a model, an ML practitioner only needs to fill out this streamlined schema. Karpenter reads the &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="d3HNPd_w" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;resources.limits&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; and &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="d3HNPd_x" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;tolerations&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; blocks, calls Azure APIs, creates the appropriate virtual machine, hooks up the drivers, and schedules the job with zero operational friction.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="d3HNPd_y" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-yaml"&gt;&lt;span style="color: #b45908;"&gt;apiVersion&lt;/span&gt;: apps/v1
&lt;span style="color: #b45908;"&gt;kind&lt;/span&gt;: Deployment
&lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: vllm-inference-service
  &lt;span style="color: #b45908;"&gt;namespace&lt;/span&gt;: ml-workloads
&lt;span style="color: #b45908;"&gt;spec&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;replicas&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;1&lt;/span&gt;
  &lt;span style="color: #b45908;"&gt;selector&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;matchLabels&lt;/span&gt;:
      &lt;span style="color: #b45908;"&gt;app&lt;/span&gt;: llama-3-inference
  &lt;span style="color: #b45908;"&gt;template&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
      &lt;span style="color: #b45908;"&gt;labels&lt;/span&gt;:
        &lt;span style="color: #b45908;"&gt;app&lt;/span&gt;: llama-3-inference
    &lt;span style="color: #b45908;"&gt;spec&lt;/span&gt;:
      &lt;span style="color: #b45908;"&gt;tolerations&lt;/span&gt;:
        - &lt;span style="color: #b45908;"&gt;key&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"://nvidia.com"&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;operator&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Exists"&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;effect&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"NoSchedule"&lt;/span&gt;
      &lt;span style="color: #b45908;"&gt;containers&lt;/span&gt;:
        - &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: engine
          &lt;span style="color: #b45908;"&gt;image&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;vllm/vllm-openai&lt;/span&gt;:latest
          &lt;span style="color: #b45908;"&gt;args&lt;/span&gt;: [&lt;span style="color: #188038;"&gt;"--model"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"meta-llama/Meta-Llama-3-8B-Instruct"&lt;/span&gt;]
          &lt;span style="color: #b45908;"&gt;env&lt;/span&gt;:
            - &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: HUGGING_FACE_HUB_TOKEN
              &lt;span style="color: #b45908;"&gt;valueFrom&lt;/span&gt;:
                &lt;span style="color: #b45908;"&gt;secretKeyRef&lt;/span&gt;:
                  &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: hf-token
                  &lt;span style="color: #b45908;"&gt;key&lt;/span&gt;: token
          &lt;span style="color: #b45908;"&gt;ports&lt;/span&gt;:
            - &lt;span style="color: #b45908;"&gt;containerPort&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8000&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;resources&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;requests&lt;/span&gt;:
              &lt;span style="color: #b45908;"&gt;cpu&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"4"&lt;/span&gt;
              &lt;span style="color: #b45908;"&gt;memory&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"16Gi"&lt;/span&gt;
              :&lt;span style="color: #b45908;"&gt;//nvidia.com&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"1"&lt;/span&gt; &lt;span style="color: #80868b; font-style: italic;"&gt;# Operations setup triggers Karpenter node provisioning here&lt;/span&gt;
            &lt;span style="color: #b45908;"&gt;limits&lt;/span&gt;:
              &lt;span style="color: #b45908;"&gt;cpu&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"8"&lt;/span&gt;
              &lt;span style="color: #b45908;"&gt;memory&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"32Gi"&lt;/span&gt;
              :&lt;span style="color: #b45908;"&gt;//nvidia.com&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"1"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="d3HNPd_z" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="d3HNPd_10" role="heading" style="font-size: 20px;"&gt;4. Establish Operational Guardrails&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="d3HNPd_11" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;To prevent run-away expenditure on expensive GPU clusters, enforce hard walls at the namespace level.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="d3HNPd_12" role="heading" style="font-size: 16px;"&gt;ResourceQuota Guardrail (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="d3HNPd_13" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;quota.yaml&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="d3HNPd_14" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Apply this file to individual team namespaces to ensure a single experiment cannot accidentally exceed your organization's budget allocations.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="d3HNPd_15" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-yaml"&gt;&lt;span style="color: #b45908;"&gt;apiVersion&lt;/span&gt;: v1
&lt;span style="color: #b45908;"&gt;kind&lt;/span&gt;: ResourceQuota
&lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: team-alpha-gpu-limit
  &lt;span style="color: #b45908;"&gt;namespace&lt;/span&gt;: ml-workloads
&lt;span style="color: #b45908;"&gt;spec&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;hard&lt;/span&gt;:
    :&lt;span style="color: #b45908;"&gt;//nvidia.com&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"4"&lt;/span&gt; &lt;span style="color: #80868b; font-style: italic;"&gt;# Limits the team to a maximum of 4 concurrent GPUs&lt;/span&gt;
    :&lt;span style="color: #b45908;"&gt;//nvidia.com&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"4"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="d3HNPd_16" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="d3HNPd_17" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="wbeiFd_0" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;To support &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="wbeiFd_1" style="font-weight: bold;"&gt;Triton Inference Server&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; on your self-service Azure platform, you need to structure your deployment to handle multi-model repositories, optimize model loading from Azure Blob Storage, and track Triton-specific performance metrics for autoscaling.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="wbeiFd_2" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Here is the production-ready implementation blueprint for both Operations and ML practitioners.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="wbeiFd_3" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="wbeiFd_4" role="heading" style="font-size: 20px;"&gt;1. Configure the Infrastructure (Operations Setup)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="wbeiFd_5" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Operations must ensure that Triton pods can securely access your model registry in Azure Blob Storage without hardcoding static credentials.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="wbeiFd_6" role="heading" style="font-size: 20px;"&gt;Step A: Configure Managed Identity for Blob Storage&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="wbeiFd_7" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Use &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="wbeiFd_8" style="font-weight: bold;"&gt;Azure Workload Identity&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; to map a Kubernetes ServiceAccount directly to an Azure User-Assigned Managed Identity. This identity must have at least &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="wbeiFd_9" style="font-weight: bold;"&gt;Storage Blob Data Reader&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; permissions on your Triton model repository container.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="wbeiFd_a" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-yaml"&gt;&lt;span style="color: #b45908;"&gt;apiVersion&lt;/span&gt;: v1
&lt;span style="color: #b45908;"&gt;kind&lt;/span&gt;: ServiceAccount
&lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: triton-storage-sa
  &lt;span style="color: #b45908;"&gt;namespace&lt;/span&gt;: ml-workloads
  &lt;span style="color: #b45908;"&gt;annotations&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;azure.workload.identity/client-id&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"00000000-0000-0000-0000-000000000000"&lt;/span&gt; &lt;span style="color: #80868b; font-style: italic;"&gt;# Your Azure Managed Identity Client ID&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="wbeiFd_b" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="wbeiFd_c" role="heading" style="font-size: 20px;"&gt;2. Dynamic Metric Scaling (KEDA Configuration)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="wbeiFd_d" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Triton exposes dense execution metrics. Instead of relying on crude request counts, we scale based on Triton’s &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="wbeiFd_e" style="font-weight: bold;"&gt;Queue Time&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="wbeiFd_f" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;nv_inference_queue_duration_us&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;). If requests are sitting in the queue waiting for a GPU engine execution slot, KEDA will instantly trigger Karpenter to provision more hardware.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="wbeiFd_g"&gt; [1] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="wbeiFd_h" role="heading" style="font-size: 20px;"&gt;The Triton KEDA Scaler (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="wbeiFd_i" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;triton-scaler.yaml&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="wbeiFd_j" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-yaml"&gt;&lt;span style="color: #b45908;"&gt;apiVersion&lt;/span&gt;: keda.sh/v1alpha1
&lt;span style="color: #b45908;"&gt;kind&lt;/span&gt;: ScaledObject
&lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: triton-autoscaler
  &lt;span style="color: #b45908;"&gt;namespace&lt;/span&gt;: ml-workloads
&lt;span style="color: #b45908;"&gt;spec&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;scaleTargetRef&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;apiVersion&lt;/span&gt;: apps/v1
    &lt;span style="color: #b45908;"&gt;kind&lt;/span&gt;: Deployment
    &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: triton-inference-server
  &lt;span style="color: #b45908;"&gt;minReplicaCount&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;1&lt;/span&gt;  &lt;span style="color: #80868b; font-style: italic;"&gt;# Keep 1 warm instance for production pipelines&lt;/span&gt;
  &lt;span style="color: #b45908;"&gt;maxReplicaCount&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8&lt;/span&gt;
  &lt;span style="color: #b45908;"&gt;cooldownPeriod&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;600&lt;/span&gt; &lt;span style="color: #80868b; font-style: italic;"&gt;# 10 minutes to minimize GPU node thrashing&lt;/span&gt;
  &lt;span style="color: #b45908;"&gt;triggers&lt;/span&gt;:
    - &lt;span style="color: #b45908;"&gt;type&lt;/span&gt;: prometheus
      &lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
        &lt;span style="color: #b45908;"&gt;serverAddress&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;http&lt;/span&gt;://cluster.local
        &lt;span style="color: #b45908;"&gt;metricName&lt;/span&gt;: triton_queue_delay
        &lt;span style="color: #b45908;"&gt;threshold&lt;/span&gt;: &lt;span style="color: #188038;"&gt;'20000'&lt;/span&gt; &lt;span style="color: #80868b; font-style: italic;"&gt;# Trigger scaling if avg queue delay exceeds 20 milliseconds&lt;/span&gt;
        &lt;span style="color: #b45908;"&gt;query&lt;/span&gt;: &lt;span style="color: #188038;"&gt;|
          sum(rate(nv_inference_queue_duration_us[1m])) 
          / 
          sum(rate(nv_inference_request_duration_us[1m]))
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="wbeiFd_k" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="wbeiFd_l" role="heading" style="font-size: 20px;"&gt;3. The Self-Service Interface (Developer Templates)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="wbeiFd_m" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;ML practitioners use this standardized blueprint to deploy their models. Triton streams the model folder directory structured layout (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="wbeiFd_n" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;config.pbtxt&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="wbeiFd_o" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;model.onnx&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;, or &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="wbeiFd_p" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;model.pt&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;) straight out of your Azure Storage account directly into GPU VRAM.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="wbeiFd_q"&gt; [2] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="wbeiFd_r" role="heading" style="font-size: 20px;"&gt;The Simplified Triton Deployment (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="wbeiFd_s" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;triton-deployment.yaml&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="wbeiFd_t" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-yaml"&gt;&lt;span style="color: #b45908;"&gt;apiVersion&lt;/span&gt;: apps/v1
&lt;span style="color: #b45908;"&gt;kind&lt;/span&gt;: Deployment
&lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: triton-inference-server
  &lt;span style="color: #b45908;"&gt;namespace&lt;/span&gt;: ml-workloads
  &lt;span style="color: #b45908;"&gt;labels&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;app&lt;/span&gt;: triton-server
&lt;span style="color: #b45908;"&gt;spec&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;replicas&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;1&lt;/span&gt;
  &lt;span style="color: #b45908;"&gt;selector&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;matchLabels&lt;/span&gt;:
      &lt;span style="color: #b45908;"&gt;app&lt;/span&gt;: triton-server
  &lt;span style="color: #b45908;"&gt;template&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
      &lt;span style="color: #b45908;"&gt;labels&lt;/span&gt;:
        &lt;span style="color: #b45908;"&gt;app&lt;/span&gt;: triton-server
        &lt;span style="color: #b45908;"&gt;azure.workload.identity/use&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"true"&lt;/span&gt; &lt;span style="color: #80868b; font-style: italic;"&gt;# Triggers the Azure Workload Identity sidecar injection&lt;/span&gt;
    &lt;span style="color: #b45908;"&gt;spec&lt;/span&gt;:
      &lt;span style="color: #b45908;"&gt;serviceAccountName&lt;/span&gt;: triton-storage-sa
      &lt;span style="color: #b45908;"&gt;tolerations&lt;/span&gt;:
        - &lt;span style="color: #b45908;"&gt;key&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"://nvidia.com"&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;operator&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Exists"&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;effect&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"NoSchedule"&lt;/span&gt;
      &lt;span style="color: #b45908;"&gt;containers&lt;/span&gt;:
        - &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: triton-container
          &lt;span style="color: #b45908;"&gt;image&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;nvcr.io/nvidia/tritonserver&lt;/span&gt;:&lt;span style="color: #b45908;"&gt;24.01&lt;/span&gt;-py3 &lt;span style="color: #80868b; font-style: italic;"&gt;# Updated stable Triton runtime&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;args&lt;/span&gt;:
            - &lt;span style="color: #188038;"&gt;"tritonserver"&lt;/span&gt;
            &lt;span style="color: #80868b; font-style: italic;"&gt;# Triton reads natively from Azure Storage Blob via the asys:// protocol&lt;/span&gt;
            - &lt;span style="color: #188038;"&gt;"--model-repository=asys://your-storage-account.blob.core.windows.net/model-registry-container"&lt;/span&gt;
            - &lt;span style="color: #188038;"&gt;"--strict-model-config=true"&lt;/span&gt;
            - &lt;span style="color: #188038;"&gt;"--log-verbose=1"&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;ports&lt;/span&gt;:
            - &lt;span style="color: #b45908;"&gt;containerPort&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8000&lt;/span&gt;
              &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: http
            - &lt;span style="color: #b45908;"&gt;containerPort&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8001&lt;/span&gt;
              &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: grpc
            - &lt;span style="color: #b45908;"&gt;containerPort&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8002&lt;/span&gt;
              &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: metrics &lt;span style="color: #80868b; font-style: italic;"&gt;# Scraped by Prometheus to inform KEDA&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;resources&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;requests&lt;/span&gt;:
              &lt;span style="color: #b45908;"&gt;cpu&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"4"&lt;/span&gt;
              &lt;span style="color: #b45908;"&gt;memory&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"16Gi"&lt;/span&gt;
              :&lt;span style="color: #b45908;"&gt;//nvidia.com&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"1"&lt;/span&gt; &lt;span style="color: #80868b; font-style: italic;"&gt;# Prompts Karpenter to provision an Azure GPU VM instantly&lt;/span&gt;
            &lt;span style="color: #b45908;"&gt;limits&lt;/span&gt;:
              &lt;span style="color: #b45908;"&gt;cpu&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"8"&lt;/span&gt;
              &lt;span style="color: #b45908;"&gt;memory&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"32Gi"&lt;/span&gt;
              :&lt;span style="color: #b45908;"&gt;//nvidia.com&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"1"&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;readinessProbe&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;httpGet&lt;/span&gt;:
              &lt;span style="color: #b45908;"&gt;path&lt;/span&gt;: /v2/health/ready
              &lt;span style="color: #b45908;"&gt;port&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8000&lt;/span&gt;
            &lt;span style="color: #b45908;"&gt;initialDelaySeconds&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;30&lt;/span&gt;
            &lt;span style="color: #b45908;"&gt;periodSeconds&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="wbeiFd_u" role="heading" style="font-size: 20px;"&gt;The Accompanying Triton Service Routing (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="wbeiFd_v" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;triton-service.yaml&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="wbeiFd_w" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-yaml"&gt;&lt;span style="color: #b45908;"&gt;apiVersion&lt;/span&gt;: v1
&lt;span style="color: #b45908;"&gt;kind&lt;/span&gt;: Service
&lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: triton-inference-service
  &lt;span style="color: #b45908;"&gt;namespace&lt;/span&gt;: ml-workloads
  &lt;span style="color: #b45908;"&gt;labels&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;app&lt;/span&gt;: triton-server
&lt;span style="color: #b45908;"&gt;spec&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;ports&lt;/span&gt;:
    - &lt;span style="color: #b45908;"&gt;port&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8000&lt;/span&gt;
      &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: http
      &lt;span style="color: #b45908;"&gt;targetPort&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8000&lt;/span&gt;
    - &lt;span style="color: #b45908;"&gt;port&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8001&lt;/span&gt;
      &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: grpc
      &lt;span style="color: #b45908;"&gt;targetPort&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8001&lt;/span&gt;
    - &lt;span style="color: #b45908;"&gt;port&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8002&lt;/span&gt;
      &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: metrics
      &lt;span style="color: #b45908;"&gt;targetPort&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8002&lt;/span&gt;
  &lt;span style="color: #b45908;"&gt;selector&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;app&lt;/span&gt;: triton-server
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="wbeiFd_x" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="wbeiFd_y" role="heading" style="font-size: 20px;"&gt;4. Production Optimization Guardrail: Sharing GPUs (Optional)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="wbeiFd_z" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;If your practitioners run multiple small Triton models (e.g., Computer Vision classification or lightweight tabular nets), assigning an entire Azure GPU to a single container is cost-prohibitive.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="wbeiFd_10" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;You can configure Triton to split a single GPU across multiple execution model instances directly via its &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="wbeiFd_11" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;config.pbtxt&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; or leverage &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="wbeiFd_12" style="font-weight: bold;"&gt;MIG (Multi-Instance GPU)&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; if using &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="wbeiFd_13" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;Standard_ND96asr_v4&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; (A100) nodes.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="wbeiFd_14" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;For software-level instance sharing inside Triton, direct your developers to add this snippet directly to their &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="wbeiFd_15" style="font-weight: bold;"&gt;&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="wbeiFd_16" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;config.pbtxt&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; inside their Azure Storage bucket:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="wbeiFd_17" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-pbtxt"&gt;# config.pbtxt snippet to maximize GPU utilization
instance_group [
  {
    count: 2  # Runs 2 concurrent instances of this model on a single assigned GPU
    kind: KIND_GPU
  }
]
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="wbeiFd_18" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="CuAZc_0" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;To embed this setup into your Operations pipeline, we need to convert these requirements into structural infrastructure-as-code.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="CuAZc_1" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;This &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="CuAZc_2" style="font-weight: bold;"&gt;Terraform root module&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; provisions the core building blocks on Azure: it activates Azure Kubernetes Service (AKS) node auto-provisioning (Karpenter engine), configures the Azure Workload Identity infrastructure, sets up the Azure Storage Account model repository, and deploys the necessary Helm charts for Triton, KEDA, and the GPU operators.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="CuAZc_3" role="heading" style="font-size: 20px;"&gt;1. Directory Architecture&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="CuAZc_4" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Organize your Terraform repository layout to keep infrastructure declaration clean and separated from application space.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="CuAZc_5"&gt; [1, 2, 3] &lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="CuAZc_6" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-text"&gt;├── main.tf                 # Core cluster, identity, and storage components
├── providers.tf            # Azure, Helm, and Kubernetes provider definitions
├── variables.tf            # Input configuration variables
└── outputs.tf              # Storage links, client IDs, and cluster endpoints
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="CuAZc_7" role="heading" style="font-size: 20px;"&gt;2. Infrastructure Declaration (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="CuAZc_8" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;main.tf&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="CuAZc_9" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-hcl"&gt;# 1. Resource Group
resource "azurerm_resource_group" "ml_ops" {
  name     = var.resource_group_name
  location = var.location
}

# 2. Azure Kubernetes Service (AKS) with Node Auto-Provisioning (Karpenter)
resource "azurerm_kubernetes_cluster" "aks" {
  name                = "aks-ml-platform"
  location            = azurerm_resource_group.ml_ops.location
  resource_group_name = azurerm_resource_group.ml_ops.name
  dns_prefix          = "mlops-k8s"

  default_node_pool {
    name       = "systempool"
    node_count = 3
    vm_size    = "Standard_D4s_v5" # Cost-effective pool for core cluster overhead
  }

  identity {
    type = "SystemAssigned"
  }

  # Native Azure integration for Workload Identity &amp;amp; Open ID Connect
  oidc_issuer_enabled       = true
  workload_identity_enabled = true

  # Activates the native Azure Karpenter implementation (Node Auto-Provisioning)
  node_os_channel_upgrade = "NodeImage"
  
  # Ensure the cluster can run standard K8s scheduling optimizations
  sku_tier = "Standard"
}

# 3. Model Storage Infrastructure
resource "azurerm_storage_account" "model_registry" {
  name                     = var.storage_account_name
  resource_group_name      = azurerm_resource_group.ml_ops.name
  location                 = azurerm_resource_group.ml_ops.location
  account_tier             = "Standard"
  account_replication_type = "LRS"
}

resource "azurerm_storage_container" "models" {
  name                  = "triton-model-repository"
  storage_account_id    = azurerm_storage_account.model_registry.id
  container_access_type = "private"
}

# 4. Identity Mapping (Azure Workload Identity Setup)
resource "azurerm_user_assigned_identity" "triton_identity" {
  name                = "uai-triton-storage-reader"
  resource_group_name = azurerm_resource_group.ml_ops.name
  location            = azurerm_resource_group.ml_ops.location
}

# Give the Managed Identity read access to the storage bucket
resource "azurerm_role_assignment" "storage_reader" {
  scope                = azurerm_storage_account.model_registry.id
  role_definition_name = "Storage Blob Data Reader"
  principal_id         = azurerm_user_assigned_identity.triton_identity.principal_id
}

# Establish federated identity link between Azure and the cluster ServiceAccount
resource "azurerm_federated_identity_credential" "triton_fed_link" {
  name                = "fic-triton-sa-link"
  resource_group_name = azurerm_resource_group.ml_ops.name
  audience            = ["api://AzureADTokenExchange"]
  issuer              = azurerm_kubernetes_cluster.aks.oidc_issuer_url
  parent_id           = azurerm_user_assigned_identity.triton_identity.id
  subject             = "system:serviceaccount:ml-workloads:triton-storage-sa"
}

# 5. Helm Integrations
resource "helm_release" "gpu_operator" {
  name             = "gpu-operator"
  repository       = "https://nvidia.com"
  chart            = "gpu-operator"
  namespace        = "gpu-operator"
  create_namespace = true
  depends_on       = [azurerm_kubernetes_cluster.aks]

  set {
    name  = "driver.enabled"
    value = "true"
  }
}

resource "helm_release" "keda" {
  name             = "keda"
  repository       = "https://github.io"
  chart            = "keda"
  namespace        = "keda"
  create_namespace = true
  depends_on       = [azurerm_kubernetes_cluster.aks]
}
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="CuAZc_a" role="heading" style="font-size: 20px;"&gt;3. Providers System Config (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="CuAZc_b" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;providers.tf&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="CuAZc_c" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-hcl"&gt;terraform {
  required_version = "&amp;gt;= 1.5.0"
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~&amp;gt; 4.0"
    }
    kubernetes = {
      source  = "hashicorp/kubernetes"
      version = "~&amp;gt; 2.23"
    }
    helm = {
      source  = "hashicorp/helm"
      version = "~&amp;gt; 2.11"
    }
  }
}

provider "azurerm" {
  features {}
}

provider "kubernetes" {
  host                   = azurerm_kubernetes_cluster.aks.kube_config[0].host
  client_certificate     = base64decode(azurerm_kubernetes_cluster.aks.kube_config[0].client_certificate)
  client_key             = base64decode(azurerm_kubernetes_cluster.aks.kube_config[0].client_key)
  cluster_ca_certificate = base64decode(azurerm_kubernetes_cluster.aks.kube_config[0].cluster_ca_certificate)
}

provider "helm" {
  kubernetes {
    host                   = azurerm_kubernetes_cluster.aks.kube_config[0].host
    client_certificate     = base64decode(azurerm_kubernetes_cluster.aks.kube_config[0].client_certificate)
    client_key             = base64decode(azurerm_kubernetes_cluster.aks.kube_config[0].client_key)
    cluster_ca_certificate = base64decode(azurerm_kubernetes_cluster.aks.kube_config[0].cluster_ca_certificate)
  }
}
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="CuAZc_d" role="heading" style="font-size: 20px;"&gt;4. Input Controls (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="CuAZc_e" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;variables.tf&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="CuAZc_f" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-hcl"&gt;variable "resource_group_name" {
  type        = string
  default     = "rg-mlplatform-prod"
  description = "Target infrastructure resource group"
}

variable "location" {
  type        = string
  default     = "eastus2"
  description = "Target Azure data center location (Ensure GPU SKU availability here)"
}

variable "storage_account_name" {
  type        = string
  default     = "stmlmodelregistryprod"
  description = "Unique global naming string for the Blob Storage account"
}
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="CuAZc_g" role="heading" style="font-size: 20px;"&gt;5. Deployment Lifecycle Output (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="CuAZc_h" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;outputs.tf&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="CuAZc_i" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;These output parameters expose the critical connection targets needed by ML Engineers to deploy their applications.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="CuAZc_j" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-hcl"&gt;output "aks_cluster_name" {
  value = azurerm_kubernetes_cluster.aks.name
}

output "triton_workload_identity_client_id" {
  value       = azurerm_user_assigned_identity.triton_identity.client_id
  description = "Value to paste inside the developer's ServiceAccount annotation block"
}

output "storage_blob_endpoint" {
  value       = azurerm_storage_account.model_registry.primary_blob_endpoint
  description = "Value to paste inside Triton configuration arguments string"
}
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="CuAZc_k" role="heading" style="font-size: 20px;"&gt;Next Action Step&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="CuAZc_l" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Run the compilation process to instantiate your cluster control plane:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="CuAZc_m" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-bash"&gt;terraform init
terraform apply -auto-approve
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="CuAZc_n" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Once the terraform setup is complete, you can pass the output values to your practitioners. They can plug &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="CuAZc_o" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;triton_workload_identity_client_id&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; and &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="CuAZc_p" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;storage_blob_endpoint&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; directly into the templates we built previously to begin serving models.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="CuAZc_q"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="CuAZc_r" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="QXY53d_11" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;To protect your budget and catch model degradation before it impacts users, you need alerts that target two specific areas: &lt;mark data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="CoGy3c#Gbmioe" jsuid="QXY53d_18" style="background: #D3E3FD; font-weight: bold;"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QXY53d_1c"&gt;infrastructure failures&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; (e.g., thermal throttling, stuck GPU drivers) and &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QXY53d_1e"&gt;application inefficiencies&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; (e.g., models wasting VRAM or requests piling up in Triton’s queue)&lt;!--TgQPHd|||[]--&gt;&lt;/mark&gt;.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="QXY53d_1h"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="QXY53d_1k" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Here are the production-ready &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QXY53d_1l" style="font-weight: bold;"&gt;PrometheusAlertmanager&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; rules, configured as a standard Kubernetes &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="QXY53d_1o" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;PrometheusRule&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; custom resource definition (CRD).&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="QXY53d_1t" role="heading" style="font-size: 20px;"&gt;1. Prometheus Alerts Configuration (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="QXY53d_1v" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;ml-gpu-alerts.yaml&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="QXY53d_78" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-yaml"&gt;&lt;span style="color: #b45908;"&gt;apiVersion&lt;/span&gt;: ://coreos.com
&lt;span style="color: #b45908;"&gt;kind&lt;/span&gt;: PrometheusRule
&lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: Triton-gpu-alerts
  &lt;span style="color: #b45908;"&gt;namespace&lt;/span&gt;: monitoring
  &lt;span style="color: #b45908;"&gt;labels&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;role&lt;/span&gt;: alert-rules
&lt;span style="color: #b45908;"&gt;spec&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;groups&lt;/span&gt;:
    - &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: ML.Platform.Hardware.Alerts
      &lt;span style="color: #b45908;"&gt;rules&lt;/span&gt;:
        &lt;span style="color: #80868b; font-style: italic;"&gt;# 1. Stuck GPU Driver / Broken Hardware Detection&lt;/span&gt;
        - &lt;span style="color: #b45908;"&gt;alert&lt;/span&gt;: GpuDriverOrHardwareFailure
          &lt;span style="color: #b45908;"&gt;expr&lt;/span&gt;: dcgm_fi_driver_version == &lt;span style="color: #b45908;"&gt;0&lt;/span&gt; or count(dcgm_fi_gpu_temp) == &lt;span style="color: #b45908;"&gt;0&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;for&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;2&lt;/span&gt;m
          &lt;span style="color: #b45908;"&gt;labels&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;severity&lt;/span&gt;: critical
            &lt;span style="color: #b45908;"&gt;tier&lt;/span&gt;: ml-platform
          &lt;span style="color: #b45908;"&gt;annotations&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;summary&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"GPU Driver or hardware failure detected on node {{ $labels.kubernetes_node }}"&lt;/span&gt;
            &lt;span style="color: #b45908;"&gt;description&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"The NVIDIA driver is reporting a crash or the card has dropped off the PCIe bus. Karpenter should replace this node."&lt;/span&gt;

        &lt;span style="color: #80868b; font-style: italic;"&gt;# 2. Thermal Throttling Guard&lt;/span&gt;
        - &lt;span style="color: #b45908;"&gt;alert&lt;/span&gt;: GpuThermalThrottlingActive
          &lt;span style="color: #b45908;"&gt;expr&lt;/span&gt;: dcgm_fi_therm_violation == &lt;span style="color: #b45908;"&gt;1&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;for&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;5&lt;/span&gt;m
          &lt;span style="color: #b45908;"&gt;labels&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;severity&lt;/span&gt;: warning
            &lt;span style="color: #b45908;"&gt;tier&lt;/span&gt;: ml-platform
          &lt;span style="color: #b45908;"&gt;annotations&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;summary&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"GPU Thermal Throttling active on {{ $labels.kubernetes_node }}"&lt;/span&gt;
            &lt;span style="color: #b45908;"&gt;description&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"The GPU clock speeds are being throttled due to high heat. Check the physical host health or cluster scheduling density."&lt;/span&gt;

        &lt;span style="color: #80868b; font-style: italic;"&gt;# 3. Running Out of Video RAM (VRAM)&lt;/span&gt;
        - &lt;span style="color: #b45908;"&gt;alert&lt;/span&gt;: GpuVramCriticalExhaustion
          &lt;span style="color: #b45908;"&gt;expr&lt;/span&gt;: (dcgm_fi_fb_used / (dcgm_fi_fb_used + dcgm_fi_fb_free)) * &lt;span style="color: #b45908;"&gt;100&lt;/span&gt; &amp;gt; &lt;span style="color: #b45908;"&gt;92&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;for&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;3&lt;/span&gt;m
          &lt;span style="color: #b45908;"&gt;labels&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;severity&lt;/span&gt;: critical
            &lt;span style="color: #b45908;"&gt;tier&lt;/span&gt;: ml-platform
          &lt;span style="color: #b45908;"&gt;annotations&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;summary&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"GPU VRAM critical exhaustion on node {{ $labels.kubernetes_node }}"&lt;/span&gt;
            &lt;span style="color: #b45908;"&gt;description&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"VRAM utilization is at {{ $value | printf \"%.2f\" }}%. Triton is dangerously close to an Out-Of-Memory (OOM) crash."&lt;/span&gt;

    - &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: ML.Platform.Application.Performance
      &lt;span style="color: #b45908;"&gt;rules&lt;/span&gt;:
        &lt;span style="color: #80868b; font-style: italic;"&gt;# 4. Triton Model Inference Latency Breach&lt;/span&gt;
        - &lt;span style="color: #b45908;"&gt;alert&lt;/span&gt;: TritonInferenceLatencyTooHigh
          &lt;span style="color: #b45908;"&gt;expr&lt;/span&gt;: &lt;span style="color: #188038;"&gt;|
            (sum(rate(nv_inference_compute_input_duration_us[5m])) 
            + sum(rate(nv_inference_compute_infer_duration_us[5m])) 
            + sum(rate(nv_inference_compute_output_duration_us[5m]))) 
            / sum(rate(nv_inference_request_duration_us[5m])) &amp;gt; 150000
&lt;/span&gt;          &lt;span style="color: #b45908;"&gt;for&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;3&lt;/span&gt;m
          &lt;span style="color: #b45908;"&gt;labels&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;severity&lt;/span&gt;: warning
            &lt;span style="color: #b45908;"&gt;tier&lt;/span&gt;: ml-platform
          &lt;span style="color: #b45908;"&gt;annotations&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;summary&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Triton model inference execution time exceeded 150ms"&lt;/span&gt;
            &lt;span style="color: #b45908;"&gt;description&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Model execution pipelines are slowing down. Actual calculation overhead is running at {{ $value | humanizeDuration }}."&lt;/span&gt;

        &lt;span style="color: #80868b; font-style: italic;"&gt;# 5. Massive Request Queue (Autoscaler Bottleneck or Lock)&lt;/span&gt;
        - &lt;span style="color: #b45908;"&gt;alert&lt;/span&gt;: TritonQueueSaturationBreach
          &lt;span style="color: #b45908;"&gt;expr&lt;/span&gt;: &lt;span style="color: #188038;"&gt;|
            sum(rate(nv_inference_queue_duration_us[5m])) 
            / sum(rate(nv_inference_request_duration_us[5m])) &amp;gt; 50000
&lt;/span&gt;          &lt;span style="color: #b45908;"&gt;for&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;4&lt;/span&gt;m
          &lt;span style="color: #b45908;"&gt;labels&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;severity&lt;/span&gt;: critical
            &lt;span style="color: #b45908;"&gt;tier&lt;/span&gt;: ml-platform
          &lt;span style="color: #b45908;"&gt;annotations&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;summary&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Triton request queue delay exceeded 50ms"&lt;/span&gt;
            &lt;span style="color: #b45908;"&gt;description&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Requests are waiting too long in the memory queue. KEDA and Karpenter may have hit their max replica limits (Cluster Saturation)."&lt;/span&gt;

        &lt;span style="color: #80868b; font-style: italic;"&gt;# 6. Underutilized GPU Hardware (Wasted Budget Guard)&lt;/span&gt;
        - &lt;span style="color: #b45908;"&gt;alert&lt;/span&gt;: GpuSeverelyUnderutilized
          &lt;span style="color: #b45908;"&gt;expr&lt;/span&gt;: avg_over_time(dcgm_fi_gpu_util[1h]) &amp;lt; &lt;span style="color: #b45908;"&gt;10&lt;/span&gt; and count(dcgm_fi_gpu_util) &amp;gt; &lt;span style="color: #b45908;"&gt;0&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;for&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;1&lt;/span&gt;h
          &lt;span style="color: #b45908;"&gt;labels&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;severity&lt;/span&gt;: warning
            &lt;span style="color: #b45908;"&gt;tier&lt;/span&gt;: ml-platform
          &lt;span style="color: #b45908;"&gt;annotations&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;summary&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"GPU Node {{ $labels.kubernetes_node }} is heavily underutilized"&lt;/span&gt;
            &lt;span style="color: #b45908;"&gt;description&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Average GPU computing SM utilization over the past hour is only {{ $value | printf \"%.2f\" }}%. A practitioner may have forgotten to release an interactive Jupyter environment."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="QXY53d_79" role="heading" style="font-size: 20px;"&gt;2. Connect Your Alert Routing (&lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="QXY53d_7a" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;alertmanager-config.yaml&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="QXY53d_7b" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;To ensure these rules land in the right hands, route the &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QXY53d_7c" style="font-weight: bold;"&gt;hardware&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; alerts straight to your Operations on-call rota (like PagerDuty) and the &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="QXY53d_7d" style="font-weight: bold;"&gt;underutilization/latency&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; alerts directly to the ML Engineering team's Slack/Teams channel.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="QXY53d_7e" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-yaml"&gt;&lt;span style="color: #b45908;"&gt;apiVersion&lt;/span&gt;: ://coreos.com
&lt;span style="color: #b45908;"&gt;kind&lt;/span&gt;: AlertmanagerConfig
&lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: ml-routing-rules
  &lt;span style="color: #b45908;"&gt;namespace&lt;/span&gt;: monitoring
&lt;span style="color: #b45908;"&gt;spec&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;route&lt;/span&gt;:
    &lt;span style="color: #b45908;"&gt;groupBy&lt;/span&gt;: [&lt;span style="color: #188038;"&gt;'alertname'&lt;/span&gt;, &lt;span style="color: #188038;"&gt;'kubernetes_node'&lt;/span&gt;, &lt;span style="color: #188038;"&gt;'namespace'&lt;/span&gt;]
    &lt;span style="color: #b45908;"&gt;groupWait&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;30&lt;/span&gt;s
    &lt;span style="color: #b45908;"&gt;groupInterval&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;5&lt;/span&gt;m
    &lt;span style="color: #b45908;"&gt;repeatInterval&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;4&lt;/span&gt;h
    &lt;span style="color: #b45908;"&gt;receiver&lt;/span&gt;: &lt;span style="color: #188038;"&gt;'Default Empty'&lt;/span&gt;
    &lt;span style="color: #b45908;"&gt;routes&lt;/span&gt;:
      &lt;span style="color: #80868b; font-style: italic;"&gt;# Send hardware failures straight to Operations PagerDuty&lt;/span&gt;
      - &lt;span style="color: #b45908;"&gt;matchers&lt;/span&gt;:
          - &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: severity
            &lt;span style="color: #b45908;"&gt;value&lt;/span&gt;: critical
          - &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: tier
            &lt;span style="color: #b45908;"&gt;value&lt;/span&gt;: ml-platform
        &lt;span style="color: #b45908;"&gt;receiver&lt;/span&gt;: &lt;span style="color: #188038;"&gt;'Ops-PagerDuty'&lt;/span&gt;
      &lt;span style="color: #80868b; font-style: italic;"&gt;# Send performance metrics and budget leaks to ML Team channels&lt;/span&gt;
      - &lt;span style="color: #b45908;"&gt;matchers&lt;/span&gt;:
          - &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: severity
            &lt;span style="color: #b45908;"&gt;value&lt;/span&gt;: warning
          - &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: tier
            &lt;span style="color: #b45908;"&gt;value&lt;/span&gt;: ml-platform
        &lt;span style="color: #b45908;"&gt;receiver&lt;/span&gt;: &lt;span style="color: #188038;"&gt;'ML-Engineers-Slack'&lt;/span&gt;
  &lt;span style="color: #b45908;"&gt;receivers&lt;/span&gt;:
    - &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: &lt;span style="color: #188038;"&gt;'Ops-PagerDuty'&lt;/span&gt;
      &lt;span style="color: #b45908;"&gt;pagerdutyConfigs&lt;/span&gt;:
        - &lt;span style="color: #b45908;"&gt;routingKey&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: pagerduty-keys
            &lt;span style="color: #b45908;"&gt;key&lt;/span&gt;: ops-key
    - &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: &lt;span style="color: #188038;"&gt;'ML-Engineers-Slack'&lt;/span&gt;
      &lt;span style="color: #b45908;"&gt;slackConfigs&lt;/span&gt;:
        - &lt;span style="color: #b45908;"&gt;channel&lt;/span&gt;: &lt;span style="color: #188038;"&gt;'#mlops-alerts'&lt;/span&gt;
          &lt;span style="color: #b45908;"&gt;apiURL&lt;/span&gt;:
            &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: slack-webhook
            &lt;span style="color: #b45908;"&gt;key&lt;/span&gt;: webhook-url
          &lt;span style="color: #b45908;"&gt;text&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Notification: {{ .CommonAnnotations.summary }}\nDetails: {{ .CommonAnnotations.description }}"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="QXY53d_7f" role="heading" style="font-size: 20px;"&gt;How to apply this setup&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="QXY53d_7g" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Ensure your cluster's Prometheus installation is scraping the Triton pods on port &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="QXY53d_7h" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;8002&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; (via a &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="QXY53d_7i" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;PodMonitor&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; or standard annotation parsing), then run:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="QXY53d_7j" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-bash"&gt;kubectl apply -f ml-gpu-alerts.yaml
kubectl apply -f alertmanager-config.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="QXY53d_7k" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="cja1od_0" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;To visually monitor your cluster, you can use pre-built community templates or a unified configuration file. This setup combines metrics from the &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="cja1od_1" style="font-weight: bold;"&gt;NVIDIA DCGM Exporter&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; and &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="cja1od_2" style="font-weight: bold;"&gt;Triton Inference Server&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; into a single glass view.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="cja1od_3"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="cja1od_4" role="heading" style="font-size: 20px;"&gt;Option A: Use Official Dashboard IDs (Quickest Setup)&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="cja1od_5" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Instead of copying a long configuration file, you can import these two official IDs into your Grafana instance (&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="cja1od_6" style="font-weight: bold;"&gt;Dashboards&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; ➔ &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="cja1od_7" style="font-weight: bold;"&gt;New&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; ➔ &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="cja1od_8" style="font-weight: bold;"&gt;Import&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;):&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="cja1od_9"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uae3nf#pGIJIb" jsuid="cja1od_a"&gt;&lt;div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="cja1od_b"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="cja1od_c" style="font-weight: bold;"&gt;NVIDIA DCGM Hardware Metrics:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Use Grafana Dashboard &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="cja1od_d" style="font-weight: bold;"&gt;ID: &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="cja1od_e" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;12239&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;. This tracks physical card health, VRAM limits, and temperatures.&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;li data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="uJpRZe#rJqRnf" jsuid="cja1od_f"&gt;&lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="cja1od_g" style="font-weight: bold;"&gt;NVIDIA Triton Performance Metrics:&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; Use Grafana Dashboard &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="cja1od_h" style="font-weight: bold;"&gt;ID: &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="cja1od_i" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;12832&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;. This tracks inference execution latency, queue times, and throughput counters.&lt;span data-sfc-root="ep" jsaction="" jscontroller="gWOIub#gnsrYb" jsuid="cja1od_j"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/li&gt;&lt;/ol&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;hr data-sfc-pl="|||[]" data-sfc-root="ep" jsaction="" jscontroller="zJhOJc#fwBjOe" jsuid="cja1od_k" style="border-color: rgb(220, 223, 229) currentcolor currentcolor; border-image: none; border-style: solid none none; border-width: 1px 0px 0px; height: 1px;" /&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="cja1od_l" role="heading" style="font-size: 20px;"&gt;Option B: The Unified Production JSON Manifest&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="cja1od_m" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;To bundle your infrastructure, deploy this custom &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="cja1od_n" style="font-weight: bold;"&gt;Kubernetes ConfigMap JSON schema&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt;. It creates a unified &lt;span data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="cjmLxf#dPtwvc" jsuid="cja1od_o" style="font-weight: bold;"&gt;"ML Platform &amp;amp; Triton Model Insights"&lt;!--TgQPHd|||[]--&gt;&lt;/span&gt; dashboard, pre-configured with panels for the Prometheus alerts we configured earlier.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="cja1od_p" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Save this file as &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="cja1od_q" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;ml-grafana-dashboard.yaml&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt;:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="cja1od_r" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-yaml"&gt;&lt;span style="color: #b45908;"&gt;apiVersion&lt;/span&gt;: v1
&lt;span style="color: #b45908;"&gt;kind&lt;/span&gt;: ConfigMap
&lt;span style="color: #b45908;"&gt;metadata&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;name&lt;/span&gt;: ml-platform-dashboard-export
  &lt;span style="color: #b45908;"&gt;namespace&lt;/span&gt;: monitoring
  &lt;span style="color: #b45908;"&gt;labels&lt;/span&gt;:
    &lt;span style="color: #80868b; font-style: italic;"&gt;# Triggers your Grafana sidecar provider to automatically load the dashboard&lt;/span&gt;
    &lt;span style="color: #b45908;"&gt;grafana_dashboard&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"1"&lt;/span&gt;
&lt;span style="color: #b45908;"&gt;data&lt;/span&gt;:
  &lt;span style="color: #b45908;"&gt;ml-platform-insights.json&lt;/span&gt;: |-
    {
      &lt;span style="color: #188038;"&gt;"annotations"&lt;/span&gt;: { &lt;span style="color: #188038;"&gt;"list"&lt;/span&gt;: [] },
      &lt;span style="color: #188038;"&gt;"editable"&lt;/span&gt;: true,
      &lt;span style="color: #188038;"&gt;"fiscalYearStartMonth"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;0&lt;/span&gt;,
      &lt;span style="color: #188038;"&gt;"graphTooltip"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;1&lt;/span&gt;,
      &lt;span style="color: #188038;"&gt;"id"&lt;/span&gt;: null,
      &lt;span style="color: #188038;"&gt;"links"&lt;/span&gt;: [],
      &lt;span style="color: #188038;"&gt;"liveNow"&lt;/span&gt;: false,
      &lt;span style="color: #188038;"&gt;"panels"&lt;/span&gt;: [
        {
          &lt;span style="color: #188038;"&gt;"title"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Active GPU Compute Hardware Utilization"&lt;/span&gt;,
          &lt;span style="color: #188038;"&gt;"type"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"timeseries"&lt;/span&gt;,
          &lt;span style="color: #188038;"&gt;"gridPos"&lt;/span&gt;: { &lt;span style="color: #188038;"&gt;"h"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"w"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;12&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"x"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;0&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"y"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;0&lt;/span&gt; },
          &lt;span style="color: #188038;"&gt;"targets"&lt;/span&gt;: [
            {
              &lt;span style="color: #188038;"&gt;"datasource"&lt;/span&gt;: { &lt;span style="color: #188038;"&gt;"type"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"prometheus"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"uid"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"prometheus"&lt;/span&gt; },
              &lt;span style="color: #188038;"&gt;"editorMode"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"code"&lt;/span&gt;,
              &lt;span style="color: #188038;"&gt;"expr"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"sum(dcgm_fi_gpu_util) by (kubernetes_node)"&lt;/span&gt;,
              &lt;span style="color: #188038;"&gt;"legendFormat"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Node: {{kubernetes_node}}"&lt;/span&gt;,
              &lt;span style="color: #188038;"&gt;"range"&lt;/span&gt;: &lt;span style="color: #9334e6;"&gt;true&lt;/span&gt;
            }
          ],
          &lt;span style="color: #188038;"&gt;"fieldConfig"&lt;/span&gt;: {
            &lt;span style="color: #188038;"&gt;"defaults"&lt;/span&gt;: {
              &lt;span style="color: #188038;"&gt;"custom"&lt;/span&gt;: { &lt;span style="color: #188038;"&gt;"drawStyle"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"line"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"lineInterpolation"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"smooth"&lt;/span&gt; },
              &lt;span style="color: #188038;"&gt;"unit"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"percent"&lt;/span&gt;
            }
          }
        },
        {
          &lt;span style="color: #188038;"&gt;"title"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"VRAM Exhaustion Tracker"&lt;/span&gt;,
          &lt;span style="color: #188038;"&gt;"type"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"timeseries"&lt;/span&gt;,
          &lt;span style="color: #188038;"&gt;"gridPos"&lt;/span&gt;: { &lt;span style="color: #188038;"&gt;"h"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"w"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;12&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"x"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;12&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"y"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;0&lt;/span&gt; },
          &lt;span style="color: #188038;"&gt;"targets"&lt;/span&gt;: [
            {
              &lt;span style="color: #188038;"&gt;"datasource"&lt;/span&gt;: { &lt;span style="color: #188038;"&gt;"type"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"prometheus"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"uid"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"prometheus"&lt;/span&gt; },
              &lt;span style="color: #188038;"&gt;"editorMode"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"code"&lt;/span&gt;,
              &lt;span style="color: #188038;"&gt;"expr"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"(dcgm_fi_fb_used / (dcgm_fi_fb_used + dcgm_fi_fb_free)) * 100"&lt;/span&gt;,
              &lt;span style="color: #188038;"&gt;"legendFormat"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"GPU Slot: {{gpu}} on {{pod}}"&lt;/span&gt;,
              &lt;span style="color: #188038;"&gt;"range"&lt;/span&gt;: &lt;span style="color: #9334e6;"&gt;true&lt;/span&gt;
            }
          ],
          &lt;span style="color: #188038;"&gt;"fieldConfig"&lt;/span&gt;: {
            &lt;span style="color: #188038;"&gt;"defaults"&lt;/span&gt;: {
              &lt;span style="color: #188038;"&gt;"unit"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"percent"&lt;/span&gt;,
              &lt;span style="color: #188038;"&gt;"thresholds"&lt;/span&gt;: {
                &lt;span style="color: #188038;"&gt;"mode"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"absolute"&lt;/span&gt;,
                &lt;span style="color: #188038;"&gt;"steps"&lt;/span&gt;: [
                  { &lt;span style="color: #188038;"&gt;"color"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"green"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"value"&lt;/span&gt;: &lt;span style="color: #9334e6;"&gt;null&lt;/span&gt; },
                  { &lt;span style="color: #188038;"&gt;"color"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"orange"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"value"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;80&lt;/span&gt; },
                  { &lt;span style="color: #188038;"&gt;"color"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"red"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"value"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;92&lt;/span&gt; }
                ]
              }
            }
          }
        },
        {
          &lt;span style="color: #188038;"&gt;"title"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Triton Model Inference Latency Breakdown"&lt;/span&gt;,
          &lt;span style="color: #188038;"&gt;"type"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"timeseries"&lt;/span&gt;,
          &lt;span style="color: #188038;"&gt;"gridPos"&lt;/span&gt;: { &lt;span style="color: #188038;"&gt;"h"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"w"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;12&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"x"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;0&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"y"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8&lt;/span&gt; },
          &lt;span style="color: #188038;"&gt;"targets"&lt;/span&gt;: [
            {
              &lt;span style="color: #188038;"&gt;"datasource"&lt;/span&gt;: { &lt;span style="color: #188038;"&gt;"type"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"prometheus"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"uid"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"prometheus"&lt;/span&gt; },
              &lt;span style="color: #188038;"&gt;"editorMode"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"code"&lt;/span&gt;,
              &lt;span style="color: #188038;"&gt;"expr"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"(sum(rate(nv_inference_compute_input_duration_us[5m])) by (model) + sum(rate(nv_inference_compute_infer_duration_us[5m])) by (model) + sum(rate(nv_inference_compute_output_duration_us[5m])) by (model)) / sum(rate(nv_inference_request_duration_us[5m])) by (model) / 1000"&lt;/span&gt;,
              &lt;span style="color: #188038;"&gt;"legendFormat"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Model: {{model}} (v{{version}})"&lt;/span&gt;,
              &lt;span style="color: #188038;"&gt;"range"&lt;/span&gt;: &lt;span style="color: #9334e6;"&gt;true&lt;/span&gt;
            }
          ],
          &lt;span style="color: #188038;"&gt;"fieldConfig"&lt;/span&gt;: {
            &lt;span style="color: #188038;"&gt;"defaults"&lt;/span&gt;: {
              &lt;span style="color: #188038;"&gt;"custom"&lt;/span&gt;: { &lt;span style="color: #188038;"&gt;"drawStyle"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"line"&lt;/span&gt; },
              &lt;span style="color: #188038;"&gt;"unit"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"ms"&lt;/span&gt;
            }
          }
        },
        {
          &lt;span style="color: #188038;"&gt;"title"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Triton Memory Queue Delays (Saturation Hook)"&lt;/span&gt;,
          &lt;span style="color: #188038;"&gt;"type"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"timeseries"&lt;/span&gt;,
          &lt;span style="color: #188038;"&gt;"gridPos"&lt;/span&gt;: { &lt;span style="color: #188038;"&gt;"h"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"w"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;12&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"x"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;12&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"y"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;8&lt;/span&gt; },
          &lt;span style="color: #188038;"&gt;"targets"&lt;/span&gt;: [
            {
              &lt;span style="color: #188038;"&gt;"datasource"&lt;/span&gt;: { &lt;span style="color: #188038;"&gt;"type"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"prometheus"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"uid"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"prometheus"&lt;/span&gt; },
              &lt;span style="color: #188038;"&gt;"editorMode"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"code"&lt;/span&gt;,
              &lt;span style="color: #188038;"&gt;"expr"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"sum(rate(nv_inference_queue_duration_us[5m])) by (model) / sum(rate(nv_inference_request_duration_us[5m])) by (model) / 1000"&lt;/span&gt;,
              &lt;span style="color: #188038;"&gt;"legendFormat"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"Queue Wait: {{model}}"&lt;/span&gt;,
              &lt;span style="color: #188038;"&gt;"range"&lt;/span&gt;: &lt;span style="color: #9334e6;"&gt;true&lt;/span&gt;
            }
          ],
          &lt;span style="color: #188038;"&gt;"fieldConfig"&lt;/span&gt;: {
            &lt;span style="color: #188038;"&gt;"defaults"&lt;/span&gt;: {
              &lt;span style="color: #188038;"&gt;"custom"&lt;/span&gt;: { &lt;span style="color: #188038;"&gt;"drawStyle"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"bars"&lt;/span&gt; },
              &lt;span style="color: #188038;"&gt;"unit"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"ms"&lt;/span&gt;
            }
          }
        }
      ],
      &lt;span style="color: #188038;"&gt;"refresh"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"10s"&lt;/span&gt;,
      &lt;span style="color: #188038;"&gt;"schemaVersion"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;38&lt;/span&gt;,
      &lt;span style="color: #188038;"&gt;"style"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"dark"&lt;/span&gt;,
      &lt;span style="color: #188038;"&gt;"tags"&lt;/span&gt;: [&lt;span style="color: #188038;"&gt;"mlops"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"triton"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"gpu"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"azure"&lt;/span&gt;],
      &lt;span style="color: #188038;"&gt;"time"&lt;/span&gt;: { &lt;span style="color: #188038;"&gt;"from"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"now-1h"&lt;/span&gt;, &lt;span style="color: #188038;"&gt;"to"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"now"&lt;/span&gt; },
      &lt;span style="color: #188038;"&gt;"timepicker"&lt;/span&gt;: {},
      &lt;span style="color: #188038;"&gt;"timezone"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"browser"&lt;/span&gt;,
      &lt;span style="color: #188038;"&gt;"title"&lt;/span&gt;: &lt;span style="color: #188038;"&gt;"ML Platform &amp;amp; Triton Model Insights"&lt;/span&gt;,
      &lt;span style="color: #188038;"&gt;"version"&lt;/span&gt;: &lt;span style="color: #b45908;"&gt;1&lt;/span&gt;
    }
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;h2 data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="gjwZNd#ZxCkTb" jsuid="cja1od_s" role="heading" style="font-size: 20px;"&gt;Apply to Your Environment&lt;!--TgQPHd|||[]--&gt;&lt;/h2&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="cja1od_t" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;Deploy this configuration mapping directly to your cluster backend:&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="rxoZB#M4fm4d" jsuid="cja1od_u" style="background-color: #f4f6f7; display: flex; gap: 16px; overflow-x: auto; padding: 16px;"&gt;&lt;pre style="margin: 0; overflow: auto hidden;"&gt;&lt;code class="language-bash"&gt;kubectl apply -f ml-grafana-dashboard.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="cja1od_v" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;If your platform uses Grafana’s standard &lt;code data-sfc-root="ep" dir="ltr" jsaction="" jscontroller="jM7ape#mDCHfd" jsuid="cja1od_w" style="background-color: #f4f6f7; border-radius: 4px; border: 1px solid #f4f6f7; padding: 2px 4px;"&gt;dashboard-provider&lt;!--TgQPHd|||[]--&gt;&lt;/code&gt; sidecar setup, this console will automatically populate under your shared directory tree.&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-cp="" data-sfc-root="ep" jsaction="" jscontroller="xUgpab#A1M9vc" jsuid="cja1od_x" style="margin: 16px 0px; overflow-wrap: break-word;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="kVZO2c#SfSkjb" jsuid="cja1od_z"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="cja1od_10"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="cja1od_11"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="kVZO2c#SfSkjb" jsuid="QXY53d_7s"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="QXY53d_7t"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="QXY53d_7u"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="kVZO2c#SfSkjb" jsuid="CuAZc_u"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="CuAZc_v"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="CuAZc_w"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="kVZO2c#SfSkjb" jsuid="wbeiFd_1g"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="wbeiFd_1h"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;div data-sfc-root="ep" jsaction="" jscontroller="cU6Yt#LBga0c" jsuid="wbeiFd_1i"&gt;&lt;!--TgQPHd|||[]--&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item><item><title>Causal Modeling</title><link>http://dhirajpatra.blogspot.com/2026/08/causal-modeling.html</link><category>artificial intelligence</category><category>economy</category><category>finance</category><category>financial engineering</category><category>machine learning</category><category>model</category><category>python</category><pubDate>Thu, 6 Aug 2026 06:54:00 -0700</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-8993867651193907565.post-7088255360010050901</guid><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHF_0nfoqywPHkIMRhC-q8KfdUyP5atxg42XgWXVlpfMHKOEksUcTxdfaGdrF54PdLbw0Ncgi76GsIalO12brJ2EB9L_kL7thhUSyOGFvQJb6RJ_2BsaMLuKZ8-4O3JOh_rQBTZSE-bgB5GCxPp_3zpRx3oiciQdh0S3JdR83_9pismj9DpUdpT4PKcjkS/s2240/financial_causal_model_dag.webp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1136" data-original-width="2240" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHF_0nfoqywPHkIMRhC-q8KfdUyP5atxg42XgWXVlpfMHKOEksUcTxdfaGdrF54PdLbw0Ncgi76GsIalO12brJ2EB9L_kL7thhUSyOGFvQJb6RJ_2BsaMLuKZ8-4O3JOh_rQBTZSE-bgB5GCxPp_3zpRx3oiciQdh0S3JdR83_9pismj9DpUdpT4PKcjkS/w553-h280/financial_causal_model_dag.webp" width="553" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;generated by meta ai&lt;p&gt;&lt;/p&gt;&lt;p&gt;Yes. In fact, &lt;strong&gt;causal&amp;nbsp;&lt;/strong&gt;&lt;span style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;&lt;strong&gt;modelling&lt;/strong&gt;&amp;nbsp;is one of the most advanced topics in quantitative finance and is becoming increasingly important because traditional ML models (LSTM, XGBoost, Transformers) often learn&amp;nbsp;&lt;strong&gt;correlations&lt;/strong&gt;, whereas causal models aim&lt;/span&gt;&amp;nbsp;to discover &lt;strong&gt;why&lt;/strong&gt; prices move.&lt;/p&gt;&lt;p&gt;Since I am&amp;nbsp;&lt;span style="box-sizing: border-box; margin: 0px; padding: 0px;"&gt;pursuing an&amp;nbsp;&lt;strong&gt;MSc in Financial Engineering&amp;nbsp;&lt;/strong&gt;at&amp;nbsp;&lt;strong&gt;WQU&lt;/strong&gt;, I'll teach it at that level, covering&lt;/span&gt;&amp;nbsp;theory, mathematics, and Python implementations.&lt;/p&gt;&lt;h1&gt;Learning Roadmap&lt;/h1&gt;&lt;p&gt;We'll build from scratch.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Correlation vs Causation&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Structural Causal Models (SCM)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Directed Acyclic Graphs (DAGs)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Causal Discovery Algorithms&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Do-Calculus (Pearl)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Counterfactual Prediction&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Causal Forecasting&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Applying causal models to stock prediction&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Building an end-to-end project&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;hr /&gt;&lt;h1&gt;Step 1 — Correlation vs Causation&lt;/h1&gt;&lt;p&gt;Suppose we have&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Oil Price&lt;/th&gt;&lt;th&gt;Airline Stock&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;↑&lt;/td&gt;&lt;td&gt;↓&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;↓&lt;/td&gt;&lt;td&gt;↑&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;They are negatively correlated.&lt;/p&gt;&lt;p&gt;But does oil directly affect airlines?&lt;/p&gt;&lt;p&gt;Yes.&lt;/p&gt;&lt;p&gt;Higher fuel cost&lt;br /&gt;→ higher operating expenses&lt;br /&gt;→ lower profit&lt;br /&gt;→ lower stock price&lt;/p&gt;&lt;p&gt;This is a causal relationship.&lt;/p&gt;&lt;p&gt;Now another example.&lt;/p&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Ice Cream Sales&lt;/th&gt;&lt;th&gt;Shark Attacks&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;↑&lt;/td&gt;&lt;td&gt;↑&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Highly correlated.&lt;/p&gt;&lt;p&gt;Does ice cream cause sharks?&lt;/p&gt;&lt;p&gt;No.&lt;/p&gt;&lt;p&gt;Common cause:&lt;/p&gt;&lt;p&gt;Summer&lt;br /&gt;→ more people swim&lt;br /&gt;→ more shark attacks&lt;/p&gt;&lt;p&gt;Summer&lt;br /&gt;→ more ice cream sales&lt;/p&gt;&lt;p&gt;This is a confounder.&lt;/p&gt;&lt;p&gt;Traditional ML usually cannot distinguish these.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;Step 2 — Financial Example&lt;/h1&gt;&lt;p&gt;Imagine predicting Apple stock.&lt;/p&gt;&lt;p&gt;Variables&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Interest Rate

Inflation

USD Index

Nasdaq Index

Apple Earnings

Apple Stock
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The causal graph looks like&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Interest Rate
        \
         \
          \
Inflation ---&amp;gt; USD
     \
      \
       \
     Nasdaq ----\
                  \
                   \
              Apple Earnings
                     \
                      \
                   Apple Stock
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Notice&lt;/p&gt;&lt;p&gt;Interest rate does NOT directly cause Apple stock.&lt;/p&gt;&lt;p&gt;It changes&lt;/p&gt;&lt;p&gt;Interest Rate&lt;br /&gt;↓&lt;/p&gt;&lt;p&gt;Bond Yield&lt;/p&gt;&lt;p&gt;↓&lt;/p&gt;&lt;p&gt;Investor Preference&lt;/p&gt;&lt;p&gt;↓&lt;/p&gt;&lt;p&gt;Nasdaq&lt;/p&gt;&lt;p&gt;↓&lt;/p&gt;&lt;p&gt;Apple&lt;/p&gt;&lt;p&gt;That matters.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;Step 3 — Structural Causal Model (SCM)&lt;/h1&gt;&lt;p&gt;Every node has an equation.&lt;/p&gt;&lt;p&gt;Example&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Inflation = Noise

InterestRate = 0.8 × Inflation + Noise

USD = 0.5 × InterestRate + Noise

Nasdaq = -0.7 × InterestRate + Noise

Apple =

0.6 × Nasdaq

+0.4 × Earnings

+Noise
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Unlike regression,&lt;/p&gt;&lt;p&gt;each equation represents a mechanism.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;Python Example&lt;/h1&gt;&lt;p&gt;Generate synthetic causal data.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;import numpy as np
import pandas as pd

np.random.seed(42)

N = 1000

inflation = np.random.normal(2,0.5,N)

interest = 0.8*inflation + np.random.normal(0,0.2,N)

usd = 0.5*interest + np.random.normal(0,0.3,N)

nasdaq = -0.7*interest + np.random.normal(0,0.5,N)

earnings = np.random.normal(5,1,N)

apple = (
    0.6*nasdaq
    +0.4*earnings
    +np.random.normal(0,0.5,N)
)

df = pd.DataFrame({
    "Inflation":inflation,
    "Interest":interest,
    "USD":usd,
    "Nasdaq":nasdaq,
    "Earnings":earnings,
    "Apple":apple
})

print(df.head())
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Notice that we explicitly generated the causal relationships.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;Step 4 — Draw the DAG&lt;/h1&gt;&lt;p&gt;Using NetworkX&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()

G.add_edges_from([
    ("Inflation","Interest"),
    ("Interest","USD"),
    ("Interest","Nasdaq"),
    ("Nasdaq","Apple"),
    ("Earnings","Apple")
])

nx.draw(G,
        with_labels=True,
        node_size=3000,
        arrows=True)

plt.show()
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Produces&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Inflation

↓

Interest

↙      ↘

USD   Nasdaq

          ↓

      Apple
↑

Earnings
&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;Step 5 — Why This Is Better Than Regression&lt;/h1&gt;&lt;p&gt;Suppose Fed raises rates.&lt;/p&gt;&lt;p&gt;Regression says&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Past data:

Rate ↑

Apple ↓

Therefore predict Apple ↓
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;But suppose&lt;/p&gt;&lt;p&gt;Apple reports record earnings.&lt;/p&gt;&lt;p&gt;Causal model says&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Interest ↑

↓

Nasdaq ↓

↓

Apple ↓

BUT

Earnings ↑↑

↓

Apple ↑
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The model understands competing causes.&lt;/p&gt;&lt;p&gt;This is much closer to how human analysts reason.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;Step 6 — Counterfactual Prediction&lt;/h1&gt;&lt;p&gt;Question:&lt;/p&gt;&lt;p&gt;"What would Apple have done if the Fed had NOT increased rates?"&lt;/p&gt;&lt;p&gt;Regression cannot answer.&lt;/p&gt;&lt;p&gt;Causal model can.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;interest = 5.5

# Intervention

interest = 2.0

# Recompute downstream variables

usd = 0.5*interest

nasdaq = -0.7*interest

apple = 0.6*nasdaq + 0.4*earnings
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is called an intervention:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;do(Interest=2%)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;instead of merely observing &lt;code inline=""&gt;Interest = 2%&lt;/code&gt;.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;Step 7 — Real Stock Prediction&lt;/h1&gt;&lt;p&gt;For NIFTY prediction, a richer causal graph might be:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Fed Rate
     ↓
US Dollar
     ↓
Crude Oil
     ↓
Indian Inflation
     ↓
RBI Rate
     ↓
Bank Nifty
     ↓
NIFTY

GDP

↓

Corporate Earnings

↓

NIFTY

VIX

↓

NIFTY

FII Flow

↓

NIFTY
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A causal model uses these relationships rather than feeding all variables into a black-box predictor.&lt;/p&gt;&lt;hr /&gt;&lt;h1&gt;Step 8 — Libraries&lt;/h1&gt;&lt;p&gt;Popular Python libraries include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;code inline=""&gt;DoWhy&lt;/code&gt; — causal inference and effect estimation&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code inline=""&gt;CausalNex&lt;/code&gt; — Bayesian networks and causal graphs&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code inline=""&gt;pgmpy&lt;/code&gt; — Bayesian networks (already familiar from your coursework)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code inline=""&gt;econml&lt;/code&gt; — heterogeneous treatment effects&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code inline=""&gt;lingam&lt;/code&gt; — causal discovery for linear non-Gaussian models&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code inline=""&gt;causal-learn&lt;/code&gt; — PC, GES, FCI, NOTEARS and other discovery algorithms&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;code inline=""&gt;networkx&lt;/code&gt; — graph visualization&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Example with &lt;code inline=""&gt;DoWhy&lt;/code&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code class="language-python"&gt;from dowhy import CausalModel

model = CausalModel(
    data=df,
    treatment="Interest",
    outcome="Apple",
    common_causes=["Inflation"]
)

identified_estimand = model.identify_effect()

estimate = model.estimate_effect(
    identified_estimand,
    method_name="backdoor.linear_regression"
)

print(estimate.value)
&lt;/code&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;h1&gt;Final Project (MSc-Level)&lt;/h1&gt;&lt;p&gt;A strong capstone could combine:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Data collection&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Yahoo Finance&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;FRED (interest rates)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;RBI&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;FII/DII flows&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;VIX&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Crude oil&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;USD/INR&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;CPI&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Causal discovery&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;PC Algorithm&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;NOTEARS&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;LiNGAM&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Bayesian Network&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Build the DAG&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Learn conditional probability tables or continuous conditional distributions&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Causal forecasting&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Estimate intervention effects&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Perform counterfactual analysis&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Forecast index or stock prices under different macroeconomic scenarios&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Explainability&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Show which causal paths contributed most to the prediction&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;Compare against LSTM, XGBoost, and Transformer models&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;This kind of project aligns well with your financial engineering background because it integrates probabilistic graphical models, macroeconomic reasoning, and interpretable AI rather than relying solely on black-box prediction.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Open Source Open Mind&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHF_0nfoqywPHkIMRhC-q8KfdUyP5atxg42XgWXVlpfMHKOEksUcTxdfaGdrF54PdLbw0Ncgi76GsIalO12brJ2EB9L_kL7thhUSyOGFvQJb6RJ_2BsaMLuKZ8-4O3JOh_rQBTZSE-bgB5GCxPp_3zpRx3oiciQdh0S3JdR83_9pismj9DpUdpT4PKcjkS/s72-w553-h280-c/financial_causal_model_dag.webp" width="72"/><author>dhiraj.patra@gmail.com (dhiraj patra)</author></item></channel></rss>