# ============================================================
# [실습] LCEL 체이닝 (prompt | llm | parser)
#
# 06 에서 '프롬프트 → 모델 → 파서' 를 단계별 .invoke() 로 직접 이었다.
# LCEL 은 그 단계들을 파이프(|) 하나로 잇는다:  chain = prompt | llm | parser
# 아래 항목을 직접 구현하세요:
#  1) ChatPromptTemplate + ChatOpenAI + StrOutputParser 를 파이프(|)로 연결한 체인을 만들고 invoke.
#  2) 06 의 리스트 파서 예제를 prompt | llm | list_parser 한 줄 체인으로 다시 작성한다.
# ============================================================

from dotenv import load_dotenv

load_dotenv()  # .env 에서 OPENAI_API_KEY 로드

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

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

# 1) 여기에 코드를 작성하세요
#    - prompt = ChatPromptTemplate.from_messages([...{question}...])
#    - chain = prompt | llm | StrOutputParser()
#    - chain.invoke({"question": "..."}) 출력

# 2) 여기에 코드를 작성하세요
#    - list_chain = list_prompt | llm | CommaSeparatedListOutputParser()
#    - invoke 결과(리스트) 출력
