LLM могут писать код, но что, если они могут выполнять программы?

Хотя модели большого языка (LLM) используются для различных приложений, они обычно с трудом решают задачи, основанные на рассуждениях. Эта проблема была значительно уменьшена с появлением таких техник подсказок, как Цепочка мыслей и Подсказка от меньшего к большему. На высоком уровне эти методы стимулируют рассуждение в LLM, предоставляя примеры обоснования решения проблем в подсказке модели. Затем модель может научиться выводить такие обоснования и выдавать пошаговое решение основной проблемы. Примечательно, что это подход, основанный только на подсказках, который не требует тонкой настройки, что показывает, что LLM способны рассуждать по подсказке с достаточным контекстом.

Несмотря на эффективность таких методов, как подсказка цепочки мыслей, ожидается, что LLM даст как цепочку мыслей для решения проблемы, так и окончательный ответ. Интересно, что такой подход приводит к своеобразным случаям сбоя, в которых LLM может дать точное обоснование решения проблемы, но при этом дать неправильный ответ. Обычно такие ошибки возникают из-за простых ошибок (например, плохой арифметики). Чтобы решить эту проблему, в недавних исследованиях был изучен программный подход, который побуждает студентов LLM генерировать цепочки мыслей с использованием как естественного языка, так и компонентов кода. Затем LLM может запустить этот код через внешний интерпретатор для получения необходимых результатов.

Чтобы понять, почему такой подход будет полезен, мы должны отметить, что многие проблемы, с которыми сталкиваются LLM (например, арифметические ошибки, неспособность вычислить сложные выражения и т. д.), можно легко выразить и решить внутри программы. В результате использование подсказок в стиле цепочки мыслей в LLM с возможностями программирования (например, Codex) позволяет нам объединить преимущества LLM с вычислительными возможностями произвольной программы Python! Более конкретно, можно стимулировать LLM генерировать обоснование решения проблемы, содержащее как компоненты естественного языка, так и кода, создавая сценарий, который может быть запущен внешним интерпретатором для вычисления окончательного результата решения проблемы. Такой подход, который мы рассмотрим в этом обзоре, чрезвычайно полезен для точности и надежности LLM при решении задач, основанных на рассуждениях.