# ============================================================
# [실습] 출력 파싱 (Output Parser)
#
# LLM 을 invoke 하면 결과는 'AIMessage 객체'다. 파서(OutputParser)로 원하는 형태로 바꾼다.
# 단계를 딱딱 끊어서: 1단계 모델 호출(AIMessage 확인) → 2단계 파서로 invoke(변환)
# 아래 항목을 직접 구현하세요:
#  1) StrOutputParser 로 AIMessage → 순수 문자열을 꺼낸다.
#  2) CommaSeparatedListOutputParser 로 AIMessage → 파이썬 리스트로 바꾼다.
#     (리스트 파서는 get_format_instructions() 형식 지시문을 프롬프트에 붙여야 한다)
# ============================================================

from dotenv import load_dotenv

load_dotenv()  # .env 에서 OPENAI_API_KEY 로드

from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser, CommaSeparatedListOutputParser

llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)

# 1) 여기에 코드를 작성하세요
#    - response = llm.invoke("...")  → print(response)  (AIMessage 객체 확인)
#    - StrOutputParser().invoke(response) → 문자열 출력

# 2) 여기에 코드를 작성하세요
#    - prompt = "...5개를 나열해줘.\n" + list_parser.get_format_instructions()
#    - response = llm.invoke(prompt) → list_parser.invoke(response) → 리스트 출력
