ReAct(리액트)

유명한 AutoGPT 프로젝트는 ReAct 모델을 기반으로 합니다. 이 모델은 **Reasoning(추론) + Action(행동)**을 결합한 것으로, 큰 LLM 모델은 추론을 담당하고 목표를 달성하기 위한 행동을 제어하며 개발자들에게는 행동이 실제로 좋은 도구나 API를 개발하는 것을 의미합니다. 이 장에서는 LangChain이 어떻게 ReAct 모델을 구현하는지 소개하겠습니다.

ReAct

기본 패키지를 불러옵니다:

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

여기서 OpenAI 모델을 사용합니다:

llm = OpenAI(temperature=0)

LangChain에 내장된 두 가지 도구인 구글 검색을 위한 serpapi와 수학적 계산을 위한 llm-math를 불러옵니다. 따라서 도구를 불러올 때 사용할 llm 모델을 넘겨주어야 합니다.

tools = load_tools(["serpapi", "llm-math"], llm=llm)

마지막으로, 에이전트를 AgentType.ZERO_SHOT_REACT_DESCRIPTION으로 초기화합니다. 이는 ReAct 모델을 나타냅니다.

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

이제 테스트해 봅시다!

agent.run("Who is Leonardo DiCaprio's girlfriend? What is the 0.43 power of her current age?")
> 새로운 AgentExecutor 체인 진입...
     나는 레오나르도 디카프리오의 여자 친구를 찾고, 그녀의 현재 나이의 0.43 제곱을 계산해야 합니다.
    행동: 검색
    행동 입력: "Leonardo DiCaprio girlfriend"
    관찰: Camila Morrone
    생각: 이제 Camila Morrone의 나이를 알아야 합니다.
    행동: 검색
    행동 입력: "Camila Morrone age"
    관찰: 25세
    생각: 25의 0.43 제곱을 계산해야 합니다.
    행동: 계산기
    행동 입력: 25^0.43
    관찰: 답변: 3.991298452658078

    생각: 이제 마지막 답을 알게 되었습니다.
    최종 답변: Camila Morrone은 레오나르도 디카프리오의 여자 친구이며, 그녀의 나이의 0.43 제곱은 3.991298452658078 입니다.

    > 체인 완료.

    "Camila Morrone은 레오나르도 디카프리오의 여자 친구이며, 그녀의 나이의 0.43 제곱은 3.991298452658078 입니다."

챗 모델 사용

이전 예제에서 에이전트가 추론 엔진으로 큰 모델을 선택해야 함을 알 수 있습니다. 여기서 우리는 OpenAI의 챗 모델을 사용하도록 변경합니다.

from langchain_openai import ChatOpenAI

chat_model = ChatOpenAI(temperature=0)
agent = initialize_agent(tools, chat_model, agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("Who is Leonardo DiCaprio's girlfriend? What is the 0.43 power of her current age?")