Files
westey 626b418622 .NET: Harness Feature branch (#5310)
* .NET: Add a TODO AIContextProvider (#5233)

* Add a TODO AIContextProvider

* Add unit tests

* Address PR comments

* Address PR comments

* Fix test after removing one tool

* .NET: Add a ModeProvider for managing agent modes (#5247)

* Add a ModeProvider for managing agent modes

* Fix typo

* Fix typo

* Fix typo

* Address PR comments

* .NET: Add sample to show how to build a harness (#5268)

* Add sample to show how to build a harness

* Improve sample

* Sample max output tokens and model

* Fix encoding

* Fix model name in readme

* Address PR comments

* .NET: Add context window size compaction strategy for harness (#5304)

* Add context window size compaction strategy for harness

* Apply suggestions from code review

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

* Address PR comments

---------

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

* .NET: Add a file memory provider (#5315)

* Add a file memory provider

* Address PR comments

* Fix review comments.

* Add additional unit tests

* Addressing PR comments.

* .NET:  Harness: Improve prompts and add FileSystem store (#5365)

* Harness: Improve prompts and add FileSystem store

* Address PR comments

* .NET: Harness: Improve path validation (#5404)

* Harness: Improve path validation

* Address PR comments

* .NET: Add always approve helpers, improve sample and fix bug (#5451)

* Add always approve helpers, improve sample and fix bug

* Address PR comments

* .NET: Make Todo, Mode and FileMemory providers more configurable (#5477)

* Make Todo, Mode and FileMemory providers more configurable

* Address PR comments.

* .NET: Add subagents provider and sample (#5518)

* Add subagents provider and sample

* Addressing PR comments.

* .NET: Harness filememory index plus instructions consistency (#5540)

* Add FileMemoryProvider index and improve instruction consistency

* Address PR comments.

* Address PR comments

* Address PR comments.

* Apply suggestion from @rogerbarreto

Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>

---------

Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>

* .NET: Refactor harness console to be more extensible and easy to understand with better UX (#5573)

* Refactor harness console to be more extensible and easy to understand with better UX.

* Fix formatting issues.

* Allow multiple clarifications in one response

* Address PR comments

* .NET: Add FileAccessProvdider and concurrency fix for FileMemoryProvider (#5583)

* Add FileAccessProvdider and concurrency fix for FileMemoryProvider

* Address PR comments

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
626b418622 · 2026-05-01 10:52:38 +00:00
History
..
2026-05-01 10:52:38 +00:00
2026-05-01 10:52:38 +00:00

What this sample demonstrates

This sample demonstrates how to use a ChatClientAgent with the FileAccessProvider to give an agent access to a folder of data files for reading, analyzing, and writing results.

Key features showcased:

  • FileAccessProvider — gives the agent tools to read, write, list, search, and delete files in a shared data folder
  • CSV data processing — the agent reads sales transaction data and performs analysis on demand
  • Output file creation — the agent can write summaries, filtered data, or reports back to the data folder
  • Streaming output — responses are streamed token-by-token for a natural experience
  • No planning mode — this is a simple conversational sample focused on data interaction

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 AZURE_AI_MODEL_DEPLOYMENT_NAME="gpt-5.4"

Running the Sample

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

What to Expect

The sample starts an interactive conversation with a data analyst agent. The data/ folder contains a sales.csv file with ~50 rows of sales transaction data (date, product, category, quantity, unit price, region, salesperson).

You can ask the agent to:

  1. List available files — "What files do you have?"
  2. Analyze the data — "What are the total sales by region?" or "Which salesperson has the highest revenue?"
  3. Create output files — "Create a summary report as a markdown file" or "Write a CSV with monthly totals"
  4. Search for patterns — "Find all transactions over $1000"
  5. Type exit — to end the session

E.g. try the following prompt Please process the sales.csv file by first filtering it to only North region sales, and then calculating the sum of sales by person. I'd like to write the results of the processing to north_region_totals.csv.

Sample Data

The included data/sales.csv contains sales transactions from January to March 2025 with the following columns:

Column Description
date Transaction date (YYYY-MM-DD)
product Product name
category Product category (Electronics, Furniture, Stationery)
quantity Units sold
unit_price Price per unit
region Sales region (North, South, West)
salesperson Name of the salesperson