31 lines
1.7 KiB
Python
31 lines
1.7 KiB
Python
"""Readable Russian plans with metadata kept after the primary columns."""
|
|
import json
|
|
|
|
COLUMNS = [
|
|
'Задание', 'Сцена', 'План', 'Статус', 'Формат', 'Источник текста',
|
|
'ID записи', 'ID сценария', 'Выборка', 'Вход (задание и сцена)',
|
|
'Системная инструкция', 'Провайдер', 'Модель', 'Уровень проверки',
|
|
]
|
|
STATUSES = {'ready': 'План готов', 'blocked': 'Задача невыполнима', 'continue': 'Следующее действие'}
|
|
MODES = {'full': 'Полный план', 'step': 'Следующее действие', 'branch': 'План с условиями'}
|
|
|
|
|
|
def csv_record(record):
|
|
messages = {m['role']: m['content'] for m in record['messages']}
|
|
user = messages['user']
|
|
try:
|
|
user = json.dumps(json.loads(user), ensure_ascii=False, indent=2)
|
|
except json.JSONDecodeError:
|
|
pass
|
|
return {
|
|
'Задание': record['task'], 'Сцена': record['scene_summary'],
|
|
'План': messages['assistant'], 'Статус': STATUSES[record['status']],
|
|
'Формат': MODES[record['mode']],
|
|
'Источник текста': 'LLM' if record['text_source'] == 'teacher' else 'Шаблон русского описания',
|
|
'ID записи': record['record_id'], 'ID сценария': record['scenario_id'],
|
|
'Выборка': record['split'], 'Вход (задание и сцена)': user,
|
|
'Системная инструкция': messages['system'],
|
|
'Провайдер': record['source']['provider'], 'Модель': record['source']['model'] or '',
|
|
'Уровень проверки': record['validation_level'],
|
|
}
|