Files
Ben Thomas c79f886dc3 .NET: Align Foundry sample environment variables and credentials. (#6422)
* dotnet: refresh Foundry sample guidance

Carry forward the still-relevant sample guidance and Foundry-specific documentation fixes from the old stacked sample migration work, adapted to the current repo layout and policy.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* dotnet: rename Foundry sample env vars

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* dotnet: remove persistent provider sample

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* dotnet: drop SAMPLE_GUIDELINES.md from this PR

Defer the guidelines doc and its cross-link to a follow-on PR to avoid broken-link failures in CI.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* dotnet: add DefaultAzureCredential warning to remaining samples

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* dotnet: address PR review feedback

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
c79f886dc3 · 2026-06-11 17:26:00 +00:00
History
..

What this sample demonstrates

This sample demonstrates how to use a HarnessAgent with the Harness AIContextProviders (TodoProvider and AgentModeProvider) for interactive research tasks with web search capabilities powered by Azure AI Foundry. The HarnessAgent pre-configures function invocation, per-service-call chat history persistence, and context-window compaction.

Key features showcased:

  • HarnessAgent — a pre-configured agent that wraps a ChatClientAgent with function invocation, per-service-call persistence, and context-window compaction
  • ToolApproval — the agent is wrapped with UseToolApproval() to allow auto-approving tools once confirmed
  • Web Search — the agent can search the web for current information via ResponseTool.CreateWebSearchTool()
  • TodoProvider — the agent creates and manages a todo list to track research questions
  • AgentModeProvider — the agent switches between "plan" mode (breaking down the topic) and "execute" mode (answering each research question)
  • Interactive conversation — you can review the agent's plan, provide feedback, and approve before execution begins
  • Streaming output — responses are streamed token-by-token for a natural experience
  • /todos command — view the current todo list at any time without invoking the agent
  • Mode-based coloring — console output is colored based on the agent's current mode (cyan for plan, green for execute)

Prerequisites

Before running this sample, ensure you have:

  1. An Azure AI Foundry project with a deployed model (e.g., gpt-5.4)
  2. Azure CLI installed and authenticated (az login)

Environment Variables

Set the following environment variables:

# Required: Your Azure AI Foundry OpenAI endpoint
export AZURE_FOUNDRY_OPENAI_ENDPOINT="https://your-project.services.ai.azure.com/openai/v1/"

# Optional: Model deployment name (defaults to gpt-5.4)
export FOUNDRY_MODEL="gpt-5.4"

Running the Sample

cd dotnet
dotnet run --project samples/02-agents/Harness/Harness_Step01_Research

What to Expect

The sample starts an interactive conversation loop. You can:

  1. Enter a research topic — the agent will analyze it and create a plan with todos
  2. Review and adjust — provide feedback on the plan, ask for changes, or approve it
  3. Type /todos — to see the current todo list at any time
  4. Watch execution — once approved, tell the agent to proceed and it will work through each todo
  5. Type exit — to end the session

The prompt and agent output are colored by the current mode: cyan during planning, green during execution.