refactor(exploration): share one fetch+aggregate helper across outlets
report, markdown and analysis each repeated the summarize_exploration(repo.list_by_campaign(...)) shape; collapse it into summarize_campaign_exploration so the aggregation has one home.
This commit is contained in:
parent
936640fb36
commit
ef4c094082
@ -14,7 +14,7 @@ from typing import Any, Awaitable, Callable, Optional
|
||||
from sqlmodel import Session
|
||||
|
||||
from agenteval.evaluation.report import generate_campaign_report
|
||||
from agenteval.exploration.summary import summarize_exploration
|
||||
from agenteval.exploration.summary import summarize_campaign_exploration
|
||||
from agenteval.model_gateway import ModelGateway
|
||||
from agenteval.models import Campaign, ModelCapability, RunStatus
|
||||
from agenteval.services.model_configs import (
|
||||
@ -27,7 +27,6 @@ from agenteval.storage.model_config_repository import ModelConfigRepository
|
||||
from agenteval.storage.repository import (
|
||||
CampaignAnalysisRepository,
|
||||
CampaignRepository,
|
||||
ExplorationSessionRepository,
|
||||
RunRepository,
|
||||
ScenarioRepository,
|
||||
)
|
||||
@ -309,14 +308,13 @@ async def execute_campaign_analysis(
|
||||
runs = RunRepository(session).list_by_campaign(campaign_id)
|
||||
scenario_names = {s.id: s.name for s in ScenarioRepository(session).list_all()}
|
||||
report = generate_campaign_report(campaign, runs, scenario_names=scenario_names)
|
||||
exploration_sessions = ExplorationSessionRepository(session).list_by_campaign(campaign_id)
|
||||
result = await analyze_campaign(
|
||||
campaign=campaign,
|
||||
report=report,
|
||||
failure_samples=collect_failure_samples(campaign_id, session),
|
||||
valid_run_ids={r.id for r in runs if r.id},
|
||||
chat_client=client,
|
||||
exploration_summary=summarize_exploration(exploration_sessions),
|
||||
exploration_summary=summarize_campaign_exploration(session, campaign_id),
|
||||
)
|
||||
except Exception as exc:
|
||||
_logger.warning("活动 %s 智能分析失败: %s", campaign_id, exc)
|
||||
|
||||
@ -10,6 +10,8 @@ findings 全量收各档发现,poor 档排前)。这是体验记录这条第
|
||||
from collections import Counter
|
||||
from typing import Any, Optional
|
||||
|
||||
from sqlmodel import Session
|
||||
|
||||
from agenteval.exploration.models import ExplorationSession
|
||||
|
||||
_RATING_SEVERITY = {"poor": 0, "acceptable": 1, "good": 2}
|
||||
@ -48,6 +50,13 @@ def summarize_exploration(sessions: list[ExplorationSession]) -> Optional[dict[s
|
||||
}
|
||||
|
||||
|
||||
def summarize_campaign_exploration(db_session: Session, campaign_id: str) -> Optional[dict[str, Any]]:
|
||||
"""取数 + 聚合一步完成:报告 / 分析 / 导出三个出口共用的探索摘要取法。"""
|
||||
from agenteval.storage.repository import ExplorationSessionRepository
|
||||
|
||||
return summarize_exploration(ExplorationSessionRepository(db_session).list_by_campaign(campaign_id))
|
||||
|
||||
|
||||
def _summarize_judge_reviews(sessions: list[ExplorationSession]) -> Optional[dict[str, Any]]:
|
||||
"""只纳入复核完成的会话;findings 全量收各档发现(poor 档排前),summaries 收复核总体结论。"""
|
||||
findings: list[dict[str, Any]] = []
|
||||
|
||||
@ -27,7 +27,7 @@ from agenteval.evaluation.report import (
|
||||
)
|
||||
from agenteval.evaluation.report_render import render_campaign_markdown
|
||||
from agenteval.exploration.settlement import settle_campaign_sessions
|
||||
from agenteval.exploration.summary import summarize_exploration
|
||||
from agenteval.exploration.summary import summarize_campaign_exploration
|
||||
from agenteval.models import Campaign, CampaignPlanEntry, CampaignStatus, ExplorationBudgetConfig, ExplorationSeeds
|
||||
from agenteval.storage.db import iso_utc, utc_now
|
||||
from agenteval.storage.model_config_repository import ModelConfigRepository
|
||||
@ -35,7 +35,6 @@ from agenteval.storage.repository import (
|
||||
CampaignAnalysisRepository,
|
||||
CampaignPeriodComparisonRepository,
|
||||
CampaignRepository,
|
||||
ExplorationSessionRepository,
|
||||
RunRepository,
|
||||
ScenarioRepository,
|
||||
TargetRepository,
|
||||
@ -135,7 +134,7 @@ async def get_campaign_report(campaign_id: str, session: Session = Depends(get_d
|
||||
runs = RunRepository(session).list_by_campaign(campaign_id)
|
||||
scenario_names = {s.id: s.name for s in ScenarioRepository(session).list_all()}
|
||||
report = generate_campaign_report(campaign, runs, scenario_names=scenario_names)
|
||||
exploration = summarize_exploration(ExplorationSessionRepository(session).list_by_campaign(campaign_id))
|
||||
exploration = summarize_campaign_exploration(session, campaign_id)
|
||||
if exploration is not None:
|
||||
report["exploration"] = exploration
|
||||
return report
|
||||
@ -182,7 +181,7 @@ async def get_campaign_report_markdown(campaign_id: str, session: Session = Depe
|
||||
generate_campaign_report(campaign, runs, scenario_names=scenario_names),
|
||||
analysis=analysis,
|
||||
comparison=comparison,
|
||||
exploration=summarize_exploration(ExplorationSessionRepository(session).list_by_campaign(campaign_id)),
|
||||
exploration=summarize_campaign_exploration(session, campaign_id),
|
||||
target_name=target_name,
|
||||
scenario_names=scenario_names,
|
||||
)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user