Fixed
Grading API now gives stable scores to repeated requests
3 days ago by ReadMe API
Make the same request to GET /profile/grading or GET /job/grading again and the score now stays stable: grader-hrflow-profiles-cosmic5 and grader-hrflow-jobs-cosmic5 give the same score every time, and with grader-hrflow-profiles-titan5 and grader-hrflow-jobs-titan5, two scores of the same request differ by at most 0.03 on the 0-to-1 scale. A profile or job that can't be graded is flagged in errors instead of failing the whole request.
Action required
- Now: none.
GET /profile/gradingandGET /job/gradingkeep their parameters, their algorithm keys and their response. - Later: none. Nothing in this update is deprecated.
What changed
- With
grader-hrflow-profiles-cosmic5,grader-hrflow-profiles-titan5,grader-hrflow-jobs-cosmic5andgrader-hrflow-jobs-titan5, a job is read the same way on every request, so a repeated request is graded on the same input and its score stays stable. - With
grader-hrflow-profiles-cosmic5andgrader-hrflow-jobs-cosmic5, the same profile and job get the same score on every request. - A profile (or job) too long to be graded no longer fails the whole request: its
scoresentry isnull, itserrorsentry says it is too long to be graded, and the other profiles (or jobs) keep their scores. - With
profile_ids, an indexed profile with nothing to grade (only contact details, for example) getsnullinscores, and itserrorsentry says it has nothing to grade. When no profile of the request has anything to grade, the request answers400.
Performance
| Grader | Largest difference between two scores of the same request |
|---|---|
grader-hrflow-profiles-cosmic5, grader-hrflow-jobs-cosmic5 | 0: the same score every time |
grader-hrflow-profiles-titan5, grader-hrflow-jobs-titan5 | 0.03, over 30 minutes |
Example
curl -G https://api.hrflow.ai/v1/profile/grading \
-H "X-API-KEY: <your_api_key>" \
-H "X-USER-EMAIL: <your_email>" \
--data-urlencode "algorithm_key=grader-hrflow-profiles-cosmic5" \
--data-urlencode "board_key=<board_key>" \
--data-urlencode "job_key=<job_key>" \
--data-urlencode "source_key=<source_key>" \
--data-urlencode "profile_ids[0][source_key]=<source_key>" \
--data-urlencode "profile_ids[0][profile_key]=<profile_key>" \
--data-urlencode "profile_ids[1][source_key]=<source_key>" \
--data-urlencode "profile_ids[1][profile_key]=<profile_key_2>"The response keeps its shape, one entry per profile in the order of profiles. Here the second profile is too long to be graded: it is flagged, and the first one keeps its score.
{
"code": 200,
"message": "…",
"data": {
"profiles": [{"key": "<profile_key>"}, {"key": "<profile_key_2>"}],
"scores": [[0.49184858798980713, 0.50815147161483765], null],
"axis": null,
"errors": [null, {"code": "…", "message": "profile too long for the model"}]
}
}