As we have learned in class, language models struggle to perform tasks that require complex reasoning, knowledge that they did not see during training, or interactions with the real world.

In class, we learned about two strategies to improve language model capabilities at these complex tasks: tool-use and retrieval augmentation. Tool-use involves training an LM to call a computer program that runs externally to the LM. Retrieval-augmentation involves conditioning a language model’s generations on retrieved information. In this homework, you will train a very simple tool-use LM, where the tool is a basic calculator. You will also train a retriever and build a system for retrieval-augmented generation.