Как ChatGPT может использовать инструменты и плагины
17 апреля 2023 г.Большие языковые модели (LLM), такие как ChatGPT, очень круты и изменили все, хотя у них есть очень серьезные ограничения.
Одно из этих ограничений заключается в том, что эти модели предварительно смонтированы. Это означает, что они обучаются на большом наборе документов, поэтому у них очень большие знания, но они не могут научиться новому (у меня полная статья о том, как обучаются нейронные сети). С этой точки зрения обучение нейронных сетей гораздо больше похоже на инстинкты, выработанные эволюцией, чем когда мы изучаем новые вещи в школе. Но если они не могут изучать что-то новое, то как они могут научиться пользоваться такими инструментами, как калькуляторы или поиск в Интернете с помощью Google?
Чтобы исследовать, как работает эта магия Voodoo, я создал небольшое приложение Vue.js, используя LangChain.js. LangChain.js — это библиотека-оболочка для LLM и вещей, связанных с LLM, таких как подсказки, агенты, векторные базы данных и т. д. С LangChain вы можете использовать инструменты с моделями OpenAI, что очень похоже на концепцию плагинов в ChatGPT. К счастью, LangChain нормально работает в браузерах, поэтому, если у вас есть приложение для браузера, вы можете просто проверить вызовы API на вкладке сети.
Теперь, после теории, давайте посмотрим, как это работает. Мой код доступен здесь. Это очень просто, но в данном случае код менее актуален.
В коде я создал исполнитель агента LangChain, который может используйте калькулятор:
const model = new OpenAI({
temperature: 0,
openAIApiKey: process.env.OPENAI_API_KEY,
});
const tools = [new Calculator()];
this.executor = await initializeAgentExecutor(
tools,
model,
"zero-shot-react-description"
);
Я отправил следующее приглашение, чтобы узнать, как используется этот инструмент:
How much is 10+12+33+(5*8)?
Лэнгчейн отправил OpenAI text-davinci-003 следующее приглашение:
Answer the following questions as best you can. You have access to the following tools:
calculator: Useful for getting the result of a math expression.
The input to this tool should be a valid mathematical expression
that could be executed by a simple calculator.
Use the following format:
Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [calculator]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question
Begin!
Question: How much is 10+12+33+(5*8)?
Thought:
Ответ был следующим:
I need to calculate the expression
Action: calculator
Action Input: 10+12+33+(5*8)
Затем LangChain отправил OpenAI новую подсказку с объединенным содержимым, где результат был рассчитан инструментом:
Answer the following questions as best you can. You have access to the following tools:
calculator: Useful for getting the result of a math expression.
The input to this tool should be a valid mathematical expression
that could be executed by a simple calculator.
Use the following format:
Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [calculator]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question
Begin!
Question: How much is 10+12+33+(5*8)?
Thought: I need to calculate the expression
Action: calculator
Action Input: 10+12+33+(5*8)
Observation: 95
Thought:
И окончательный ответ был:
I now know the final answer
Final Answer: 95
Ура, волшебство раскрыто!
У LLM нет памяти, и они не могут изучать новые вещи. Единственное, что они видят, — это входная последовательность, представляющая собой список токенов (~1 слово — это один токен). В случае GPT-3.5 максимальное количество входных токенов — 4096, а в случае GPT-4 — 8192. Это количество ограничено, но не так уж и мало. Если вы хотите использовать инструменты, вы должны написать инструкции в приглашении.
Когда я впервые увидел API плагина ChatGPT, было очень странно, что интерфейс определяется на естественном языке. Теперь причина абсолютно ясна. Интерфейс напрямую передается модели для его использования. Он понимает описание, потому что понимает язык, и генерирует требуемый результат, который обрабатывается платформой, вызывающей выбранный инструмент. Когда инструмент возвращает результат, платформа записывает его обратно в приглашение и снова отправляет в LLM, который возвращает окончательный ответ. Вот и все. Супергениальное и волшебное решение для расширения границ LLM.
Сегодняшние модели полны совершенно ненужных лексических знаний. Эти знания не нужны, потому что модель может искать их в Интернете. Если отбросить эти ненужные знания, размер модели можно радикально уменьшить. Эти более мелкие модели (например, Alpaca) могут легко работать на вашем телефоне, вашем Raspberry Pi или кофемашина с относительно такой же производительностью.
Еще одним преимуществом уменьшения модели является то, что вы можете сделать ее шире. Если входных токенов больше, модель сможет использовать больше инструментов, понимать более широкий контент и давать более точные результаты.
Я думаю, что будущее светлое, а использование инструментов — это качественный скачок к ОИИ. Эти модели будут с нами на наших телефонах. Мы можем разговаривать с ними через нашу Bluetooth-гарнитуру или, может быть, через Neuralink. И разговорный язык — это только первый шаг. Все можно токенизировать. Виды, тактильные раздражители, что угодно. В будущем эти модели смогут видеть через наши умные очки или, возможно, чувствовать то, что мы чувствуем через НКИ, и помогать нам как неотъемлемой части нас самих, а также подключать нас к Интернету через инструменты как новый слой нашего мозга. Экзокортекс…
Оригинал