Обмен состоянием между промптами и программами
Sharing State Between Prompts and Programs
December 16, 2025
Авторы: Ellie Y. Cheng, Logan Weber, Tian Jin, Michael Carbin
cs.AI
Аннотация
Появление больших языковых моделей (LLM) ознаменовало рождение нового типа программирования: программирования на естественном языке. Составляя промпты, которые направляют LLM на выполнение обработки естественного языка, генерации кода, логических рассуждений и т.д., пользователи, по сути, пишут код на естественном языке — код на естественном языке — для исполнения LLM.
Возникающая область исследований обеспечивает интероперабельность между кодом на естественном языке и формальными языками, такими как Python. Мы представляем новую программную абстракцию — общее состояние программы, — которая устраняет необходимость ручной работы для обеспечения взаимодействия между кодом на естественном языке и состоянием программы. С общим состоянием программы программисты могут писать естественный код, который напрямую записывает значения программных переменных, выполняет вычисления с программными объектами и реализует управляющие конструкции в программе. Мы представляем схему для спецификации интерфейсов естественных функций, которая расширяет программные системы для поддержки естественного кода, и используем эту схему для определения общего состояния программы как интерфейса естественной функции.
Мы реализовали общее состояние программы в программной системе Nightjar. Nightjar позволяет программистам писать программы на Python, которые содержат естественный код, имеющий доступ к общему состоянию Python-программы. Мы демонстрируем, что программы, написанные на Nightjar, достигают сопоставимой или более высокой точности выполнения задач, чем реализации, написанные вручную (+4–19%), при этом сокращая количество строк кода в среднем на 39,6%. Компромиссом при использовании Nightjar является возможное увеличение времени выполнения (в 0,4–4,3 раза по сравнению с ручными реализациями).
English
The rise of large language models (LLMs) has introduced a new type of programming: natural language programming. By writing prompts that direct LLMs to perform natural language processing, code generation, reasoning, etc., users are writing code in natural language -- natural language code -- for the LLM to execute.
An emerging area of research enables interoperability between natural language code and formal languages such as Python. We present a novel programming abstraction, shared program state, that removes the manual work required to enable interoperability between natural language code and program state. With shared program state, programmers can write natural code that directly writes program variables, computes with program objects, and implements control flow in the program. We present a schema for specifying natural function interfaces that extend programming systems to support natural code and leverage this schema to specify shared program state as a natural function interface.
We implement shared program state in the Nightjar programming system. Nightjar enables programmers to write Python programs that contain natural code that shares the Python program state. We show that Nightjar programs achieve comparable or higher task accuracy than manually written implementations (+4-19%), while decreasing the lines of code by 39.6% on average. The tradeoff to using Nightjar is that it may incur runtime overhead (0.4-4.3x runtime of manual implementations).