run.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/usr/bin/env python3
  2. """Run demand_grade_agent on one batch of demand names.
  3. 批次选择(哪些词、多少个)由调用方(通常是调度任务)负责,本入口只处理
  4. 传入的这一批,不做分页/自行遍历需求池。
  5. """
  6. from __future__ import annotations
  7. import json
  8. from typing import Any
  9. from agents.demand_grade_agent import create_demand_grade_agent
  10. def main(
  11. demand_names: list[str],
  12. biz_dt: str | None = None,
  13. tree_context: dict[str, Any] | None = None,
  14. ) -> None:
  15. agent = create_demand_grade_agent()
  16. print(f"demand_grade_agent ready | model={agent.model}")
  17. print(f"tools: {agent.tools.list_tools()}")
  18. print()
  19. names_str = "\n".join(f"- {name}" for name in demand_names)
  20. biz_dt_note = f"biz_dt={biz_dt}" if biz_dt else "未指定 biz_dt,请先调用 query_latest_biz_dt() 确定"
  21. handoff = (
  22. json.dumps(tree_context, ensure_ascii=False)
  23. if tree_context is not None
  24. else "未提供;请通过 build_grade_plan_context 查询。"
  25. )
  26. user_input = f"""
  27. 请对以下 {len(demand_names)} 个需求词逐一评级(S/A/B/C/D),{biz_dt_note}。
  28. 只处理这一批,不要尝试查找或列举更多需求词。判级完成后调用 batch_save_demand_grades 落库。
  29. 需求词列表:
  30. {names_str}
  31. 以下是统筹规划提供的节点组上下文(含批次热度等级、需求自身来源归一分、
  32. `local_heat` 局部热度与整树名次快照)。批次等级不等于需求最终等级。
  33. 必须结合整树位置、父节点、全部兄弟节点和需求自身分做校正;需要更细信息时可调用
  34. `query_category_local_heat`。不同来源原始 weight 不得直接相加:
  35. {handoff}
  36. """
  37. result = agent.run(user_input)
  38. print(result.content)
  39. print(f"\n[iterations={result.iterations}, tool_calls={result.tool_calls_made}]")
  40. if __name__ == "__main__":
  41. main(["因果报应", "降半旗"], biz_dt="20260714")