hyf

Context-aware query service for Radroots
git clone https://radroots.dev/git/hyf.git
Log | Files | Refs | README | LICENSE

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^