48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
"""
|
|||
|
|
成本追踪API端点
|
||
|
|
"""
|
||
|
|
|
||
|
|
from fastapi import APIRouter
|
||
|
|
from gfa_core.mas.cost_tracker import get_cost_tracker
|
||
|
|
|
||
|
|
router = APIRouter(prefix="/cost", tags=["cost"])
|
||
|
|
|
||
|
|
|
||
|
|
@router.get("/summary")
|
||
|
|
async def get_cost_summary():
|
||
|
|
"""获取成本摘要"""
|
||
|
|
tracker = get_cost_tracker()
|
||
|
|
return tracker.get_summary()
|
||
|
|
|
||
|
|
|
||
|
|
@router.get("/report")
|
||
|
|
async def get_cost_report():
|
||
|
|
"""获取成本报告(文本格式)"""
|
||
|
|
tracker = get_cost_tracker()
|
||
|
|
return {"report": tracker.generate_report()}
|
||
|
|
|
||
|
|
|
||
|
|
@router.get("/agents/{agent_name}")
|
||
|
|
async def get_agent_cost(agent_name: str):
|
||
|
|
"""获取特定Agent的成本统计"""
|
||
|
|
tracker = get_cost_tracker()
|
||
|
|
stats = tracker.get_agent_stats(agent_name)
|
||
|
|
if agent_name in stats:
|
||
|
|
s = stats[agent_name]
|
||
|
|
return {
|
||
|
|
"agent_name": s.agent_name,
|
||
|
|
"call_count": s.call_count,
|
||
|
|
"total_tokens": s.total_tokens,
|
||
|
|
"total_cost": s.total_cost,
|
||
|
|
"avg_cost_per_call": s.avg_cost_per_call,
|
||
|
|
"last_call": s.last_call,
|
||
|
|
}
|
||
|
|
return {"error": "Agent not found"}
|
||
|
|
|
||
|
|
|
||
|
|
@router.get("/suggestions")
|
||
|
|
async def get_optimization_suggestions():
|
||
|
|
"""获取优化建议"""
|
||
|
|
tracker = get_cost_tracker()
|
||
|
|
return {"suggestions": tracker.get_optimization_suggestions()}
|