* 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>
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
ContainerClientviaAIProjectClient.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
- An authenticated Azure identity (for example, sign in with
az login)
Set the following environment variables:
$env:FOUNDRY_PROJECT_ENDPOINT="https://your-foundry-service.services.ai.azure.com/api/projects/your-foundry-project"
$env:FOUNDRY_MODEL="gpt-4o-mini" # Optional, defaults to gpt-4o-mini
Run the sample
dotnet run
See also
- Code Interpreter File Download with OpenAI — same scenario using Public OpenAI
- Code Interpreter — Code Interpreter without file download