Реакция
Известный проект AutoGPT основан на модели ReAct, которая представляет собой комбинацию рассуждений + действий. Большая модель LLM отвечает за рассуждения, контролирует действия для достижения целей, и для разработчиков действие фактически означает создание хороших инструментов или API. В этой главе будет рассказано, как LangChain реализует модель 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 степень ее текущего возраста?")