Add training and planning eval exports

This commit is contained in:
wuyang6
2026-05-11 14:50:00 +08:00
parent 8cca3793e0
commit be731caed7
15 changed files with 1074 additions and 4 deletions
+68
View File
@@ -34,6 +34,8 @@ from .data_agent_records import (
confirm_generation_goal,
confirm_generation_plan,
export_dataset_records,
export_planning_eval_csv,
export_training_jsonl,
get_generation_plan,
normalize_dataset_draft,
prepare_generation_goal,
@@ -1049,6 +1051,8 @@ def default_tool_registry() -> dict[str, AgentTool]:
'data_agent_normalize_dataset_draft': _normalize_dataset_draft_tool,
'data_agent_validate_dataset_records': _validate_dataset_records_tool,
'data_agent_export_dataset_records': _export_dataset_records_tool,
'data_agent_export_training_jsonl': _export_training_jsonl_tool,
'data_agent_export_planning_eval_csv': _export_planning_eval_csv_tool,
}),
]
return {tool.name: tool for tool in tools}
@@ -1550,6 +1554,70 @@ def _export_dataset_records_tool(arguments: dict[str, Any], context: ToolExecuti
return json.dumps(payload, ensure_ascii=False, indent=2)
def _export_training_jsonl_tool(arguments: dict[str, Any], context: ToolExecutionContext) -> str:
require_validation_ok = arguments.get('require_validation_ok', True)
if not isinstance(require_validation_ok, bool):
raise ToolExecutionError('require_validation_ok must be a boolean')
overwrite = arguments.get('overwrite', True)
if not isinstance(overwrite, bool):
raise ToolExecutionError('overwrite must be a boolean')
system_prompt = arguments.get('system_prompt', '你是小爱同学,中文智能语音助手。')
if not isinstance(system_prompt, str):
raise ToolExecutionError('system_prompt must be a string')
try:
records = _records_from_arguments(arguments, context)
payload = export_training_jsonl(
records,
root=str(context.root),
output_path=_data_agent_output_path(
_optional_string(arguments, 'output_path') or 'output/training.jsonl',
context,
canonical_filename='training.jsonl',
),
session_num=_coerce_int(arguments, 'session_num', 5),
session_time_minutes=_coerce_int(arguments, 'session_time_minutes', 5),
context_fields=_optional_string_list(arguments, 'context_fields'),
system_prompt=system_prompt,
require_validation_ok=require_validation_ok,
overwrite=overwrite,
)
except (DataRecordError, json.JSONDecodeError) as exc:
raise ToolExecutionError(str(exc)) from exc
return json.dumps(payload, ensure_ascii=False, indent=2)
def _export_planning_eval_csv_tool(arguments: dict[str, Any], context: ToolExecutionContext) -> str:
require_validation_ok = arguments.get('require_validation_ok', True)
if not isinstance(require_validation_ok, bool):
raise ToolExecutionError('require_validation_ok must be a boolean')
overwrite = arguments.get('overwrite', True)
if not isinstance(overwrite, bool):
raise ToolExecutionError('overwrite must be a boolean')
complex_default = arguments.get('complex_default', False)
if not isinstance(complex_default, bool):
raise ToolExecutionError('complex_default must be a boolean')
try:
records = _records_from_arguments(arguments, context)
payload = export_planning_eval_csv(
records,
root=str(context.root),
output_path=_data_agent_output_path(
_optional_string(arguments, 'output_path') or 'output/eval_planning.csv',
context,
canonical_filename='eval_planning.csv',
),
session_num=_coerce_int(arguments, 'session_num', 5),
session_time_minutes=_coerce_int(arguments, 'session_time_minutes', 5),
context_fields=_optional_string_list(arguments, 'context_fields'),
complex_default=complex_default,
require_validation_ok=require_validation_ok,
overwrite=overwrite,
)
except (DataRecordError, json.JSONDecodeError) as exc:
raise ToolExecutionError(str(exc)) from exc
return json.dumps(payload, ensure_ascii=False, indent=2)
def _draft_text_from_arguments(arguments: dict[str, Any], context: ToolExecutionContext) -> str:
draft_text = arguments.get('draft_text')
draft_path = arguments.get('draft_path')