| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- """Read-only catalog for the business Agents shown in the web console."""
- from __future__ import annotations
- from importlib import import_module
- from pathlib import Path
- from typing import Any
- from supply_infra.agent_prompt_injection import (
- get_agent_document_injection,
- save_agent_document_injection,
- )
- _PROJECT_ROOT = Path(__file__).resolve().parents[2]
- _AGENTS: dict[str, dict[str, str]] = {
- "demand_belong_category_agent": {
- "display_name": "分配 Agent",
- "subtitle": "语义归属与分类挂载",
- "prompt_path": "agents/demand_belong_category_agent/prompt/system_prompt.md",
- "tools_module": "agents.demand_belong_category_agent.tools",
- },
- "demand_grade_agent": {
- "display_name": "分等级 Agent",
- "subtitle": "证据融合与优先级判断",
- "prompt_path": "agents/demand_grade_agent/prompt/system_prompt.md",
- "tools_module": "agents.demand_grade_agent.tools",
- },
- "demand_video_expand_agent": {
- "display_name": "拓展 Agent",
- "subtitle": "视频点位与需求拓展",
- "prompt_path": "agents/demand_video_expand_agent/prompt/system_prompt.md",
- "tools_module": "agents.demand_video_expand_agent.tools",
- },
- }
- def get_agent_detail(agent_name: str) -> dict[str, Any] | None:
- """Return the current system prompt and registered tool definitions."""
- spec = _AGENTS.get(agent_name)
- if spec is None:
- return None
- prompt_path = _PROJECT_ROOT / spec["prompt_path"]
- prompt = prompt_path.read_text(encoding="utf-8")
- tools_module = import_module(spec["tools_module"])
- tools = []
- for tool_fn in tools_module.ALL_TOOLS:
- tools.append(
- {
- "name": getattr(tool_fn, "_tool_name", tool_fn.__name__),
- "description": getattr(
- tool_fn,
- "_tool_description",
- (tool_fn.__doc__ or "").strip(),
- ),
- "parameters": getattr(tool_fn, "_tool_parameters", {}),
- }
- )
- return {
- "name": agent_name,
- "display_name": spec["display_name"],
- "subtitle": spec["subtitle"],
- "system_prompt": prompt,
- "document_injection": get_agent_document_injection(agent_name),
- "tools": tools,
- }
- def update_agent_document_injection(
- agent_name: str,
- *,
- content: str,
- enabled: bool,
- ) -> dict[str, Any] | None:
- """Persist the editable document injection for an allow-listed Agent."""
- if agent_name not in _AGENTS:
- return None
- return save_agent_document_injection(
- agent_name,
- content=content,
- enabled=enabled,
- )
|