Este exemplo demonstra como usar o Microsoft Foundry Local como um serviço de API REST sem depender do SDK OpenAI. Mostra padrões de integração direta via HTTP para máximo controlo e personalização.
Baseado nos padrões oficiais do Microsoft Foundry Local, este exemplo fornece:
- Integração direta com API REST usando FoundryLocalManager
- Implementação personalizada de cliente HTTP
- Gestão de modelos e monitorização de saúde
- Manipulação de respostas em streaming e não-streaming
- Tratamento de erros e lógica de repetição pronta para produção
-
Instalação do Foundry Local
# Install from GitHub releases winget install Microsoft.FoundryLocal -
Dependências Python
pip install foundry-local-sdk requests asyncio aiohttp
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Your App │───▶│ REST API Client │───▶│ Foundry Local │
│ │ │ │ │ Service │
│ - Custom Logic │ │ - HTTP Requests │ │ - Model Loading │
│ - Business Rules│ │ - Authentication │ │ - Inference │
│ - Data Pipeline │ │ - Error Handling │ │ - Health Check │
└─────────────────┘ └──────────────────┘ └─────────────────┘
- Chamadas API REST puras sem dependências de SDK
- Autenticação e cabeçalhos personalizados
- Controlo total sobre o tratamento de pedidos/respostas
- Carregamento e descarregamento dinâmico de modelos
- Monitorização de saúde e verificações de estado
- Coleta de métricas de desempenho
- Mecanismos de repetição com backoff exponencial
- Circuit breaker para tolerância a falhas
- Registo e monitorização abrangentes
- Respostas em streaming para aplicações em tempo real
- Processamento em lote para cenários de alta capacidade
- Análise e validação personalizada de respostas
from api_client import FoundryAPIClient
# Initialize the API client
client = FoundryAPIClient()
# Simple completion
response = await client.complete(
prompt="Explain quantum computing",
model="phi-4-mini",
max_tokens=500
)
print(response.content)# Stream responses for real-time applications
async for chunk in client.stream_complete(
prompt="Write a story about AI",
model="phi-4-mini"
):
print(chunk.content, end="", flush=True)# Check service health
health = await client.health_check()
print(f"Service Status: {health.status}")
print(f"Active Models: {health.loaded_models}")
print(f"Memory Usage: {health.memory_usage}")07/
├── README.md # This documentation
├── requirements.txt # Python dependencies
├── api_client.py # Core API client implementation
├── health_monitor.py # Health checking and monitoring
├── examples/
│ ├── basic_usage.py # Simple API integration example
│ ├── streaming.py # Streaming response example
│ ├── batch_processing.py # Batch processing example
│ └── production.py # Production-ready implementation
└── tests/
├── test_api_client.py # Unit tests for API client
└── test_integration.py # Integration tests
Este exemplo segue os padrões oficiais da Microsoft:
- Integração com SDK: Usa
FoundryLocalManagerpara gestão de serviços - Endpoints REST: Chamadas diretas para
/v1/chat/completionse outros endpoints - Autenticação: Gestão adequada de chaves API para serviços locais
- Gestão de Modelos: Listagem de catálogo, download e padrões de carregamento
- Tratamento de Erros: Códigos de erro e respostas recomendados pela Microsoft
-
Instalar Dependências
pip install -r requirements.txt
-
Executar Exemplo Básico
python examples/basic_usage.py
-
Experimentar Streaming
python examples/streaming.py
-
Configuração para Produção
python examples/production.py
Variáveis de ambiente para personalização:
FOUNDRY_MODEL: Modelo padrão a usar (padrão: "phi-4-mini")FOUNDRY_TIMEOUT: Tempo limite de pedido em segundos (padrão: 30)FOUNDRY_RETRIES: Número de tentativas de repetição (padrão: 3)FOUNDRY_LOG_LEVEL: Nível de registo (padrão: "INFO")
- Gestão de Conexões: Reutilizar conexões HTTP para melhor desempenho
- Tratamento de Erros: Implementar lógica de repetição adequada com backoff exponencial
- Monitorização de Recursos: Acompanhar o uso de memória e desempenho dos modelos
- Segurança: Usar autenticação adequada mesmo para serviços locais
- Testes: Incluir testes unitários e de integração
Serviço Não Está a Funcionar
# Check Foundry Local status
foundry status
# Start if needed
foundry startProblemas no Carregamento de Modelos
# List available models
foundry model list
# Download specific model
foundry model download phi-4-miniErros de Conexão
- Verificar se o Foundry Local está a funcionar na porta correta
- Verificar configurações de firewall
- Garantir cabeçalhos de autenticação adequados
- Pooling de Conexões: Usar objetos de sessão para múltiplos pedidos
- Operações Assíncronas: Utilizar asyncio para pedidos concorrentes
- Caching: Cache de respostas de modelos onde apropriado
- Monitorização: Acompanhar tempos de resposta e ajustar tempos limite
Após completar este exemplo, irá compreender:
- Integração direta com API REST do Foundry Local
- Padrões de implementação de cliente HTTP personalizado
- Tratamento de erros e monitorização prontos para produção
- Arquitetura de serviços Microsoft Foundry Local
- Técnicas de otimização de desempenho para serviços de IA locais
- Explorar Exemplo 08: Aplicação de Chat no Windows 11
- Experimentar Exemplo 09: Orquestração Multi-Agente
- Aprender Exemplo 10: Foundry Local como Integração de Ferramentas