fashion_agent.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. """
  2. 穿衣建议智能体
  3. 专门处理基于天气信息的穿衣建议
  4. """
  5. from hello_agents import SimpleAgent, HelloAgentsLLM
  6. import os
  7. from dotenv import load_dotenv
  8. load_dotenv()
  9. class FashionAgent:
  10. """穿衣建议智能体"""
  11. def __init__(self, name="时尚顾问"):
  12. """初始化穿衣建议智能体"""
  13. self.name = name
  14. self.agent = SimpleAgent(
  15. name=name,
  16. llm=HelloAgentsLLM(
  17. api_key=os.environ.get("LLM_API_KEY"),
  18. base_url=os.environ.get("LLM_BASE_URL"),
  19. model=os.environ.get("LLM_MODEL_ID")
  20. )
  21. )
  22. # 设置智能体的系统提示词
  23. self._setup_prompt()
  24. def _setup_prompt(self):
  25. """设置智能体的系统提示词"""
  26. system_prompt = """你是一个专业的时尚顾问,专门根据天气信息提供穿衣建议。
  27. 你的职责:
  28. 1. 根据天气信息(温度、湿度、风速、天气状况)提供合适的穿衣建议
  29. 2. 考虑不同季节、场合和人群的穿衣需求
  30. 3. 提供具体的服装搭配建议,包括上衣、裤子、外套、鞋子等
  31. 4. 考虑保暖、防晒、防雨等实际需求
  32. 5. 给出时尚且实用的建议
  33. 穿衣建议指南:
  34. - 高温天气(>30°C):建议轻薄透气的衣物,注意防晒
  35. - 温暖天气(20-30°C):建议舒适的单层衣物
  36. - 凉爽天气(10-20°C):建议长袖衣物,可搭配薄外套
  37. - 寒冷天气(<10°C):建议保暖衣物,如毛衣、羽绒服等
  38. - 雨天:建议防水外套和雨具
  39. - 大风天气:建议防风衣物
  40. 请根据具体的天气信息提供详细、实用的穿衣建议。"""
  41. self.agent.system_prompt = system_prompt
  42. def get_fashion_advice(self, weather_info):
  43. """
  44. 基于天气信息获取穿衣建议
  45. Args:
  46. weather_info: 天气信息字符串或字典
  47. Returns:
  48. 穿衣建议字符串
  49. """
  50. # 构建查询提示
  51. query = f"""请根据以下天气信息提供穿衣建议:
  52. 天气信息:
  53. {weather_info}
  54. 请提供详细的穿衣建议,包括:
  55. 1. 适合的服装类型
  56. 2. 具体的搭配建议
  57. 3. 注意事项
  58. 4. 时尚建议"""
  59. # 使用智能体获取建议
  60. response = self.agent.run(query)
  61. return response
  62. def get_detailed_fashion_advice(self, weather_data):
  63. """
  64. 基于结构化天气数据获取更详细的穿衣建议
  65. Args:
  66. weather_data: 包含天气信息的字典
  67. Returns:
  68. 详细的穿衣建议字符串
  69. """
  70. if isinstance(weather_data, dict):
  71. # 从字典中提取关键信息
  72. temperature = weather_data.get('temperature', '未知')
  73. description = weather_data.get('description', '未知')
  74. humidity = weather_data.get('humidity', '未知')
  75. wind_speed = weather_data.get('wind_speed', '未知')
  76. query = f"""请根据以下详细的天气数据提供专业的穿衣建议:
  77. 详细天气信息:
  78. - 温度: {temperature}°C
  79. - 天气状况: {description}
  80. - 湿度: {humidity}%
  81. - 风速: {wind_speed} m/s
  82. 请提供:
  83. 1. 适合的服装材质和类型
  84. 2. 分层穿衣建议(适合不同温度变化)
  85. 3. 配饰建议(帽子、围巾、手套等)
  86. 4. 特殊天气条件下的注意事项
  87. 5. 时尚搭配技巧"""
  88. else:
  89. query = f"请根据以下天气信息提供穿衣建议:\n\n{weather_data}"
  90. response = self.agent.run(query)
  91. return response
  92. def main():
  93. """测试函数"""
  94. # 创建穿衣建议智能体
  95. fashion_agent = FashionAgent()
  96. # 测试数据
  97. test_weather = """🏙️ 城市: Shanghai
  98. 🌡️ 温度: 25°C
  99. 📝 天气: 晴朗
  100. 💧 湿度: 60%
  101. 🌬️ 风速: 3 m/s"""
  102. print("=== 穿衣建议智能体测试 ===")
  103. advice = fashion_agent.get_fashion_advice(test_weather)
  104. print(advice)
  105. if __name__ == "__main__":
  106. main()