■ AgentExecutor 클래스에서 OPENAI 모델과 TAVILY 도구를 사용해 질의 응답하는 방법을 보여준다.
※ 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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
from dotenv import load_dotenv from langchain_community.tools.tavily_search import TavilySearchResults from langchain_community.document_loaders import WebBaseLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_openai import OpenAIEmbeddings from langchain_community.vectorstores import FAISS from langchain.tools.retriever import create_retriever_tool from langchain_openai import ChatOpenAI from langchain import hub from langchain.agents import create_tool_calling_agent from langchain.agents import AgentExecutor load_dotenv() chatOpenAI = ChatOpenAI(model = "gpt-4o") tavilySearchResults = TavilySearchResults(max_results = 2) webBaseLoader = WebBaseLoader("https://docs.smith.langchain.com/overview") documentList = webBaseLoader.load() recursiveCharacterTextSplitter = RecursiveCharacterTextSplitter(chunk_size = 1000, chunk_overlap = 200) splitDocumentList = recursiveCharacterTextSplitter.split_documents(documentList) openAIEmbeddings = OpenAIEmbeddings() faiss = FAISS.from_documents(splitDocumentList, openAIEmbeddings) vectorStoreRetriever = faiss.as_retriever() vectorStoreRetrieverTool = create_retriever_tool( vectorStoreRetriever, "langsmith_search", "Search for information about LangSmith. For any questions about LangSmith, you must use this tool!", ) toolList = [tavilySearchResults, vectorStoreRetrieverTool] chatPromptTemplate = hub.pull("hwchase17/openai-functions-agent") runnableSequence = create_tool_calling_agent(chatOpenAI, toolList, chatPromptTemplate) agentExecutor = AgentExecutor(agent = runnableSequence, tools = toolList) responseDictionary1 = agentExecutor.invoke({"input" : "hi!"}) print(responseDictionary1["output"]) print("-" * 100) responseDictionary2 = agentExecutor.invoke({"input" : "how can langsmith help with testing?"}) print(responseDictionary["output"]) print("-" * 100) responseDictionary2 = agentExecutor.invoke({"input" : "whats the weather in sf?"}) print(responseDictionary["output"]) print("-" * 100) """ Hello! How can I assist you today? |
LangSmith is a platform designed to assist in building production-grade LLM (Large Language Model) applications. It helps with testing by offering features to closely monitor and evaluate your application. This enables you to ship applications quickly and with confidence. LangSmith provides tools for logging traces and running evaluations, making it easier to test and refine your application's performance. Additionally, it integrates seamlessly with LangChain, although it can also function independently.
—————————————————————————————————-
The current weather in San Francisco is partly cloudy with a temperature of 13.3°C (55.9°F). The wind is coming from the west-southwest at 8.7 mph (14.0 kph). The humidity is at 93%, and the visibility is 16.0 km (9.0 miles).
—————————————————————————————————-
"""
—————————————————————————————————-
▶ 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 56 57 58 |
aiohappyeyeballs==2.4.3 aiohttp==3.10.9 aiosignal==1.3.1 annotated-types==0.7.0 anyio==4.6.0 async-timeout==4.0.3 attrs==24.2.0 beautifulsoup4==4.12.3 bs4==0.0.2 certifi==2024.8.30 charset-normalizer==3.4.0 dataclasses-json==0.6.7 distro==1.9.0 exceptiongroup==1.2.2 faiss-gpu==1.7.2 frozenlist==1.4.1 greenlet==3.1.1 h11==0.14.0 httpcore==1.0.6 httpx==0.27.2 idna==3.10 jiter==0.6.1 jsonpatch==1.33 jsonpointer==3.0.0 langchain==0.3.3 langchain-community==0.3.2 langchain-core==0.3.10 langchain-openai==0.2.2 langchain-text-splitters==0.3.0 langsmith==0.1.132 marshmallow==3.22.0 multidict==6.1.0 mypy-extensions==1.0.0 numpy==1.26.4 openai==1.51.2 orjson==3.10.7 packaging==24.1 propcache==0.2.0 pydantic==2.9.2 pydantic-settings==2.5.2 pydantic_core==2.23.4 python-dotenv==1.0.1 PyYAML==6.0.2 regex==2024.9.11 requests==2.32.3 requests-toolbelt==1.0.0 sniffio==1.3.1 soupsieve==2.6 SQLAlchemy==2.0.35 tenacity==8.5.0 tiktoken==0.8.0 tqdm==4.66.5 typing-inspect==0.9.0 typing_extensions==4.12.2 urllib3==2.2.3 yarl==1.14.0 |
※ pip install python-dotenv langchain-community langchain-openai faiss-gpu bs4 명령을 실행했다.