Like all physical systems, biological systems are constrained by the laws of physics. However, mathematical models of biochemistry frequently neglect the conservation of energy, leading to unrealistic behaviour. Energy-based models that are consistent with conservation of mass, charge and energy have the potential to aid the understanding of complex interactions between biological components, and are becoming easier to develop with recent advances in experimental measurements and databases. In this paper, we motivate the use of bond graphs (a modelling tool from engineering) for energy-based modelling and introduce, BondGraphTools, a Python library for constructing and analysing bond graph models. We use examples from biochemistry to illustrate how BondGraphTools can be used to automate model construction in systems biology while maintaining consistency with the laws of physics.