Generate natural, search-style questions from any passage across 25 languages, for quizzes, reading comprehension, help-centre FAQs, and assessment banks.
Question writing is the bottleneck in every learning product. A textbook chapter needs comprehension questions, a help-centre article needs the questions it answers, an assessment bank needs hundreds of variants, and each one gets written by hand by someone who knows the subject.
Frontier APIs can do it, but you are then metering every passage in your catalogue through a per-token bill, sending your content to a third party, and hoping the model handles Yorùbá as well as it handles English. It usually does not.
mist-qg-1.5b takes a passage, a question count, and the language the passage is written in, and returns strict JSON: {"questions": [...]}. This is same-language generation: it does not translate.
mist-qg-1.5bCoverage includes Yorùbá, Igbo, Hausa, Swahili, Amharic, Zulu, Xhosa, Shona, Somali, and Afrikaans, the languages that make African-market edtech possible and that general tools handle worst. Pass an ISO 639-3 code, an ISO 639-1 code, or the English name.
mist-qg-1.5bThe model was trained on questions that survived round-trip retrieval: a question was only kept if it retrieved its own source passage out of a pool of distractors. Run the same check at inference to filter anything that drifted from the source.
For production, put the same prompt behind vLLM with guided JSON decoding so the output is structurally guaranteed valid, not just usually valid.
The Olaverse SDK wraps the models with sane defaults. If you would rather not add a dependency, the second tab is the same pipeline in plain transformers.
from olaverse import MISTQuestionGenerator
qg = MISTQuestionGenerator() # mist-qg-1.5b
qg.load()
passage = "Tides are caused by the gravitational pull of the moon and, to a lesser extent, the sun."
qg.generate(passage, n=3)
# → ['What causes ocean tides?', 'Does the sun affect tides?',
# 'Which has a bigger effect on tides, the moon or the sun?']
# Same-language generation across the 25 supported languages
qg.generate(yoruba_passage, n=3, language="yor") # or "yo", or "Yoruba"
# A whole chapter in one pass
qg.generate_batch(passages, n=3, language="English")Every language the models in this pipeline were trained on, with the codes you pass and the codes you get back.
Pass an ISO 639-3 code, an ISO 639-1 code, or the English name. Questions come back in the language of the passage.
Every figure on this page comes from the published model cards. Download the weights and check us.
Generate verified (query, passage) pairs from your own corpus in 25 languages, and fine-tune retrievers and rerankers on data that matches your domain.
/ Routing & moderationDetect the language of support tickets, chat messages, queries, and documents across 608 languages, built African-first and accurate on the short text real products see.
The weights are open, so you can build it yourself this afternoon. If you would rather we tuned it to your domain, evaluated it properly, and handed it over, tell us what you are working on.