{"id":371,"date":"2026-04-13T20:09:30","date_gmt":"2026-04-13T20:09:30","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/azure-foundry-agent-service-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-ai-machine-learning\/"},"modified":"2026-04-13T20:09:30","modified_gmt":"2026-04-13T20:09:30","slug":"azure-foundry-agent-service-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-ai-machine-learning","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/azure-foundry-agent-service-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-ai-machine-learning\/","title":{"rendered":"Azure Foundry Agent Service Tutorial: Architecture, Pricing, Use Cases, and Hands-On Guide for AI + Machine Learning"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Category<\/h2>\n\n\n\n<p>AI + Machine Learning<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What this service is<\/h3>\n\n\n\n<p>Foundry Agent Service is an Azure-managed service for building, configuring, and operating AI \u201cagents\u201d that can follow instructions, use tools, and (optionally) retrieve knowledge from enterprise data sources\u2014all while integrating with Azure identity, governance, and monitoring.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Simple explanation (one paragraph)<\/h3>\n\n\n\n<p>If you want a chat assistant that does more than answer questions\u2014such as looking up information, calling APIs, and producing consistent, auditable outcomes\u2014Foundry Agent Service provides the managed \u201cagent runtime\u201d and lifecycle tools so you can create and run those agents in Azure instead of stitching everything together yourself.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Technical explanation (one paragraph)<\/h3>\n\n\n\n<p>Technically, Foundry Agent Service provides an agent orchestration layer that sits between your application and foundation models. It typically manages agent configuration (instructions, tools, knowledge connections), stateful conversations (threads\/sessions), execution (tool calls, retrieval\/grounding), and operational controls (authentication, logging\/telemetry integration, governance). Your model usage and data access are mediated through Azure-based connections and policies, and you operate agents as project resources within Azure\u2019s AI platform.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What problem it solves<\/h3>\n\n\n\n<p>Teams commonly struggle with:\n&#8211; Turning a model into a <strong>reliable system<\/strong> that can use tools, retrieve knowledge, and follow policies\n&#8211; Managing <strong>agent state<\/strong> (conversation history, memory, tool outputs) in a scalable and secure way\n&#8211; Integrating with Azure enterprise requirements: <strong>Microsoft Entra ID<\/strong>, RBAC, logging, network controls, cost management, and compliance<\/p>\n\n\n\n<p>Foundry Agent Service addresses these by providing a managed way to build and run agents as first-class Azure AI resources.<\/p>\n\n\n\n<blockquote>\n<p>Naming note (important): Microsoft\u2019s AI platform branding has evolved (for example, \u201cAzure AI Studio\u201d vs \u201cAzure AI Foundry\u201d, and \u201cAgent Service\u201d vs \u201cAgents\u201d). Use \u201cFoundry Agent Service\u201d as the primary name, and verify the latest naming, feature availability, and GA\/preview status in the official docs:<br\/>\nhttps:\/\/learn.microsoft.com\/search\/?terms=Foundry%20Agent%20Service%20Azure<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is Foundry Agent Service?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Official purpose<\/h3>\n\n\n\n<p>Foundry Agent Service exists to help you build AI agents that can:\n&#8211; Follow system-level instructions\n&#8211; Use <strong>tools<\/strong> (for example, calling APIs, functions, or connected services)\n&#8211; Optionally ground responses in enterprise data (for example, via retrieval)\n&#8211; Maintain conversation state in a managed way\n&#8211; Be operated securely in Azure with identity, governance, and monitoring<\/p>\n\n\n\n<p>Because terminology and product boundaries can change, treat this as the practical \u201cwhat it does\u201d definition and verify the exact scope in the current product documentation:\nhttps:\/\/learn.microsoft.com\/search\/?terms=Foundry%20Agent%20Service%20overview<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Core capabilities (practical view)<\/h3>\n\n\n\n<p>Common capabilities associated with an Azure-managed agent service include:\n&#8211; <strong>Agent definition<\/strong>: name, instructions, model selection, tool configuration\n&#8211; <strong>Stateful conversations<\/strong>: threads\/sessions and message history\n&#8211; <strong>Tool calling orchestration<\/strong>: structured requests from the model to tools, and returning tool results\n&#8211; <strong>Knowledge grounding<\/strong>: retrieval from configured data sources (when supported)\n&#8211; <strong>Safety and policy integration<\/strong>: aligning outputs with content filtering\/safety policies (often via Azure AI Content Safety or platform policies)\n&#8211; <strong>Operationalization<\/strong>: logging, tracing, and controlled deployment across environments<\/p>\n\n\n\n<blockquote>\n<p>Verify in official docs which of the above are supported in your region, subscription, and service version.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Major components (conceptual model)<\/h3>\n\n\n\n<p>While exact terms vary, agent services usually include:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Component<\/th>\n<th>What it represents<\/th>\n<th>Why it matters<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Project \/ workspace<\/td>\n<td>A logical container for AI assets (agents, connections, evaluations)<\/td>\n<td>Enables separation by team\/app\/environment<\/td>\n<\/tr>\n<tr>\n<td>Agent<\/td>\n<td>The configured AI \u201cworker\u201d (instructions + tools + model)<\/td>\n<td>Reusable unit of behavior<\/td>\n<\/tr>\n<tr>\n<td>Thread \/ session<\/td>\n<td>A stateful conversation container<\/td>\n<td>Enables multi-turn workflows<\/td>\n<\/tr>\n<tr>\n<td>Messages<\/td>\n<td>Inputs\/outputs in a thread<\/td>\n<td>Auditing and replay<\/td>\n<\/tr>\n<tr>\n<td>Runs \/ executions<\/td>\n<td>A single agent execution cycle (model + tools)<\/td>\n<td>Orchestrates tool usage and final output<\/td>\n<\/tr>\n<tr>\n<td>Connections<\/td>\n<td>Links to Azure resources (models, data sources)<\/td>\n<td>Centralizes credentials, governance<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Service type<\/h3>\n\n\n\n<p>Foundry Agent Service is a <strong>managed AI agent orchestration service<\/strong> in Azure, aligned to the <strong>AI + Machine Learning<\/strong> category. It is not simply a model endpoint; it is the layer that coordinates tools, state, and policies around a model.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Scope: regional vs global, project-scoped vs subscription-scoped<\/h3>\n\n\n\n<p>In Azure, most AI services are <strong>regional<\/strong> and tied to a project\/workspace or a resource in a resource group. In practice:\n&#8211; Expect agents to be created within an <strong>Azure AI project\/workspace<\/strong> (project-scoped)\n&#8211; Expect operations and data residency to follow the <strong>region<\/strong> of the underlying AI project and connected resources<\/p>\n\n\n\n<p>Because scope and region support can change, confirm for your environment:\nhttps:\/\/learn.microsoft.com\/search\/?terms=Azure%20AI%20Foundry%20regions%20availability<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How it fits into the Azure ecosystem<\/h3>\n\n\n\n<p>Foundry Agent Service typically sits at the center of an \u201cagentic\u201d solution and integrates with:\n&#8211; <strong>Model providers<\/strong> in Azure (commonly Azure OpenAI models, and potentially other hosted models depending on platform support)\n&#8211; <strong>Enterprise data<\/strong> (commonly via Azure AI Search for retrieval, or storage\/databases via tools)\n&#8211; <strong>Compute for tools<\/strong>: Azure Functions, Container Apps, AKS, App Service\n&#8211; <strong>Security<\/strong>: Microsoft Entra ID, Managed Identities, Key Vault, Private Link\/VNet (where supported)\n&#8211; <strong>Observability<\/strong>: Azure Monitor, Log Analytics, Application Insights (depending on integration)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why use Foundry Agent Service?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Business reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Faster time-to-value<\/strong>: agent building blocks (instructions, tools, state) reduce custom orchestration code<\/li>\n<li><strong>Consistency<\/strong>: standard agent definitions and projects help teams reuse patterns across apps<\/li>\n<li><strong>Governance<\/strong>: centrally managed connections and access control reduce shadow AI deployments<\/li>\n<li><strong>Safer enterprise rollout<\/strong>: easier to apply policies, monitor usage, and manage secrets<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Technical reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Stateful interactions<\/strong>: built-in constructs for multi-turn conversations<\/li>\n<li><strong>Tool orchestration<\/strong>: structured tool calls reduce prompt-only \u201cbest effort\u201d integrations<\/li>\n<li><strong>Composable design<\/strong>: connect models + data + tools with fewer moving parts than DIY frameworks<\/li>\n<li><strong>Azure-native integration<\/strong>: aligns with Entra ID, RBAC, and standard deployment patterns<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Observability-ready<\/strong>: clearer auditing of agent runs, tool usage, and failures (capabilities vary)<\/li>\n<li><strong>Environment separation<\/strong>: dev\/test\/prod projects with different connections and policies<\/li>\n<li><strong>Change control<\/strong>: agent versions\/config changes can be managed like application artifacts<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/compliance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Centralized identity<\/strong>: prefer Entra ID and Managed Identities over scattered API keys<\/li>\n<li><strong>Least-privilege access<\/strong>: RBAC-based control to projects and connected resources<\/li>\n<li><strong>Data governance<\/strong>: clearer boundaries for where prompts, outputs, and tool data flows<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scalability\/performance reasons<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Managed scaling<\/strong>: you scale agent requests like an API rather than scaling custom orchestrators<\/li>\n<li><strong>Backpressure and limits<\/strong>: service and model rate limits can be handled more predictably (still plan for retries)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should choose it<\/h3>\n\n\n\n<p>Choose Foundry Agent Service when:\n&#8211; You need an agent that <strong>calls tools<\/strong> (APIs, functions, workflows)\n&#8211; You need <strong>multi-turn state<\/strong> and consistent conversation handling\n&#8211; You must satisfy <strong>Azure enterprise controls<\/strong> (RBAC, network boundaries, monitoring)\n&#8211; You want a <strong>managed<\/strong> way to build agentic apps without assembling a full custom framework<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should not choose it<\/h3>\n\n\n\n<p>Consider alternatives when:\n&#8211; You only need <strong>single-shot<\/strong> text generation (a simple model endpoint may be enough)\n&#8211; You require fully <strong>offline\/on-prem<\/strong> orchestration (self-managed frameworks may fit better)\n&#8211; You need features not yet supported in your region or compliance boundary (for example, strict residency constraints or missing private networking features\u2014verify availability)\n&#8211; You want deep customization of agent internals beyond what a managed service exposes<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Where is Foundry Agent Service used?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industries<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Financial services (policy Q&amp;A, internal support, document workflows)<\/li>\n<li>Healthcare and life sciences (clinical ops knowledge assistants\u2014ensure compliance)<\/li>\n<li>Retail and e-commerce (customer support automation, catalog helpers)<\/li>\n<li>Manufacturing (maintenance copilots, SOP assistants)<\/li>\n<li>Energy (field ops troubleshooting assistants)<\/li>\n<li>Public sector (case worker guidance with strict governance)<\/li>\n<li>Technology and SaaS (developer support, internal productivity copilots)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Team types<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Application developers adding \u201cagentic features\u201d to products<\/li>\n<li>Platform teams standardizing AI adoption with guardrails<\/li>\n<li>Data\/ML teams operationalizing retrieval and evaluation<\/li>\n<li>Security and compliance teams governing model and data access<\/li>\n<li>DevOps\/SRE teams running production agent endpoints<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workloads and architectures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Internal copilots (HR, IT helpdesk, finance ops)<\/li>\n<li>Customer service agent assist<\/li>\n<li>Document processing pipelines with human-in-the-loop review<\/li>\n<li>Workflow automation (ticketing, approvals, knowledge retrieval)<\/li>\n<li>API orchestration and data enrichment<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Real-world deployment contexts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Production<\/strong>: strong RBAC, audited tool calls, controlled data connections, monitoring\/alerting, environment separation<\/li>\n<li><strong>Dev\/test<\/strong>: rapid experimentation with sandbox data and smaller models; cost controls and quotas<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Top Use Cases and Scenarios<\/h2>\n\n\n\n<p>Below are realistic scenarios where Foundry Agent Service is commonly a good fit. For each, assume the agent uses a supported model through Azure, and uses tools\/knowledge connections where appropriate.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) IT Helpdesk Triage Agent<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: L1 support is overwhelmed; many tickets are repetitive.<\/li>\n<li><strong>Why this service fits<\/strong>: Stateful conversation + tool calls to ticketing systems.<\/li>\n<li><strong>Example<\/strong>: Agent asks clarifying questions, checks outage status via an API tool, and drafts a ticket with structured fields.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Customer Support Order Lookup Agent<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Customers ask \u201cWhere is my order?\u201d and \u201cCan I change my address?\u201d.<\/li>\n<li><strong>Why this service fits<\/strong>: Tool calling to order systems; consistent instructions for safe actions.<\/li>\n<li><strong>Example<\/strong>: Agent calls an order-status API tool, returns ETA, and escalates if the order is in an exception state.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Policy and Compliance Q&amp;A (Grounded)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Employees need accurate policy answers; hallucinations are risky.<\/li>\n<li><strong>Why this service fits<\/strong>: Retrieval\/grounding from approved documents; auditable sources.<\/li>\n<li><strong>Example<\/strong>: Agent answers travel expense policy questions and cites the exact policy sections retrieved.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Incident Response Assistant (On-call Copilot)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: During incidents, responders waste time finding runbooks and past incidents.<\/li>\n<li><strong>Why this service fits<\/strong>: Tool access to monitoring\/knowledge systems; stateful threads for incident timeline.<\/li>\n<li><strong>Example<\/strong>: Agent fetches relevant runbooks, queries recent alerts, and summarizes likely root causes.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Sales Enablement Agent<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Sales needs fast, accurate product answers tailored to customers.<\/li>\n<li><strong>Why this service fits<\/strong>: Grounded retrieval from approved collateral; tool to CRM for customer context.<\/li>\n<li><strong>Example<\/strong>: Agent pulls account notes and produces a tailored pitch and objection handling guide.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Developer Documentation Assistant<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Engineers lose time searching internal docs and code examples.<\/li>\n<li><strong>Why this service fits<\/strong>: Retrieval from docs; tool to internal Git search service.<\/li>\n<li><strong>Example<\/strong>: Agent answers \u201cHow do I rotate secrets for service X?\u201d with steps and links to internal docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Procurement and Vendor Risk Assistant<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Vendor assessments require repeated checks against requirements.<\/li>\n<li><strong>Why this service fits<\/strong>: Tool calls to questionnaires; grounded retrieval from policy templates.<\/li>\n<li><strong>Example<\/strong>: Agent drafts a vendor risk summary and flags missing evidence for human review.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) HR Onboarding Assistant<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: New hires ask the same onboarding questions.<\/li>\n<li><strong>Why this service fits<\/strong>: Grounding from curated onboarding knowledge; consistent tone and disclaimers.<\/li>\n<li><strong>Example<\/strong>: Agent provides day-1 checklist, benefits links, and helps schedule IT setup steps via tools.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Finance Close Assistant<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Month-end close involves repetitive reconciliations and explanations.<\/li>\n<li><strong>Why this service fits<\/strong>: Tooling to pull ledger data; constrained instructions to avoid unauthorized actions.<\/li>\n<li><strong>Example<\/strong>: Agent fetches KPIs and drafts variance commentary with traceable calculations.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Field Service Troubleshooting Agent<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Technicians need quick guidance for equipment faults.<\/li>\n<li><strong>Why this service fits<\/strong>: Grounded SOP retrieval; tool to query asset history.<\/li>\n<li><strong>Example<\/strong>: Agent asks for model\/serial, fetches maintenance history, and recommends next steps with safety warnings.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11) Legal Contract Review Assistant (Assistive)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Lawyers need faster first-pass reviews.<\/li>\n<li><strong>Why this service fits<\/strong>: Tooling for clause library retrieval; auditable suggestions.<\/li>\n<li><strong>Example<\/strong>: Agent highlights risky clauses and suggests alternative language, clearly labeling as non-final.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12) Product Ops \/ Release Notes Generator<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Release notes are time-consuming and inconsistent.<\/li>\n<li><strong>Why this service fits<\/strong>: Tool to pull merged PR titles\/issue summaries; consistent templates.<\/li>\n<li><strong>Example<\/strong>: Agent produces customer-friendly release notes with categorized changes and links.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Core Features<\/h2>\n\n\n\n<p>Because feature availability can vary by region and release stage, verify each item against the official docs for Foundry Agent Service:\nhttps:\/\/learn.microsoft.com\/search\/?terms=Foundry%20Agent%20Service%20features<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Managed agent definitions<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Stores agent configuration (instructions, model choice, tool definitions, optional knowledge settings) as a managed resource.<\/li>\n<li><strong>Why it matters<\/strong>: Avoids hardcoding prompts\/tool schemas in multiple apps.<\/li>\n<li><strong>Practical benefit<\/strong>: Teams can reuse and version agent behavior across environments.<\/li>\n<li><strong>Caveats<\/strong>: Versioning\/publishing workflows vary\u2014verify how changes propagate to production.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Stateful conversations (threads\/sessions)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Maintains conversation context in a structured way.<\/li>\n<li><strong>Why it matters<\/strong>: Many real workflows need multi-turn clarification and memory.<\/li>\n<li><strong>Practical benefit<\/strong>: Better user experience; fewer \u201cstart over\u201d interactions.<\/li>\n<li><strong>Caveats<\/strong>: State retention duration, storage location, and export\/audit features vary\u2014verify retention and compliance behavior.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Tool calling orchestration<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Enables the model to request structured tool invocations; your system executes the tool and returns results.<\/li>\n<li><strong>Why it matters<\/strong>: Reliable integration with external systems (CRM, ERP, ticketing, databases).<\/li>\n<li><strong>Practical benefit<\/strong>: More deterministic workflows than prompt-only \u201cplease call this API\u201d.<\/li>\n<li><strong>Caveats<\/strong>: You must secure and validate tool calls; never let the model execute privileged actions without authorization checks.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Connections to Azure resources<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Centralizes references to model endpoints and data sources.<\/li>\n<li><strong>Why it matters<\/strong>: Credentials and governance can be managed once.<\/li>\n<li><strong>Practical benefit<\/strong>: Faster onboarding, consistent security posture.<\/li>\n<li><strong>Caveats<\/strong>: Connection types and auth modes differ\u2014verify supported connectors.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Grounding \/ retrieval integration (when supported)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Augments responses using enterprise knowledge sources (commonly via a search index).<\/li>\n<li><strong>Why it matters<\/strong>: Reduces hallucinations and improves factuality.<\/li>\n<li><strong>Practical benefit<\/strong>: Answers can reference approved documents and up-to-date data.<\/li>\n<li><strong>Caveats<\/strong>: Retrieval quality depends heavily on chunking, indexing, and query tuning.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Safety controls integration<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Applies content safety filtering and policy controls to prompts and outputs.<\/li>\n<li><strong>Why it matters<\/strong>: Required for many enterprise deployments.<\/li>\n<li><strong>Practical benefit<\/strong>: Reduce harmful content and policy violations.<\/li>\n<li><strong>Caveats<\/strong>: Safety filtering can block legitimate content; build user-friendly fallbacks and human escalation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Evaluation and testing hooks (platform-dependent)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Helps test agent behavior with test sets, metrics, or structured evaluations.<\/li>\n<li><strong>Why it matters<\/strong>: Agents regress when prompts\/tools change.<\/li>\n<li><strong>Practical benefit<\/strong>: More reliable releases, fewer production surprises.<\/li>\n<li><strong>Caveats<\/strong>: Evaluation features may live in the broader Azure AI Foundry platform rather than the agent runtime itself\u2014verify exact location.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) Enterprise identity (Entra ID) and RBAC alignment<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Aligns access control with Azure identity and resource governance.<\/li>\n<li><strong>Why it matters<\/strong>: Avoids sharing long-lived API keys across teams.<\/li>\n<li><strong>Practical benefit<\/strong>: Centralized access reviews and auditing.<\/li>\n<li><strong>Caveats<\/strong>: Some integrations may still require keys; store them in Key Vault and use Managed Identity where possible.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) Observability integration (logging\/metrics)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Emits operational signals about requests, failures, and latencies (capabilities vary).<\/li>\n<li><strong>Why it matters<\/strong>: Production operations require visibility.<\/li>\n<li><strong>Practical benefit<\/strong>: Faster troubleshooting; SLO\/SLA tracking.<\/li>\n<li><strong>Caveats<\/strong>: Beware logging sensitive prompts\/outputs; configure redaction and access controls.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Environment separation and governance<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does<\/strong>: Enables separate projects\/resources per environment.<\/li>\n<li><strong>Why it matters<\/strong>: Prevents test data and dev prompts from affecting production.<\/li>\n<li><strong>Practical benefit<\/strong>: Safer deployments and cost controls.<\/li>\n<li><strong>Caveats<\/strong>: Ensure consistent configuration promotion (IaC) and avoid manual drift.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Architecture and How It Works<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">High-level architecture<\/h3>\n\n\n\n<p>At a high level:\n1. Your application sends a user message to Foundry Agent Service.\n2. The agent runtime determines what to do next based on instructions and context.\n3. The runtime calls the configured model.\n4. If the model requests a tool call, the runtime (or your app, depending on the pattern) invokes the tool and returns results.\n5. The agent produces a final response, optionally grounded by data retrieval.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Request\/data\/control flow (typical)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Control plane<\/strong>: Create\/update agents, configure tools, set connections, manage access.<\/li>\n<li><strong>Data plane<\/strong>: Send messages, run agent executions, receive responses, fetch run logs\/messages.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Integrations with related services (common Azure patterns)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Model layer<\/strong>: Azure-hosted foundation models (commonly Azure OpenAI).<br\/>\n  Official entry point for Azure OpenAI docs: https:\/\/learn.microsoft.com\/azure\/ai-services\/openai\/<\/li>\n<li><strong>Retrieval<\/strong>: Azure AI Search for indexing and retrieval.<br\/>\n  Docs: https:\/\/learn.microsoft.com\/azure\/search\/<\/li>\n<li><strong>Tool execution<\/strong>: Azure Functions \/ Container Apps \/ AKS \/ Logic Apps (depending on your design).<\/li>\n<li><strong>Secrets<\/strong>: Azure Key Vault. Docs: https:\/\/learn.microsoft.com\/azure\/key-vault\/<\/li>\n<li><strong>Identity<\/strong>: Microsoft Entra ID + Managed Identity. Docs: https:\/\/learn.microsoft.com\/entra\/identity\/<\/li>\n<li><strong>Monitoring<\/strong>: Azure Monitor + Application Insights. Docs: https:\/\/learn.microsoft.com\/azure\/azure-monitor\/<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Dependency services<\/h3>\n\n\n\n<p>Foundry Agent Service rarely exists alone. Plan for:\n&#8211; A model provider resource (often Azure OpenAI) with deployed models\n&#8211; A data source (optional) for grounding (often Azure AI Search + storage)\n&#8211; Compute for tools (optional) and secured connectivity to internal systems\n&#8211; Monitoring and log storage (Log Analytics workspace)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/authentication model (typical Azure implementation)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Human admin access<\/strong>: Entra ID sign-in to Azure portal \/ Azure AI Foundry portal<\/li>\n<li><strong>App-to-service auth<\/strong>: Entra ID (recommended) or API keys (where applicable)<\/li>\n<li><strong>Tool auth<\/strong>: Managed Identity from tool compute (Function\/Container) to downstream resources (SQL, Storage, Key Vault)<\/li>\n<\/ul>\n\n\n\n<blockquote>\n<p>Verify exactly which auth modes Foundry Agent Service supports in your tenant and region.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Networking model<\/h3>\n\n\n\n<p>Networking options vary by service maturity:\n&#8211; Public endpoints with strong auth (common default)\n&#8211; Private networking via Private Link \/ VNet integration (sometimes available, sometimes limited; verify)<\/p>\n\n\n\n<p>Start with public endpoints + Entra ID and then harden to private networking if and when available for your compliance needs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring\/logging\/governance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Capture <strong>request counts, latency, error rates<\/strong><\/li>\n<li>Correlate <strong>agent run IDs<\/strong> with application request IDs<\/li>\n<li>Decide whether to log prompts\/outputs; if you do, implement:<\/li>\n<li>PII redaction<\/li>\n<li>restricted access (RBAC)<\/li>\n<li>retention limits<\/li>\n<li>encryption and audit trails<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Simple architecture diagram (Mermaid)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart LR\n  U[User] --&gt; A[Your App&lt;br\/&gt;Web\/API]\n  A --&gt; F[Foundry Agent Service]\n  F --&gt; M[Model Endpoint&lt;br\/&gt;(e.g., Azure OpenAI)]\n  F --&gt; T[Tools&lt;br\/&gt;(Functions\/APIs)]\n  F --&gt; R[Retrieval Source&lt;br\/&gt;(e.g., Azure AI Search)]\n  F --&gt; A\n  A --&gt; U\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Production-style architecture diagram (Mermaid)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart TB\n  subgraph Client\n    U[Users]\n    B[Browser\/Mobile]\n    U --&gt; B\n  end\n\n  subgraph AppTier[\"Application Tier (Your Subscription)\"]\n    APIM[API Management&lt;br\/&gt;(optional)]\n    WEB[App Service \/ Container Apps]\n    FUNC[Azure Functions&lt;br\/&gt;Tool Endpoints]\n    KV[Key Vault]\n    MON[App Insights \/ Azure Monitor]\n  end\n\n  subgraph AIFoundry[\"Azure AI Foundry (Project)\"]\n    FAS[Foundry Agent Service]\n    CONN[Connections&lt;br\/&gt;(Models\/Data)]\n  end\n\n  subgraph DataTier[\"Data Tier\"]\n    AIS[Azure AI Search&lt;br\/&gt;Index]\n    STG[Storage Account&lt;br\/&gt;(Docs)]\n    SQL[(Azure SQL \/ Cosmos DB&lt;br\/&gt;(optional))]\n  end\n\n  subgraph ModelTier[\"Model Tier\"]\n    AOAI[Azure OpenAI Resource&lt;br\/&gt;(Deployed Model)]\n  end\n\n  B --&gt; APIM --&gt; WEB\n  WEB --&gt; FAS\n  FAS --&gt; AOAI\n  FAS --&gt; AIS\n  WEB --&gt; FUNC\n  FUNC --&gt; SQL\n  FUNC --&gt; KV\n  WEB --&gt; KV\n  WEB --&gt; MON\n  FUNC --&gt; MON\n\n  STG --&gt; AIS\n  FAS --&gt; CONN\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">8. Prerequisites<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Account\/subscription\/tenant requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An active <strong>Azure subscription<\/strong><\/li>\n<li>Access to <strong>Azure AI Foundry<\/strong> \/ Foundry Agent Service in your tenant (availability varies)<\/li>\n<li>If using Azure OpenAI as the model provider: an Azure OpenAI-enabled subscription\/region (access requirements may apply)<\/li>\n<\/ul>\n\n\n\n<p>Start here to locate the current official onboarding path:\nhttps:\/\/learn.microsoft.com\/search\/?terms=Azure%20AI%20Foundry%20get%20started<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Permissions \/ IAM roles<\/h3>\n\n\n\n<p>You typically need:\n&#8211; <strong>Resource Group<\/strong>: Contributor (or Owner) to create resources\n&#8211; <strong>Azure AI project\/workspace<\/strong>: permissions to create agents and connections\n&#8211; <strong>Model resource (Azure OpenAI)<\/strong>: permissions to deploy and use models\n&#8211; <strong>Azure AI Search<\/strong> (optional): permissions to create index and query<\/p>\n\n\n\n<p>Because role names differ across services and evolve, verify the required built-in roles in docs for:\n&#8211; Azure AI Foundry project access\n&#8211; Azure OpenAI RBAC (if using Entra-based auth)\n&#8211; Azure AI Search RBAC<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Billing requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A subscription with billing enabled<\/li>\n<li>Budget\/alerts recommended for cost containment<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">CLI\/SDK\/tools<\/h3>\n\n\n\n<p>For this tutorial, you should have:\n&#8211; Azure CLI: https:\/\/learn.microsoft.com\/cli\/azure\/install-azure-cli\n&#8211; Git (optional)\n&#8211; Python 3.10+ (optional, for scripting data upload)\n&#8211; Access to Azure portal and the Azure AI Foundry portal (often at https:\/\/ai.azure.com\/ \u2014 verify in your tenant)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Region availability<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Foundry Agent Service availability is region-dependent.<\/li>\n<li>Your model (for example, Azure OpenAI deployments) is also region-dependent.<\/li>\n<\/ul>\n\n\n\n<p>Verify region support before provisioning:\nhttps:\/\/learn.microsoft.com\/search\/?terms=Azure%20AI%20Foundry%20region%20availability<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas\/limits<\/h3>\n\n\n\n<p>Plan for:\n&#8211; Model token and rate limits\n&#8211; Search query limits (if using Azure AI Search)\n&#8211; Agent\/project quotas (if applicable)<\/p>\n\n\n\n<p>Always check:\n&#8211; Quotas in Azure portal for the relevant service\n&#8211; Product documentation for service-specific caps<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisite services (for the lab)<\/h3>\n\n\n\n<p>Minimum viable lab:\n&#8211; Resource Group\n&#8211; Azure AI Foundry project\/workspace with Foundry Agent Service access\n&#8211; A supported model connection (commonly via Azure OpenAI)<\/p>\n\n\n\n<p>Optional (recommended for grounding lab):\n&#8211; Azure AI Search\n&#8211; Storage account (for documents)<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pricing \/ Cost<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Current pricing model (how to think about it)<\/h3>\n\n\n\n<p>Foundry Agent Service cost is typically a combination of:\n1. <strong>Model usage costs<\/strong> (tokens, input\/output) from the underlying model provider (commonly Azure OpenAI)\n2. <strong>Tool execution costs<\/strong> (Azure Functions\/Container Apps compute, database queries, API Management calls)\n3. <strong>Retrieval costs<\/strong> (Azure AI Search indexing + query units; storage for documents)\n4. <strong>Observability costs<\/strong> (Log Analytics ingestion, retention, Application Insights telemetry)<\/p>\n\n\n\n<p>Whether Foundry Agent Service itself has an additional standalone charge (per agent, per run, per request) depends on its current SKU\/GA status. <strong>Verify on the official pricing page<\/strong> (if available) or the Azure Pricing Calculator.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Official pricing sources<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Azure Pricing Calculator: https:\/\/azure.microsoft.com\/pricing\/calculator\/<\/li>\n<li>Azure OpenAI pricing (official): https:\/\/azure.microsoft.com\/pricing\/details\/cognitive-services\/openai-service\/  <\/li>\n<li>Azure AI Search pricing (official): https:\/\/azure.microsoft.com\/pricing\/details\/search\/<\/li>\n<\/ul>\n\n\n\n<p>For Foundry Agent Service pricing specifically, use Microsoft documentation search to find the current pricing page (if published):\nhttps:\/\/learn.microsoft.com\/search\/?terms=Foundry%20Agent%20Service%20pricing<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing dimensions (common)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tokens<\/strong>: input + output tokens per model call<\/li>\n<li><strong>Number of model calls<\/strong> per conversation (agents often do multiple calls per user request)<\/li>\n<li><strong>Tool calls<\/strong>: quantity and duration (compute time), plus downstream API costs<\/li>\n<li><strong>Retrieval queries<\/strong>: per request, potentially multiple queries per response<\/li>\n<li><strong>Index size and replicas\/partitions<\/strong> for search<\/li>\n<li><strong>Logs<\/strong>: volume of telemetry and retention duration<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Free tier<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Some Azure services offer free tiers; Azure OpenAI typically does not include a general free tier.<\/li>\n<li>Preview services sometimes have limited free usage, but do not assume this\u2014<strong>verify in official docs<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost drivers (what actually increases your bill)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Multi-step agent runs<\/strong><br\/>\n   One \u201cuser question\u201d can become:\n   &#8211; model call to interpret request\n   &#8211; retrieval query\n   &#8211; model call to write grounded answer\n   &#8211; one or more tool calls + follow-up model call<\/p>\n<\/li>\n<li>\n<p><strong>Large context windows<\/strong><br\/>\n   Long conversations and large retrieved document chunks increase input tokens.<\/p>\n<\/li>\n<li>\n<p><strong>High concurrency<\/strong><br\/>\n   Parallel agent runs may cause rate-limit retries and additional costs if not controlled.<\/p>\n<\/li>\n<li>\n<p><strong>Verbose logging<\/strong><br\/>\n   Logging full prompts\/outputs can dramatically increase Log Analytics ingestion.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Hidden\/indirect costs<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Networking egress if tools call external endpoints or cross-region resources<\/li>\n<li>Private networking features (Private Link) may add costs<\/li>\n<li>CI\/CD runners and test environments<\/li>\n<li>Data preparation and indexing pipelines (compute)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network\/data transfer implications<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep model, agent runtime, retrieval, and tool compute in the <strong>same region<\/strong> when possible.<\/li>\n<li>Minimize cross-region calls to reduce latency and egress.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">How to optimize cost<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use smaller\/cheaper models for most traffic; reserve larger models for escalation paths<\/li>\n<li>Apply retrieval only when needed; avoid retrieving for trivial questions<\/li>\n<li>Limit maximum tool calls per run; add guardrails<\/li>\n<li>Summarize or truncate conversation history intentionally<\/li>\n<li>Use caching for stable answers and repeated retrieval queries<\/li>\n<li>Configure log sampling and reduce prompt\/response logging in production<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example low-cost starter estimate (non-numeric)<\/h3>\n\n\n\n<p>A \u201cstarter\u201d setup usually includes:\n&#8211; One small chat model deployment\n&#8211; A single agent\n&#8211; Low-volume dev\/test usage\n&#8211; Optional basic Azure AI Search tier for small documents<\/p>\n\n\n\n<p>Your primary costs will likely be:\n&#8211; Model tokens\n&#8211; Search indexing\/query (if used)\n&#8211; Minimal monitoring ingestion<\/p>\n\n\n\n<p>Because prices vary by region\/model\/tier, build an estimate in the calculator using:\n&#8211; Expected daily users\n&#8211; Avg messages per session\n&#8211; Avg tokens per message (input + output)\n&#8211; Tool calls per message (if any)\n&#8211; Search queries per message (if any)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Example production cost considerations (non-numeric)<\/h3>\n\n\n\n<p>For production:\n&#8211; Provision for peak concurrency and higher token throughput\n&#8211; Add redundancy for retrieval and tools\n&#8211; Budget for monitoring retention, audit needs, and alerting\n&#8211; Expect higher per-request cost due to multi-step orchestration<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">10. Step-by-Step Hands-On Tutorial<\/h2>\n\n\n\n<p>This lab is designed to be <strong>beginner-friendly<\/strong> and <strong>low-risk<\/strong>. It focuses on creating a basic agent and testing it safely. Because portal workflows and API surfaces can change, you will copy the exact endpoint\/code snippets from your Azure AI Foundry environment where available.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Objective<\/h3>\n\n\n\n<p>Create a \u201cPolicy Helper\u201d agent using Foundry Agent Service in Azure, connect it to a chat model, test it in the Azure AI Foundry playground, and validate secure access patterns. Optionally, add a retrieval source using Azure AI Search.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lab Overview<\/h3>\n\n\n\n<p>You will:\n1. Create an Azure resource group.\n2. Ensure you have a model endpoint available (commonly Azure OpenAI).\n3. Create or open an Azure AI Foundry project that supports Foundry Agent Service.\n4. Create an agent with clear instructions and a narrow scope.\n5. Test the agent in the portal and validate behavior.\n6. (Optional) Add grounding via Azure AI Search and validate citations\/grounding behavior.\n7. Clean up resources.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Create a resource group<\/h3>\n\n\n\n<p><strong>What you\u2019ll do<\/strong>: Create a dedicated resource group so cleanup is easy.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open a terminal and sign in:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">az login\naz account show\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Set variables (edit location to a region that supports your services):<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">RG=\"rg-foundry-agent-lab\"\nLOC=\"eastus\"   # change to a supported region\naz group create -n \"$RG\" -l \"$LOC\"\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome<\/strong>: Resource group created successfully.<\/p>\n\n\n\n<p><strong>Verification<\/strong>:<\/p>\n\n\n\n<pre><code class=\"language-bash\">az group show -n \"$RG\" --query \"{name:name, location:location, provisioningState:properties.provisioningState}\"\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Ensure you have a supported model endpoint (commonly Azure OpenAI)<\/h3>\n\n\n\n<p><strong>What you\u2019ll do<\/strong>: Confirm you have access to a deployed chat model that Foundry Agent Service can use.<\/p>\n\n\n\n<p>You have two common paths:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Path A (existing Azure OpenAI resource)<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In Azure portal, find your <strong>Azure OpenAI<\/strong> resource.<\/li>\n<li>Confirm you have at least one <strong>deployed chat model<\/strong> in a supported region.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Path B (create Azure OpenAI resource)<\/h4>\n\n\n\n<p>Provisioning Azure OpenAI can require approval depending on your subscription. Follow the official docs:\nhttps:\/\/learn.microsoft.com\/azure\/ai-services\/openai\/how-to\/create-resource<\/p>\n\n\n\n<p><strong>Expected outcome<\/strong>: You have a model deployment ready to use.<\/p>\n\n\n\n<p><strong>Verification checklist<\/strong>:\n&#8211; You know the <strong>resource name<\/strong> and <strong>region<\/strong>\n&#8211; You can see at least one <strong>deployment<\/strong> for a chat model\n&#8211; You have permissions to use it<\/p>\n\n\n\n<blockquote>\n<p>Model names and availability change frequently. Choose a generally available chat-capable model in your region and subscription and verify it works in a simple test in the Azure OpenAI playground (if applicable).<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Create\/open an Azure AI Foundry project with Foundry Agent Service<\/h3>\n\n\n\n<p><strong>What you\u2019ll do<\/strong>: Use Azure AI Foundry to create a project that will hold your agent.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p>Open the Azure AI Foundry portal (commonly): https:\/\/ai.azure.com\/<br\/>\n   If your tenant uses a different entry point, locate it via Azure portal or docs search:\n   https:\/\/learn.microsoft.com\/search\/?terms=Azure%20AI%20Foundry%20portal<\/p>\n<\/li>\n<li>\n<p>Create a new <strong>Project<\/strong> (or select an existing one dedicated to this lab).<\/p>\n<\/li>\n<li>Confirm the project is in the same region (or a compatible region) as your model and any data services.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome<\/strong>: You can access a project dashboard where you can create agents and manage connections.<\/p>\n\n\n\n<p><strong>Verification<\/strong>:\n&#8211; You can navigate to sections like <strong>Agents<\/strong>, <strong>Connections<\/strong>, or <strong>Models<\/strong> (names vary).\n&#8211; You can create new assets inside the project.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Create a connection to your model provider (if required)<\/h3>\n\n\n\n<p><strong>What you\u2019ll do<\/strong>: Ensure the project can use your model deployment.<\/p>\n\n\n\n<p>In the project:\n1. Go to <strong>Connections<\/strong> (or equivalent).\n2. Add a connection to your model provider resource (commonly Azure OpenAI).\n3. Select the specific deployment you want to use.<\/p>\n\n\n\n<p><strong>Expected outcome<\/strong>: Your project can reference the deployment when creating an agent.<\/p>\n\n\n\n<p><strong>Verification<\/strong>:\n&#8211; The connection shows as \u201cHealthy\/Connected\u201d (wording varies).\n&#8211; You can see the model deployment as selectable when configuring the agent.<\/p>\n\n\n\n<blockquote>\n<p>If you don\u2019t see your deployment, it is usually due to region mismatch, missing permissions, or the deployment being in a different subscription. Fix those before proceeding.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Create your first agent in Foundry Agent Service<\/h3>\n\n\n\n<p><strong>What you\u2019ll do<\/strong>: Create an agent with narrow scope and safe instructions.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Navigate to <strong>Agents<\/strong> (or equivalent).<\/li>\n<li>Select <strong>Create agent<\/strong>.<\/li>\n<li>\n<p>Configure fields similar to:\n   &#8211; <strong>Name<\/strong>: <code>policy-helper<\/code>\n   &#8211; <strong>Instructions<\/strong> (example\u2014keep it short and strict):<\/p>\n<ul>\n<li>Only answer questions about the \u201cContoso Travel Policy (Lab)\u201d.<\/li>\n<li>If you don\u2019t have enough information, ask a clarifying question.<\/li>\n<li>Do not invent policy rules.<\/li>\n<li>If asked for legal advice, respond that you are not a lawyer and recommend contacting the compliance team.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p>Choose your <strong>model deployment<\/strong> from the connection you created.<\/p>\n<\/li>\n<li>Save the agent.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome<\/strong>: The agent is created and appears in your project.<\/p>\n\n\n\n<p><strong>Verification<\/strong>:\n&#8211; The agent details page shows the configured model and instructions.\n&#8211; You can open a test\/playground experience for the agent.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Test the agent in the portal (baseline behavior)<\/h3>\n\n\n\n<p><strong>What you\u2019ll do<\/strong>: Validate that instructions are followed before adding data sources.<\/p>\n\n\n\n<p>In the agent playground\/test UI:\n1. Ask a question the agent <strong>should refuse<\/strong> (because we haven\u2019t provided policy docs yet), for example:<br\/>\n   \u201cWhat\u2019s the hotel reimbursement limit?\u201d<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Ask a question outside scope:<br\/>\n   \u201cWrite me a poem about space.\u201d<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome<\/strong>:\n&#8211; For policy-specific questions, the agent should ask for policy text or admit it lacks information (depending on how it\u2019s designed).\n&#8211; For out-of-scope questions, the agent should refuse or redirect based on your instructions.<\/p>\n\n\n\n<p><strong>Verification tip<\/strong>: If it confidently invents policy limits, tighten the instructions and retest.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7 (Optional, recommended): Add grounding with Azure AI Search<\/h3>\n\n\n\n<p>This step depends on whether your Foundry Agent Service experience supports adding a retrieval\/grounding source directly. If your UI supports it, do the following.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">7A) Create Azure AI Search<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Create an Azure AI Search service in the same region (or a supported region):<\/li>\n<\/ol>\n\n\n\n<p>Azure portal path:\n&#8211; Create a resource \u2192 <strong>Azure AI Search<\/strong><\/p>\n\n\n\n<p>Docs:\nhttps:\/\/learn.microsoft.com\/azure\/search\/search-create-service-portal<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Choose a cost-effective tier for a lab (verify tier availability and features).<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome<\/strong>: Search service created.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">7B) Create an index and load a small policy document<\/h4>\n\n\n\n<p>There are multiple ways (portal, REST API, SDK). The simplest for beginners is portal-based import, but it depends on supported data sources.<\/p>\n\n\n\n<p>A minimal approach:\n&#8211; Create a small text document named <code>contoso-travel-policy.txt<\/code> with a few bullet rules (no sensitive data).\n&#8211; Upload it into a storage account container.\n&#8211; Use supported ingestion\/indexing flow to create an index.<\/p>\n\n\n\n<p>Docs entry point:\nhttps:\/\/learn.microsoft.com\/azure\/search\/search-what-is-azure-search<\/p>\n\n\n\n<p><strong>Expected outcome<\/strong>: You have an index containing your policy text.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">7C) Connect the agent to the search index (grounding)<\/h4>\n\n\n\n<p>In your agent configuration:\n1. Add a <strong>knowledge source \/ grounding data source<\/strong>.\n2. Select your Azure AI Search index via a connection.\n3. Configure retrieval parameters if exposed (topK, filters, etc.).<\/p>\n\n\n\n<p><strong>Expected outcome<\/strong>: The agent can answer policy questions using retrieved content.<\/p>\n\n\n\n<p><strong>Verification<\/strong>:\nAsk: \u201cWhat\u2019s the hotel reimbursement limit?\u201d<br\/>\n&#8211; Expected: It answers using your uploaded policy text (and may show citations depending on UI\/support).<\/p>\n\n\n\n<blockquote>\n<p>If citations are not shown, you can still validate grounding by changing the policy text and verifying the answer changes accordingly.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 8: Validate access and least privilege (quick check)<\/h3>\n\n\n\n<p><strong>What you\u2019ll do<\/strong>: Confirm only authorized users can access the project\/agent.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Azure portal, review project\/resource IAM:\n   &#8211; Ensure only intended users\/groups have access.<\/li>\n<li>If your organization requires it:\n   &#8211; Use a dedicated Entra ID group for AI project admins\n   &#8211; Separate \u201cagent developers\u201d from \u201cagent operators\u201d<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome<\/strong>: Access is restricted to your lab account\/team.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Validation<\/h3>\n\n\n\n<p>Use this checklist:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Validation item<\/th>\n<th>How to verify<\/th>\n<th>Expected result<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Agent exists<\/td>\n<td>Agent list in project<\/td>\n<td><code>policy-helper<\/code> visible<\/td>\n<\/tr>\n<tr>\n<td>Baseline instruction following<\/td>\n<td>Ask out-of-scope questions<\/td>\n<td>Refusal\/redirect per instructions<\/td>\n<\/tr>\n<tr>\n<td>Grounding works (optional)<\/td>\n<td>Ask policy question answered by uploaded doc<\/td>\n<td>Answer matches doc; minimal hallucination<\/td>\n<\/tr>\n<tr>\n<td>Permissions<\/td>\n<td>Try from unauthorized account (if possible)<\/td>\n<td>Access denied<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Issue: \u201cI can\u2019t see Foundry Agent Service \/ Agents in the portal\u201d<\/h4>\n\n\n\n<p>Common causes:\n&#8211; Feature not enabled in your tenant\/region\n&#8211; You are using a project type that doesn\u2019t support agents\n&#8211; Lack of permissions<\/p>\n\n\n\n<p>Fix:\n&#8211; Verify availability and onboarding in docs search:<br\/>\n  https:\/\/learn.microsoft.com\/search\/?terms=Foundry%20Agent%20Service%20availability\n&#8211; Confirm you are Owner\/Contributor on the project\/resource group.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Issue: \u201cModel deployment not selectable\u201d<\/h4>\n\n\n\n<p>Common causes:\n&#8211; Region mismatch\n&#8211; Missing permissions to the model resource\n&#8211; Unsupported model type for the agent runtime<\/p>\n\n\n\n<p>Fix:\n&#8211; Ensure the model deployment is in a supported region and you have access.\n&#8211; Test the model in its own playground first (where applicable).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Issue: \u201cGrounding returns irrelevant snippets\u201d<\/h4>\n\n\n\n<p>Fixes:\n&#8211; Improve chunking and indexing strategy\n&#8211; Add metadata filters\n&#8211; Reduce topK or adjust query strategy\n&#8211; Ensure the document text is clean and unambiguous<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Issue: \u201cCosts are higher than expected\u201d<\/h4>\n\n\n\n<p>Common causes:\n&#8211; Too many tool calls or retrieval steps per user message\n&#8211; Large conversation history included each time\n&#8211; Verbose logging to Log Analytics<\/p>\n\n\n\n<p>Fix:\n&#8211; Limit tool calls, truncate\/summarize history, reduce logging volume, and set budgets\/alerts.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Cleanup<\/h3>\n\n\n\n<p>To avoid ongoing charges, remove lab resources.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>If you created a dedicated resource group for everything, delete it:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">az group delete -n \"$RG\" --yes --no-wait\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>If you used shared resources (existing Azure OpenAI), only remove:\n&#8211; The agent and project assets created for the lab\n&#8211; Optional Azure AI Search and storage resources created specifically for this lab<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome<\/strong>: No billable lab resources remain.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Design for \u201cagent steps\u201d<\/strong>: Assume one user input may trigger multiple model calls, retrieval calls, and tool calls.<\/li>\n<li><strong>Separate concerns<\/strong>:<\/li>\n<li>Agent: reasoning + orchestration<\/li>\n<li>Tools: deterministic actions and data access<\/li>\n<li>Retrieval: factual grounding<\/li>\n<li><strong>Fail safely<\/strong>: If a tool fails, return a safe error and ask the user for next steps rather than guessing.<\/li>\n<li><strong>Prefer structured outputs<\/strong> for tool calls and intermediate steps.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM\/security best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>Microsoft Entra ID<\/strong> for human and workload identity where supported.<\/li>\n<li>Use <strong>Managed Identity<\/strong> for tool compute to access Key Vault, Search, Storage, databases.<\/li>\n<li>Apply <strong>least privilege<\/strong> to:<\/li>\n<li>project access<\/li>\n<li>model usage<\/li>\n<li>search query permissions<\/li>\n<li>tool endpoints and downstream APIs<\/li>\n<li>Separate roles:<\/li>\n<li>Agent developers (can edit instructions\/tools)<\/li>\n<li>Operators (can view health\/metrics)<\/li>\n<li>Security reviewers (can audit logs)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Choose the smallest model that meets quality targets; route complex queries to larger models.<\/li>\n<li>Implement:<\/li>\n<li>token limits<\/li>\n<li>max tool calls<\/li>\n<li>timeouts and retries with jitter<\/li>\n<li>Cache stable results (policy answers, product specs) where allowed.<\/li>\n<li>Use budgets, alerts, and tagging for chargeback.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Keep agent, model, retrieval, and tools in the same region.<\/li>\n<li>Reduce token usage:<\/li>\n<li>concise system instructions<\/li>\n<li>summarize long threads<\/li>\n<li>keep retrieved chunks small but meaningful<\/li>\n<li>Tune retrieval:<\/li>\n<li>relevant fields<\/li>\n<li>filters<\/li>\n<li>topK based on latency targets<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Reliability best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Build idempotent tools (safe to retry).<\/li>\n<li>Implement circuit breakers for downstream systems.<\/li>\n<li>Provide graceful degradation:<\/li>\n<li>If retrieval fails, respond with \u201cI can\u2019t access the knowledge base right now.\u201d<\/li>\n<li>If tool fails, offer manual steps or escalation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operations best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Track:<\/li>\n<li>request rate<\/li>\n<li>latency<\/li>\n<li>tool error rate<\/li>\n<li>retrieval latency<\/li>\n<li>model throttling\/rate limiting<\/li>\n<li>Add run correlation IDs across app logs and agent runs.<\/li>\n<li>Establish incident playbooks for:<\/li>\n<li>rate limit spikes<\/li>\n<li>tool endpoint outages<\/li>\n<li>search index failures<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Governance\/tagging\/naming best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tag resources: <code>app<\/code>, <code>env<\/code>, <code>owner<\/code>, <code>costCenter<\/code>, <code>dataClass<\/code><\/li>\n<li>Naming conventions:<\/li>\n<li>Resource group: <code>rg-{app}-{env}-{region}<\/code><\/li>\n<li>Agent: <code>{app}-{purpose}-{env}<\/code><\/li>\n<li>Promote configuration through environments using IaC when supported; avoid manual edits in production.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">12. Security Considerations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and access model<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prefer <strong>Entra ID<\/strong> authentication and RBAC.<\/li>\n<li>Restrict who can:<\/li>\n<li>create\/update agents (prompt\/tool changes are effectively \u201ccode changes\u201d)<\/li>\n<li>create connections (these can unlock data\/model access)<\/li>\n<li>read logs (may contain sensitive content)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Azure services encrypt data at rest by default in most cases; confirm for each connected service:<\/li>\n<li>Azure AI Search<\/li>\n<li>Storage accounts<\/li>\n<li>Log Analytics<\/li>\n<li>Any state stores used by agent workflows (if applicable)<\/li>\n<\/ul>\n\n\n\n<p>Verify encryption and customer-managed key (CMK) options where needed:\nhttps:\/\/learn.microsoft.com\/azure\/security\/fundamentals\/encryption-overview<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Network exposure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Start with public endpoints only if:<\/li>\n<li>strong auth is enforced (Entra ID)<\/li>\n<li>IP restrictions are applied at ingress layers (APIM, App Gateway) where appropriate<\/li>\n<li>For regulated environments:<\/li>\n<li>Evaluate Private Link\/VNet integration availability for Foundry Agent Service and dependencies (verify support)<\/li>\n<li>Keep data sources private where possible<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secrets handling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Store secrets in <strong>Azure Key Vault<\/strong>.<\/li>\n<li>Avoid embedding keys in:<\/li>\n<li>agent instructions<\/li>\n<li>code repositories<\/li>\n<li>CI logs<\/li>\n<li>Use Managed Identity to fetch secrets at runtime.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Audit\/logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Decide what to log:<\/li>\n<li>For debugging: sample prompts\/outputs in dev only<\/li>\n<li>For production: metadata + redacted content<\/li>\n<li>Restrict log access with RBAC.<\/li>\n<li>Implement retention policies and deletion workflows aligned with compliance.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compliance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data classification: determine if prompts and outputs may contain PII\/PHI.<\/li>\n<li>Residency: ensure region selection meets your legal requirements.<\/li>\n<li>Vendor risk: document where data flows (model provider, retrieval store, tool endpoints).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Common security mistakes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Allowing the model to call tools that perform privileged actions without authorization checks<\/li>\n<li>Logging full prompts\/outputs containing PII to shared workspaces<\/li>\n<li>Using one shared API key across many apps\/teams<\/li>\n<li>Connecting agents directly to production databases without a read-only, audited API layer<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secure deployment recommendations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Put tools behind an authenticated API layer (APIM, OAuth, mTLS if needed).<\/li>\n<li>Validate tool call parameters server-side.<\/li>\n<li>Use allowlists for tool actions (for example, read-only vs write).<\/li>\n<li>Add human approval for high-risk actions (refunds, account changes).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">13. Limitations and Gotchas<\/h2>\n\n\n\n<p>Because the service evolves, treat these as common gotchas and verify specifics in official docs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Known limitations (typical for managed agent services)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Region availability<\/strong>: may be limited to certain regions.<\/li>\n<li><strong>Feature gaps<\/strong>: some features may be preview-only or not available in sovereign clouds.<\/li>\n<li><strong>Networking<\/strong>: Private Link\/VNet support may be limited or require specific configuration.<\/li>\n<li><strong>Observability<\/strong>: full tracing of tool calls and retrieval steps may require additional setup.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Model rate limits and token throughput limits often dominate.<\/li>\n<li>Search service quotas apply if using retrieval.<\/li>\n<li>Agent\/project limits may exist (number of agents, runs, threads)\u2014verify.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Regional constraints<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Your agent runtime, model resource, and retrieval should be co-located when possible.<\/li>\n<li>Some model deployments are only available in certain regions.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing surprises<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agents can multiply costs by doing multiple calls per user message.<\/li>\n<li>Retrieval + tool calls add costs beyond model tokens.<\/li>\n<li>Logging and retention can become significant.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compatibility issues<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Some models may not support tool calling consistently.<\/li>\n<li>Some tool schemas may cause unreliable tool selection if too complex.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational gotchas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Downstream tool failures can cause user-visible agent failures unless you handle errors gracefully.<\/li>\n<li>Silent policy blocks (content safety) can appear as \u201cempty\u201d or refused outputs\u2014monitor for safety-trigger rates.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Migration challenges<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If you started with an open-source agent framework, migrating to a managed service may require:<\/li>\n<li>refactoring tool interfaces<\/li>\n<li>changing how state is stored<\/li>\n<li>adapting to platform evaluation\/monitoring tooling<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Vendor-specific nuances<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Azure RBAC, Entra ID integration, and enterprise governance are strengths\u2014but they require careful role design and operational discipline.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">14. Comparison with Alternatives<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Nearest services in Azure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Azure OpenAI (direct model endpoints)<\/strong>: best for simple chat\/completions without managed agent orchestration.<\/li>\n<li><strong>Azure AI Search + custom RAG<\/strong>: best when you want full control over retrieval and prompting.<\/li>\n<li><strong>Microsoft Copilot Studio<\/strong>: best for low-code business copilots with connectors and governance (different target audience).<\/li>\n<li><strong>Azure Bot Service<\/strong>: best for traditional bot channel integration; you can still use agents\/models behind it.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Nearest services in other clouds<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>AWS Bedrock Agents<\/strong>: managed agent orchestration in AWS.<\/li>\n<li><strong>Google Vertex AI Agent Builder<\/strong>: managed agent-building experience in Google Cloud.<\/li>\n<li><strong>OpenAI Assistants API (non-Azure)<\/strong>: similar concepts, but different governance and Azure integration story.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Open-source \/ self-managed alternatives<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Semantic Kernel<\/strong>, <strong>LangChain<\/strong>, <strong>LlamaIndex<\/strong>, <strong>AutoGen<\/strong>: flexible frameworks for building agents, but you operate orchestration, state, security integration, and monitoring yourself.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Comparison table<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Best For<\/th>\n<th>Strengths<\/th>\n<th>Weaknesses<\/th>\n<th>When to Choose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Foundry Agent Service (Azure)<\/td>\n<td>Enterprise-grade agent apps with Azure governance<\/td>\n<td>Managed agent lifecycle, Azure integration, project-based organization<\/td>\n<td>Availability and features may vary; platform constraints<\/td>\n<td>When you want managed orchestration + Azure controls<\/td>\n<\/tr>\n<tr>\n<td>Azure OpenAI (direct)<\/td>\n<td>Simple chat, single-turn generation<\/td>\n<td>Simpler architecture, fewer moving parts<\/td>\n<td>You build state + tools orchestration yourself<\/td>\n<td>When you don\u2019t need a managed agent runtime<\/td>\n<\/tr>\n<tr>\n<td>Custom RAG (Azure AI Search + app logic)<\/td>\n<td>Highly customized retrieval and prompting<\/td>\n<td>Maximum control, transparent retrieval pipeline<\/td>\n<td>More engineering, more ops<\/td>\n<td>When you need bespoke retrieval logic and full control<\/td>\n<\/tr>\n<tr>\n<td>Copilot Studio<\/td>\n<td>Business users, low-code copilots<\/td>\n<td>Fast to build, connectors, governance<\/td>\n<td>Less code-level control; different runtime model<\/td>\n<td>When low-code is primary requirement<\/td>\n<\/tr>\n<tr>\n<td>AWS Bedrock Agents<\/td>\n<td>AWS-first organizations<\/td>\n<td>Managed agents in AWS ecosystem<\/td>\n<td>Cross-cloud governance complexity<\/td>\n<td>When your workloads and governance are AWS-centric<\/td>\n<\/tr>\n<tr>\n<td>Vertex AI Agent Builder<\/td>\n<td>Google Cloud-first organizations<\/td>\n<td>Integrated agent building in GCP<\/td>\n<td>Cross-cloud governance complexity<\/td>\n<td>When your workloads and governance are GCP-centric<\/td>\n<\/tr>\n<tr>\n<td>Semantic Kernel \/ LangChain (self-managed)<\/td>\n<td>Teams needing portability and customization<\/td>\n<td>Flexible, open ecosystem<\/td>\n<td>You own security, scale, state, monitoring<\/td>\n<td>When you need maximum portability and control<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">15. Real-World Example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Enterprise example: Bank internal policy copilot with audited tool calls<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: Employees need accurate answers about policies (travel, procurement, security). Hallucinations and unauthorized data access are unacceptable.<\/li>\n<li><strong>Proposed architecture<\/strong>:<\/li>\n<li>Foundry Agent Service hosts the policy agent<\/li>\n<li>Model connection to an approved enterprise model deployment<\/li>\n<li>Grounding via Azure AI Search indexing approved policy documents stored in a secured storage account<\/li>\n<li>Tools:<ul>\n<li>Read-only API to policy exception workflow status<\/li>\n<li>Ticket creation tool for compliance questions (human review)<\/li>\n<\/ul>\n<\/li>\n<li>Security:<ul>\n<li>Entra ID group-based access to the agent<\/li>\n<li>Managed Identity from tools to Key Vault and databases<\/li>\n<\/ul>\n<\/li>\n<li>Monitoring:<ul>\n<li>Azure Monitor dashboards for usage, failures, safety blocks<\/li>\n<\/ul>\n<\/li>\n<li><strong>Why Foundry Agent Service was chosen<\/strong>:<\/li>\n<li>Managed state and tool orchestration reduces custom code<\/li>\n<li>Strong alignment with Azure IAM\/governance and enterprise monitoring<\/li>\n<li><strong>Expected outcomes<\/strong>:<\/li>\n<li>Reduced compliance team load from repetitive questions<\/li>\n<li>Better accuracy due to grounding<\/li>\n<li>Auditable trail of tool calls and data access patterns<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Startup\/small-team example: E-commerce support agent with order lookup<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem<\/strong>: A small support team can\u2019t handle growing ticket volume; they need automated order status responses and returns guidance.<\/li>\n<li><strong>Proposed architecture<\/strong>:<\/li>\n<li>Foundry Agent Service for agent configuration and state<\/li>\n<li>Model connection to a cost-effective chat model deployment<\/li>\n<li>Tool: HTTPS function to query the order system (read-only), behind API Management<\/li>\n<li>Optional retrieval: index the FAQ and returns policy in Azure AI Search<\/li>\n<li>Basic monitoring and budget alerts<\/li>\n<li><strong>Why Foundry Agent Service was chosen<\/strong>:<\/li>\n<li>Avoid building custom orchestration and state management<\/li>\n<li>Faster iteration on agent instructions and behavior<\/li>\n<li><strong>Expected outcomes<\/strong>:<\/li>\n<li>Faster first response time<\/li>\n<li>Fewer repetitive tickets<\/li>\n<li>Controlled costs by limiting tool calls and using a smaller model<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">16. FAQ<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Is Foundry Agent Service the same as calling a chat model directly?<\/strong><br\/>\n   No. Calling a model directly gives you text generation. Foundry Agent Service focuses on agent configuration, stateful interactions, and orchestrating tools\/grounding around model calls.<\/p>\n<\/li>\n<li>\n<p><strong>Do I need Azure OpenAI to use Foundry Agent Service?<\/strong><br\/>\n   Often, a model provider is required, and Azure OpenAI is a common choice. Supported model providers depend on your Azure AI Foundry environment\u2014verify in official docs.<\/p>\n<\/li>\n<li>\n<p><strong>Can I run agents privately (no public internet)?<\/strong><br\/>\n   It depends on whether Foundry Agent Service supports Private Link\/VNet integration in your region and SKU. Verify current networking features and design with APIM + private tools\/data sources.<\/p>\n<\/li>\n<li>\n<p><strong>Where is conversation state stored?<\/strong><br\/>\n   Managed agent services typically store thread\/session state as part of the service. Retention and residency must be verified in the official documentation for compliance.<\/p>\n<\/li>\n<li>\n<p><strong>Does it support grounding with my documents?<\/strong><br\/>\n   Many Azure agent patterns use Azure AI Search for retrieval\/grounding. Whether it\u2019s integrated directly in your Foundry Agent Service UI\/API depends on feature availability\u2014verify.<\/p>\n<\/li>\n<li>\n<p><strong>How do I prevent hallucinations?<\/strong><br\/>\n   Use grounding with curated sources, constrain instructions, require citations, and design the agent to ask clarifying questions when data is missing.<\/p>\n<\/li>\n<li>\n<p><strong>How do I keep the agent from performing dangerous actions?<\/strong><br\/>\n   Put privileged actions behind secured tools, validate requests server-side, enforce allowlists, and require human approval for high-risk steps.<\/p>\n<\/li>\n<li>\n<p><strong>What is the biggest production risk?<\/strong><br\/>\n   Uncontrolled tool access (security) and unpredictable cost (multi-step runs) are two of the most common risks.<\/p>\n<\/li>\n<li>\n<p><strong>How do I estimate cost?<\/strong><br\/>\n   Estimate model tokens per user message multiplied by the average number of model calls per run, then add retrieval queries and tool compute costs. Use Azure Pricing Calculator.<\/p>\n<\/li>\n<li>\n<p><strong>Should I log prompts and outputs?<\/strong><br\/>\n   In production, avoid logging sensitive content unless necessary. If you must, redact PII, restrict access, and define retention policies.<\/p>\n<\/li>\n<li>\n<p><strong>How do I do environment separation (dev\/test\/prod)?<\/strong><br\/>\n   Use separate Azure AI Foundry projects and separate model deployments and data connections per environment.<\/p>\n<\/li>\n<li>\n<p><strong>Can multiple apps share one agent?<\/strong><br\/>\n   Yes, but it can complicate change management and access control. Many teams prefer per-app agents or strict versioning\/promotion processes.<\/p>\n<\/li>\n<li>\n<p><strong>Does Foundry Agent Service execute my tools automatically?<\/strong><br\/>\n   Tool execution patterns differ: some platforms orchestrate tool calls but you still host the tool endpoint. Verify how tool invocation and authentication are implemented.<\/p>\n<\/li>\n<li>\n<p><strong>What happens if my tool endpoint is down?<\/strong><br\/>\n   The agent run may fail or degrade. Implement retries, fallbacks, and clear user messaging, and monitor tool error rates.<\/p>\n<\/li>\n<li>\n<p><strong>How do I roll out prompt\/tool changes safely?<\/strong><br\/>\n   Treat agent configuration as code: use approvals, staged rollouts, test suites, and monitoring for regressions.<\/p>\n<\/li>\n<li>\n<p><strong>Can I use it for regulated data (PII\/PHI)?<\/strong><br\/>\n   Possibly, but only after validating data handling, residency, retention, and compliance controls for every connected service (model, retrieval, logs). Engage your compliance team early.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">17. Top Online Resources to Learn Foundry Agent Service<\/h2>\n\n\n\n<p>Use the table below as a curated starting point. Because naming and URLs can evolve, the Microsoft Learn search links are included as stable entry points.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Resource Type<\/th>\n<th>Name<\/th>\n<th>Why It Is Useful<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Official documentation (search)<\/td>\n<td>Microsoft Learn search: Foundry Agent Service<\/td>\n<td>Fastest way to find the current overview, quickstarts, and API references: https:\/\/learn.microsoft.com\/search\/?terms=Foundry%20Agent%20Service%20Azure<\/td>\n<\/tr>\n<tr>\n<td>Official portal<\/td>\n<td>Azure AI Foundry portal<\/td>\n<td>Where you create projects, connections, and agents (tenant-dependent): https:\/\/ai.azure.com\/<\/td>\n<\/tr>\n<tr>\n<td>Official docs (Azure OpenAI)<\/td>\n<td>Azure OpenAI documentation<\/td>\n<td>Model deployments, auth, quotas, pricing considerations: https:\/\/learn.microsoft.com\/azure\/ai-services\/openai\/<\/td>\n<\/tr>\n<tr>\n<td>Official pricing<\/td>\n<td>Azure OpenAI pricing<\/td>\n<td>Model token pricing (key input to agent cost): https:\/\/azure.microsoft.com\/pricing\/details\/cognitive-services\/openai-service\/<\/td>\n<\/tr>\n<tr>\n<td>Official pricing<\/td>\n<td>Azure AI Search pricing<\/td>\n<td>Retrieval cost driver: https:\/\/azure.microsoft.com\/pricing\/details\/search\/<\/td>\n<\/tr>\n<tr>\n<td>Pricing tool<\/td>\n<td>Azure Pricing Calculator<\/td>\n<td>Build a scenario-based estimate: https:\/\/azure.microsoft.com\/pricing\/calculator\/<\/td>\n<\/tr>\n<tr>\n<td>Official docs (Search)<\/td>\n<td>Azure AI Search documentation<\/td>\n<td>Indexing, retrieval tuning, security: https:\/\/learn.microsoft.com\/azure\/search\/<\/td>\n<\/tr>\n<tr>\n<td>Official docs (Identity)<\/td>\n<td>Microsoft Entra ID documentation<\/td>\n<td>Auth and enterprise access control patterns: https:\/\/learn.microsoft.com\/entra\/identity\/<\/td>\n<\/tr>\n<tr>\n<td>Official docs (Key Vault)<\/td>\n<td>Azure Key Vault documentation<\/td>\n<td>Secret management best practices: https:\/\/learn.microsoft.com\/azure\/key-vault\/<\/td>\n<\/tr>\n<tr>\n<td>Official docs (Monitoring)<\/td>\n<td>Azure Monitor documentation<\/td>\n<td>Logging, metrics, alerts for production operations: https:\/\/learn.microsoft.com\/azure\/azure-monitor\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">18. Training and Certification Providers<\/h2>\n\n\n\n<p>The following providers may offer training relevant to Azure, AI + Machine Learning, and agentic solutions. Verify current syllabi and delivery modes on each website.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Institute<\/th>\n<th>Suitable Audience<\/th>\n<th>Likely Learning Focus<\/th>\n<th>Mode<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps engineers, architects, developers<\/td>\n<td>Cloud DevOps, Azure fundamentals, deployment practices that support AI apps<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>ScmGalaxy.com<\/td>\n<td>Beginners to intermediate<\/td>\n<td>Software configuration management, DevOps foundations useful for operating AI services<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.scmgalaxy.com\/<\/td>\n<\/tr>\n<tr>\n<td>CLoudOpsNow.in<\/td>\n<td>Cloud ops and platform teams<\/td>\n<td>Cloud operations practices, monitoring, reliability patterns<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.cloudopsnow.in\/<\/td>\n<\/tr>\n<tr>\n<td>SreSchool.com<\/td>\n<td>SREs, ops leads, platform engineers<\/td>\n<td>SRE practices, observability, incident response for production AI systems<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.sreschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>AiOpsSchool.com<\/td>\n<td>Ops + AI practitioners<\/td>\n<td>AIOps concepts, operating AI\/ML services with automation<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.aiopsschool.com\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">19. Top Trainers<\/h2>\n\n\n\n<p>These sites are presented as training resources\/platforms. Verify current offerings directly.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Platform\/Site<\/th>\n<th>Likely Specialization<\/th>\n<th>Suitable Audience<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RajeshKumar.xyz<\/td>\n<td>DevOps\/cloud training content<\/td>\n<td>Beginners to intermediate engineers<\/td>\n<td>https:\/\/rajeshkumar.xyz\/<\/td>\n<\/tr>\n<tr>\n<td>devopstrainer.in<\/td>\n<td>DevOps tooling and practices<\/td>\n<td>DevOps engineers and sysadmins<\/td>\n<td>https:\/\/www.devopstrainer.in\/<\/td>\n<\/tr>\n<tr>\n<td>devopsfreelancer.com<\/td>\n<td>Practical DevOps consulting\/training content<\/td>\n<td>Teams needing hands-on guidance<\/td>\n<td>https:\/\/www.devopsfreelancer.com\/<\/td>\n<\/tr>\n<tr>\n<td>devopssupport.in<\/td>\n<td>DevOps support and training-style resources<\/td>\n<td>Ops teams and engineers<\/td>\n<td>https:\/\/www.devopssupport.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">20. Top Consulting Companies<\/h2>\n\n\n\n<p>These companies may help with cloud architecture, DevOps enablement, and productionizing AI workloads. Validate scope, references, and contracts directly.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Company<\/th>\n<th>Likely Service Area<\/th>\n<th>Where They May Help<\/th>\n<th>Consulting Use Case Examples<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cotocus.com<\/td>\n<td>Cloud\/DevOps consulting<\/td>\n<td>Architecture, migrations, automation<\/td>\n<td>Azure landing zone setup, CI\/CD for AI apps, monitoring rollout<\/td>\n<td>https:\/\/cotocus.com\/<\/td>\n<\/tr>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps and cloud consulting\/training<\/td>\n<td>Platform enablement, engineering upskilling<\/td>\n<td>Operating model for AI projects, DevSecOps pipelines, IaC standards<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>DEVOPSCONSULTING.IN<\/td>\n<td>DevOps consulting<\/td>\n<td>Delivery pipelines, reliability practices<\/td>\n<td>SRE-aligned ops for AI services, cost controls, observability<\/td>\n<td>https:\/\/www.devopsconsulting.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">21. Career and Learning Roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn before this service<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Azure fundamentals<\/strong>\n   &#8211; Resource groups, regions, RBAC, networking basics<\/li>\n<li><strong>Identity and security<\/strong>\n   &#8211; Microsoft Entra ID, Managed Identity, Key Vault<\/li>\n<li><strong>API fundamentals<\/strong>\n   &#8211; REST, auth, retry strategies, rate limits<\/li>\n<li><strong>Basics of LLMs<\/strong>\n   &#8211; Tokens, context windows, temperature, system vs user prompts<\/li>\n<li><strong>RAG fundamentals (optional but recommended)<\/strong>\n   &#8211; Embeddings, indexing, retrieval evaluation, chunking strategies<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn after this service<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Production RAG optimization and evaluation<\/li>\n<li>Observability for AI systems (tracing, redaction, governance)<\/li>\n<li>Advanced tool security: authorization, approvals, policy engines<\/li>\n<li>CI\/CD for agent configuration (if supported): promotion, rollback, regression testing<\/li>\n<li>Multi-agent patterns (only if supported and needed)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Job roles that use it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud Solutions Architect (AI)<\/li>\n<li>AI Engineer \/ Applied AI Engineer<\/li>\n<li>Platform Engineer (AI enablement)<\/li>\n<li>DevOps Engineer \/ SRE supporting AI services<\/li>\n<li>Security Engineer (AI governance)<\/li>\n<li>Backend Developer integrating agent endpoints<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Certification path (if available)<\/h3>\n\n\n\n<p>There may not be a Foundry Agent Service\u2013specific certification. Typical relevant Azure certifications to consider:\n&#8211; Azure fundamentals and architecture certifications\n&#8211; Azure AI-focused certifications (verify current Microsoft certification lineup)<\/p>\n\n\n\n<p>Start here:\nhttps:\/\/learn.microsoft.com\/credentials\/<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project ideas for practice<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Build an internal \u201cRunbook Agent\u201d grounded in Markdown runbooks with a safe escalation workflow<\/li>\n<li>Create a \u201cCustomer Support Agent\u201d with read-only tools and strict authorization checks<\/li>\n<li>Build evaluation harnesses: regression tests for 30 common queries and track answer quality over time<\/li>\n<li>Implement cost dashboards: tokens\/user\/day, tool calls\/user\/day, retrieval queries\/user\/day<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Term<\/th>\n<th>Definition<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Agent<\/td>\n<td>An AI-driven component configured with instructions, tools, and (optionally) knowledge sources to complete tasks.<\/td>\n<\/tr>\n<tr>\n<td>Tool calling<\/td>\n<td>A pattern where the model requests a structured call to an external function\/API, which your system executes.<\/td>\n<\/tr>\n<tr>\n<td>Grounding<\/td>\n<td>Constraining responses using retrieved enterprise data to reduce hallucinations.<\/td>\n<\/tr>\n<tr>\n<td>RAG (Retrieval-Augmented Generation)<\/td>\n<td>Architecture that retrieves relevant documents and supplies them to the model to improve accuracy.<\/td>\n<\/tr>\n<tr>\n<td>Thread \/ Session<\/td>\n<td>A stateful conversation container holding message history and execution context.<\/td>\n<\/tr>\n<tr>\n<td>Run \/ Execution<\/td>\n<td>A single cycle where the agent processes messages, calls tools, and returns an output.<\/td>\n<\/tr>\n<tr>\n<td>RBAC<\/td>\n<td>Role-Based Access Control in Azure.<\/td>\n<\/tr>\n<tr>\n<td>Managed Identity<\/td>\n<td>An Azure identity for workloads that allows access to resources without storing secrets.<\/td>\n<\/tr>\n<tr>\n<td>Azure AI Search<\/td>\n<td>Azure service for indexing and searching content, commonly used for RAG.<\/td>\n<\/tr>\n<tr>\n<td>Azure Monitor \/ Application Insights<\/td>\n<td>Azure observability services for metrics, logs, and distributed tracing.<\/td>\n<\/tr>\n<tr>\n<td>Token<\/td>\n<td>The basic unit of text processed by many language models; used for billing and context limits.<\/td>\n<\/tr>\n<tr>\n<td>Rate limit<\/td>\n<td>Service-enforced limit on requests\/tokens per time window.<\/td>\n<\/tr>\n<tr>\n<td>Least privilege<\/td>\n<td>Security principle of granting only the minimum permissions required to perform a task.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">23. Summary<\/h2>\n\n\n\n<p>Foundry Agent Service (Azure) is a managed way to build and operate AI agents\u2014systems that combine a foundation model with stateful conversation handling, tool usage, and (optionally) grounded enterprise knowledge. It matters because most production AI solutions require more than a model endpoint: they need secure integrations, reliable orchestration, governance, and observability.<\/p>\n\n\n\n<p>From a cost perspective, the biggest drivers are model tokens and the \u201cmultipliers\u201d introduced by agent steps (retrieval + tool calls + additional model calls), plus indirect costs like search, tool compute, and logging. From a security perspective, success depends on Entra ID\/RBAC, tight tool authorization, careful logging\/redaction, and disciplined environment separation.<\/p>\n\n\n\n<p>Use Foundry Agent Service when you want Azure-native agent orchestration with enterprise controls. If you only need simple text generation, call a model endpoint directly; if you need maximum orchestration control, consider a self-managed framework\u2014accepting the added operational burden.<\/p>\n\n\n\n<p>Next step: follow the official Microsoft Learn documentation trail for the exact Foundry Agent Service capabilities in your region and build a small grounded agent with one safe, read-only tool:\nhttps:\/\/learn.microsoft.com\/search\/?terms=Foundry%20Agent%20Service%20Azure<\/p>\n","protected":false},"excerpt":{"rendered":"<p>AI + Machine Learning<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,40],"tags":[],"class_list":["post-371","post","type-post","status-publish","format-standard","hentry","category-ai-machine-learning","category-azure"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=371"}],"version-history":[{"count":0,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/371\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}