# Système d'Orchestration Multi-Agent - Foundry Local Un système multi-agent avancé propulsé par Microsoft Foundry Local, démontrant la coordination intelligente des agents, la délégation de tâches spécialisées et des modèles de résolution collaborative de problèmes. ## Aperçu Cet exemple illustre comment construire des systèmes d'agents IA sophistiqués en utilisant Foundry Local, en mettant en œuvre les modèles officiels de Microsoft pour les appels de fonctions, l'orchestration des agents et les flux de travail collaboratifs en IA. ## Architecture ``` ┌─────────────────────────────────────────────────────────────────┐ │ Agent Orchestration System │ ├─────────────────┬─────────────────┬─────────────────┬───────────┤ │ Coordinator │ Specialist │ Function │ Context │ │ Agent │ Agents │ Registry │ Manager │ │ │ │ │ │ │ • Task Analysis │ • Code Expert │ • Tool Calling │ • Memory │ │ • Agent Router │ • Data Analyst │ • Validation │ • History │ │ • Workflow Mgmt │ • Research Bot │ • Error Handle │ • State │ │ • Result Merge │ • Writing Aid │ • Type Safety │ • Context │ └─────────────────┴─────────────────┴─────────────────┴───────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ Microsoft Foundry Local Service │ │ │ │ • Multi-Model Support • Function Calling API │ │ • Concurrent Inference • Tool Integration │ │ • Context Preservation • Performance Monitoring │ └─────────────────────────────────────────────────────────────────┘ ``` ## Fonctionnalités Clés ### 🤖 **Coordination Intelligente des Agents** - Analyse dynamique des tâches et sélection des agents - Répartition automatique de la charge de travail - Agrégation et synthèse des résultats - Protocoles de communication inter-agents ### 🔧 **Types d'Agents Spécialisés** - **Expert en Code** : Programmation, débogage, revue de code - **Analyste de Données** : Traitement des données, visualisation, insights - **Assistant de Recherche** : Collecte d'informations, synthèse - **Spécialiste en Rédaction** : Création de contenu, édition, documentation - **Résolveur de Problèmes** : Raisonnement complexe, prise de décision ### ⚡ **Appels de Fonctions Avancés** - Modèles d'appels de fonctions Foundry Local de Microsoft - Définitions d'outils sécurisées par type - Validation automatique des paramètres - Gestion des erreurs et reprise - Chaînage et composition des outils ### 🎯 **Routage Intelligent des Tâches** - Classification et analyse des intentions - Correspondance des capacités des agents - Équilibrage de charge et optimisation - Gestion des solutions de secours et redondance ## Prérequis ### Configuration Système - **Python** : 3.9+ avec support asyncio - **Mémoire** : 16 Go+ recommandé pour plusieurs agents - **Stockage** : 15 Go+ pour plusieurs modèles - **CPU/GPU** : Processeur multi-cœur, GPU recommandé ### Dépendances ```bash pip install foundry-local-sdk openai aiohttp asyncio pydantic rich typer ``` ### Configuration de Foundry Local ```powershell # Install and verify Foundry Local winget install Microsoft.FoundryLocal foundry --version # Download recommended models for agents foundry model download phi-4-mini foundry model download qwen2.5-coder-0.5b foundry model download phi-3.5-mini ``` ## Démarrage Rapide ### 1. Flux de Travail Multi-Agent de Base ```python from agentic_system import AgentOrchestrator, CodeAgent, ResearchAgent # Initialize the orchestrator orchestrator = AgentOrchestrator() # Add specialized agents await orchestrator.add_agent(CodeAgent("phi-4-mini")) await orchestrator.add_agent(ResearchAgent("qwen2.5-coder-0.5b")) # Execute a complex task result = await orchestrator.execute_task( "Create a Python script that analyzes web traffic data and generates a report" ) print(result.summary) ``` ### 2. Création d'Agents Personnalisés ```python from agentic_system import BaseAgent, tool class DataAnalystAgent(BaseAgent): """Specialized agent for data analysis tasks.""" @tool async def analyze_dataset(self, data_path: str, analysis_type: str) -> dict: """Analyze a dataset and return insights.""" # Implementation here pass @tool async def create_visualization(self, data: dict, chart_type: str) -> str: """Create data visualizations.""" # Implementation here pass # Use the custom agent agent = DataAnalystAgent("qwen2.5-0.5b") result = await agent.analyze_dataset("sales_data.csv", "trend_analysis") ``` ### 3. Intégration des Appels de Fonctions ```python # Define tools following Microsoft patterns tools = [ { "name": "web_search", "description": "Search the web for information", "parameters": { "query": {"description": "Search query", "type": "string"}, "max_results": {"description": "Maximum results", "type": "integer"} } }, { "name": "code_analyzer", "description": "Analyze code quality and suggest improvements", "parameters": { "code": {"description": "Code to analyze", "type": "string"}, "language": {"description": "Programming language", "type": "string"} } } ] # Register tools with orchestrator orchestrator.register_tools(tools) ``` ## Structure du Projet ``` 09/ ├── README.md # This documentation ├── requirements.txt # Python dependencies ├── agentic_system/ │ ├── __init__.py # Package initialization │ ├── orchestrator.py # Main orchestrator class │ ├── base_agent.py # Base agent implementation │ ├── specialized_agents/ │ │ ├── __init__.py │ │ ├── code_agent.py # Programming specialist │ │ ├── research_agent.py # Research specialist │ │ ├── data_agent.py # Data analysis specialist │ │ ├── writing_agent.py # Content creation specialist │ │ └── solver_agent.py # Problem solving specialist │ ├── tools/ │ │ ├── __init__.py │ │ ├── function_registry.py # Tool management │ │ ├── web_tools.py # Web interaction tools │ │ ├── file_tools.py # File system tools │ │ ├── code_tools.py # Code analysis tools │ │ └── data_tools.py # Data processing tools │ ├── coordination/ │ │ ├── __init__.py │ │ ├── task_router.py # Task routing logic │ │ ├── result_merger.py # Result aggregation │ │ ├── context_manager.py # Context and memory │ │ └── workflow_engine.py # Workflow management │ └── utils/ │ ├── __init__.py │ ├── foundry_client.py # Foundry Local integration │ ├── logging_config.py # Logging setup │ └── validation.py # Input validation ├── examples/ │ ├── basic_coordination.py # Simple multi-agent example │ ├── complex_workflow.py # Advanced workflow example │ ├── custom_agents.py # Custom agent creation │ ├── function_calling.py # Tool integration example │ └── interactive_demo.py # Interactive demonstration ├── tools/ │ ├── web_search.py # Web search implementation │ ├── code_analyzer.py # Code analysis tools │ ├── data_processor.py # Data processing tools │ └── file_manager.py # File system operations └── tests/ ├── test_orchestrator.py # Orchestrator tests ├── test_agents.py # Agent tests ├── test_tools.py # Tool tests └── test_integration.py # Integration tests ``` ## Exploration des Types d'Agents ### 1. Agent Expert en Code ```python class CodeAgent(BaseAgent): """Expert in programming, debugging, and code review.""" specialties = [ "code_generation", "debugging", "code_review", "refactoring", "testing", "documentation" ] @tool async def generate_code(self, specification: str, language: str) -> str: """Generate code from specifications.""" @tool async def debug_code(self, code: str, error_message: str) -> dict: """Debug code and suggest fixes.""" @tool async def review_code(self, code: str, criteria: list) -> dict: """Perform comprehensive code review.""" ``` ### 2. Agent Assistant de Recherche ```python class ResearchAgent(BaseAgent): """Specialized in information gathering and analysis.""" specialties = [ "web_research", "information_synthesis", "fact_checking", "summarization", "trend_analysis" ] @tool async def research_topic(self, topic: str, depth: str) -> dict: """Research a topic comprehensively.""" @tool async def summarize_information(self, sources: list, style: str) -> str: """Summarize information from multiple sources.""" @tool async def fact_check(self, claims: list) -> dict: """Verify factual claims.""" ``` ### 3. Agent d'Analyse de Données ```python class DataAgent(BaseAgent): """Expert in data processing and analysis.""" specialties = [ "data_analysis", "statistical_analysis", "visualization", "pattern_recognition", "predictive_modeling" ] @tool async def analyze_data(self, dataset: str, analysis_type: str) -> dict: """Perform data analysis.""" @tool async def create_visualization(self, data: dict, viz_type: str) -> str: """Create data visualizations.""" @tool async def statistical_test(self, data: dict, test_type: str) -> dict: """Perform statistical tests.""" ``` ## Modèles d'Orchestration ### 1. Flux de Travail Séquentiel ```python # Define a sequential workflow workflow = orchestrator.create_workflow("sequential") workflow.add_step("research", ResearchAgent, "gather_requirements") workflow.add_step("design", CodeAgent, "create_architecture") workflow.add_step("implement", CodeAgent, "write_code") workflow.add_step("test", CodeAgent, "create_tests") result = await workflow.execute("Build a REST API for user management") ``` ### 2. Exécution Parallèle ```python # Execute tasks in parallel parallel_tasks = [ ("research_market", ResearchAgent, "analyze_market_trends"), ("analyze_competitors", DataAgent, "competitor_analysis"), ("technical_feasibility", CodeAgent, "assess_technical_requirements") ] results = await orchestrator.execute_parallel(parallel_tasks) synthesized = await orchestrator.synthesize_results(results) ``` ### 3. Sélection Dynamique des Agents ```python # Automatic agent selection based on task analysis task = "Create a machine learning model to predict customer churn" # Orchestrator analyzes task and selects appropriate agents selected_agents = await orchestrator.analyze_task_requirements(task) # Returns: [DataAgent, CodeAgent, ResearchAgent] result = await orchestrator.execute_with_agents(task, selected_agents) ``` ## Intégration des Appels de Fonctions ### Modèles Foundry Local de Microsoft ```python # Define tools following Microsoft's function calling schema def define_foundry_tools(): return [ { "name": "analyze_code_quality", "description": "Analyze code quality and suggest improvements", "parameters": { "code": { "description": "The source code to analyze", "type": "string" }, "language": { "description": "Programming language", "type": "string" }, "criteria": { "description": "Analysis criteria", "type": "array", "items": {"type": "string"} } } }, { "name": "search_documentation", "description": "Search technical documentation", "parameters": { "query": {"description": "Search query", "type": "string"}, "source": {"description": "Documentation source", "type": "string"} } } ] # Integration with Foundry Local async def setup_function_calling(): tools = define_foundry_tools() # Configure Foundry Local for function calling client = openai.OpenAI( base_url=manager.endpoint, api_key=manager.api_key ) # Use tools in conversation response = await client.chat.completions.create( model=manager.get_model_info("phi-4-mini").id, messages=[ {"role": "user", "content": "Analyze this Python code for quality issues"} ], tools=[{"type": "function", "function": tool} for tool in tools], tool_choice="auto" ) ``` ## Fonctionnalités Avancées de Coordination ### 1. Gestion du Contexte ```python class ContextManager: """Manages shared context across agents.""" async def share_context(self, agent_id: str, context: dict): """Share context with specific agent.""" async def get_shared_memory(self) -> dict: """Retrieve shared memory state.""" async def update_global_state(self, updates: dict): """Update global orchestrator state.""" ``` ### 2. Synthèse des Résultats ```python class ResultMerger: """Intelligently merge results from multiple agents.""" async def merge_analyses(self, results: list) -> dict: """Merge analysis results.""" async def resolve_conflicts(self, conflicting_results: list) -> dict: """Resolve conflicting agent outputs.""" async def create_summary(self, all_results: dict) -> str: """Create comprehensive summary.""" ``` ### 3. Assurance Qualité ```python class QualityController: """Ensures output quality and consistency.""" async def validate_output(self, result: dict, criteria: list) -> bool: """Validate agent output quality.""" async def cross_check_facts(self, claims: list) -> dict: """Cross-verify facts across agents.""" async def ensure_consistency(self, outputs: list) -> dict: """Ensure consistent outputs.""" ``` ## Optimisation des Performances ### 1. Équilibrage de Charge des Modèles ```python # Distribute models across agents for optimal resource usage model_allocation = { "code_tasks": "phi-4-mini", "research_tasks": "qwen2.5-coder-0.5b", "analysis_tasks": "phi-3.5-mini", "general_tasks": "phi-4-mini" } orchestrator.configure_model_allocation(model_allocation) ``` ### 2. Mise en Cache et Mémoire ```python # Implement intelligent caching cache_config = { "response_cache": True, "context_cache": True, "tool_result_cache": True, "cache_ttl": 3600 # 1 hour } orchestrator.configure_caching(cache_config) ``` ### 3. Exécution Concurrente ```python # Optimize for parallel processing concurrency_config = { "max_concurrent_agents": 4, "agent_pool_size": 8, "task_queue_size": 100, "timeout_seconds": 300 } orchestrator.configure_concurrency(concurrency_config) ``` ## Exemples d'Utilisation ### Exemple 1 : Flux de Travail en Développement Logiciel ```python async def software_development_workflow(): """Complete software development using multiple agents.""" # Initialize orchestrator with specialized agents orchestrator = AgentOrchestrator() await orchestrator.add_agent(ResearchAgent("qwen2.5-coder-0.5b")) await orchestrator.add_agent(CodeAgent("phi-4-mini")) await orchestrator.add_agent(DataAgent("phi-3.5-mini")) # Define the development task task = """ Create a web application that: 1. Analyzes user behavior data 2. Provides real-time analytics dashboard 3. Includes user authentication 4. Has comprehensive tests """ # Execute coordinated workflow result = await orchestrator.execute_workflow( task=task, workflow_type="software_development", quality_gates=["code_review", "testing", "security_check"] ) return result ``` ### Exemple 2 : Recherche et Analyse ```python async def comprehensive_research(): """Multi-agent research coordination.""" research_query = "Impact of AI on software development productivity" # Parallel research execution tasks = [ ("literature_review", ResearchAgent, research_query), ("data_analysis", DataAgent, "productivity_metrics"), ("case_studies", ResearchAgent, "ai_adoption_cases"), ("technical_analysis", CodeAgent, "ai_tool_evaluation") ] results = await orchestrator.execute_parallel(tasks) # Synthesize findings final_report = await orchestrator.synthesize_research( results=results, format="comprehensive_report", include_recommendations=True ) return final_report ``` ### Exemple 3 : Session de Résolution de Problèmes ```python async def collaborative_problem_solving(): """Multi-agent collaborative problem solving.""" problem = """ A company's API response times have increased 300% over the past month. Analyze the issue and propose solutions. """ # Deploy specialist agents investigation_plan = await orchestrator.create_investigation_plan(problem) agents_deployed = [ (CodeAgent, "analyze_code_performance"), (DataAgent, "analyze_performance_metrics"), (ResearchAgent, "research_similar_issues"), (SolverAgent, "propose_solutions") ] # Coordinate investigation findings = await orchestrator.coordinate_investigation( problem=problem, agents=agents_deployed, investigation_plan=investigation_plan ) # Generate action plan action_plan = await orchestrator.create_action_plan(findings) return action_plan ``` ## Configuration et Personnalisation ### Configuration des Agents ```python # Configure individual agents agent_configs = { "CodeAgent": { "model": "phi-4-mini", "temperature": 0.3, "max_tokens": 2000, "specialization_level": "expert" }, "ResearchAgent": { "model": "qwen2.5-coder-0.5b", "temperature": 0.7, "max_tokens": 1500, "research_depth": "comprehensive" } } orchestrator.configure_agents(agent_configs) ``` ### Personnalisation des Flux de Travail ```python # Custom workflow definitions custom_workflows = { "data_science_project": [ "data_collection", "exploratory_analysis", "model_development", "validation_testing", "deployment_preparation" ], "security_audit": [ "vulnerability_scan", "code_review", "penetration_testing", "compliance_check", "remediation_plan" ] } orchestrator.register_workflows(custom_workflows) ``` ## Suivi et Analyse ### Suivi des Performances ```python # Monitor orchestrator performance metrics = await orchestrator.get_performance_metrics() print(f"Tasks Completed: {metrics.tasks_completed}") print(f"Average Response Time: {metrics.avg_response_time}s") print(f"Success Rate: {metrics.success_rate}%") print(f"Agent Utilization: {metrics.agent_utilization}") ``` ### Indicateurs de Qualité ```python # Track output quality quality_report = await orchestrator.generate_quality_report() print(f"Output Consistency: {quality_report.consistency_score}") print(f"Factual Accuracy: {quality_report.accuracy_score}") print(f"Completeness: {quality_report.completeness_score}") ``` ## Résultats d'Apprentissage Après avoir complété cet exemple, vous comprendrez : 1. **Architecture des Systèmes Multi-Agents** - Modèles de coordination des agents - Stratégies de distribution des tâches - Techniques de synthèse des résultats - Gestion du contexte entre les agents 2. **Intégration de Microsoft Foundry Local** - Mise en œuvre des appels de fonctions - Modèles d'intégration des outils - Orchestration multi-modèles - Optimisation des performances 3. **Orchestration Avancée en IA** - Conception et exécution des flux de travail - Mécanismes d'assurance qualité - Gestion des erreurs et reprise - Considérations sur l'évolutivité 4. **Conception de Systèmes en Production** - Suivi et analyse - Gestion de la configuration - Bonnes pratiques de sécurité - Ajustement des performances ## Prochaines Étapes - **Exemple 10** : Foundry Local comme Intégration d'Outils - **Sujets Avancés** : Développement d'agents personnalisés - **Mise à l'Échelle** : Systèmes d'agents distribués - **Intégration** : Intégration dans les flux de travail d'entreprise ## Contribution Consultez les directives du dépôt principal pour les instructions de contribution. ## Licence Cet exemple suit la même licence que le projet Microsoft Foundry Local. ---