"""chat_prompt_template_demo.py — ChatPromptTemplate with a message history slot"""

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.messages import HumanMessage, AIMessage

load_dotenv()

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

prompt = ChatPromptTemplate.from_messages([
    ("system", "Keep each reply to one short sentence."),
    MessagesPlaceholder(variable_name="history"),
    ("human", "{input}"),
])

history = []
turns = [
    "What does the HTML <a> tag do?",
    "What attribute opens the link in a new tab?",
]

for question in turns:
    messages = prompt.format_messages(history=history, input=question)
    reply = model.invoke(messages)

    print(f"Human: {question}")
    print(f"AI:   {reply.content}\n")

    history.append(HumanMessage(content=question))
    history.append(AIMessage(content=reply.content))