Partilhar via


Tutorial: Ideia para prototipar - Criar e avaliar um agente empresarial

Este tutorial cobre a primeira etapa da jornada do programador Microsoft Foundry: desde uma ideia inicial até um protótipo funcional. Constrói um assistente moderno no local de trabalho que combina conhecimento interno da empresa com orientação técnica externa, utilizando o Microsoft Foundry SDK.

Cenário de negócios: crie um assistente de IA que ajude os funcionários combinando:

  • Políticas da empresa (a partir de documentos do SharePoint)
  • Orientação de implementação técnica (do Microsoft Learn via MCP)
  • Soluções completas (combinando ambas as fontes para implementação de negócios)
  • Avaliação em lote para validar o desempenho do agente em cenários de negócios realistas

Resultado do tutorial: No final, tem um Assistente de Local de Trabalho Moderno em funcionamento que pode responder a questões de políticas, técnicas e de implementação combinada; um script de avaliação por lote repetível; e pontos de extensão claros (outras ferramentas, padrões multi-agente, avaliação mais rica).

Tu vais:

  • Crie um Assistente de Local de Trabalho Moderno com integração com SharePoint e MCP.
  • Demonstre cenários de negócios reais combinando conhecimento interno e externo.
  • Implemente um tratamento robusto de erros e uma degradação graciosa.
  • Crie uma estrutura de avaliação para testes focados nos negócios.
  • Prepare a base para a governança e a implantação da produção.

Esta amostra mínima demonstra padrões prontos para empresas com cenários empresariais realistas.

Importante

O código neste artigo usa pacotes que estão atualmente em pré-visualização. Esta pré-visualização é fornecida sem um acordo de nível de serviço, e não a recomendamos para trabalhos em produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Pré-requisitos

  • Assinatura do Azure e autenticação da CLI (az login)

  • Azure CLI 2.67.0 ou posterior (verifique com az version)

  • Um projeto Foundry com um modelo implementado (por exemplo, gpt-4o-mini). Se não tiver: Crie um projeto e depois implemente um modelo (ver visão geral do modelo: Catálogo de modelos).

  • Python 3.10 ou posterior

  • Conexão do SharePoint configurada em seu projeto (documentação da ferramenta SharePoint)

    Observação

    Para configurar o seu projeto Foundry para conectividade SharePoint, consulte a documentação da ferramenta SharePoint.

  • (Opcional) Git instalado para clonar o repositório de exemplo

Passo 1: Obtenha o código de exemplo

Em vez de navegar numa grande árvore de repositórios, use uma destas abordagens:

Opção A (clonar todo o repositório de amostras)

Sugestão

O código utiliza a API do projeto Foundry (nova) (pré-visualização) e é incompatível com a API do projeto Foundry (clássica).

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

Opção B (checkout seletivo apenas deste tutorial - download reduzido)

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

Repita os caminhos das variantes csharp ou java conforme necessário.

Opção C (Download ZIP do repositório)

Descarregue o repositório ZIP, extraia-o para o seu ambiente local e vá à pasta do tutorial.

Importante

Para adoção em produção, use um repositório autónomo. Este tutorial utiliza o repositório de samples partilhados. A extração esparsa minimiza o ruído local.

A estrutura mínima contém apenas ficheiros essenciais:

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

Passo 2: Executar a amostra imediatamente

Comece executando o agente para ver a funcionalidade de trabalho antes de mergulhar nos detalhes da implementação.

Configuração de ambiente e ambiente virtual

  1. Instale os tempos de execução de linguagem necessários, as ferramentas globais e as extensões do VS Code conforme descrito em Prepare your development environment.

  2. Instalar dependências a partir de requirements.txt:

    pip install -r requirements.txt
    
  3. Copie seu endpoint da tela de boas-vindas. Você vai usá-lo na próxima etapa.

    Captura de ecrã do ecrã de boas-vindas do Microsoft Foundry Models mostrando a URL do endpoint e o botão de copiar.

  4. Configurar .env.

    Copie .env.template para .env e configure:

    # 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
    

    Sugestão

    Para obter o seu ID de inquilino, execute:

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

    Para obter o endpoint do seu projeto, abra o seu projeto no portal Foundry e copie o valor aí mostrado.

Executar agente e avaliação

python main.py
python evaluate.py

Saída esperada (primeira execução do agente)

Execução bem-sucedida com o SharePoint:

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

Degradação graciosa sem SharePoint:

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

Agora que tem um agente funcionando, as próximas secções explicam como funciona. Não precisa de agir enquanto lê estas secções — são para explicação.

Passo 3: Configurar exemplos de documentos empresariais do SharePoint

  1. Vai ao teu site SharePoint (configurado na ligação).
  2. Crie uma biblioteca de documentos "Políticas da Empresa" (ou use "Documentos" existentes).
  3. Carregue os quatro exemplos de documentos Word fornecidos na sharepoint-sample-data pasta:
    • remote-work-policy.docx
    • security-guidelines.docx
    • collaboration-standards.docx
    • data-governance-policy.docx

Estrutura da amostra

📁 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

Etapa 4: Entender a implementação do assistente

Esta secção explica o código central em main.py. Já comandaste o agente; Esta secção é conceptual e não requer alterações. Depois de o ler, pode:

  • Adicione novas ferramentas de dados internas e externas.
  • Estenda as instruções dinâmicas.
  • Introduzir orquestração multi-agente.
  • Melhorar a observabilidade e o diagnóstico.

O código se divide nas seguintes seções principais, ordenadas conforme aparecem no código de exemplo completo:

  1. Configurar importações e autenticação
  2. Configurar a autenticação para o Azure
  3. Configurar a ferramenta do SharePoint
  4. Configurar a ferramenta MCP
  5. Crie o agente e conecte as ferramentas
  6. Converse com o agente

Importante

O código neste artigo usa pacotes que estão atualmente em pré-visualização. Esta pré-visualização é fornecida sem um acordo de nível de serviço, e não a recomendamos para trabalhos em produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Configuração de importação e autenticação

O código utiliza várias bibliotecas clientes do Microsoft Foundry SDK para criar um agente empresarial robusto.

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

Configurar a autenticação no Azure

Antes de criar o seu agente, configure a autenticação na 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']}")

Criar a ferramenta do SharePoint para o agente

O agente usa o SharePoint e pode acessar documentos de política e procedimento da empresa armazenados lá. Configure a conexão com o SharePoint em seu código.

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

Criar a ferramenta MCP para o agente

# 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)")

Crie o agente e conecte as ferramentas

Agora, crie o agente e conecte as ferramentas SharePoint e 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

Converse com o agente

Finalmente, implemente um loop interativo para conversar com o agente.

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

Saída esperada do código de exemplo do agente (main.py)

Quando executa o agente, vê uma saída semelhante ao exemplo seguinte. O resultado mostra a configuração bem-sucedida da ferramenta e as respostas dos agentes a cenários de negócio:

$ 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

Etapa 5: Avaliar o assistente em bloco

O código da estrutura de avaliação testa cenários de negócios realistas que combinam políticas do SharePoint com a orientação técnica do Microsoft Learn. Essa abordagem demonstra os recursos de avaliação em lote para validar o desempenho do agente em vários casos de teste. A avaliação usa uma abordagem baseada em palavras-chave para avaliar se o agente fornece respostas relevantes que incorporam as fontes de informação esperadas.

Este quadro de avaliação testa:

  • Integração do SharePoint para questões de política da empresa
  • Integração MCP para questões de orientação técnica
  • Cenários combinados que exigem conhecimento interno e externo
  • Qualidade da resposta usando correspondência de palavras-chave e análise de comprimento

O código divide-se nas seguintes secções principais:

  1. Dados de avaliação de carga.
  2. Faz uma avaliação em lote.
  3. Compilar os resultados da avaliação.

Carregar dados de avaliação

Nesta secção, o sistema de avaliação carrega as perguntas de teste de questions.jsonl. O arquivo contém cenários de negócios que testam diferentes aspetos do agente:

{"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

Executar avaliação em lote

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

Compilar os resultados da avaliação

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']}")

Saída esperada do código de exemplo de avaliação (evaluate.py)

Quando executas o script de avaliação, vês uma saída semelhante ao exemplo seguinte. O resultado mostra a execução bem-sucedida de cenários de teste de negócio e a geração de métricas de avaliação:

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

Ativos de avaliação adicionais

A avaliação gera evaluation_results.json com métricas para cada pergunta (ocorrências de palavras-chave, heurística de comprimento). Pode estender este ficheiro para:

  • Use prompts de avaliação baseados em modelo.
  • Introduza a validação de saída estruturada.
  • Registre a latência e o uso do token.

Aqui está um exemplo da estrutura de saída 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": ...

    ...

  }
]

Resumo

Agora você tem:

  • Um protótipo funcional de agente único baseado em conhecimento interno e externo.
  • Um script de avaliação repetível que demonstra padrões de validação empresarial.
  • Caminho de atualização claro: mais ferramentas, orquestração multiagente, avaliação mais rica, implantação.

Esses padrões reduzem o atrito entre protótipo e produção: você pode adicionar fontes de dados, impor governança e integrar o monitoramento sem reescrever a lógica principal.

Próximos passos

Este tutorial demonstra a Fase 1 da jornada do programador – da ideia ao protótipo. Esta amostra mínima fornece a base para o desenvolvimento de IA empresarial. Para continuar a sua viagem, explore as próximas etapas:

Melhorias adicionais sugeridas

Etapa 2: Do protótipo à produção

Etapa 3: Produção até adoção