ReAct

Projekt AutoGPT oparty jest na modelu ReAct, który jest połączeniem rozumowania + działania. Duży model LLM odpowiada za rozumowanie, kontrolowanie działań w celu osiągnięcia celów, a dla programistów, działanie oznacza właściwie tworzenie dobrych narzędzi lub interfejsów API. W tym rozdziale zostanie przedstawione, w jaki sposób LangChain implementuje model ReAct.

ReAct

Wczytanie podstawowych pakietów:

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

Tutaj używamy modelu OpenAI:

llm = OpenAI(temperature=0)

Wczytanie dwóch wbudowanych narzędzi w LangChain: serpapi do wyszukiwania w Google oraz llm-math do kalkulatora matematycznego, oba zaimplementowane za pomocą LLM. Dlatego przy wczytywaniu narzędzi należy podać model llm do użycia.

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

Na koniec, inicjalizacja agenta z typem agenta AgentType.ZERO_SHOT_REACT_DESCRIPTION, reprezentującym model ReAct.

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

Teraz przetestujmy to!

agent.run("Kto jest dziewczyną Leonardo DiCaprio? Jaka jest 0.43 potęga jej aktualnego wieku?")
> Rozpoczynam nowy łańcuch AgentExecutor...
     Muszę dowiedzieć się, kim jest dziewczyna Leonardo DiCaprio, a następnie obliczyć 0.43 potęgę jej wieku.
    Działanie: Wyszukiwanie
    Wejście działania: "Dziewczyna Leonardo DiCaprio"
    Obserwacja: Camila Morrone
    Rozważanie: Muszę dowiedzieć się wieku Camili Morrone
    Działanie: Wyszukiwanie
    Wejście działania: "Wiek Camili Morrone"
    Obserwacja: 25 lat
    Rozważanie: Muszę obliczyć 25 do potęgi 0.43
    Działanie: Kalkulator
    Wejście działania: 25^0.43
    Obserwacja: Odpowiedź: 3.991298452658078

    Rozważanie: Teraz znam ostateczną odpowiedź
    Ostateczna odpowiedź: Camila Morrone jest dziewczyną Leonardo DiCaprio, a 0.43 potęga jej wieku to 3.991298452658078.

    > Łańcuch ukończony.

    "Camila Morrone jest dziewczyną Leonardo DiCaprio, a 0.43 potęga jej wieku to 3.991298452658078."

Użycie modelu czatu

Z poprzedniego przykładu wiemy, że agent musi wybrać duży model jako silnik rozumowania. Tutaj zmieniamy go, aby używał modelu czatu z 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("Kto jest dziewczyną Leonardo DiCaprio? Jaka jest 0.43 potęga jej aktualnego wieku?")