Oussama SAIDI

0 %
Oussama SAIDI
Consultant .Net
Sharepoint Office 365

  • Résidence:
    France
  • Ville:
    Lille
Arabe
Français
Anglais
.Net
Html/Css/Js
Web Api
Base de données
  • C#,.Net Core, .Net MVC
  • Rest Api
  • Docker
  • GIT,TFS

GPT-5 pour les développeurs Microsoft : guide complet (.NET 9, Azure AI Foundry, Copilot & RAG)

août 25, 2025

GPT-5 est désormais disponible pour les développeurs via Azure AI Foundry (ancien Azure OpenAI). Vous pouvez l’utiliser depuis .NET 9 avec Azure.AI.OpenAI ou via l’abstraction Microsoft.Extensions.AI. Les scénarios phares : agents/outillage (tool calling), structured outputs, RAG avec Azure AI Search, intégration VS Code/GitHub Copilot et contrôle entreprise (Content Safety, données UE). L’accès direct au modèle gpt-5 requiert une inscription ; gpt-5-mini/nano/chat sont plus largement accessibles. Vérifiez la disponibilité régionale et les tarifs avant déploiement.

Dans cet article

1) Pourquoi GPT-5 change la donne côté Microsoft

Microsoft annonce la disponibilité générale de GPT-5 dans Azure AI Foundry : meilleure capacité de raisonnement, outils/agents plus profonds, et intégration aux workflows développeurs (VS Code, GitHub Copilot). Microsoft Azure


2) Disponibilité, variantes et régions

La série GPT-5 comprend : gpt-5 (raisonnement « full »), gpt-5-mini, gpt-5-nano (latence très faible) et gpt-5-chat. Accès : inscription requise pour gpt-5; pas nécessaire pour gpt-5-mini/nano/chat. Régions (au 12 août 2025) : East US 2 et Sweden Central pour la série GPT-5 (Data Zones et Global Standard selon le modèle). Pour une résidence des données UE, ciblez Sweden Central (EU Data Zone). Microsoft Learn

Note France : à la date du 25 août 2025, France Central n’expose pas encore GPT-5 ; utilisez Sweden Central pour rester en zone UE. Microsoft Learn


3) Où se branche GPT-5 dans l’écosystème Microsoft

  • Azure AI Foundry : portail, API et model router pour orchestrer GPT-5 aux côtés d’autres modèles. Microsoft Azure
  • VS Code & GitHub Copilot : déploiement progressif de GPT-5 pour améliorer génération/refactoring et tâches agentiques. Microsoft Azure
  • Azure AI Search (ex Cognitive Search) : moteur RAG vectoriel/hybride + intégration OpenAI/Foundry. Microsoft Learn

4) Choisir sa voie d’intégration (.NET)

A. SDK Azure direct (Azure.AI.OpenAI)

Approche « baseline » orientée Azure, idéale si vous exploitez Foundry, les déploiements, l’Entra ID (keyless), le Responses API et les extensions « On your data ». Microsoft Learn

B. Abstraction Microsoft.Extensions.AI

Interface unifiée (IChatClient, middlewares, DI) pour brancher Azure OpenAI, OpenAI, Inference/GitHub Models, voire Ollama, avec un code quasi identique. Microsoft Learn

Recommandation : pour un produit long terme .NET 9, combinez Extensions.AI (portabilité, middlewares) + Azure.AI.OpenAI (fonctionnalités Foundry et sécurité Azure). Microsoft Learn


5) Démarrer en .NET 9 : chat + streaming (C#)

Prérequis

  • Ressource Azure AI Foundry (OpenAI) en Sweden Central (UE)
  • Déploiement d’un modèle gpt-5-chat ou gpt-5-mini
  • Authentification Microsoft Entra ID (recommandée), sinon clé API
  • Paquets : Azure.AI.OpenAI, Azure.Identity

Exemple minimal (streaming)

// .NET 9 / C# 13
// dotnet add package Azure.AI.OpenAI
// dotnet add package Azure.Identity

using System.ClientModel; // si nécessaire selon version SDK
using Azure;
using Azure.AI.OpenAI;
using Azure.Identity;

var endpoint = new Uri(Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")!);
// Nom du déploiement créé dans Foundry (ex: "gpt5chat-eu")
var deployment = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME")!;

var client = new AzureOpenAIClient(endpoint, new DefaultAzureCredential());

// Requête "chat completions" avec streaming
var options = new ChatCompletionsOptions
{
    DeploymentName = deployment,
    Temperature = 0.2f,  // déterministe en prod
    MaxOutputTokenCount = 800
};
options.Messages.Add(new ChatRequestSystemMessage(
    "Tu es un assistant C# concis. Réponds en français."));
options.Messages.Add(new ChatRequestUserMessage(
    "Explique la différence entre Task et ValueTask en .NET."));

await foreach (var update in client.GetChatCompletionsStreamingAsync(options))
{
    if (update.ContentUpdate != null)
    {
        Console.Write(update.ContentUpdate);
    }
}
Console.WriteLine();

Pourquoi ce choix ? Le streaming améliore la perception de latence côté UI et fonctionne nativement avec le SDK Azure. L’authentification Entra ID (keyless) évite la gestion de secrets côté app. Microsoft Learn


6) Tool Calling & Structured Outputs (C#)

Les structured outputs imposent un JSON Schema que le modèle doit respecter : idéal pour extraire des entités, piloter des fonctions ou composer des workflows robustes. Combinez-les avec le tool calling pour des appels outillés fiables (météo, SQL, paiement, etc.). Microsoft Learn

// Exemple: extraire un "Contact" typé + décider d'appeler un outil "send_email"
using Azure.AI.OpenAI;
using System.Text.Json.Nodes;

// 1) Définir le schema de sortie
var contactSchema = new
{
    type = "object",
    properties = new {
        name = new { type = "string" },
        email = new { type = "string", format = "email" },
        subject = new { type = "string" }
    },
    required = new[] { "name", "email", "subject" },
    additionalProperties = false
};

// 2) Préparer la requête avec structured outputs + tool
var opts = new ChatCompletionsOptions { DeploymentName = deployment };
opts.Messages.Add(new ChatRequestSystemMessage("Tu extrais un contact et proposes l'envoi d'un email."));
opts.Messages.Add(new ChatRequestUserMessage(
    "Peux-tu écrire à Marie Dupont (marie@exemple.fr) au sujet de la facture 2025 ?"));

opts.ResponseFormat = ChatResponseFormat.CreateJsonSchemaFormat(
    jsonSchemaFormatName: "contact_schema",
    jsonSchema: BinaryData.FromObjectAsJson(contactSchema),
    jsonSchemaIsStrict: true
);

// Déclarer un outil en free-form (selon SDK) ou via Tools collection
opts.Tools.Add(ChatCompletionsFunctionToolDefinition.CreateFunctionTool(
    functionName: "send_email",
    functionDescription: "Envoie un email via le système interne",
    parameters: BinaryData.FromString("""{"type":"object","properties":{"to":{"type":"string"},"subject":{"type":"string"},"body":{"type":"string"}},"required":["to","subject","body"]}""")
));

var result = await client.GetChatCompletionsAsync(opts);
var choice = result.Value.Choices[0];

// 3) Lire la sortie structurée et (si présent) les appels d'outil
var json = choice.Message?.Content[0].Text; // JSON strict conforme au schéma
Console.WriteLine(json);

foreach (var toolCall in choice.Message?.ToolCalls ?? [])
{
    if (toolCall.FunctionName == "send_email")
    {
        // Appeler votre back-end d'envoi et renvoyer le résultat à GPT si nécessaire
    }
}

À retenir : préférez structured outputs au « JSON mode » (plus strict), et utilisez le tool calling pour des actions auditées/tracées. Microsoft Learn

7) GPT-5 RAG avec Azure AI Search (C#)

Azure AI Search (nouveau nom d’Azure Cognitive Search) apporte index vectoriel, hybride, « semantic ranker » et tutoriels RAG officiels — parfait pour grounder GPT-5 sur vos données privées. Microsoft Learn

// RAG minimaliste: 1) récupérer des passages, 2) les injecter au prompt
// dotnet add package Azure.Search.Documents
using Azure.Search.Documents;
using Azure.Search.Documents.Models;
using Azure.AI.OpenAI;

var search = new SearchClient(
    new Uri(Environment.GetEnvironmentVariable("AZURE_SEARCH_ENDPOINT")!),
    indexName: "docs-index",
    new Azure.AzureKeyCredential(Environment.GetEnvironmentVariable("AZURE_SEARCH_KEY")!)
);

// 1) Recherche hybride (mot-clé + vectorielle si configurée)
var queryText = "Politique de remboursement 2025";
var results = await search.SearchAsync<SearchDocument>(queryText,
    new SearchOptions { Size = 5, QueryType = SearchQueryType.Semantic });

var passages = new List<string>();
await foreach (var r in results)
{
    passages.Add(r.Document.TryGetValue("content", out var c) ? c?.ToString() ?? "" : "");
}

// 2) Composer le message système avec contextes « cités »
var sys = "Tu réponds depuis les extraits fournis, cite les sources si possible.";
var ctx = string.Join("\n---\n", passages.Select((p,i)=> $"[Doc {i+1}]\n{p}"));

var rag = new ChatCompletionsOptions { DeploymentName = deployment, Temperature = 0 };
rag.Messages.Add(new ChatRequestSystemMessage(sys + "\n\nContexte:\n" + ctx));
rag.Messages.Add(new ChatRequestUserMessage("Quelle est la durée de rétractation ?"));

var ragResp = await client.GetChatCompletionsAsync(rag);
Console.WriteLine(ragResp.Value.Choices[0].Message.Content[0].Text);

Pour des pipelines RAG avancés : « agentic retrieval », vector stores, indexeurs natifs et intégrations Foundry/Prompt Flow. Microsoft Learn

8) GPT-5 sécurité, gouvernance & conformité

  • Content Safety : protections natives (ex. prompt shields) sur prompts/réponses.
  • Évaluation & télémétrie : métriques qualité/sécurité en temps réel vers Azure Monitor/App Insights ; intégrations Purview/Defender.
  • Data Zones : choisissez EU Data Zone (Sweden Central) pour la résidence des données.
    Ces mécanismes sont mis en avant pour GPT-5 dans Foundry et complétés par vos politiques internes. Microsoft Azure

9) Coûts, performance & mise à l’échelle de GPT-5

  • Tarification Azure OpenAI : consultez la page officielle (les SKUs GPT-5 peuvent apparaître avec décalage après l’annonce GA). Évitez d’« hardcoder » des prix. Microsoft AzureMicrosoft Learn
  • Tarification OpenAI (directe) : si vous utilisez OpenAI hors Azure, référez-vous à la page pricing (GPT-5/mini/nano). OpenAI
  • Optimisation : batching, cache d’entrées, temperature faible en prod, model router dans Foundry pour équilibrer coût/perf selon tâche. Microsoft Azure

10) Bonnes pratiques & anti-patterns

À faire

  • Préférer Entra ID (keyless) + Managed Identity en prod
  • Limiter le contexte (chunking + citations) ; vérifier tokens max par modèle
  • Utiliser structured outputs pour les intégrations critiques
  • Mettre des guardrails : Content Safety, filtres, tests automatiques
  • Évaluer vos prompts avec Microsoft.Extensions.AI.Evaluation dans vos pipelines CI/CD Microsoft Learn

À éviter

  • Tout passer par temperature élevée en prod
  • Injecter des secrets en clair
  • Mélanger régions/ressources sans contrainte de résidence
  • Rely uniquement sur le « JSON mode » au lieu de structured outputs Microsoft Learn

11) FAQ rapide

GPT-5 est-il dispo en France Central ?
Pas à la date du 25 août 2025. Utilisez Sweden Central (EU Data Zone) pour rester en UE. Microsoft Learn

Faut-il s’inscrire ?
Oui, pour gpt-5 (raisonnement « full »). Les variantes gpt-5-mini/nano/chat sont plus largement disponibles. Microsoft Learn

Copilot/VS Code bénéficient-ils de GPT-5 ?
Oui, Microsoft a communiqué sur un déploiement dans GitHub Copilot/VS Code pour améliorer raisonnement et refactoring. Microsoft Azure

Je débute : SDK Azure direct ou Microsoft.Extensions.AI ?
Commencez par Extensions.AI pour la portabilité/middlewares, tout en gardant Azure.AI.OpenAI pour les fonctions spécifiques Foundry. Microsoft Learn

Semantic Kernel a toujours un intérêt ?
Oui : orchestration/agents, plans, connecteurs… complémentaire à Extensions.AI selon vos besoins. Microsoft Learn GitHub

12) GPT-5 ressources (officielles & utiles)

  • Annonce Azure AI Foundry (GPT-5 GA) : vue d’ensemble, sécurité, model router. Microsoft Azure
  • Tableau des modèles & régions (MS Learn) : série GPT-5, Data Zones, capacités. Microsoft Learn
  • Quickstart Chat & Auth Entra ID (.NET) : code, streaming, bonnes pratiques. Microsoft Learn
  • Structured Outputs & Function Calling : concevoir des schémas/ outils robustes. Microsoft Learn
  • Microsoft.Extensions.AI (docs) : IChatClient, middlewares, DI. Microsoft Learn
  • Azure AI Search (RAG) : rename, concepts, quickstarts. Microsoft Learn

Derniers articles

  • GPT-5 pour les développeurs Microsoft : guide complet (.NET 9, Azure AI Foundry, Copilot & RAG)
    GPT-5 est désormais disponible pour les développeurs via Azure AI Foundry (ancien Azure OpenAI). Vous pouvez l’utiliser depuis .NET 9 avec Azure.AI.OpenAI ou via l’abstraction Microsoft.Extensions.AI. Les scénarios phares : agents/outillage (tool calling), structured outputs, RAG avec Azure AI Search, intégration VS Code/GitHub Copilot et contrôle entreprise…
  • Logging Centralisé avec OpenTelemetry dans .NET Core
    Diagramme officiel OpenTelemetry montrant le flux de données. Source originale. Introduction Dans le monde du développement moderne, la gestion des logs est devenue un élément critique pour assurer la stabilité et la performance des applications. OpenTelemetry émerge comme la solution ultime pour implémenter une stratégie de logging…
  • Créer un Chatbot avec DeepSeek et .NET 9 : Tutoriel Complet
    Ce tutoriel vous guidera pas à pas pour construire un chatbot utilisant l’API de DeepSeek avec .NET 9. Nous allons créer une application web de chatbot avec ASP.NET Core. Prérequis Étape 1 : Créer une nouvelle application Web ASP.NET Core Étape 2 : Ajouter les packages nécessaires…

Publié dans .Net Core, AI, C Sharp, c#, Design, DevopsTags: