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