ReAct (ReActuar)

El conocido proyecto AutoGPT se basa en el modelo ReAct (razonamiento + acción). El modelo LLM grande es responsable del razonamiento y control de acciones para lograr objetivos. Para los desarrolladores, la acción se refiere al desarrollo de buenas herramientas o APIs. En este capítulo, se introducirá cómo LangChain implementa el modelo ReAct.

ReAct

Cargando los paquetes base:

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

Aquí, usamos el modelo OpenAI:

llm = OpenAI(temperature=0)

Cargando dos herramientas integradas en LangChain: serpapi para búsqueda en Google y llm-math para una calculadora matemática, ambos implementados usando LLM. Por lo tanto, al cargar las herramientas, se debe pasar el modelo llm a utilizar.

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

Finalmente, inicializando el agente con el tipo de agente AgentType.ZERO_SHOT_REACT_DESCRIPTION, que representa el modelo ReAct.

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

¡Ahora, probémoslo!

agent.run("¿Quién es la novia de Leonardo DiCaprio? ¿Cuál es el resultado de elevar su edad actual a la potencia 0.43?")
> Entrando en una nueva cadena de AgentExecutor...
     Necesito averiguar quién es la novia de Leonardo DiCaprio, y luego calcular la potencia 0.43 de su edad.
    Acción: Búsqueda
    Entrada de acción: "novia de Leonardo DiCaprio"
    Observación: Camila Morrone
    Pensando: Necesito averiguar la edad de Camila Morrone
    Acción: Búsqueda
    Entrada de acción: "edad de Camila Morrone"
    Observación: 25 años
    Pensando: Necesito calcular 25 elevado a la potencia 0.43
    Acción: Calculadora
    Entrada de acción: 25^0.43
    Observación: Respuesta: 3.991298452658078

    Pensando: Ahora conozco la respuesta final
    Respuesta final: Camila Morrone es la novia de Leonardo DiCaprio y la potencia 0.43 de su edad es 3.991298452658078.

    > Cadena completada.

    "Camila Morrone es la novia de Leonardo DiCaprio y la potencia 0.43 de su edad es 3.991298452658078."

Uso del modelo de chat (Uso del modelo de chat)

Del ejemplo anterior, sabemos que el agente necesita elegir un modelo grande como motor de razonamiento. Aquí, lo cambiamos para usar el modelo de chat de 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("¿Quién es la novia de Leonardo DiCaprio? ¿Cuál es el resultado de elevar su edad actual a la potencia 0.43?")