jev_request.mojo (1313B)
1 from json import Value, loads 2 3 from hyf_assist.questions import Question, QuestionBundle 4 5 6 def _choice_criteria(question: Question) raises -> Value: 7 var criteria = loads("{}") 8 for choice in question.choices: 9 criteria.set(String(choice), Value(None)) 10 return criteria^ 11 12 13 def _score_criteria(question: Question) raises -> Value: 14 var criteria = loads("[]") 15 for level in question.rubric: 16 criteria.append(Value(String(level))) 17 return criteria^ 18 19 20 def build_jev_request_body( 21 bundle: QuestionBundle, state: String 22 ) raises -> Value: 23 if state.strip() == "": 24 raise Error("jev request requires non-empty state") 25 var body = loads("{}") 26 body.set("model", Value(String(bundle.model))) 27 body.set("state", Value(String(state))) 28 var questions = loads("{}") 29 for question in bundle.questions: 30 var value = loads("{}") 31 value.set("type", Value(String(question.kind))) 32 value.set("instructions", Value(String(question.instructions))) 33 if question.kind == "choice": 34 value.set("criteria", _choice_criteria(question)) 35 elif question.kind == "score": 36 value.set("criteria", _score_criteria(question)) 37 questions.set(String(question.id), value) 38 body.set("questions", questions) 39 return body^