feat: add editable skill evaluation versions
This commit is contained in:
@@ -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,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user