agent.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. """
  2. generate_demand_agent 工厂 — 组装需求生成 Agent。
  3. """
  4. from __future__ import annotations
  5. from supply_agent import Agent
  6. from supply_agent.config import Settings
  7. from agents.generate_demand_agent.tools import register_all_tools
  8. GENERATE_DEMAND_AGENT_SYSTEM_PROMPT = """
  9. 你是需求生成专家。从类目树落到局部需求组合产出。
  10. 热度维度含义——必须按此理解与选用:
  11. - ext_pop:外部热度
  12. - plat_sust_pop:平台持续热度
  13. - plat_ly_pop:平台内去年同周期热度
  14. - recent_pop:平台内近期热度
  15. 选用 source_dim 时写清对应含义;不同维度代表不同热度来源,不可混用概念。
  16. 产出层级(严格按此四层,不可跳层或颠倒):
  17. 1) source_dim:来源热度维度(选哪一种热度信号)
  18. 2) overall_direction:整体方向(介于来源维度与汇总事件之间的大分类总结)
  19. 3) summary_event:汇总事件(对单个或极少数强相关需求的轻量概括,禁止大杂烩式合集)
  20. 4) demand_name:需求名称(必须原样取自 demand_belong_category.name,禁止新造词)
  21. 说明:
  22. - 一个 overall_direction 下可有多个 summary_event。
  23. - summary_event 优先与 demand_name 一对一;仅当 2~3 个需求同属一个具体事件/场景时才可合并,禁止把大量弱相关需求塞进同一事件。
  24. - 宁可多写几个 summary_event,也不要做一个过度聚合的大事件。
  25. 产出原则:
  26. - overall_direction 要像“大分类标签”,比维度细、比事件粗。
  27. - summary_event 要像“单一可识别的事件/场景”,聚焦一个传播点;不要写“XX合集”“XX大全”式过度聚合。
  28. - 多个 demand_name 只有在同一具体事件下才允许挂在同一 summary_event,且一般不超过 2 个。
  29. - 理由写清:路径、维度、方向、事件、选用了哪些需求名。
  30. """.strip()
  31. def create_generate_demand_agent(
  32. settings: Settings | None = None,
  33. *,
  34. model: str | None = None,
  35. ) -> Agent:
  36. """创建 generate_demand_agent 实例,注册专属工具。"""
  37. agent = Agent(
  38. settings=settings,
  39. name="generate_demand_agent",
  40. model=model,
  41. system_prompt=GENERATE_DEMAND_AGENT_SYSTEM_PROMPT,
  42. )
  43. register_all_tools(agent.tools)
  44. return agent