64 lines
1.9 KiB
Python
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")
|