■ AgentExecutor 클래스의 invoke 메소드를 사용해 에이전트를 호출하는 방법을 보여준다.
※ OPENAI_API_KEY 환경 변수 값은 .env 파일에 정의한다.
▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
from dotenv import load_dotenv from langchain_community.tools.tavily_search import TavilySearchResults from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate from langchain.agents import AgentExecutor from langchain.agents import create_tool_calling_agent from langchain_core.messages import HumanMessage load_dotenv() chatOpenAI = ChatOpenAI(model = "gpt-4o-mini", temperature = 0) toolList = [TavilySearchResults(max_results = 1)] chatPromptTemplate = ChatPromptTemplate.from_messages( [ ("system" , "You are a helpful assistant. You may not need to use tools for every query - the user may just want to chat!"), ("placeholder", "{messages}" ), ("placeholder", "{agent_scratchpad}") ] ) runnableSequence = create_tool_calling_agent(chatOpenAI, toolList, chatPromptTemplate) agentExecutor = AgentExecutor(agent = runnableSequence, tools = toolList, verbose = False) responseDictionary1 = agentExecutor.invoke({"messages" : [HumanMessage(content = "I'm Nemo!")]}) print(responseDictionary1) """ { 'messages' : [HumanMessage(content = "I'm Nemo!", additional_kwargs = {}, response_metadata = {})], 'output' : 'Hi Nemo! How can I assist you today?' } """ responseDictionary2 = agentExecutor.invoke({"messages" : [HumanMessage(content = "What is the current conservation status of the Great Barrier Reef?")]}) print(responseDictionary2) """ { 'messages' : [HumanMessage(content = 'What is the current conservation status of the Great Barrier Reef?', additional_kwargs = {}, response_metadata = {})], 'output' : 'As of 2023, the Great Barrier Reef is experiencing dynamic responses to cycles of disturbance and recovery. While there have been small declines in coral cover, the overall regional hard coral cover remains similar to the levels reported in 2022. For more detailed information, you can check the full report [here](https://www.ncesc.com/geographic-faq/what-is-the-status-of-the-great-barrier-reef-in-2023/).' } """ |
▶ requirements.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
aiohappyeyeballs==2.4.4 aiohttp==3.11.10 aiosignal==1.3.2 annotated-types==0.7.0 anyio==4.7.0 attrs==24.2.0 certifi==2024.12.14 charset-normalizer==3.4.0 colorama==0.4.6 dataclasses-json==0.6.7 distro==1.9.0 frozenlist==1.5.0 greenlet==3.1.1 h11==0.14.0 httpcore==1.0.7 httpx==0.28.1 httpx-sse==0.4.0 idna==3.10 jiter==0.8.2 jsonpatch==1.33 jsonpointer==3.0.0 langchain==0.3.12 langchain-community==0.3.12 langchain-core==0.3.25 langchain-openai==0.2.12 langchain-text-splitters==0.3.3 langsmith==0.2.3 marshmallow==3.23.1 multidict==6.1.0 mypy-extensions==1.0.0 numpy==2.2.0 openai==1.57.4 orjson==3.10.12 packaging==24.2 propcache==0.2.1 pydantic==2.10.3 pydantic-settings==2.7.0 pydantic_core==2.27.1 python-dotenv==1.0.1 PyYAML==6.0.2 regex==2024.11.6 requests==2.32.3 requests-toolbelt==1.0.0 sniffio==1.3.1 SQLAlchemy==2.0.36 tavily-python==0.5.0 tenacity==9.0.0 tiktoken==0.8.0 tqdm==4.67.1 typing-inspect==0.9.0 typing_extensions==4.12.2 urllib3==2.2.3 yarl==1.18.3 |
※ pip install python-dotenv langchain-community langchain-openai tavily-python 명령을 실행했다.