Реакция

Известный проект AutoGPT основан на модели ReAct, которая представляет собой комбинацию рассуждений + действий. Большая модель 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 для поиска в Google и llm-math для математического калькулятора, оба реализованы с использованием LLM. Поэтому при загрузке инструментов должна быть передана модель 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("Кто является девушкой Леонардо ДиКаприо? Чему равна 0.43 степень ее текущего возраста?")
> Начинаю новую цепочку AgentExecutor...
     Мне нужно узнать, кто является девушкой Леонардо ДиКаприо, а затем вычислить 0.43 степень ее возраста.
    Действие: Поиск
    Ввод для действия: "девушка Леонардо ДиКаприо"
    Наблюдение: Камила Морроне
    Думаю: Мне нужно узнать возраст Камилы Морроне
    Действие: Поиск
    Ввод для действия: "возраст Камилы Морроне"
    Наблюдение: 25 лет
    Думаю: Мне нужно вычислить 25 в степени 0.43
    Действие: Калькулятор
    Ввод для действия: 25^0.43
    Наблюдение: Ответ: 3.991298452658078

    Думаю: Теперь я знаю окончательный ответ
    Окончательный ответ: Камила Морроне - девушка Леонардо ДиКаприо, и 0.43 степень ее возраста равна 3.991298452658078.

    > Цепочка завершена.

    "Камила Морроне - девушка Леонардо ДиКаприо, и 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("Кто является девушкой Леонардо ДиКаприо? Чему равна 0.43 степень ее текущего возраста?")