Files
chetantoshniwal 52303a8d07 .NET: Add Code Interpreter container file download samples (#5014)
* Add Code Interpreter container file download samples (#3081)

- Add Agent_OpenAI_Step06_CodeInterpreterFileDownload (Public OpenAI)
- Add Agent_Step24_CodeInterpreterFileDownload (Microsoft Foundry)
- Both samples demonstrate downloading cfile_/cntr_ container files
  via ContainerClient instead of the standard Files API
- Update solution file and parent READMEs

* Address review feedback: flatten nested foreach loops using SelectMany

Addresses https://github.com/microsoft/agent-framework/pull/5014#discussion_r3046908449 and https://github.com/microsoft/agent-framework/pull/5014#discussion_r3046920209

---------

Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
Co-authored-by: rogerbarreto <rogerbarreto@users.noreply.github.com>
52303a8d07 · 2026-04-17 16:55:03 +00:00
History
..

Code Interpreter File Download (Microsoft Foundry)

This sample demonstrates how to download files generated by Code Interpreter when using Microsoft Foundry.

What this sample demonstrates

  • Creating an agent with Code Interpreter tool using AIProjectClient.AsAIAgent()
  • Generating files through Code Interpreter (e.g., CSV, Excel, images)
  • Extracting container file citations from agent response annotations
  • Downloading container files using the ContainerClient via AIProjectClient.GetProjectOpenAIClient()

Container files vs regular files

When Code Interpreter generates a file, the file is stored inside a container with a cntr_ prefixed ID. The file itself gets a cfile_ prefixed ID.

These container files cannot be downloaded using the standard Files API (GetOpenAIFileClient), which returns 404 for cfile_ IDs. Instead, you must use the Containers API to download them.

Getting the ContainerClient with Foundry

AzureOpenAIClient.GetContainerClient() is not supported and throws InvalidOperationException. Instead, use the project's OpenAI client which inherits directly from OpenAI.OpenAIClient:

// ❌ AzureOpenAIClient does not support ContainerClient
var azureClient = new AzureOpenAIClient(endpoint, credential);
azureClient.GetContainerClient();  // Throws InvalidOperationException

// ✅ Use AIProjectClient's project OpenAI client
var containerClient = aiProjectClient.GetProjectOpenAIClient().GetContainerClient();
await containerClient.DownloadContainerFileAsync("cntr_...", "cfile_...");

The container ID and file ID are available from the ContainerFileCitationMessageAnnotation annotation in the response, accessible via CitationAnnotation.RawRepresentation.

Prerequisites

  • .NET 10 SDK or later
  • Microsoft Foundry service endpoint and deployment configured
  • Azure CLI installed and authenticated (az login)

Set the following environment variables:

$env:AZURE_AI_PROJECT_ENDPOINT="https://your-foundry-service.services.ai.azure.com/api/projects/your-foundry-project"
$env:AZURE_AI_MODEL_DEPLOYMENT_NAME="gpt-4o-mini"  # Optional, defaults to gpt-4o-mini

Run the sample

dotnet run

See also