Microsoft Agent Framework en .NET : brancher OpenAI sans passer par Azure

J’ai eu le même réflexe que tout le monde : “Agent Framework = Azure OpenAI obligatoire”.
Sauf que quand tu lis le dépôt officiel et la doc Microsoft, tu comprends vite où est la frontière : le framework apporte une structure d’exécution (runtime, types, conventions), et le provider LLM se branche. Microsoft documente explicitement un OpenAI Responses Agent côté .NET, basé sur une clé OpenAI, pas sur Azure.Donc si tu veux un sample qui prouve le point, il faut faire simple : un binaire .NET, un AIAgent, une exécution RunAsync, et basta.## La forme généraleLe plus important, c’est que le code raconte une histoire claire : ton app appelle le runtime Agent Framework, qui lui délègue à OpenAI via le client "Responses".
## Installons ce qu’il fautLe repo officiel donne le package de base pour démarrer en .NET (Microsoft.Agents.AI).Pour l’agent OpenAI “Responses”, la doc indique Microsoft.Agents.AI.OpenAI en prerelease.dotnet add package Microsoft.Agents.AI dotnet add package Microsoft.Agents.AI.OpenAI --prerelease dotnet add package OpenAI## Le sample complet (console + mode interactif)Dans la doc, la recette est toujours la même : tu crées un OpenAIClient, tu prends le client “Responses”, tu crées ton AIAgent, puis tu exécutes RunAsync.On garde ça, et on ajoute juste un mini mode interactif pour que le repo soit intéressant à lancer.```
using Microsoft.Agents.AI;
using OpenAI;
var apiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY"); if (string.IsNullOrWhiteSpace(apiKey)) { Console.Error.WriteLine("Il manque OPENAI_API_KEY (variable d’environnement)."); return; }
var model = Environment.GetEnvironmentVariable("OPENAI_RESPONSES_MODEL_ID") ?? "gpt-4o-mini";
OpenAIClient client = new OpenAIClient(apiKey);
#pragma warning disable OPENAI001 // API d’évaluation (peut évoluer) var responses = client.GetOpenAIResponseClient(model); #pragma warning restore OPENAI001
AIAgent assistant = responses.CreateAIAgent( name: "TechBuddy", instructions: """ Tu es un assistant technique .NET. Réponds de façon directe, sans blabla. Donne un exemple de code quand c’est utile. Si tu fais une hypothèse, annonce-la. """ );
Console.WriteLine("TechBuddy prêt. Tape 'exit' pour quitter.\n");
while (true) { Console.Write("> "); var input = Console.ReadLine();
if (string.IsNullOrWhiteSpace(input))
continue;
if (input.Equals("exit", StringComparison.OrdinalIgnoreCase))
break;
var output = await assistant.RunAsync(input);
Console.WriteLine($"\n{output}\n");
}
Tu montres clairement : **le runtime Agent Framework** te donne l’objet conversationnel (`AIAgent`) et un mode d’exécution (`RunAsync`) commun aux différents types d’agents. [](https://learn.microsoft.com/en-us/agent-framework/tutorials/agents/run-agent?utm_source=chatgpt.com)## Ce que fait RunAsync, concrètementÇa aide souvent à éviter les fantasmes (“c’est un orchestrateur magique !”).
Ici, c’est simple : instructions + message utilisateur → appel Responses → texte de sortie.[](https://xavierraboteur.wordpress.com/wp-content/uploads/2025/12/image-7.png)Pourquoi ce sample a un intérêtTu pourrais appeler OpenAI à la main, évidemment.
Mais le jour où ton “prompt en string” devient un composant qu’on déploie, qu’on teste, qu’on observe et qu’on fait évoluer, tu veux une forme stable. Le dépôt Agent Framework est très explicite : le but est de couvrir le spectre “du simple chat” jusqu’aux workflows d’agents, avec une base .NET/Python unifiée.Et surtout : tu peux garder ton provider OpenAI aujourd’hui, et changer demain pour Azure OpenAI si ton contexte l’impose. Microsoft documente les deux parcours (OpenAI Responses vs Azure OpenAI Responses).## Et maintenant ?Une fois que ce socle existe, tu peux ajouter une seule brique à la fois sans transformer l’exemple en cathédrale : un tool call trivial, une mémoire minimaliste, ou un second “assistant” spécialisé. Agent Framework est justement fait pour ça : commencer petit, garder la forme, grandir sans t’enfermer.**Télécharger le sample sur GitHub**
[https://github.com/xraboteu/microsoft\_agent\_framework\_with\_open\_ai](https://github.com/xraboteu/microsoft_agent_framework_with_open_ai)