import argparse
import bootstrap # noqa: F401
from backend.cli_output import print_results
from backend.config import get_cli_config
from backend.label_service import label_samples, save_results
def main() -> None:
parser = argparse.ArgumentParser(description="金融文本大模型打标")
parser.add_argument(
"--task",
choices=["classify", "extract", "match"],
required=True,
help="选择打标任务:classify、extract、match",
)
parser.add_argument(
"--difficulty",
choices=["easy", "medium", "hard"],
help="可选,只运行指定难度的样本",
)
parser.add_argument(
"--output",
choices=["summary", "json", "quiet"],
help="终端输出模式,默认读取 config.yaml 中的 cli.output_mode",
)
args = parser.parse_args()
cli_config = get_cli_config()
output_mode = args.output or cli_config.get("output_mode", "summary")
show_raw_output = bool(cli_config.get("show_raw_output", False))
text_preview_length = int(cli_config.get("text_preview_length", 60))
save_json = bool(cli_config.get("save_json", True))
results = label_samples(
args.task,
args.difficulty,
include_raw_on_success=show_raw_output,
)
output_path = None
if save_json:
output_path = save_results(args.task, results)
print_results(
args.task,
results,
output_mode=output_mode,
text_preview_length=text_preview_length,
show_raw_output=show_raw_output,
output_path=output_path,
)
if __name__ == "__main__":
main()