  Language models trained on internet-scale data sets have shown an impressive
ability to solve problems in Natural Language Processing and Computer Vision.
However, experience is showing that these models are frequently brittle in
unexpected ways, and require significant scaffolding to ensure that they
operate correctly in the larger systems that comprise "language-model agents."
In this paper, we argue that behavior trees provide a unifying framework for
combining language models with classical AI and traditional programming. We
introduce Dendron, a Python library for programming language model agents using
behavior trees. We demonstrate the approach embodied by Dendron in three case
studies: building a chat agent, a camera-based infrastructure inspection agent
for use on a mobile robot or vehicle, and an agent that has been built to
satisfy safety constraints that it did not receive through instruction tuning
or RLHF.
