risk_assess.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. """
  2. 健康风险评估 Agent
  3. """
  4. import json
  5. from typing import Dict, Any, List
  6. from agents.base import BaseAgent
  7. from core.exceptions import AgentException
  8. class RiskAssessmentAgent(BaseAgent):
  9. def __init__(self, task_id=None, llm=None):
  10. super().__init__(name="RiskAssessment", task_id=task_id, llm=llm)
  11. async def run(self, input_data: Dict[str, Any]) -> Dict[str, Any]:
  12. try:
  13. indicator_results = input_data["indicator_results"]
  14. if not indicator_results:
  15. raise AgentException("缺少健康指标分析结果")
  16. self.set_state("running")
  17. result = await self._assess_risk(indicator_results)
  18. self.set_state("completed")
  19. return result
  20. except Exception as e:
  21. self.set_state("error")
  22. raise AgentException(f"RiskAssessmentAgent 执行失败: {str(e)}")
  23. async def _assess_risk(self, indicator_results: Dict[str, Any]) -> Dict[str, Any]:
  24. risk_prompt = f"""
  25. 你是一名专业的健康风险评估专家。
  26. 以下是某用户的健康指标分析结果(已由其他智能体完成分析):
  27. {indicator_results}
  28. 请你完成以下任务:
  29. 1. 综合判断用户的整体健康风险等级(low / medium / high)
  30. 2. 列出主要风险因素(不超过 5 条)
  31. 3. 推测可能存在的潜在健康风险或疾病方向
  32. 4. 给出你评估的置信度(0~1 之间的小数)
  33. 请以 JSON 格式返回,例如:
  34. {{
  35. "overall_risk_level": "medium",
  36. "risk_factors": ["高胆固醇", "睡眠不足"],
  37. "potential_conditions": ["心血管疾病风险"],
  38. "confidence": 0.78
  39. }}
  40. """
  41. response = await self.think(risk_prompt)
  42. try:
  43. result = json.loads(response)
  44. except json.JSONDecodeError:
  45. result = {
  46. "summary": "解析失败,返回原始结果",
  47. "raw_response": response
  48. }
  49. self.set_state("completed")
  50. return result
  51. def get_required_fields(self) -> list[str]:
  52. return ["age", "weight", "height", "blood_pressure"]