from hello_agents.protocols import ANPDiscovery, register_service from hello_agents import SimpleAgent, HelloAgentsLLM from hello_agents.tools.builtin import ANPTool import random from dotenv import load_dotenv load_dotenv() llm = HelloAgentsLLM() # 1. 创建服务发现中心 discovery = ANPDiscovery() # 2. 注册多个计算节点 for i in range(10): register_service( discovery=discovery, service_id=f"compute_node_{i}", service_name=f"计算节点{i}", service_type="compute", capabilities=["data_processing", "ml_training"], endpoint=f"http://node{i}:8000", metadata={ "load": random.uniform(0.1, 0.9), "cpu_cores": random.choice([4, 8, 16]), "memory_gb": random.choice([16, 32, 64]), "gpu": random.choice([True, False]) } ) print(f"✅ 注册了 {len(discovery.list_all_services())} 个计算节点") # 3. 创建任务调度Agent scheduler = SimpleAgent( name="任务调度器", llm=llm, system_prompt="""你是一个智能任务调度器,负责: 1. 分析任务需求 2. 选择最合适的计算节点 3. 分配任务 选择节点时考虑:负载、CPU核心数、内存、GPU等因素。 使用 service_discovery 工具时,必须提供 action 参数: - 查看所有节点:{"action": "discover_services", "service_type": "compute"} - 获取网络统计:{"action": "get_stats"}""" ) # 添加ANP工具 anp_tool = ANPTool( name="service_discovery", description="服务发现工具,可以查找和选择计算节点", discovery=discovery ) scheduler.add_tool(anp_tool) # 4. 智能任务分配 def assign_task(task_description): print(f"\n任务:{task_description}") print("=" * 50) # 让Agent智能选择节点 response = scheduler.run(f""" 请为以下任务选择最合适的计算节点: {task_description} 步骤: 1. 使用 service_discovery 工具查看所有可用的计算节点(service_type="compute") 2. 分析每个节点的特点(负载、CPU核心数、内存、GPU等) 3. 根据任务需求选择最合适的节点 4. 说明选择理由 请直接给出最终选择的节点ID和理由。 """) print(response) print("=" * 50) # 测试不同类型的任务 assign_task("训练一个大型深度学习模型,需要GPU支持") assign_task("处理大量文本数据,需要高内存") assign_task("运行轻量级数据分析任务")