# ============================================================
# [실습] 실전 도구 + 다중 도구 선택 (에이전트가 도구를 골라 씀)
#
# 진짜 외부 도구(위키백과·웹검색)를 달고, 에이전트가 질문에 따라 '도구를 골라' 쓰게 한다.
#
# 아래 항목을 직접 구현하세요:
#  1) @tool 3개: calculator / search_wikipedia(위키) / web_search(Tavily, 키 없으면 안내).
#  2) create_agent(llm, [세 도구], system_prompt=...) 로 에이전트를 만든다.
#  3) run_agent 로 위키·계산·웹검색을 각각 부르는 질문을 실행한다.
# ============================================================

import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from langchain.agents import create_agent
from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper

from agent_utils import run_agent

load_dotenv()

_wiki = WikipediaQueryRun(
    api_wrapper=WikipediaAPIWrapper(top_k_results=1, doc_content_chars_max=400, lang="ko")
)

# 1) 여기에 코드를 작성하세요
#    - @tool calculator(expression)
#    - @tool search_wikipedia(query)  → _wiki.run(query) (try/except)
#    - @tool web_search(query)         → TAVILY_API_KEY 있으면 TavilySearch, 없으면 안내문


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

# 2) 여기에 코드를 작성하세요 (agent = create_agent(llm, [calculator, search_wikipedia, web_search], system_prompt=...))


if __name__ == "__main__":
    # 3) 여기에 코드를 작성하세요
    #    run_agent(agent, "에펠탑은 누가 언제 만들었어?")   # 위키
    #    run_agent(agent, "123 * 456 은 얼마야?")           # 계산
    #    run_agent(agent, "요즘 인공지능 업계 최신 뉴스?")    # 웹
    pass
