generate_samples.py•2.89 kB
#!/usr/bin/env python3
"""
샘플 데이터 생성 스크립트
템플릿 기반 (빠르고 무료) 또는 LLM 기반 (자연스럽지만 비용 발생) 선택 가능
"""
import sys
import os
import json
import argparse
from dotenv import load_dotenv
# 환경 변수 로드
load_dotenv()
# 프로젝트 경로 추가
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from src.tools.persona.sample_data import generate_all_sample_data, generate_sample_surveys_and_responses
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="샘플 데이터 생성")
parser.add_argument("--use-llm", action="store_true", help="LLM 사용 (자연스러운 응답, 비용 발생)")
parser.add_argument("--personas", type=int, default=30, help="생성할 페르소나 수 (기본: 30)")
parser.add_argument("--responses", type=int, default=2, help="페르소나당 응답 수 (기본: 2)")
parser.add_argument("--quality-only", action="store_true", help="기존 페르소나에 고품질 응답만 추가")
args = parser.parse_args()
print("=" * 60)
if args.quality_only:
print("고품질 샘플 데이터 생성 (기존 페르소나에 응답 추가)")
print("LLM을 사용하여 자연스러운 응답을 생성합니다.")
else:
print("샘플 데이터 생성")
print(f"모드: {'LLM 기반 (자연스러움, 비용 발생)' if args.use_llm else '템플릿 기반 (빠르고 무료)'}")
print("=" * 60)
if args.quality_only:
# 기존 페르소나에 고품질 응답 추가
result = generate_sample_surveys_and_responses(
persona_count=args.personas,
responses_per_persona=args.responses,
use_llm=True
)
else:
# 전체 샘플 데이터 생성
result = generate_all_sample_data(
persona_count=args.personas,
responses_per_persona=args.responses,
use_llm=args.use_llm
)
print("\n생성 결과:")
print(json.dumps(result, indent=2, ensure_ascii=False))
if result.get("success"):
print("\n✅ 샘플 데이터 생성 완료!")
if args.quality_only:
print(f" - 설문: {result.get('surveys_created', 0)}개")
print(f" - 응답: {result.get('responses_created', 0)}개")
print(f" - 업데이트된 페르소나: {result.get('personas_updated', 0)}개")
else:
print(f" - 페르소나: {result.get('personas', {}).get('count', 0)}개")
print(f" - 설문: {result.get('surveys_and_responses', {}).get('surveys_created', 0)}개")
print(f" - 응답: {result.get('surveys_and_responses', {}).get('responses_created', 0)}개")
else:
print("\n❌ 오류 발생:")
print(result.get("error", "알 수 없는 오류"))