生成された問題の品質をレビューする。問題文の正確性、選択肢の妥当性、解説の適切さ、フォーマットの整合性をチェック。「問題をレビューして」「生成した問題を確認して」「品質チェックして」などのリクエストに使用。
生成された問題の品質をレビュー・修正するスキル。
gen-{category}-{number}isCorrect: true が1つだけかcorrectChoiceId と isCorrect が一致しているか# 最新の生成ファイルを確認
ls -lt data/generated/ | head -5
# ファイルを読み込み
cat data/generated/questions_YYYYMMDD_HHMMSS.json | python3 -m json.tool | head -100
import json
def validate_question(q):
errors = []
# 必須フィールド
required = ['id', 'text', 'choices', 'correctChoiceId', 'explanation', 'category']
for field in required:
if field not in q:
errors.append(f"Missing: {field}")
# 選択肢チェック
if len(q.get('choices', [])) != 4:
errors.append(f"Choices count: {len(q.get('choices', []))}")
# 正解チェック
correct_count = sum(1 for c in q.get('choices', []) if c.get('isCorrect'))
if correct_count != 1:
errors.append(f"Correct count: {correct_count}")
# ID形式
if not q.get('id', '').startswith('gen-'):
errors.append(f"Invalid ID format: {q.get('id')}")
return errors
# 使用例
with open('data/generated/questions_XXX.json') as f:
questions = json.load(f)
for q in questions:
errors = validate_question(q)
if errors:
print(f"{q['id']}: {errors}")
各カテゴリから代表的な問題を抽出してレビュー:
# カテゴリ別問題数
python3 -c "
import json
from collections import Counter
data = json.load(open('data/generated/questions_XXX.json'))
for cat, count in Counter(q['category'] for q in data).items():
print(f'{cat}: {count}問')
"
重点チェック項目:
劣化・損傷 (deterioration)
調査・診断 (diagnosis)
補修・補強 (repair)
# 問題の修正例
def fix_question(q, fixes):
"""
fixes = {
'text': '修正後の問題文',
'explanation': '修正後の解説',
'choices': [...],
}
"""
q.update(fixes)
return q
# 修正後のファイルを保存
python3 -c "
import json
# 修正済みデータを保存
with open('data/generated/questions_reviewed.json', 'w') as f:
json.dump(reviewed_questions, f, ensure_ascii=False, indent=2)
"
| 問題 | 原因 | 修正方法 |
|---|---|---|
| 正解が複数 | isCorrectの設定ミス | 1つだけtrueに修正 |
| 解説が不十分 | 生成時の情報不足 | 教科書を参照して追記 |
| 専門用語の誤り | AIの誤解 | 正しい用語に修正 |
| 選択肢が似すぎ | 差別化不足 | 明確に区別できる選択肢に |