랭체인 에이전트와 도구 사용하기

반응형

이 글은 랭체인 에이전트와 도구의 사용 방법에 대해 설명합니다. 이 글에서 예시로 사용된 코드는 모두 랭체인 공식 문서의 코드를 참고하였습니다.

에이전트

에이전트는 LLM을 사용하여 어떤 작업을 어떤 순서로 수행할지 결정합니다. 작업은 필요 시 도구를 사용하여 그 결과를 반환할 수 있습니다.

에이전트를 사용하기 위해서는 다음 개념을 이해해야 합니다:

  • 도구(Tool): 특정 작업을 수행하는 함수입니다. 예를 들면 Google 검색, 데이터베이스 조회, Python REPL, 기타 체인 등이 될 수 있습니다. 도구의 인터페이스는 문자열을 입력으로 받고 문자열을 출력하는 함수입니다.
  • LLM: 에이전트를 구동하는 언어 모델입니다.

도구(Tool)

도구는 에이전트가 외부 인터페이스와 상호작용하는 데 사용할 수 있는 함수입니다. 이러한 도구는 일반적인 유틸리티(예: 검색), 다른 체인, 또는 다른 에이전트도 될 수 있습니다.

다음 방법으로 도구를 로드할 수 있습니다.

from langchain.agents import load_tools

tool_names = ['serpapi']

# load_tools 함수를 사용하여 도구 로드
tools = load_tools(tool_names)

# 일부 도구는 초기화할 때 사용할 기본 LLM이 필요할 수 있습니다.
tools = load_tools(tool_names, llm=OpenAI(temperature=0))

랭체인 도구 목록

  1. python_repl - 파이썬 셸입니다. 파이썬 명령을 실행할 때 사용합니다. 입력은 유효한 파이썬 명령이어야 합니다. 출력을 기대하는 경우 출력해야 합니다.
  2. serpapi - 검색 엔진. 시사에 대한 질문에 답해야 할 때 유용합니다. 입력은 검색 쿼리여야 합니다.
  3. wolfram-alpha - Wolfram 알파 검색 엔진. 수학, 과학, 기술, 문화, 사회 및 일상 생활에 대한 질문에 답해야 할 때 유용합니다. 입력은 검색 쿼리여야 합니다.
  4. requests - 인터넷 포털. 사이트에서 특정 콘텐츠를 가져와야 할 때 사용합니다. 입력은 특정 URL이어야 하며 출력은 해당 페이지의 모든 텍스트가 됩니다.
  5. terminal - 터미널에서 명령을 실행합니다. 입력은 유효한 명령이어야 하며 출력은 해당 명령을 실행한 결과의 모든 출력입니다.
  6. pal-math - 복잡한 단어 수학 문제를 푸는 데 탁월한 언어 모델입니다. 입력은 완전한 단어로 구성된 어려운 단어 수학 문제여야 합니다.
  7. pal-colored-objects - 사물의 위치와 색상 속성을 추론하는 데 탁월한 언어 모델입니다. 입력은 완전한 단어로 된 어려운 추론 문제여야 합니다. 물체에 대한 모든 정보와 답하고자 하는 최종 질문을 포함해야 합니다.
  8. llm-math - 수학에 대한 질문에 답해야 할 때 유용합니다.
  9. open-meteo-api - OpenMeteo API에서 날씨 정보를 얻고자 할 때 유용합니다. 입력은 이 API가 답변할 수 있는 자연어로 된 질문이어야 합니다.
  10. news-api - 현재 뉴스 기사의 주요 헤드라인에 대한 정보를 얻고자 할 때 사용합니다. 입력은 이 API가 답변할 수 있는 자연어로 된 질문이어야 합니다.
  11. tmdb-api - 영화 데이터베이스에서 정보를 얻고자 할 때 유용합니다. 입력은 이 API가 답변할 수 있는 자연어로 된 질문이어야 합니다.
  12. google-search - Google 검색을 둘러싼 래퍼입니다. 시사에 대한 질문에 답해야 할 때 유용합니다. 입력은 검색 쿼리여야 합니다.

[!info] 랭체인이 제공하는 도구 목록은 계속 업데이트되고 있으며, 최신 정보는 여기에서 확인할 수 있습니다.
https://python.langchain.com/en/latest/modules/agents/tools/getting_started.html#list-of-tools

에이전트와 도구 사용 방법

API KEY 입력하기

  • OpenAI Api 에서 OPENAI_API_KEY 키를 발급받으세요.
  • SerpApi 에서 SERPAPI_API_KEY 키를 발급받으세요.
import os

os.environ["OPENAI_API_KEY"] = ""
os.environ["SERPAPI_API_KEY"] = ""

파이썬 패키지 설치

%pip install langchain
%pip install openai
%pip install google-search-results

Serp 인터넷 검색 엔진 사용 방법

SerpAPI 도구를 사용하면 에이전트가 Google 검색을 수행하고 답변할 수 있습니다.

from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI

llm = OpenAI(temperature=0) # temperature를 0으로 입력합니다. 매번 같은 출력을 생성합니다.

tool_names = ["serpapi"]
tools = load_tools(tool_names) # 도구 로드하기

agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

실행

"현재 대한민국 대통령은 누구인가요?"라고 에이전트에게 질문하면, 에이전트는 인터넷 검색을 통해 실시간 정보를 수집하고 정확한 답변을 제공합니다.

하지만, ChatGPT는 2021년 9월까지의 정보만 학습되어 있기 때문에, "현재 대한민국 대통령은 누구인가요?"라고 물어본다면 정확한 답변을 제공하지 못할 가능성이 있습니다.

WolframAlpha 사용 방법

랭체인은 WolframAlpha 도구를 사용할 수 있습니다. WolframAlpha API를 사용하기 위해, APPID를 발급받아야 합니다. WolframAlpha API APPID를 발급받으려면 여기에서 신청하시면 됩니다.

import os

os.environ['WOLFRAM_ALPHA_APPID'] = ""
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI

llm = OpenAI(temperature=0)

tools = load_tools(["wolfram-alpha"])

agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True)

Wolfram Alpha 검색 엔진은 수학, 과학, 기술, 문화, 사회, 일상생활 등 다양한 분야의 질문에 대한 답변을 제공합니다. 먼저, 과학에 대해서 질문 해보겠습니다.

실행

agent.run("암흑물질이란 무엇인가요?")

다른 질문을 하나 더 해보겠습니다.

agent.run("대한민국은 어떤 국가일까?")

여러 도구를 조합하여 사용할 수도 있습니다.

예를 들어, serpapillm-math 도구를 사용하여 인터넷 검색과 수학 계산이 필요한 질문을 해보겠습니다. 이를 통해 해당 질문에 대한 복잡한 답변을 얻을 수 있습니다.

from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import OpenAI

llm = OpenAI(temperature=0)

# llm-math 도구를 사용하려면, load_tools 함수 인자에 llm를 넘겨야 합니다.
tools = load_tools(["serpapi", "llm-math"], llm=llm)

agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True)

실행

agent.run("레오 디카프리오의 여자친구는 누구인가요? 그리고 그녀의 현재 나이에 0.43를 제곱하면 몇 살인가요?")


랭체인 에이전트는 인터넷 검색과 수학 계산을 통해 디카프리오의 여자친구의 나이를 검색하고 이를 도출할 수 있습니다.

연관 문서

  • [[(챗GPT 러닝데이 & MS 애저톤) 챗GPT에 날개를 달아줄 랭체인 2부 - 사용사례]]
  • [[빵형의 개발도상국 - 내용 물어보면 대답하는 문서 검색 챗봇 만들기 - LangChain]]
반응형