# ============================================================
# [실습] 대화를 기억하는 에이전트: LangGraph 메모리
#
# create_agent 에 checkpointer 를 주면, thread_id 별로 대화를 기억한다.
# 아래 항목을 직접 구현하세요:
#  1) checkpointer = MemorySaver() 로 메모리를 켠 에이전트를 만든다.
#  2) config={"configurable": {"thread_id": ...}} 로 세션을 구분해 실행한다.
#     같은 thread 는 맥락 유지, 다른 thread 는 격리됨을 확인한다.
# ============================================================

from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langchain.agents import create_agent
from langgraph.checkpoint.memory import MemorySaver

from agent_utils import run_agent

load_dotenv()


@tool
def get_weather(city: str) -> str:
    """도시 날씨 조회."""
    return {"서울": "맑음, 22도", "부산": "흐림, 25도"}.get(city, "정보 없음")


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

# 1) 여기에 코드를 작성하세요 (agent = create_agent(llm, [get_weather], checkpointer=MemorySaver()))


if __name__ == "__main__":
    # 2) 여기에 코드를 작성하세요
    #    alice = {"configurable": {"thread_id": "alice"}}
    #    run_agent(agent, "내 이름은 앨리스야. 기억해줘.", config=alice)
    #    run_agent(agent, "내 이름이 뭐였지?", config=alice)
    #    bob 세션으로도 물어 격리 확인
    pass
