ReAct

Il ben noto progetto AutoGPT si basa sul modello ReAct, che è una combinazione di ragionamento + azione. Il modello LLM grande è responsabile del ragionamento, del controllo delle azioni per raggiungere gli obiettivi e, per gli sviluppatori, l'azione consiste effettivamente nello sviluppo di buoni strumenti o API. In questo capitolo verrà presentato come LangChain implementa il modello ReAct.

ReAct

Caricamento dei pacchetti base:

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

Qui, utilizziamo il modello OpenAI:

llm = OpenAI(temperature=0)

Caricamento di due strumenti incorporati in LangChain: serpapi per la ricerca su Google e llm-math per una calcolatrice matematica, entrambi implementati utilizzando LLM. Pertanto, quando si caricano gli strumenti, dovrebbe essere passato il modello llm da utilizzare.

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

Infine, inizializzazione dell'agente con il tipo di agente AgentType.ZERO_SHOT_REACT_DESCRIPTION, che rappresenta il modello ReAct.

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

Ora, testiamolo!

agent.run("Chi è la fidanzata di Leonardo DiCaprio? Qual è la potenza 0.43 della sua età attuale?")
> Entrata in una nuova catena di esecuzione dell'agente...
     Devo scoprire chi è la fidanzata di Leonardo DiCaprio, e poi calcolare la potenza 0.43 della sua età.
    Azione: Ricerca
    Input azione: "fidanzata Leonardo DiCaprio"
    Osservazione: Camila Morrone
    Pensiero: Devo scoprire l'età di Camila Morrone
    Azione: Ricerca
    Input azione: "età Camila Morrone"
    Osservazione: 25 anni
    Pensiero: Devo calcolare 25 elevato alla potenza 0.43
    Azione: Calcolatrice
    Input azione: 25^0.43
    Osservazione: Risposta: 3.991298452658078

    Pensiero: Ora conosco la risposta finale
    Risposta finale: Camila Morrone è la fidanzata di Leonardo DiCaprio, e la potenza 0.43 della sua età è 3.991298452658078.

    > Catena completata.

    "Camila Morrone è la fidanzata di Leonardo DiCaprio, e la potenza 0.43 della sua età è 3.991298452658078."

Uso del modello di chat

Dall'esempio precedente, sappiamo che l'agente deve scegliere un modello grande come motore di ragionamento. Qui, lo cambiamo per utilizzare il modello di chat di 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("Chi è la fidanzata di Leonardo DiCaprio? Qual è la potenza 0.43 della sua età attuale?")