from dotenv import load_dotenv

load_dotenv()  # .env 에서 OPENAI_API_KEY 로드

from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

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

# (1) 정답
# ("system", "...") 처럼 (역할, 문자열) 튜플로 적는 게 가장 간단해서 보통 이렇게 하드코딩한다.
prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a naming consultant for new companies."),
    ("human", "What is a good name for a {company} that makes {product}?")
])

# (참고) 라이브러리 함수(SystemMessagePromptTemplate 등)로 명시적으로 만들 수도 있다.
#        결과는 위와 똑같지만 길어서, 보통은 위처럼 튜플로 짧게 쓴다.
# from langchain_core.prompts import SystemMessagePromptTemplate, HumanMessagePromptTemplate
# prompt = ChatPromptTemplate.from_messages([
#     SystemMessagePromptTemplate.from_template("You are a naming consultant for new companies."),
#     HumanMessagePromptTemplate.from_template("What is a good name for a {company} that makes {product}?"),
# ])

inputs = {"company": "High Tech Startup", "product": "Web Game"}

# format_messages 는 ChatPromptTemplate 전용 메서드 (자리표시자를 실제 값으로 채움)
messages = prompt.format_messages(**inputs)

response = llm.invoke(messages)
print(response.content)   # 02 에서 배운 .content 로 본문만 (출력 파서는 06 에서 배운다)
