this is such a trivial thing to do in DSPY, no one bothered to give it a name…

here's 7 lines

  import os
  import dspy

  lm = dspy.LM("openrouter/z-ai/glm-5.3-flash", api_key=os.environ["OPENROUTER_API_KEY"])
  jev = dspy.Predict('email:str -> choice:Literal["Legitimate", "Spam", "Phishing"]')
  email = "Payroll asks for your password on a non-company sign-in page."
  pred = jev(email=email, lm=lm)
  print(pred.choice)
there are other options, obviously. you can choose to give it some tools, maybe some reasoning stage before picking a choice, and that's on top of the "reasoning" the llm model already does api side

after looking closer at the typesafe's jev, i want to point out that i misunderstood the significance of this jev model

it is the latency that makes it significant

What about the probabilities?

so you can pick the choice with the highest probability?

the example uses an external api, and i don't think they return probabilities from those anyway.