Lab 076 : Microsoft Agent Framework — De SK à MAF¶
Ce que vous apprendrez¶
- Comment Semantic Kernel et AutoGen sont unifiés dans le Microsoft Agent Framework (MAF)
- Ce que sont les Agent Skills (packages de compétences portables
.md) et comment ils permettent la réutilisation - Comment les Graph Workflows (DAG avec points de contrôle) remplacent les pipelines linéaires
- Analyser une matrice de migration comparant 15 fonctionnalités entre SK, AutoGen et MAF
- Identifier les niveaux d'effort de migration et les fonctionnalités exclusives à MAF
Introduction¶
Le Microsoft Agent Framework (MAF) unifie Semantic Kernel et AutoGen en une seule plateforme cohérente pour la création d'agents IA. Publié en tant que Release Candidate en février 2026, MAF réunit le meilleur des deux mondes :
- Le système de plugins, les planificateurs et les connecteurs d'entreprise de Semantic Kernel
- Les conversations multi-agents, l'exécution de code et les modèles de discussion de groupe d'AutoGen
Installation¶
Concepts clés¶
| Concept | Description |
|---|---|
| Agent Skills | Packages de compétences portables .md qui définissent les capacités, entrées, sorties et dépendances d'un agent — partageables entre équipes et projets |
| Graph Workflows | Orchestration basée sur des DAG avec points de contrôle, réessais et embranchements — remplaçant les pipelines linéaires |
| DevUI | Interface de développement intégrée pour déboguer les conversations d'agents, inspecter l'exécution des compétences et visualiser les workflows |
| Unified API | Surface d'API unique qui remplace le Kernel de SK et l'AssistantAgent d'AutoGen par une classe commune Agent |
Le scénario¶
Vous êtes un ingénieur de plateforme dans une entreprise qui a créé des agents avec Semantic Kernel et AutoGen. La direction a décidé de migrer vers MAF. Vous disposez d'une matrice de migration (migration_matrix.csv) qui associe 15 fonctionnalités entre les trois frameworks — en suivant la disponibilité, l'effort de migration et les fonctionnalités exclusives à MAF.
Votre mission : analyser la matrice, identifier les gains rapides, signaler les défis et construire un plan de migration.
Données simulées
Ce lab utilise un fichier CSV de matrice de migration simulé. Les données reflètent la correspondance réelle des fonctionnalités entre Semantic Kernel, AutoGen et MAF, telle que documentée dans les guides de migration.
Prérequis¶
| Exigence | Pourquoi |
|---|---|
| Python 3.10+ | Exécuter les scripts d'analyse |
Bibliothèque pandas |
Manipulation des données |
Démarrage rapide avec GitHub Codespaces
Toutes les dépendances sont pré-installées dans le devcontainer.
📦 Fichiers de support¶
Téléchargez ces fichiers avant de commencer le lab
Enregistrez tous les fichiers dans un dossier lab-076/ de votre répertoire de travail.
| Fichier | Description | Téléchargement |
|---|---|---|
broken_migration.py |
Exercice de correction de bugs (3 bugs + auto-tests) | 📥 Télécharger |
migration_matrix.csv |
Comparaison de 15 fonctionnalités : SK vs AutoGen vs MAF | 📥 Télécharger |
Étape 1 : Comprendre la matrice de migration¶
La matrice de migration associe 15 fonctionnalités entre trois frameworks. Chaque ligne représente une capacité :
| Colonne | Description |
|---|---|
| feature | La capacité comparée (ex. : plugins, multi_agent_chat) |
| sk_support | Si Semantic Kernel prend en charge cette fonctionnalité : yes, partial ou no |
| autogen_support | Si AutoGen prend en charge cette fonctionnalité : yes, partial ou no |
| maf_support | Si MAF prend en charge cette fonctionnalité : yes, partial ou no |
| migration_effort | Effort de migration de SK/AutoGen vers MAF : low, medium ou high |
| category | Catégorie de la fonctionnalité : core, orchestration, tooling ou integration |
Étape 2 : Charger et explorer la matrice¶
import pandas as pd
df = pd.read_csv("lab-076/migration_matrix.csv")
print(f"Total features: {len(df)}")
print(f"Categories: {df['category'].value_counts().to_dict()}")
print(f"Migration effort: {df['migration_effort'].value_counts().to_dict()}")
print(f"\nFull matrix:")
print(df[["feature", "sk_support", "autogen_support", "maf_support", "migration_effort"]].to_string(index=False))
Sortie attendue :
Total features: 15
Categories: {'core': 5, 'orchestration': 4, 'tooling': 3, 'integration': 3}
Migration effort: {'low': 7, 'medium': 5, 'high': 3}
Étape 3 : Identifier les gains rapides (effort de migration faible)¶
Les fonctionnalités avec un effort de migration low sont vos gains rapides — commencez par celles-ci :
low_effort = df[df["migration_effort"] == "low"]
print(f"Quick wins (low effort): {len(low_effort)} features\n")
for _, row in low_effort.iterrows():
print(f" {row['feature']:>25s} SK={row['sk_support']:<8s} AutoGen={row['autogen_support']:<8s} MAF={row['maf_support']}")
Stratégie de migration
Commencez par les fonctionnalités à faible effort pour renforcer la confiance de l'équipe et démontrer l'API unifiée de MAF. Celles-ci ont généralement des équivalents directs dans SK ou AutoGen, ce qui rend la migration simple.
Étape 4 : Trouver les fonctionnalités exclusives à MAF¶
Quelles fonctionnalités existent dans MAF mais pas dans Semantic Kernel ?
maf_only_vs_sk = df[(df["maf_support"] == "yes") & (df["sk_support"] == "no")]
print(f"Features in MAF but NOT in SK: {len(maf_only_vs_sk)}\n")
for _, row in maf_only_vs_sk.iterrows():
print(f" {row['feature']:>25s} category={row['category']}")
# Features exclusive to MAF (not in SK AND not in AutoGen)
maf_exclusive = df[(df["maf_support"] == "yes") & (df["sk_support"] == "no") & (df["autogen_support"] == "no")]
print(f"\nMAF-exclusive features (not in SK or AutoGen): {len(maf_exclusive)}")
for _, row in maf_exclusive.iterrows():
print(f" {row['feature']}: {row['category']}")
Étape 5 : Analyser les migrations à effort élevé¶
Ces fonctionnalités nécessitent le plus de planification :
high_effort = df[df["migration_effort"] == "high"]
print(f"High-effort migrations: {len(high_effort)}\n")
for _, row in high_effort.iterrows():
print(f" {row['feature']}")
print(f" SK: {row['sk_support']}, AutoGen: {row['autogen_support']}, MAF: {row['maf_support']}")
print(f" Category: {row['category']}")
print()
Risque de migration
Les fonctionnalités à effort élevé impliquent souvent des changements architecturaux — par exemple, remplacer l'orchestration personnalisée par des Graph Workflows ou convertir des plugins propriétaires en Agent Skills. Prévoyez 2 à 4 semaines par fonctionnalité à effort élevé.
Étape 6 : Construire le plan de migration¶
report = f"""# 📋 MAF Migration Plan
## Matrix Summary
| Metric | Value |
|--------|-------|
| Total Features | {len(df)} |
| Low Effort | {len(df[df['migration_effort'] == 'low'])} |
| Medium Effort | {len(df[df['migration_effort'] == 'medium'])} |
| High Effort | {len(df[df['migration_effort'] == 'high'])} |
| MAF-only (vs SK) | {len(maf_only_vs_sk)} |
## Phase 1: Quick Wins (Weeks 1–2)
Migrate {len(low_effort)} low-effort features:
"""
for _, row in low_effort.iterrows():
report += f"- {row['feature']} ({row['category']})\n"
report += f"""
## Phase 2: Medium Effort (Weeks 3–5)
Migrate {len(df[df['migration_effort'] == 'medium'])} medium-effort features with dedicated sprint time.
## Phase 3: High Effort (Weeks 6–10)
Migrate {len(high_effort)} high-effort features requiring architectural changes.
## New Capabilities Unlocked
MAF-exclusive features not available in SK or AutoGen:
"""
for _, row in maf_exclusive.iterrows():
report += f"- **{row['feature']}** ({row['category']})\n"
print(report)
with open("lab-076/migration_plan.md", "w") as f:
f.write(report)
print("💾 Saved to lab-076/migration_plan.md")
🐛 Exercice de correction de bugs¶
Le fichier lab-076/broken_migration.py contient 3 bugs qui produisent une analyse de migration incorrecte. Pouvez-vous les trouver et les corriger tous ?
Exécutez les auto-tests pour voir lesquels échouent :
Vous devriez voir 3 tests échoués. Chaque test correspond à un bug :
| Test | Ce qu'il vérifie | Indice |
|---|---|---|
| Test 1 | Nombre de fonctionnalités à faible effort | Devrait filtrer migration_effort == "low", pas "high" |
| Test 2 | Nombre de fonctionnalités MAF uniquement vs SK | Devrait vérifier sk_support == "no", pas "yes" |
| Test 3 | Nombre total de fonctionnalités | Devrait utiliser len(df), pas len(df.columns) |
Corrigez les 3 bugs, puis relancez. Quand vous voyez All passed!, c'est terminé !
🧠 Vérification des connaissances¶
Q1 (Choix multiple) : Qu'est-ce que le Microsoft Agent Framework (MAF) ?
- A) Une nouvelle version d'AutoGen avec un nom différent
- B) Un framework unifié combinant Semantic Kernel et AutoGen en une seule plateforme
- C) Un service cloud uniquement pour exécuter des agents sur Azure
- D) Un remplacement de LangChain
✅ Révéler la réponse
Correct : B) Un framework unifié combinant Semantic Kernel et AutoGen en une seule plateforme
MAF fusionne les forces des deux frameworks : le système de plugins d'entreprise et les planificateurs de SK avec les conversations multi-agents et l'exécution de code d'AutoGen. Il fournit une classe unique Agent, des Agent Skills portables et des Graph Workflows basés sur des DAG.
Q2 (Choix multiple) : Que sont les Agent Skills dans MAF ?
- A) Des fonctions Python décorées avec
@skill - B) Des packages de compétences portables
.mdqui définissent les capacités, entrées, sorties et dépendances - C) Des poids de modèle pré-entraînés pour des tâches spécifiques
- D) Des Azure Functions que les agents peuvent appeler
✅ Révéler la réponse
Correct : B) Des packages de compétences portables .md qui définissent les capacités, entrées, sorties et dépendances
Les Agent Skills sont des packages basés sur Markdown qui décrivent ce qu'un agent peut faire, les entrées dont il a besoin, les sorties qu'il produit et les dépendances requises. Ils sont partageables entre équipes et projets, permettant un marketplace de capacités d'agents réutilisables.
Q3 (Exécutez le lab) : Combien de fonctionnalités ont un effort de migration « low » ?
Exécutez l'analyse de l'étape 3 sur 📥 migration_matrix.csv et comptez les fonctionnalités à faible effort.
✅ Révéler la réponse
7 fonctionnalités
Sur les 15 fonctionnalités de la matrice de migration, 7 ont migration_effort = "low". Ce sont les gains rapides de la phase 1 de la migration — généralement des fonctionnalités avec des équivalents directs entre SK/AutoGen et MAF.
Q4 (Exécutez le lab) : Combien de fonctionnalités sont disponibles dans MAF mais PAS dans Semantic Kernel ?
Exécutez l'analyse de l'étape 4 pour trouver les fonctionnalités où maf_support = "yes" et sk_support = "no".
✅ Révéler la réponse
Le nombre de fonctionnalités où MAF a le support yes mais SK a le support no.
Celles-ci représentent les capacités que les équipes gagnent en migrant de SK vers MAF — comme les modèles de discussion multi-agents, les bacs à sable d'exécution de code et d'autres fonctionnalités issues d'AutoGen désormais disponibles dans le framework unifié.
Q5 (Exécutez le lab) : Combien de fonctionnalités au total sont suivies dans la matrice de migration ?
Chargez le CSV et vérifiez le nombre total de lignes.
✅ Révéler la réponse
15 fonctionnalités
La matrice de migration suit 15 fonctionnalités réparties en 4 catégories : core (5), orchestration (4), tooling (3) et integration (3). Chaque fonctionnalité est évaluée pour le support dans SK, AutoGen et MAF, ainsi que l'effort de migration.
Résumé¶
| Sujet | Ce que vous avez appris |
|---|---|
| Microsoft Agent Framework | Plateforme unifiée fusionnant Semantic Kernel et AutoGen (RC fév. 2026) |
| Agent Skills | Packages de compétences portables .md pour des capacités d'agents réutilisables |
| Graph Workflows | Orchestration basée sur des DAG avec points de contrôle, remplaçant les pipelines linéaires |
| Matrice de migration | 15 fonctionnalités comparées entre SK, AutoGen et MAF |
| Stratégie de migration | Commencer par le faible effort (7 fonctionnalités), planifier l'effort élevé (3 fonctionnalités) |
| DevUI | Interface de développement intégrée pour déboguer et visualiser les workflows d'agents |