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.
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?")