geo/backend/app/agent_framework/tools/competitor_tools.py

64 lines
1.9 KiB
Python

"""Competitor 业务工具 - 将竞品分析服务注册为 FunctionTool"""
import logging
from typing import Any
from agentkit.tools.function_tool import FunctionTool
from agentkit.tools.registry import ToolRegistry
logger = logging.getLogger(__name__)
async def competitor_analyze(
brand_id: str,
analysis_types: list[str] | None = None,
period_days: int = 30,
) -> dict:
"""执行竞品策略分析"""
from app.services.competitor.competitor_analyzer_service import CompetitorAnalyzerService
service = CompetitorAnalyzerService()
result = await service.analyze_competitor(
brand_id=brand_id,
analysis_types=analysis_types,
period_days=period_days,
)
return result
async def competitor_gap_analysis(
brand_id: str,
period_days: int = 30,
) -> dict:
"""执行竞品差距分析"""
from app.services.competitor.competitor_analyzer_service import CompetitorAnalyzerService
service = CompetitorAnalyzerService()
result = await service.analyze_competitor(
brand_id=brand_id,
analysis_types=["citation_gap", "platform_coverage", "query_overlap"],
period_days=period_days,
)
return result
def register_competitor_tools(registry: ToolRegistry) -> None:
"""注册所有竞品分析相关工具"""
registry.register(
FunctionTool(
name="competitor_analyze",
description="执行竞品策略分析,对比品牌与竞品的引用数据",
func=competitor_analyze,
tags=["competitor", "analysis"],
)
)
registry.register(
FunctionTool(
name="competitor_gap_analysis",
description="执行竞品差距分析,识别差距领域和机会点",
func=competitor_gap_analysis,
tags=["competitor", "gap"],
)
)
logger.info("Competitor tools registered")