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 sqlmodel import Session
|
||||||
|
|
||||||
from agenteval.evaluation.report import generate_campaign_report
|
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.model_gateway import ModelGateway
|
||||||
from agenteval.models import Campaign, ModelCapability, RunStatus
|
from agenteval.models import Campaign, ModelCapability, RunStatus
|
||||||
from agenteval.services.model_configs import (
|
from agenteval.services.model_configs import (
|
||||||
@ -27,7 +27,6 @@ from agenteval.storage.model_config_repository import ModelConfigRepository
|
|||||||
from agenteval.storage.repository import (
|
from agenteval.storage.repository import (
|
||||||
CampaignAnalysisRepository,
|
CampaignAnalysisRepository,
|
||||||
CampaignRepository,
|
CampaignRepository,
|
||||||
ExplorationSessionRepository,
|
|
||||||
RunRepository,
|
RunRepository,
|
||||||
ScenarioRepository,
|
ScenarioRepository,
|
||||||
)
|
)
|
||||||
@ -309,14 +308,13 @@ async def execute_campaign_analysis(
|
|||||||
runs = RunRepository(session).list_by_campaign(campaign_id)
|
runs = RunRepository(session).list_by_campaign(campaign_id)
|
||||||
scenario_names = {s.id: s.name for s in ScenarioRepository(session).list_all()}
|
scenario_names = {s.id: s.name for s in ScenarioRepository(session).list_all()}
|
||||||
report = generate_campaign_report(campaign, runs, scenario_names=scenario_names)
|
report = generate_campaign_report(campaign, runs, scenario_names=scenario_names)
|
||||||
exploration_sessions = ExplorationSessionRepository(session).list_by_campaign(campaign_id)
|
|
||||||
result = await analyze_campaign(
|
result = await analyze_campaign(
|
||||||
campaign=campaign,
|
campaign=campaign,
|
||||||
report=report,
|
report=report,
|
||||||
failure_samples=collect_failure_samples(campaign_id, session),
|
failure_samples=collect_failure_samples(campaign_id, session),
|
||||||
valid_run_ids={r.id for r in runs if r.id},
|
valid_run_ids={r.id for r in runs if r.id},
|
||||||
chat_client=client,
|
chat_client=client,
|
||||||
exploration_summary=summarize_exploration(exploration_sessions),
|
exploration_summary=summarize_campaign_exploration(session, campaign_id),
|
||||||
)
|
)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
_logger.warning("活动 %s 智能分析失败: %s", campaign_id, exc)
|
_logger.warning("活动 %s 智能分析失败: %s", campaign_id, exc)
|
||||||
|
|||||||
@ -10,6 +10,8 @@ findings 全量收各档发现,poor 档排前)。这是体验记录这条第
|
|||||||
from collections import Counter
|
from collections import Counter
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
|
from sqlmodel import Session
|
||||||
|
|
||||||
from agenteval.exploration.models import ExplorationSession
|
from agenteval.exploration.models import ExplorationSession
|
||||||
|
|
||||||
_RATING_SEVERITY = {"poor": 0, "acceptable": 1, "good": 2}
|
_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]]:
|
def _summarize_judge_reviews(sessions: list[ExplorationSession]) -> Optional[dict[str, Any]]:
|
||||||
"""只纳入复核完成的会话;findings 全量收各档发现(poor 档排前),summaries 收复核总体结论。"""
|
"""只纳入复核完成的会话;findings 全量收各档发现(poor 档排前),summaries 收复核总体结论。"""
|
||||||
findings: list[dict[str, Any]] = []
|
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.evaluation.report_render import render_campaign_markdown
|
||||||
from agenteval.exploration.settlement import settle_campaign_sessions
|
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.models import Campaign, CampaignPlanEntry, CampaignStatus, ExplorationBudgetConfig, ExplorationSeeds
|
||||||
from agenteval.storage.db import iso_utc, utc_now
|
from agenteval.storage.db import iso_utc, utc_now
|
||||||
from agenteval.storage.model_config_repository import ModelConfigRepository
|
from agenteval.storage.model_config_repository import ModelConfigRepository
|
||||||
@ -35,7 +35,6 @@ from agenteval.storage.repository import (
|
|||||||
CampaignAnalysisRepository,
|
CampaignAnalysisRepository,
|
||||||
CampaignPeriodComparisonRepository,
|
CampaignPeriodComparisonRepository,
|
||||||
CampaignRepository,
|
CampaignRepository,
|
||||||
ExplorationSessionRepository,
|
|
||||||
RunRepository,
|
RunRepository,
|
||||||
ScenarioRepository,
|
ScenarioRepository,
|
||||||
TargetRepository,
|
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)
|
runs = RunRepository(session).list_by_campaign(campaign_id)
|
||||||
scenario_names = {s.id: s.name for s in ScenarioRepository(session).list_all()}
|
scenario_names = {s.id: s.name for s in ScenarioRepository(session).list_all()}
|
||||||
report = generate_campaign_report(campaign, runs, scenario_names=scenario_names)
|
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:
|
if exploration is not None:
|
||||||
report["exploration"] = exploration
|
report["exploration"] = exploration
|
||||||
return report
|
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),
|
generate_campaign_report(campaign, runs, scenario_names=scenario_names),
|
||||||
analysis=analysis,
|
analysis=analysis,
|
||||||
comparison=comparison,
|
comparison=comparison,
|
||||||
exploration=summarize_exploration(ExplorationSessionRepository(session).list_by_campaign(campaign_id)),
|
exploration=summarize_campaign_exploration(session, campaign_id),
|
||||||
target_name=target_name,
|
target_name=target_name,
|
||||||
scenario_names=scenario_names,
|
scenario_names=scenario_names,
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user