Partager via


Tutoriel : Idée de prototype - Générer et évaluer un agent d’entreprise

Ce tutoriel couvre la première étape du parcours du développeur Microsoft Foundry : d’une idée initiale à un prototype de travail. Vous créez un assistant de travail moderne qui combine les connaissances internes de l’entreprise avec des conseils techniques externes à l’aide du Kit de développement logiciel (SDK) Microsoft Foundry.

Scénario métier : Créez un assistant IA qui aide les employés à combiner :

  • Stratégies d’entreprise (à partir de documents SharePoint)
  • Conseils d’implémentation technique (de Microsoft Learn via MCP)
  • Solutions complètes (combinaison des deux sources pour l’implémentation métier)
  • Évaluation par lots pour valider les performances de l’agent dans des scénarios métier réalistes

Résultat du tutoriel : À la fin, vous avez un assistant de l'espace de travail moderne capable de répondre à des questions de stratégie, techniques et combinées sur l’implémentation ; un script d’évaluation par lots reproductible ; et des points d’extension clairs (autres outils, schémas multi-agents, évaluation plus riche).

Vous allez :

  • Créez un Assistant pour Espaces de Travail Modernes avec l’intégration de SharePoint et MCP.
  • Illustrez des scénarios métier réels combinant des connaissances internes et externes.
  • Implémentez une gestion robuste des erreurs et une dégradation progressive.
  • Créez un framework d’évaluation pour les tests axés sur l’entreprise.
  • Préparez la base du déploiement de la gouvernance et de la production.

Cet exemple minimal illustre les modèles prêts pour l’entreprise avec des scénarios métier réalistes.

Important

Le code de cet article utilise des packages actuellement en préversion. Cette version préliminaire est fournie sans contrat de niveau de service, et nous la déconseillons pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure.

Prerequisites

  • Authentification de l’abonnement Azure et de l’interface CLI (az login)

  • Azure CLI 2.67.0 ou version ultérieure (vérifiez avec az version)

  • Un projet Foundry avec un modèle déployé (par exemple, ). Si vous n’en avez pas : Créez un projet , puis déployez un modèle (voir vue d’ensemble du modèle : Catalogue de modèles).

  • Python 3.10 ou version ultérieure

  • Connexion SharePoint configurée dans votre projet (documentation de l’outil SharePoint)

    Note

    Pour configurer votre projet Foundry pour la connectivité SharePoint, consultez la documentation de l’outil SharePoint.

  • (Facultatif) Git installé pour cloner l’exemple de référentiel

Étape 1 : Obtenir l’exemple de code

Au lieu de naviguer dans une arborescence de référentiels volumineux, utilisez l’une des approches suivantes :

Option A (cloner l’intégralité du référentiel d’exemples)

Conseil / Astuce

Le code utilise l’API De projet Foundry (nouvelle) (préversion) et est incompatible avec l’API du projet Foundry (classique).

git clone --depth 1 https://github.com/azure-ai-foundry/foundry-samples.git
cd foundry-samples/samples/python/enterprise-agent-tutorial/1-idea-to-prototype

Option B (vérification éparse pour ce tutoriel uniquement - téléchargement réduit)

git clone --no-checkout https://github.com/azure-ai-foundry/foundry-samples.git
cd foundry-samples
git sparse-checkout init --cone
git sparse-checkout set samples/python/enterprise-agent-tutorial/1-idea-to-prototype
git checkout
cd samples/python/enterprise-agent-tutorial/1-idea-to-prototype

Répétez le chemin d’accès pour csharp ou java des variantes si nécessaire.

Option C (Télécharger zip du dépôt)

Téléchargez le fichier ZIP du référentiel, extrayez-le dans votre environnement local et accédez au dossier du didacticiel.

Important

Pour la mise en production, utilisez un référentiel autonome. Ce didacticiel utilise le référentiel d’exemples partagés. La validation parcellaire diminue le bruit dans le dépôt local.

La structure minimale contient uniquement les fichiers essentiels :

enterprise-agent-tutorial/
└── 1-idea-to-prototype/
    ├── main.py                          # Modern Workplace Assistant
    ├── evaluate.py                      # Business evaluation framework
    ├── questions.jsonl                  # Business test scenarios (4 questions)
    ├── requirements.txt                 # Python dependencies
    ├── .env.template                    # Environment variables template
    ├── README.md                        # Complete setup instructions
    ├── MCP_SERVERS.md                   # MCP server configuration guide
    ├── sharepoint-sample-data           # Sample business documents for SharePoint
        └── collaboration-standards.docx # Sample content for policies
        └── remote-work-policy.docx      # Sample content for policies
        └── security-guidelines.docx     # Sample content for policies
        └── data-governance-policy.docx  # Sample content for policies

Étape 2 : Exécuter l’exemple immédiatement

Commencez par exécuter l’agent afin de voir les fonctionnalités de travail avant de vous plonger dans les détails de l’implémentation.

Configuration de l’environnement et environnement virtuel

  1. Installez les runtimes de langage requis, les outils globaux et les extensions VS Code, comme décrit dans Préparer votre environnement de développement.

  2. Installer les dépendances à partir de requirements.txt:

    pip install -r requirements.txt
    
  3. Copiez votre endpoint à partir de l’écran d’accueil. Vous l’utiliserez à l’étape suivante.

    Capture d’écran de l’écran d’accueil des modèles Microsoft Foundry montrant l’URL du point de terminaison et le bouton Copier.

  4. Configurer .env.

    Copiez .env.template vers .env et configurez.

    # Foundry Configuration  
    PROJECT_ENDPOINT=https://<your-project>.aiservices.azure.com
    MODEL_DEPLOYMENT_NAME=gpt-4o-mini
    AI_FOUNDRY_TENANT_ID=<your-tenant-id>
    
    # The Microsoft Learn MCP Server (public authoritative Microsoft docs index)
    MCP_SERVER_URL=https://learn.microsoft.com/api/mcp
    
    # SharePoint Integration (Optional - requires connection setup)
    SHAREPOINT_RESOURCE_NAME=your-sharepoint-connection
    SHAREPOINT_SITE_URL=https://<your-company>.sharepoint.com/teams/your-site
    

    Conseil / Astuce

    Pour obtenir votre ID de locataire, exécutez :

    # Get tenant ID
    az account show --query tenantId -o tsv
    

    Pour obtenir votre point de terminaison de projet, ouvrez votre projet dans le portail Foundry et copiez la valeur affichée ici.

Exécuter l’agent et l’évaluation

python main.py
python evaluate.py

Sortie attendue (exécution initiale de l’agent)

Exécution réussie avec SharePoint :

🤖 Creating Modern Workplace Assistant...
✅ SharePoint connected: YourConnection
✅ Agent created: asst_abc123

Dégradation progressive sans SharePoint :

⚠️  SharePoint connection not found: Connection 'YourConnection' not found
✅ Agent created: asst_abc123

Maintenant que vous disposez d’un agent opérationnel, les sections suivantes expliquent son fonctionnement. Vous n’avez pas besoin d’effectuer d’action lors de la lecture de ces sections : elles sont à des fins d’explication.

Étape 3 : Configurer des exemples de documents professionnels SharePoint

  1. Accédez à votre site SharePoint (configuré dans la connexion).
  2. Créer une bibliothèque de documents « Stratégies d’entreprise » (ou utiliser des documents existants).
  3. Chargez les quatre exemples de documents Word fournis dans le sharepoint-sample-data dossier :
    • remote-work-policy.docx
    • security-guidelines.docx
    • collaboration-standards.docx
    • data-governance-policy.docx

Exemple de structure

📁 Company Policies/
├── remote-work-policy.docx      # VPN, MFA, device requirements
├── security-guidelines.docx     # Azure security standards
├── collaboration-standards.docx # Teams, SharePoint usage
└── data-governance-policy.docx  # Data classification, retention

Étape 4 : Comprendre l’implémentation de l’Assistant

Cette section explique le code principal dans main.py. Vous avez déjà exécuté l’agent; cette section est conceptuelle et ne nécessite aucune modification. Après la lecture, vous pouvez :

  • Ajoutez de nouveaux outils de données internes et externes.
  • Étendez les instructions dynamiques.
  • Introduisez l’orchestration multi-agent.
  • Améliorez l’observabilité et les diagnostics.

Le code se décompose en sections principales suivantes, classées comme elles apparaissent dans l’exemple de code complet :

  1. Configurer les importations et l’authentification
  2. Configurer l’authentification sur Azure
  3. Configurer l’outil SharePoint
  4. Configurer l’outil MCP
  5. Créer l’agent et connecter les outils
  6. Converser avec l’agent

Important

Le code de cet article utilise des packages actuellement en préversion. Cette version préliminaire est fournie sans contrat de niveau de service, et nous la déconseillons pour les charges de travail en production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure.

Importation et configuration de l’authentification

Le code utilise plusieurs bibliothèques clientes du Kit de développement logiciel (SDK) Microsoft Foundry pour créer un agent d’entreprise robuste.

import os
import time
from azure.ai.agents import AgentsClient
from azure.ai.agents.models import (
    SharepointTool,
    SharepointGroundingToolParameters,
    McpTool,
    RunHandler,
    ToolApproval
)
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv

# Import for connection resolution
try:
    from azure.ai.projects import AIProjectClient
    from azure.ai.projects.models import ConnectionType
    HAS_PROJECT_CLIENT = True
except ImportError:
    HAS_PROJECT_CLIENT = False

Configurer l’authentification dans Azure

Avant de créer votre agent, configurez l’authentification auprès de Foundry.

# Support default Azure credentials
credential = DefaultAzureCredential()

agents_client = AgentsClient(
    endpoint=os.environ["PROJECT_ENDPOINT"],
    credential=credential,
)
print(f"✅ Connected to Azure AI Foundry: {os.environ['PROJECT_ENDPOINT']}")

Créer l’outil SharePoint pour l’agent

L’agent utilise SharePoint et peut accéder aux documents de stratégie et de procédure de l’entreprise stockés ici. Configurez la connexion à SharePoint dans votre code.

# Create SharePoint tool with the full ARM resource ID
sharepoint_tool = SharepointTool(connection_id=connection_id)
print(f"✅ SharePoint tool configured successfully")

Créer l’outil MCP pour l’agent

# MCP (Model Context Protocol) enables agents to access external data sources
# like Microsoft Learn documentation. The approval flow is handled automatically
# in the chat_with_assistant function.
from azure.ai.agents.models import McpTool

mcp_server_url = os.environ.get("MCP_SERVER_URL")
mcp_tool = None

if mcp_server_url:
    print(f"📚 Configuring Microsoft Learn MCP integration...")
    print(f"   Server URL: {mcp_server_url}")
    
    try:
        # Create MCP tool for Microsoft Learn documentation access
        # server_label must match pattern: ^[a-zA-Z0-9_]+$ (alphanumeric and underscores only)
        mcp_tool = McpTool(
            server_url=mcp_server_url,
            server_label="Microsoft_Learn_Documentation"
        )
        print(f"✅ MCP tool configured successfully")
    except Exception as e:
        print(f"⚠️  MCP tool unavailable: {e}")
        print(f"   Agent will operate without Microsoft Learn access")
        mcp_tool = None
else:
    print(f"📚 MCP integration skipped (MCP_SERVER_URL not set)")

Créer l’agent et connecter les outils

À présent, créez l’agent et connectez les outils SharePoint et MCP.

# Create the agent using Agent SDK v2 with available tools
print(f"🛠️  Creating agent with model: {os.environ['MODEL_DEPLOYMENT_NAME']}")

# Build tools list with proper serialization
tools = []

# Add SharePoint tool using .definitions property
if sharepoint_tool:
    tools.extend(sharepoint_tool.definitions)
    print(f"   ✓ SharePoint tool added")

# Add MCP tool using .definitions property
if mcp_tool:
    tools.extend(mcp_tool.definitions)
    print(f"   ✓ MCP tool added")

print(f"   Total tools: {len(tools)}")

# Create agent with or without tools
if tools:
    agent = agents_client.create_agent(
        model=os.environ["MODEL_DEPLOYMENT_NAME"],
        name="Modern Workplace Assistant",
        instructions=instructions,
        tools=tools
    )
else:
    agent = agents_client.create_agent(
        model=os.environ["MODEL_DEPLOYMENT_NAME"],
        name="Modern Workplace Assistant",
        instructions=instructions,
    )

print(f"✅ Agent created successfully: {agent.id}")
return agent

Converser avec l’agent

Enfin, implémentez une boucle interactive pour converser avec l’agent.

# Get response from the agent
print("🤖 ASSISTANT RESPONSE:")
response, status = chat_with_assistant(agent.id, scenario['question'])

Sortie attendue de l’exemple de code de l’agent (main.py)

Lorsque vous exécutez l’agent, vous voyez une sortie similaire à l’exemple suivant. La sortie montre la réussite de la configuration de l’outil et des réponses de l’agent aux scénarios métier :

$ python main.py
✅ Connected to Foundry
🚀 Foundry - Modern Workplace Assistant
Tutorial 1: Building Enterprise Agents with Agent SDK v2
======================================================================
🤖 Creating Modern Workplace Assistant...
📁 Configuring SharePoint integration...
   Connection name: ContosoCorpPoliciesProcedures
   🔍 Resolving connection name to ARM resource ID...
   ✅ Resolved
✅ SharePoint tool configured successfully
📚 Configuring Microsoft Learn MCP integration...
   Server URL: https://learn.microsoft.com/api/mcp
✅ MCP tool configured successfully
🛠️  Creating agent with model: gpt-4o-mini
   ✓ SharePoint tool added
   ✓ MCP tool added
   Total tools: 2
✅ Agent created successfully

======================================================================
🏢 MODERN WORKPLACE ASSISTANT - BUSINESS SCENARIO DEMONSTRATION
======================================================================
This demonstration shows how AI agents solve real business problems
using the Azure AI Agents SDK v2.
======================================================================

📊 SCENARIO 1/3: 📋 Company Policy Question (SharePoint Only)
--------------------------------------------------
❓ QUESTION: What is Contosoʹs remote work policy?
🎯 BUSINESS CONTEXT: Employee needs to understand company-specific remote work requirements
🎓 LEARNING POINT: SharePoint tool retrieves internal company policies
--------------------------------------------------
🤖 ASSISTANT RESPONSE:
✅ SUCCESS: Contosoʹs remote work policy, effective January 2024, outlines the following key points:

### Overview
Contoso Corp supports flexible work arrangements, including remote work, to enhance employee productivity and work-life balance.

### Eligibility
- **Full-time Employees**: Must have completed a 90...
   📏 Full response: 1530 characters
📈 STATUS: completed
--------------------------------------------------

📊 SCENARIO 2/3: 📚 Technical Documentation Question (MCP Only)
--------------------------------------------------
❓ QUESTION: According to Microsoft Learn, what is the correct way to implement Azure AD Conditional Access policies? Please include reference links to the official documentation.
🎯 BUSINESS CONTEXT: IT administrator needs authoritative Microsoft technical guidance
🎓 LEARNING POINT: MCP tool accesses Microsoft Learn for official documentation with links
--------------------------------------------------
🤖 ASSISTANT RESPONSE:
✅ SUCCESS: To implement Azure AD Conditional Access policies correctly, follow these key steps outlined in the Microsoft Learn documentation:

### 1. Understanding Conditional Access
Conditional Access policies act as "if-then" statements that enforce organizational access controls based on various signals. Th...
   📏 Full response: 2459 characters
📈 STATUS: completed
--------------------------------------------------

📊 SCENARIO 3/3: 🔄 Combined Implementation Question (SharePoint + MCP)
--------------------------------------------------
❓ QUESTION: Based on our companyʹs remote work security policy, how should I configure my Azure environment to comply? Please include links to Microsoft documentation showing how to implement each requirement.
🎯 BUSINESS CONTEXT: Need to map company policy to technical implementation with official guidance
🎓 LEARNING POINT: Both tools work together: SharePoint for policy + MCP for implementation docs
--------------------------------------------------
🤖 ASSISTANT RESPONSE:
✅ SUCCESS: To configure your Azure environment in compliance with Contoso Corpʹs remote work security policy, you need to focus on several key areas, including enabling Multi-Factor Authentication (MFA), utilizing Azure Security Center, and implementing proper access management. Below are specific steps and li...
   📏 Full response: 3436 characters
📈 STATUS: completed
--------------------------------------------------

✅ DEMONSTRATION COMPLETED!
🎓 Key Learning Outcomes:
   • Agent SDK v2 usage for enterprise AI
   • Proper thread and message management
   • Real business value through AI assistance
   • Foundation for governance and monitoring (Tutorials 2-3)

🎯 Try interactive mode? (y/n): n

🎉 Sample completed successfully!
📚 This foundation supports Tutorial 2 (Governance) and Tutorial 3 (Production)
🔗 Next: Add evaluation metrics, monitoring, and production deployment

Étape 5 : Évaluer l’assistant dans un lot

Le code de l’infrastructure d’évaluation teste des scénarios métier réalistes qui combinent des stratégies SharePoint avec des conseils techniques Microsoft Learn. Cette approche illustre les fonctionnalités d’évaluation par lots pour valider les performances de l’agent dans plusieurs cas de test. L’évaluation utilise une approche basée sur des mots clés pour déterminer si l’agent fournit des réponses pertinentes qui incorporent les sources d’informations attendues.

Ce framework d’évaluation teste :

  • Intégration de SharePoint pour les questions relatives à la stratégie d’entreprise
  • Intégration MCP pour des questions de conseil technique
  • Scénarios combinés nécessitant des connaissances internes et externes
  • Qualité de la réponse à l’aide de la correspondance de mots clés et de l’analyse de longueur

Le code se décompose en sections principales suivantes :

  1. Données d’évaluation de charge.
  2. Exécutez l’évaluation par lots.
  3. Compilez les résultats de l’évaluation.

Charger des données d’évaluation

Dans cette section, l’infrastructure d’évaluation charge les questions de test à partir de questions.jsonl. Le fichier contient des scénarios métier qui testent différents aspects de l’agent :

{"question": "What is Contoso's remote work policy?", "expected_source": "sharepoint", "test_type": "sharepoint_only", "explanation": "Forces SharePoint tool usage - answer must contain Contoso-specific policy details", "validation": "check_for_contoso_specifics"}
{"question": "What are Contoso's security protocols for remote employees?", "expected_source": "sharepoint", "test_type": "sharepoint_only", "explanation": "Forces SharePoint tool usage - must retrieve specific security protocols from company policies", "validation": "check_for_contoso_specifics"}
{"question": "How does Contoso classify confidential business documents according to our data governance policy?", "expected_source": "sharepoint", "test_type": "sharepoint_only", "explanation": "Forces SharePoint tool usage - must retrieve data classification from governance policy", "validation": "check_for_contoso_specifics"}
{"question": "What collaboration tools are approved for internal use at Contoso?", "expected_source": "sharepoint", "test_type": "sharepoint_only", "explanation": "Forces SharePoint tool usage - must list specific tools from collaboration standards", "validation": "check_for_contoso_specifics"}
{"question": "According to Microsoft Learn documentation, what is the correct way to set up Azure Active Directory for remote workers? Include reference links.", "expected_source": "mcp", "test_type": "mcp_only", "explanation": "Forces MCP tool usage - must provide Microsoft Learn documentation with links", "validation": "check_for_microsoft_learn_links"}
{"question": "What does Microsoft Learn say about configuring Azure Security Center monitoring? Please provide the official documentation links.", "expected_source": "mcp", "test_type": "mcp_only", "explanation": "Forces MCP tool usage - must access Microsoft Learn for Security Center guidance with links", "validation": "check_for_microsoft_learn_links"}
{"question": "How do I implement data loss prevention in Microsoft 365 according to Microsoft's official documentation? Include links to the relevant Microsoft Learn articles.", "expected_source": "mcp", "test_type": "mcp_only", "explanation": "Forces MCP tool usage - must provide DLP implementation steps with documentation links", "validation": "check_for_microsoft_learn_links"}
{"question": "What are the steps to configure conditional access policies in Azure AD according to Microsoft Learn? Provide documentation links.", "expected_source": "mcp", "test_type": "mcp_only", "explanation": "Forces MCP tool usage - must provide conditional access guidance with Microsoft Learn links", "validation": "check_for_microsoft_learn_links"}
{"question": "Based on Contoso's remote work policy requirements, how should I implement Azure VPN Gateway? Include links to Microsoft documentation for each step.", "expected_source": "both", "test_type": "hybrid", "explanation": "Forces both tools - must combine Contoso policy requirements with Azure VPN implementation guidance and links", "validation": "check_for_both_sources"}
{"question": "What Azure services do I need to configure to meet Contoso's data governance requirements? Provide Microsoft Learn links for implementing each service.", "expected_source": "both", "test_type": "hybrid", "explanation": "Forces both tools - must map Contoso governance policy to specific Azure services with documentation links", "validation": "check_for_both_sources"}
{"question": "How do I configure Microsoft Teams to comply with Contoso's collaboration standards? Include Microsoft documentation links for the setup.", "expected_source": "both", "test_type": "hybrid", "explanation": "Forces both tools - must combine Contoso collaboration standards with Teams configuration guidance and links", "validation": "check_for_both_sources"}
{"question": "What Azure security services should I implement to align with Contoso's incident response procedures? Provide links to Microsoft Learn for each service.", "expected_source": "both", "test_type": "hybrid", "explanation": "Forces both tools - must connect Contoso security policy to Azure security services with documentation links", "validation": "check_for_both_sources"}
# NOTE: This code is a non-runnable snippet of the larger sample code from which it is taken.
def load_test_questions(filepath="questions.jsonl"):
    """Load test questions from JSONL file"""
    questions = []
    with open(filepath, 'r') as f:
        for line in f:
            questions.append(json.loads(line.strip()))
    return questions

Exécuter l’évaluation par lots

def run_evaluation(agent_id):
    """
    Run evaluation with test questions using Agent SDK v2.
    
    Args:
        agent_id: The ID of the agent to evaluate
        
    Returns:
        list: Evaluation results for each question
    """
    questions = load_test_questions()
    results = []
    
    print(f"🧪 Running evaluation with {len(questions)} test questions...")
    print("="*70)
    
    # Track results by test type
    stats = {
        "sharepoint_only": {"passed": 0, "total": 0},
        "mcp_only": {"passed": 0, "total": 0},
        "hybrid": {"passed": 0, "total": 0}
    }
    
    for i, q in enumerate(questions, 1):
        test_type = q.get("test_type", "unknown")
        expected_source = q.get("expected_source", "unknown")
        validation_type = q.get("validation", "default")
        
        print(f"\n📝 Question {i}/{len(questions)} [{test_type.upper()}]")
        print(f"   {q['question'][:80]}...")
        
        response, status = chat_with_assistant(agent_id, q["question"])
        
        # Validate response using source-specific checks
        passed, validation_details = validate_response(response, validation_type, expected_source)
        
        result = {
            "question": q["question"],
            "response": response,
            "status": status,
            "passed": passed,
            "validation_details": validation_details,
            "test_type": test_type,
            "expected_source": expected_source,
            "explanation": q.get("explanation", "")
        }
        results.append(result)
        
        # Update stats
        if test_type in stats:
            stats[test_type]["total"] += 1
            if passed:
                stats[test_type]["passed"] += 1
        
        status_icon = "✅" if passed else "⚠️"
        print(f"{status_icon} Status: {status} | Tool check: {validation_details}")
    
    print("\n" + "="*70)
    print("📊 EVALUATION SUMMARY BY TEST TYPE:")
    print("="*70)
    for test_type, data in stats.items():
        if data["total"] > 0:
            pass_rate = (data["passed"] / data["total"]) * 100
            icon = "✅" if pass_rate >= 75 else "⚠️" if pass_rate >= 50 else "❌"
            print(f"{icon} {test_type.upper()}: {data['passed']}/{data['total']} passed ({pass_rate:.1f}%)")
    
    return results

Compiler les résultats de l’évaluation

def calculate_and_save_results(results):
    """Calculate pass rate and save results"""
    # Calculate pass rate
    passed = sum(1 for r in results if r.get("passed", False))
    total = len(results)
    pass_rate = (passed / total * 100) if total > 0 else 0
    
    print(f"\n📊 Overall Evaluation Results: {passed}/{total} questions passed ({pass_rate:.1f}%)")
    
    # Save results
    with open("evaluation_results.json", "w") as f:
        json.dump(results, f, indent=2)
    
    print(f"💾 Results saved to evaluation_results.json")
    
    # Print summary of failures
    failures = [r for r in results if not r.get("passed", False)]
    if failures:
        print(f"\n⚠️  Failed Questions ({len(failures)}):")
        for r in failures:
            print(f"   - [{r['test_type']}] {r['question'][:60]}...")
            print(f"     Reason: {r['validation_details']}")

Sortie attendue de l’exemple de code d’évaluation (evaluate.py)

Lorsque vous exécutez le script d’évaluation, vous voyez une sortie similaire à l’exemple suivant. La sortie montre l’exécution réussie des scénarios de test métier et la génération de métriques d’évaluation :

python evaluate.py
✅ Connected to Foundry
🧪 Modern Workplace Assistant - Evaluation (Agent SDK v2)
======================================================================
🤖 Creating Modern Workplace Assistant...
📁 Configuring SharePoint integration...
   Connection name: ContosoCorpPoliciesProcedures
   🔍 Resolving connection name to ARM resource ID...
   ✅ Resolved
✅ SharePoint tool configured successfully
📚 Configuring Microsoft Learn MCP integration...
   Server URL: https://learn.microsoft.com/api/mcp
✅ MCP tool configured successfully
🛠️  Creating agent with model: gpt-4o-mini
   ✓ SharePoint tool added
   ✓ MCP tool added
   Total tools: 2
✅ Agent created successfully
   Model: gpt-4o-mini
   Name: Modern Workplace Assistant
======================================================================
🧪 Running evaluation with 12 test questions...
======================================================================

📝 Question 1/12 [SHAREPOINT_ONLY]
   What is Contosoʹs remote work policy?...
✅ Status: completed | Tool check: Contoso-specific content: True

...

📝 Question 5/12 [MCP_ONLY]
   According to Microsoft Learn documentation, what is the correct way to set up Az...
✅ Status: completed | Tool check: Microsoft Learn links: True

...

📝 Question 12/12 [HYBRID]
   What Azure security services should I implement to align with Contosoʹs incident...
✅ Status: completed | Tool check: Contoso content: True, Learn links: True

======================================================================
📊 EVALUATION SUMMARY BY TEST TYPE:
======================================================================
✅ SHAREPOINT_ONLY: 4/4 passed (100.0%)
✅ MCP_ONLY: 4/4 passed (100.0%)
✅ HYBRID: 4/4 passed (100.0%)

📊 Overall Evaluation Results: 12/12 questions passed (100.0%)
💾 Results saved to evaluation_results.json

Ressources d’évaluation supplémentaires

L’évaluation génère evaluation_results.json avec des métriques pour chaque question (occurrences des mots-clés, heuristique de la longueur). Vous pouvez étendre ce fichier à :

  • Utilisez des instructions de scoring basées sur des modèles.
  • Introduisez la validation de sortie structurée.
  • Enregistrer la latence et l’utilisation des jetons.

Voici un exemple de la structure de sortie JSON :

[
  {
    "question": "What is Contoso's remote work policy?",
    "response": "Contoso's remote work policy includes the following key components: <...>",
    "status": "completed",
    "passed": true,
    "validation_details": "Contoso-specific content: True",
    "test_type": "sharepoint_only",
    "expected_source": "sharepoint",
    "explanation": "Forces SharePoint tool usage - answer must contain Contoso-specific policy details"
  },
  {
    "question": "What are Contoso's security protocols for remote employees?",
    "response": ...

    ...

  }
]

Résumé

Vous disposez maintenant des points suivants :

  • Un prototype fonctionnel d'agent unique fondé sur des connaissances internes et externes.
  • Script d’évaluation reproductible illustrant les modèles de validation d’entreprise.
  • Chemin de mise à niveau clair : plus d’outils, orchestration multi-agents, évaluation plus riche, déploiement.

Ces modèles réduisent les frictions prototype-production : vous pouvez ajouter des sources de données, appliquer la gouvernance et intégrer la supervision sans réécrire la logique principale.

Étapes suivantes

Ce tutoriel montre l’étape 1 du parcours du développeur , de l’idée au prototype. Cet exemple minimal pose les bases pour le développement de l'IA d'entreprise. Pour poursuivre votre parcours, explorez les étapes suivantes :

Améliorations supplémentaires suggérées

Étape 2 : Prototype en production

Étape 3 : Production vers l’adoption