feat(eval): server-side replay/phase1 timing + memoir phase1 batch chunking
- Replay and memoir-submit responses include started/finished UTC and elapsed_ms; Phase1 poll exposes Redis-backed submit time and elapsed_ms_since_submit. - Phase1 batch LLM splits segments by memoir_phase1_batch_llm_chunk_size with bisect fallback per chunk; Playground shows server timings. Made-with: Cursor
This commit is contained in:
@@ -103,12 +103,25 @@ class ReplayConversationOut(BaseModel):
|
||||
default_factory=list,
|
||||
description="本批请求创建并已走 orchestrator 的用户 segment id(顺序与落库一致)",
|
||||
)
|
||||
#: 服务端计量:本 HTTP 请求内回放逻辑耗时(与浏览器轮询间隔无关)
|
||||
started_at_utc: datetime | None = None
|
||||
finished_at_utc: datetime | None = None
|
||||
elapsed_ms: int | None = Field(
|
||||
default=None,
|
||||
description="服务端 wall 耗时(本请求内 replay_utterances / replay_fixture)",
|
||||
)
|
||||
|
||||
|
||||
class MemoirPhase1ReadyOut(BaseModel):
|
||||
ready: bool
|
||||
checked_segment_ids: list[str] = Field(default_factory=list)
|
||||
pending_segment_ids: list[str] = Field(default_factory=list)
|
||||
#: 最近一次 Playground memoir-submit 写入 Redis 的提交时间(无记录时为 None)
|
||||
job_submitted_at_utc: datetime | None = None
|
||||
#: 自 job_submitted_at_utc 至本响应生成时服务端经过的毫秒数
|
||||
elapsed_ms_since_submit: int | None = Field(default=None, ge=0)
|
||||
#: 可选分步耗时(毫秒),键由服务端定义
|
||||
durations_ms: dict[str, int] = Field(default_factory=dict)
|
||||
|
||||
|
||||
class MemoirSubmitOut(BaseModel):
|
||||
@@ -116,6 +129,9 @@ class MemoirSubmitOut(BaseModel):
|
||||
user_id: str
|
||||
segment_ids: list[str] = Field(default_factory=list)
|
||||
celery_task_id: str | None = None
|
||||
submitted_at_utc: datetime | None = None
|
||||
#: 提交接口瞬间耗时,通常为 0;与 Phase1 Celery 执行时间无关
|
||||
elapsed_ms: int | None = Field(default=None, ge=0)
|
||||
|
||||
|
||||
class ManualJudgeConversationBody(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user