| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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("运行轻量级数据分析任务")
|