from transformers import AutoTokenizer, pipeline, set_seed


# --- 토크나이저 비교 ---
def show_tokenization(tokenizer_name, text):
    # 1) 정답
    tokenizer = AutoTokenizer.from_pretrained(tokenizer_name)
    tokens = tokenizer.tokenize(text)
    token_ids = tokenizer.encode(text, add_special_tokens=False)
    print(f"  토큰 수: {len(tokens)}")
    print(f"  토큰: {tokens}")
    print(f"  토큰 ID: {token_ids}")
    return tokens


# 2) 정답 — 같은 의미라도 언어마다 토큰 분할이 다르다
show_tokenization("openai-community/gpt2", "Artificial intelligence is transforming the world.")
show_tokenization("openai-community/gpt2", "인공지능이 세상을 변화시키고 있습니다.")


# --- 문장 생성: 디코더 맛보기 (GPT-2 이어쓰기) ---
# GPT-2 는 앞 단어들만 보고 '다음 단어 하나'를 예측하는 일을 반복해 문장을 이어 쓴다.
# (참고: GPT-2 는 한국어가 거의 학습돼 있지 않아 깨지므로, 생성은 영어로 시연한다.)
# 3) 정답
set_seed(42)  # 매번 같은 결과가 나오도록 난수 고정 (재현성)
generator = pipeline("text-generation", model="openai-community/gpt2")

prompt = "Artificial intelligence is"
result = generator(prompt, max_new_tokens=20, num_return_sequences=1)

print("\n[이어쓰기 - 디코더(생성)]")
print(f"  입력 프롬프트: {prompt}")
print(f"  생성 결과: {result[0]['generated_text']}")
