Use when: You want to evaluate query transformation tasks, checking how well queries are rewritten, expanded, or paraphrased for downstream use.
Fields:
query (str) — The original input query.
generated_response (list[str]) — The model's transformed query output to be evaluated.
expected_response (list[str]) — The reference or ground truth transformed query.
Example Usage
import asyncioimport osfrom gllm_evals.evaluator.qt_evaluator import QTEvaluatorfrom gllm_evals.types import QADataasyncdefmain():"""Main function.""" data =QAData(query="Siapa yang bertanggung jawab atas pemantauan kepatuhan terintegrasi dan bagaimana cara melaporkannya?",expected_response=["Direktur yang membawahi fungsi kepatuhan di XYZ sebagai Entitas Utama bertanggung jawab atas pemantauan dan evaluasi penerapan kepatuhan pada masing-masing LJK dalam KK XYZ.","Pelaporan dilakukan dengan menyusun dan menyampaikan laporan pelaksanaan tugas dan tanggung jawab kepatuhan terintegrasi kepada Direksi dan Dewan Komisaris XYZ."],generated_response=['penanggung jawab pemantauan kepatuhan terintegrasi','prosedur pelaporan kepatuhan terintegrasi']) evaluator =QTEvaluator(model_credentials=os.getenv("OPENAI_API_KEY")) result =await evaluator.evaluate(data)print(result)if__name__=="__main__": asyncio.run(main())
{
"qt_evals": {
"completeness": {
"score": 1,
"explanation": "The generated output consists of only headers or topic names ('penanggung jawab pemantauan kepatuhan terintegrasi' and 'prosedur pelaporan kepatuhan terintegrasi') without any substantive information or answers relevant to the question. None of the key details from the expected output\u2014that the director responsible for compliance at XYZ is accountable for monitoring, and that reports are made to the Board of Directors and Board of Commissioners\u2014are present. Therefore, none of the expected substantive statements are matched.",
"question": "Siapa yang bertanggung jawab atas pemantauan kepatuhan terintegrasi dan bagaimana cara melaporkannya?",
"expected_output_statements": [
"Direktur yang membawahi fungsi kepatuhan di XYZ sebagai Entitas Utama bertanggung jawab atas pemantauan dan evaluasi penerapan kepatuhan pada masing-masing LJK dalam KK XYZ.",
"Pelaporan dilakukan dengan menyusun dan menyampaikan laporan pelaksanaan tugas dan tanggung jawab kepatuhan terintegrasi kepada Direksi dan Dewan Komisaris XYZ."
],
"generated_output_statements": [
"penanggung jawab pemantauan kepatuhan terintegrasi",
"prosedur pelaporan kepatuhan terintegrasi"
],
"count": "0 of 2 substantive statements are matched"
},
"groundedness": {
"score": 2,
"explanation": "Generated output hanya berupa pengulangan istilah yang sama dengan yang terdapat di konteks dan pertanyaan, tanpa adanya informasi yang lebih detail atau jawaban faktual, namun masih relevan secara topik sehingga bukan halusinasi sepenuhnya.",
"generated_response": [
"penanggung jawab pemantauan kepatuhan terintegrasi",
"prosedur pelaporan kepatuhan terintegrasi"
],
"analysis": [
"Pernyataan ini hanya mengulang kata kunci dari pertanyaan dan konteks, tidak memberikan jawaban faktual mengenai siapa penanggung jawabnya.",
"Pernyataan ini hanya menyinggung tentang prosedur pelaporan tanpa memberikan detail atau jawaban yang didukung konteks."
]
},
"redundancy": {
"score": 1,
"explanation": "Each key point is presented only once. The first addresses 'who is responsible' and the second addresses 'how to report', directly answering both parts of the question without any repetition or unnecessary elaboration. There is no redundant restatement or overlapping information.",
"generated_response": [
"penanggung jawab pemantauan kepatuhan terintegrasi",
"prosedur pelaporan kepatuhan terintegrasi"
],
"analysis": [
"The first statement identifies the party responsible for compliance monitoring.",
"The second statement refers to the procedures for reporting compliance monitoring."
]
},
"score": 0.44999999999999996
}
}