KYAI Workload And Run
Use this flow to create a KYAI workload (candidate endpoint) and a KYAI run (generation + judge phases).
Set these environment variables for the examples:
export METRUM_API_URL="https://api.<control-plane-domain>"
export METRUM_JWT_TOKEN="<12-hour-db-minted-postgrest-jwt>"
export METRUM_ACCOUNT_ID="<account-uuid>"
Create Candidate Endpoint
Registers a self-hosted model as a KYAI candidate.
curl -fsS -X POST "$METRUM_API_URL/rpc/create_kyai_candidate_endpoint" \
-H "Authorization: Bearer $METRUM_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"p_owner_account_id\":\"$METRUM_ACCOUNT_ID\",
\"p_endpoint_code\":\"deepseek-qwen15b-local-vllm\",
\"p_model_name\":\"deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B\",
\"p_framework_code\":\"vllm\",
\"p_version\":\"0.20.0\",
\"p_engine_args_set_code\":\"vllm-default\"
}" | jq
Parameters:
| Name | Required | Description |
|---|---|---|
p_owner_account_id | Yes | Account UUID that owns the candidate. |
p_endpoint_code | Yes | Stable candidate endpoint code. |
p_model_name | Yes | Model identifier (HuggingFace id or local path). |
p_framework_code | No | vllm, sglang, or trt-llm. Default vllm. |
p_version | No | Framework version. |
p_engine_args_set_code | No | Engine argument preset. Set tensor_parallel_size/tp to GPU count. |
p_max_tokens | No | Preset for max tokens per request. Default 4096. |
Create Workload
Creates a KYAI workload that pairs the candidate with a judge.
curl -fsS -X POST "$METRUM_API_URL/rpc/create_kyai_workload" \
-H "Authorization: Bearer $METRUM_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"p_owner_account_id\":\"$METRUM_ACCOUNT_ID\",
\"p_project_name\":\"kyai-deepseek-qwen15b\",
\"p_workload_code\":\"deepseek-qwen15b-kyai\",
\"p_workload_name\":\"DeepSeek Qwen 1.5B KYAI\",
\"p_candidate_endpoint_code\":\"deepseek-qwen15b-local-vllm\"
}" | jq
Parameters:
| Name | Required | Description |
|---|---|---|
p_owner_account_id | Yes | Account UUID that owns the project. |
p_project_name | Yes | Existing project name. |
p_workload_code | Yes | Stable workload code. |
p_workload_name | Yes | Display name. |
p_candidate_endpoint_code | Yes | Candidate endpoint created earlier. |
Create Scenario
curl -fsS -X POST "$METRUM_API_URL/rpc/create_kyai_scenario" \
-H "Authorization: Bearer $METRUM_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"p_owner_account_id\":\"$METRUM_ACCOUNT_ID\",
\"p_project_name\":\"kyai-deepseek-qwen15b\",
\"p_workload_code\":\"deepseek-qwen15b-kyai\",
\"p_scenario_code\":\"quantum-30\",
\"p_snapshot_code\":\"quantum-mechanics\",
\"p_judge_config_code\":\"platform-judge-default\"
}" | jq
Parameters:
| Name | Required | Description |
|---|---|---|
p_owner_account_id | Yes | Account UUID. |
p_project_name | Yes | Existing project name. |
p_workload_code | Yes | Workload code. |
p_scenario_code | Yes | Stable scenario code. |
p_snapshot_code | Yes | Built-in snapshot code (for example quantum-mechanics) or custom upload. |
p_judge_config_code | Yes | Judge config code (use platform-judge-default for the Metrum AI Judge). |
Create Generation Run
curl -fsS -X POST "$METRUM_API_URL/rpc/create_kyai_generation_run" \
-H "Authorization: Bearer $METRUM_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"p_owner_account_id\":\"$METRUM_ACCOUNT_ID\",
\"p_project_name\":\"kyai-deepseek-qwen15b\",
\"p_workload_code\":\"deepseek-qwen15b-kyai\",
\"p_scenario_code\":\"quantum-30\",
\"p_job_name\":\"kyai-generation-quantum-30\"
}" | jq
Capture the returned p_job_id and pass it to the judge run.
Create Judge Run
curl -fsS -X POST "$METRUM_API_URL/rpc/create_kyai_judge_run" \
-H "Authorization: Bearer $METRUM_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d "{
\"p_owner_account_id\":\"$METRUM_ACCOUNT_ID\",
\"p_project_name\":\"kyai-deepseek-qwen15b\",
\"p_workload_code\":\"deepseek-qwen15b-kyai\",
\"p_scenario_code\":\"quantum-30\",
\"p_generation_job_id\":<JOB_ID>,
\"p_judge_config_code\":\"platform-judge-default\"
}" | jq
Read Results
curl -fsS "$METRUM_API_URL/v_kyai_results?select=*&order=created_at.desc&limit=50" \
-H "Authorization: Bearer $METRUM_JWT_TOKEN" | jq
See also
- KYAI Evaluation — full API reference for KYAI workflows.
- Project Lifecycle