--- library_name: transformers language: - ko --- # KEval-7b keval is an evaluation model that learned the prompt and dataset used in the benchmark for evaluating Korean language models among various methods of evaluating models with chatgpt to compensate for the shortcomings of the existing lm-evaluation-harness. **Now that the new version(keval-9b) has been released, the previous version will be changed so that anyone can use it.** ## Usages ### wandb judge prompt ``` from transformers import AutoTokenizer, AutoModelForCausalLM import torch checkpoint = "davidkim205/keval-7b" tokenizer = AutoTokenizer.from_pretrained(checkpoint) model = AutoModelForCausalLM.from_pretrained(checkpoint, device_map="auto", torch_dtype=torch.bfloat16) judgment="""당신은 유익한 조수입니다.\n[지시]\n공평한 판단자로 행동하고 아래에 표시되는 사용자의 질문에 대한 AI 어시스턴트 응답의 품질을 평가합니다. 귀하의 평가는 응답의 유용성, 관련성, 정확성, 깊이, 창의성, 상세도 등의 요소를 고려해야 합니다. AI 어시스턴트의 응답 언어는 사용자가 사용하는 언어와 일치해야 하며, 그렇지 않으면 감점되어야 합니다. 평가는 짧은 설명으로 시작하십시오. 가능한 한 객관적인 것. 설명을 제공한 후 \"[[평가]]\" 형식에 엄격히 따라 1에서 10까지의 스케일로 응답을 평가해야 합니다. (예시: \"평가: [[5]]\").\n\n<|어시스턴트 A와 사용자의 대화 시작|>[질문]\n두 가지 인기 스마트폰 모델을 비교하는 블로그 게시물을 작성한다고 상상해봅시다. 두 모델의 기능, 성능 및 사용자 경험을 효과적으로 비교하고 대조할 수 있도록 핵심 사항과 부제목을 포함하여 블로그 게시물의 개요를 작성하세요. 200단어 이내로 답하세요.\n\n[도움말 답변 시작]\n제목: iPhone 13와 Samsung Galaxy S22: 비교 검토소개* 스마트폰 구매의 중요성에 대한 설명* 블로그 게시물의 목적: 2인기 스마트폰 모델 비교: iPhone 13와 삼성 갤럭시 S22기능 비교* 크기, 디스플레이 크기, 디자인 및 형태에 대한 요약* 카메라 및 사진 기능 및 품질 비교* CPU와 GPU: 성능 비교* 운영 체제: iOS와 안드로이드의 비교특징* 추가 기능과 기능(예: Face ID, 빠른 보안 등)에 대한 탐구* iPhone 13의 다양한 색상과 버전에 대한 토론비용 비교* 가격과 제공할 수 있는 특별 거래 또는 할인의 분석결론* 비교에 대한 요약 및 최종 추천사용자 경험 비교* 사용자의 평소 사용 경험, 만족도, 직관성에 대한 평가* 각 모델의 스토어 및 지원에 대한 비교결론\n[도움말 답변 종료]\n<|어시스턴트 A와 사용자의 대화 끝|>""" inputs = tokenizer(judgment, return_tensors="pt") outputs = model.generate(**inputs, max_new_tokens=1024) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` response ``` [[평가]]: [[9]] 이 응답은 사용자가 요청한 블로그 게시물 개요를 잘 만들어냈습니다. 제목과 주요 부제목을 포함하여 블로그 게시물의 구조를 명확하게 제시하였고, 두 스마트폰 모델의 주요 차이점을 비교하기 위한 구체적인 내용을 포함하고 있습니다. 또한, 사용자 경험과 가격 비교 등 실제 구매자가 관심을 가질 수 있는 요소들을 포함하여 유용하고 완성도 높은 개요를 제공하였습니다. 다만, 일부 부제목이 다소 반복적이거나 중복되는 내용을 포함하고 있어 개선의 여지가 있습니다. 이러한 부분을 조정하면 더욱 효율적인 개요가 될 수 있습니다. ``` jsonl ``` {"turn": "first","category":"general","system":"당신은 유익한 조수입니다.\n[지시]\n공평한 판단자로 행동하고 아래에 표시되는 사용자의 질문에 대한 AI 어시스턴트 응답의 품질을 평가합니다. 귀하의 평가는 응답의 유용성, 관련성, 정확성, 깊이, 창의성, 상세도 등의 요소를 고려해야 합니다. AI 어시스턴트의 응답 언어는 사용자가 사용하는 언어와 일치해야 하며, 그렇지 않으면 감점되어야 합니다. 평가는 짧은 설명으로 시작하십시오. 가능한 한 객관적인 것. 설명을 제공한 후 \"[[평가]]\" 형식에 엄격히 따라 1에서 10까지의 스케일로 응답을 평가해야 합니다. (예시: \"평가: [[5]]\").","text":"<|어시스턴트 A와 사용자의 대화 시작|>[질문]\n{question}\n\n[도움말 답변 시작]\n{response}\n[도움말 답변 종료]\n<|어시스턴트 A와 사용자의 대화 끝|>"} {"turn": "second","category":"general","system":"공정한 판단자로서 아래 표시된 사용자 질문에 대해 AI 보조자가 제공하는 응답의 품질을 평가하십시오. 평가에서는 응답의 유용성, 관련성, 정확성, 깊이, 창의성, 세부 수준과 같은 요소를 고려해야 합니다. 평가는 두 번째 사용자 질문에 대한 보조자의 답변에 초점을 맞춰야 합니다. 간단한 설명을 제공하여 평가를 시작하세요. 최대한 객관적이세요. 설명을 제공한 후 \\\"[[평가]]\\\" 형식을 엄격히 준수하여 1~10점으로 응답을 평가해야 합니다. (예시: \\\"평가: [[5]]\\\").","text":"<|어시스턴트 A와 사용자의 대화 시작|>\n[질문]\n{question}\n\n[도움말 답변 시작]\n{response}\n[도움말 답변 종료]\n<|어시스턴트 A와 사용자의 대화 끝|>"} ``` ### logickor judge prompt ``` from transformers import AutoTokenizer, AutoModelForCausalLM import torch checkpoint = "davidkim205/keval-7b" tokenizer = AutoTokenizer.from_pretrained(checkpoint) model = AutoModelForCausalLM.from_pretrained(checkpoint, device_map="auto", torch_dtype=torch.bfloat16) judgment="""너는 질문에 대한 한국어 언어 모델의 답변을 매우 꼼꼼히 평가할 거야. 최대로 공정한 평가를 하기 위해서는 아래 몇 가지 규칙을 준수해야 해.\n# 기본 규칙\n1. 답변의 정확성, 완성도, 창의력, 가독성에 집중하여 평가할 것\n2. 질문의 요구에서 놓친 것이 있는지 상세히 분석할 것\n3. 답변의 길이가 평가에 영향을 미치게 하지 말 것\n4. 만약 Ground Truth가 주어진다면 평가 시 해당 사실을 참고할 것\n# 언어 요구사항 (**Very Important**)\n모델은 반드시 한국어 답변을 출력해야 하며, **절대로** 영어나 기타 언어 문장으로 답변해서는 안 된다.\n# 평가 출력 방식\n주어진 답변에 대한 간단한 평가와 10점이 아닌 경우 왜 10점을 받지 못했는지를 1~2문장으로 작성해줘. 그리고 `점수: 4`와 같이 1~10점 사이에서 점수를 매겨줘. 4/10이나 **5**처럼 점수를 표현할때 기호를 사용하면 안돼. 최종적으로 아래 포맷을 따라서 답변을 생성해줘.\n# 출력 형식\n평가: 평가 내용\n점수: 숫자\n\n# 질문:\n민수에게는 빨간색 셔츠 한 벌과 노란색 셔츠 다섯 벌이 있어. 민수가 노란색 바지 3벌을 새로 구매하고 노란색 바지 두 벌을 친구에게 선물했을 때 민수는 몇 벌의 노란색 셔츠를 가지고 있을까?\n\n# 답변:\n민수는 원래 빨간색 셔츠와 노란색 셔츠를 가지고 있었고, 새로 노란색 바지 두 벌을 선물해주셨으니 이제는 5 + 2 = <<5+2=7>>7가지 색상의 셔츠가 있으시겠죠.\n\n# Ground Truth:\n다섯 벌""" inputs = tokenizer(judgment, return_tensors="pt") outputs = model.generate(**inputs, max_new_tokens=1024) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` response ``` 너는 질문에 대한 한국어 언어 모델의 답변을 매우 꼼꼼히 평가할 거야. 최대로 공정한 평가를 하기 위해서는 아래 몇 가지 규칙을 준수해야 해. # 기본 규칙 1. 답변의 정확성, 완성도, 창의력, 가독성에 집중하여 평가할 것 2. 질문의 요구에서 놓친 것이 있는지 상세히 분석할 것 3. 답변의 길이가 평가에 영향을 미치게 하지 말 것 4. 만약 Ground Truth가 주어진다면 평가 시 해당 사실을 참고할 것 # 언어 요구사항 (**Very Important**) 모델은 반드시 한국어 답변을 출력해야 하며, **절대로** 영어나 기타 언어 문장으로 답변해서는 안 된다. # 평가 출력 방식 주어진 답변에 대한 간단한 평가와 10점이 아닌 경우 왜 10점을 받지 못했는지를 1~2문장으로 작성해줘. 그리고 `점수: 4`와 같이 1~10점 사이에서 점수를 매겨줘. 4/10이나 **5**처럼 점수를 표현할때 기호를 사용하면 안돼. 최종적으로 아래 포맷을 따라서 답변을 생성해줘. # 출력 형식 평가: 평가 내용 점수: 숫자 # 질문: 민수에게는 빨간색 셔츠 한 벌과 노란색 셔츠 다섯 벌이 있어. 민수가 노란색 바지 3벌을 새로 구매하고 노란색 바지 두 벌을 친구에게 선물했을 때 민수는 몇 벌의 노란색 셔츠를 가지고 있을까? # 답변: 민수는 원래 빨간색 셔츠와 노란색 셔츠를 가지고 있었고, 새로 노란색 바지 두 벌을 선물해주셨으니 이제는 5 + 2 = <<5+2=7>>7가지 색상의 셔츠가 있으시겠죠. # Ground Truth: 다섯 벌의 노란색 셔츠를 가지고 있다. 평가: 답변이 질문의 요구를 제대로 충족하지 못했습니다. 질문은 민수가 가지고 있는 노란색 셔츠의 수를 묻고 있는데, 답변은 노란색 바지의 수를 더하는 오류를 범했습니다. 또한, 답변 형식이 혼란스럽고 계산 방식이 잘못되었습니다. 점수: 1 ``` jsonl ``` {"turn": "first","category":"general","system":"너는 질문에 대한 한국어 언어 모델의 답변을 매우 꼼꼼히 평가할 거야. 최대로 공정한 평가를 하기 위해서는 아래 몇 가지 규칙을 준수해야 해.\n# 기본 규칙\n1. 답변의 정확성, 완성도, 창의력, 가독성에 집중하여 평가할 것\n2. 질문의 요구에서 놓친 것이 있는지 상세히 분석할 것\n3. 답변의 길이가 평가에 영향을 미치게 하지 말 것\n4. 만약 Ground Truth가 주어진다면 평가 시 해당 사실을 참고할 것\n# 언어 요구사항 (**Very Important**)\n모델은 반드시 한국어 답변을 출력해야 하며, **절대로** 영어나 기타 언어 문장으로 답변해서는 안 된다.\n# 평가 출력 방식\n주어진 답변에 대한 간단한 평가와 10점이 아닌 경우 왜 10점을 받지 못했는지를 1~2문장으로 작성해줘. 그리고 `점수: 4`와 같이 1~10점 사이에서 점수를 매겨줘. 4/10이나 **5**처럼 점수를 표현할때 기호를 사용하면 안돼. 최종적으로 아래 포맷을 따라서 답변을 생성해줘.\n# 출력 형식\n평가: 평가 내용\n점수: 숫자","text":"# 질문:\n{question}\n\n# 답변:\n{response}\n\n# Ground Truth:\n{label}"} {"turn": "second","category":"general","system":"너는 대화 후 이어지는 후속 질문에 대한 모델의 답변을 매우 꼼꼼히 평가할 거야. 최대로 공정한 평가를 하기 위해서는 아래 몇 가지 규칙을 준수해야 해.\n# 기본 규칙\n1. 답변의 정확성, 완성도, 창의력, 가독성에 집중하여 평가할 것\n2. 질문의 요구에서 놓친 것이 있는지 상세히 분석할 것\n3. 답변의 길이가 평가에 영향을 미치게 하지 말 것\n4. 만약 Ground Truth가 주어진다면 평가 시 해당 사실을 참고할 것\n5. 후속 질문에 대한 답변이 이전 대화 맥락과 호응을 이루는지 확인할 것\n# 언어 요구사항 (**Very Important**)\n모델은 반드시 한국어 답변을 출력해야 하며, **절대로** 영어나 기타 언어 문장으로 답변해서는 안 된다.\n# 평가 출력 방식\n주어진 답변에 대한 간단한 평가와 10점이 아닌 경우 왜 10점을 받지 못했는지를 1~2문장으로 작성해줘. 그리고 `점수: 4`와 같이 1~10점 사이에서 점수를 매겨줘. 4/10이나 **5**처럼 점수를 표현할때 기호를 사용하면 안돼. 최종적으로 아래 포맷을 따라서 답변을 생성해줘.\n# 출력 형식\n평가: 평가 내용\n점수: 숫자","text":"# 질문:\n{question}\n\n# 답변:\n{response}\n\n# Ground Truth:\n{label}"} ``` ## Evaluation | | model | acc | wrong | diff-0 | diff-1 | diff-2 | diff-3 | diff-4 | diff-5 | diff-6 | diff-7 | diff-8 | diff-9 | length | |---:|:----------------------------------------------------|------:|--------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:|---------:| | 0 | Meta-Llama-3-8B-Instruct-keval_datasets_small.jsonl | 0.45 | 0.38 | 0.06 | 0.18 | 0.17 | 0.09 | 0.05 | 0.04 | 0.02 | 0 | 0 | 0 | 100 | | 1 | Mistral-7B-Instruct-v0.2-keval_datasets_small.jsonl | 0.55 | 0.27 | 0.18 | 0.2 | 0.09 | 0.06 | 0.05 | 0.03 | 0.04 | 0.04 | 0.04 | 0 | 100 | | 2 | Mistral-7B-Instruct-v0.3-keval_datasets_small.jsonl | 0.71 | 0.05 | 0.26 | 0.26 | 0.13 | 0.08 | 0.07 | 0.04 | 0.03 | 0.03 | 0.04 | 0 | 100 | | 3 | aya-23-8B-keval_datasets_small.jsonl | 0.7 | 0.02 | 0.17 | 0.24 | 0.16 | 0.1 | 0.13 | 0.06 | 0.06 | 0.04 | 0.01 | 0 | 100 | | 4 | gemma-2-27b-it-keval_datasets_small.jsonl | 0.76 | 0.11 | 0.2 | 0.35 | 0.18 | 0.1 | 0.03 | 0.01 | 0.02 | 0 | 0 | 0 | 100 | | 5 | gemma-2-9b-it-keval_datasets_small.jsonl | 0.83 | 0.04 | 0.26 | 0.42 | 0.15 | 0.05 | 0.02 | 0.05 | 0.01 | 0 | 0 | 0 | 100 | | 6 | keval-7b-keval_datasets_small.jsonl | 0.84 | 0 | 0.28 | 0.41 | 0.11 | 0.06 | 0.05 | 0.03 | 0.02 | 0.03 | 0.01 | 0 | 100 | | 7 | keval-9b-keval_datasets_small.jsonl | 0.91 | 0 | 0.43 | 0.38 | 0.1 | 0.05 | 0.03 | 0.01 | 0 | 0 | 0 | 0 | 100 |