优化生成流程
This commit is contained in:
+33
-24
@@ -57,6 +57,7 @@ async def config() -> dict[str, Any]:
|
||||
"model": settings.llm_model,
|
||||
"configured": settings.llm_configured,
|
||||
"library_samples": library.count(),
|
||||
"max_repair_attempts": settings.max_repair_attempts,
|
||||
}
|
||||
|
||||
|
||||
@@ -130,30 +131,6 @@ async def read_task(task_id: str) -> JSONResponse:
|
||||
return JSONResponse(task)
|
||||
|
||||
|
||||
@app.get("/v1/tasks/{task_id}/design-intent")
|
||||
async def read_current_design_intent(task_id: str) -> JSONResponse:
|
||||
try:
|
||||
safe_id = safe_task_id(task_id)
|
||||
result = store.read_design_intent(safe_id)
|
||||
except ValueError as error:
|
||||
raise HTTPException(status_code=400, detail=str(error)) from error
|
||||
if result is None:
|
||||
raise HTTPException(status_code=404, detail="No DesignIntent exists for this task")
|
||||
return JSONResponse({"task_id": safe_id, "intent_id": result["record"]["intent_id"], **result})
|
||||
|
||||
|
||||
@app.get("/v1/tasks/{task_id}/design-intents/{intent_id}")
|
||||
async def read_design_intent(task_id: str, intent_id: str) -> JSONResponse:
|
||||
try:
|
||||
safe_id = safe_task_id(task_id)
|
||||
result = store.read_design_intent(safe_id, intent_id)
|
||||
except ValueError as error:
|
||||
raise HTTPException(status_code=400, detail=str(error)) from error
|
||||
if result is None:
|
||||
raise HTTPException(status_code=404, detail="DesignIntent not found")
|
||||
return JSONResponse({"task_id": safe_id, "intent_id": result["record"]["intent_id"], **result})
|
||||
|
||||
|
||||
@app.get("/v1/tasks/{task_id}/artifacts/{artifact_path:path}")
|
||||
async def read_artifact(task_id: str, artifact_path: str) -> StreamingResponse:
|
||||
from fastapi.responses import FileResponse
|
||||
@@ -186,6 +163,38 @@ async def read_parameters(task_id: str) -> JSONResponse:
|
||||
return JSONResponse({"task_id": safe_id, "revision_id": revision_id, **json.loads(path.read_text(encoding="utf-8"))})
|
||||
|
||||
|
||||
@app.get("/v1/tasks/{task_id}/quality")
|
||||
async def read_quality(task_id: str) -> JSONResponse:
|
||||
try:
|
||||
safe_id = safe_task_id(task_id)
|
||||
except ValueError as error:
|
||||
raise HTTPException(status_code=400, detail=str(error)) from error
|
||||
task = store.read_task(safe_id)
|
||||
revision_id = str((task or {}).get("current_revision") or "")
|
||||
revisions = (task or {}).get("revisions", [])
|
||||
revision = next((item for item in revisions if item.get("revision_id") == revision_id), None)
|
||||
if revisions and revisions[-1].get("revision_id") != revision_id:
|
||||
revision = revisions[-1]
|
||||
revision_id = str(revision.get("revision_id") or "")
|
||||
payload: dict[str, Any] = {
|
||||
"task_id": safe_id,
|
||||
"revision_id": revision_id,
|
||||
"quality_status": (revision or {}).get("quality_status", ""),
|
||||
"snapshot_status": (revision or {}).get("snapshot_status", "unavailable"),
|
||||
"snapshot_paths": (revision or {}).get("snapshot_paths", []),
|
||||
"assumptions": (revision or {}).get("generation_assumptions", []),
|
||||
"verification_summary": (revision or {}).get("verification_summary", {}),
|
||||
}
|
||||
relative = str((revision or {}).get("quality_path") or "")
|
||||
if relative:
|
||||
path = store.artifact_path(safe_id, relative)
|
||||
if path.is_file():
|
||||
payload["quality"] = json.loads(path.read_text(encoding="utf-8"))
|
||||
if not revision:
|
||||
raise HTTPException(status_code=404, detail="Task has no revision")
|
||||
return JSONResponse(payload)
|
||||
|
||||
|
||||
@app.post("/v1/tasks/{task_id}/parameters")
|
||||
async def update_parameters(task_id: str, payload: ParameterUpdate) -> JSONResponse:
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user