Add Lab D: observe, evaluate, and secure your agents - #234
Merged
Conversation
ivorb
marked this pull request as draft
August 14, 2026 19:31
ivorb
force-pushed
the
ivorb-lab-d-observe-evaluate-secure
branch
from
August 17, 2026 15:14
85478fb to
ed46b2a
Compare
ivorb
marked this pull request as ready for review
August 17, 2026 18:32
Closes the observability gap in the consolidated catalogue: there was no tracing, evaluation or safety-testing content anywhere in the repo. Instructions/Consolidated/ D landing page (generated task table from frontmatter) D0 getting started - project, Application Insights connection, agent to measure D1 trace your agent (core, L300) - OpenTelemetry + Azure Monitor, custom spans D2 evaluate answer quality (core, L300) - groundedness, relevance, similarity D3 red team your agent (optional, L400) - attack strategies + custom seed prompts Labfiles/D-observe-evaluate-and-secure-agents/ Python/ starter files with fill-in-the-blank placeholders, Solution/Python/ reference code, a ground-truth JSONL dataset, custom attack objectives, and setup/check_env.py + setup/bootstrap_agent.py so the lab stands alone without Lab B. azd template, Bicep and write_env scripts are generated from Labfiles/_shared/ via manifest.yml. Verified: Tier 0 checks (frontmatter, code blocks, links, line endings), Labfiles/_shared/sync.py --check, and the Tier 1 SDK contract check against azure-ai-projects 2.3.0 and azure-ai-evaluation 1.18.3. Not run end to end against a live Foundry project. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The landing page called {% include lab-tasks-table.html lab='D' %}, written
when that include existed on the PoC branch. It never reached main: lab pages
are read directly by platforms that don't render Liquid, so A, B and C now
carry a real markdown table written by tools/generate_lab_blocks.py between
HTML comment markers. Lab D now follows the same pattern.
Also drops the core duration from the intro prose, which restated a number
the generated block already gives. A, B and C had the same line removed for
the same reason - one source for the timings, not two.
Verified against main's tooling: all Tier 0 checks pass, --check is clean,
and sync.py reports 4 labs in sync with no files updated, confirming the
generated infrastructure matches the canonical source byte for byte.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: dc4690cc-57d6-48a7-abc8-bc8570113ab1
Lab D stated a 3.10-3.13 range because the [redteam] extra pulls PyRIT, which has no 3.14 build. That is true, but 3.13 already sits inside the supported range, so the extra precision only made this lab read differently from the others. Now matches A, B and C. The 'tested with 3.13.12' sentence is left off, since nothing in this lab has been run yet. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dc4690cc-57d6-48a7-abc8-bc8570113ab1
ivorb
force-pushed
the
ivorb-lab-d-observe-evaluate-secure
branch
from
August 18, 2026 15:20
ed46b2a to
7a60d62
Compare
Both pages sat flush against the window edge with no site chrome. The layout
inherited the theme's 'default' layout, which is only a <head> and
{{ content }} - no <body>, no nav bar, no footer, and none of the Bootstrap
.container that gives every other page its margins.
Inheriting 'home' instead picks all of that up, so these pages now sit in the
same column as the rest of the site and gain the header and footer.
Also adds vertical padding to the grid and a little more breathing room
around the nav rail, and keeps the sticky rail clear of the top edge. The
bottom padding clears the theme's fixed footer.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: dc4690cc-57d6-48a7-abc8-bc8570113ab1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Lab D — Observe, evaluate, and secure your agents, closing the biggest gap in the catalogue: there is currently no observability, evaluation or security-testing content anywhere in the repo.
Tasks
azure-ai-evaluation[redteam]Plus a Getting started page. Core path is 60 minutes.
What's included
tools/generate_lab_blocks.pysetup/check_env.pyandsetup/bootstrap_agent.py, so each task can be started on its ownLabfiles/_shared/manifest.yml; the four infra files are generated bysync.pyNot validated end to end
Nothing in this lab has been run. No trace was exported, no evaluation scored, no scan executed — there was no Azure subscription available while writing it.
What was checked: every API call against the shipped SDK source and current Learn docs, Tier 0,
sync.py --check, and the Tier 1 contract (imports resolve againstazure-ai-projects==2.3.0andazure-ai-evaluation==1.18.3,pip checkclean).It needs a walkthrough against a real subscription before it can be considered tested. The frontmatter carries
status: 'draft'accordingly.Choices worth a reviewer's eye
agent_target.pyis provided complete, so Task 2 is about evaluation rather than re-teaching agent calls the earlier labs already cover.Region and preview constraints for the Red Teaming Agent are surfaced at project-creation time in D0 and repeated in D3.
No CI/CD content: that was cut deliberately as the wrong persona for a developer learning path.