feat: add editable skill evaluation versions

This commit is contained in:
wuyang6
2026-07-24 10:11:51 +08:00
parent ecc02c06b7
commit 6630e82069
5 changed files with 1070 additions and 3 deletions
+80
View File
@@ -1149,6 +1149,7 @@ class EvaluationAnalyzeRequest(BaseModel):
account_id: str = Field(min_length=1)
query: str = Field(min_length=1, max_length=20_000)
skill_name: str = 'label-master'
snapshot_id: str | None = None
model: str | None = None
history: list[dict[str, Any]] = Field(default_factory=list)
context: dict[str, Any] = Field(default_factory=dict)
@@ -1162,10 +1163,19 @@ class EvaluationExperimentCreateRequest(BaseModel):
dataset_id: str = Field(min_length=1)
name: str = ''
skill_name: str = 'label-master'
snapshot_id: str | None = None
model: str | None = None
concurrency: int = Field(default=2, ge=1, le=8)
class EvaluationSkillVersionSaveRequest(BaseModel):
account_id: str = Field(min_length=1)
base_snapshot_id: str = Field(min_length=1)
version_name: str = Field(min_length=1, max_length=80)
note: str = Field(default='', max_length=1000)
files: dict[str, str]
class EvaluationExperimentActionRequest(BaseModel):
account_id: str = Field(min_length=1)
@@ -1534,6 +1544,74 @@ def create_app(state: AgentState) -> FastAPI:
except EvaluationError as exc:
raise HTTPException(status_code=400, detail=str(exc)) from exc
@app.get('/api/evaluations/skills/{skill_name}/versions')
async def list_evaluation_skill_versions(
skill_name: str,
account_id: str,
) -> dict[str, Any]:
try:
return await asyncio.to_thread(
state.evaluation_runtime.list_skill_versions,
_safe_account_id(account_id),
skill_name,
)
except EvaluationError as exc:
raise HTTPException(status_code=400, detail=str(exc)) from exc
@app.get(
'/api/evaluations/skills/{skill_name}/versions/{snapshot_id}'
)
async def get_evaluation_skill_version(
skill_name: str,
snapshot_id: str,
account_id: str,
) -> dict[str, Any]:
try:
return state.evaluation_runtime.get_skill_version_manifest(
_safe_account_id(account_id),
skill_name,
snapshot_id,
)
except EvaluationError as exc:
raise HTTPException(status_code=404, detail=str(exc)) from exc
@app.get(
'/api/evaluations/skills/{skill_name}/versions/{snapshot_id}/file'
)
async def get_evaluation_skill_version_file(
skill_name: str,
snapshot_id: str,
account_id: str,
path: str,
) -> dict[str, Any]:
try:
return state.evaluation_runtime.read_skill_version_file(
_safe_account_id(account_id),
skill_name,
snapshot_id,
path,
)
except EvaluationError as exc:
raise HTTPException(status_code=404, detail=str(exc)) from exc
@app.post('/api/evaluations/skills/{skill_name}/versions')
async def save_evaluation_skill_version(
skill_name: str,
payload: EvaluationSkillVersionSaveRequest,
) -> dict[str, Any]:
try:
return await asyncio.to_thread(
state.evaluation_runtime.save_skill_version,
_safe_account_id(payload.account_id),
skill_name,
base_snapshot_id=payload.base_snapshot_id,
version_name=payload.version_name,
note=payload.note,
files=payload.files,
)
except EvaluationError as exc:
raise HTTPException(status_code=400, detail=str(exc)) from exc
@app.post('/api/evaluations/analyze')
async def analyze_evaluation_case(
payload: EvaluationAnalyzeRequest,
@@ -1544,6 +1622,7 @@ def create_app(state: AgentState) -> FastAPI:
account_id=_safe_account_id(payload.account_id),
query=payload.query,
skill_name=payload.skill_name,
snapshot_id=payload.snapshot_id,
model=payload.model,
history=payload.history,
context=payload.context,
@@ -1642,6 +1721,7 @@ def create_app(state: AgentState) -> FastAPI:
dataset_id=payload.dataset_id,
name=payload.name,
skill_name=payload.skill_name,
snapshot_id=payload.snapshot_id,
model=payload.model,
concurrency=payload.concurrency,
)