"""chat_message_history_demo.py — InMemoryChatMessageHistory + ChatPromptTemplate"""

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.chat_history import InMemoryChatMessageHistory

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}"),
])

chat_history = InMemoryChatMessageHistory()

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=chat_history.messages,
        input=question,
    )
    reply = model.invoke(messages)

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

    chat_history.add_user_message(question)
    chat_history.add_ai_message(reply.content)

print(f"Stored {len(chat_history.messages)} messages in chat_history.")