This repository contains materials for our LLM Engineering: Structured Outputs course.
Improve your LLM engineering skills with Jason Liu, an LLM charmer and the author of Instructor library. Learn everything about structured output handling, function calling, complex validations with Pydantic and more in this short and helpful course!
In this course you'll experiment with a list of notebooks that walk you through some simple concepts in Instructor. We start small and then work our way up to more complex and tricky implementations using the library.
-
Introduction
- This is a quick walkthrough some of the benefits of Pydantic and how the Instructor Library integrates nicely with Pydantic withinstructor.patch()
-
Tips
- Quick demonstration of how to use enums,Pydantic
models and structured prompting to get specific output formats -
Applications Rag
: Learn how to generate nested models withPydantic
by rewriting user queries -
Validation
: Learn how to use Pydantic's inbuilt validators to perform more complex validation and checks on the outputs of your functions
We utilise the Graphviz package in this tutorial series. If you don't have it on hand, you should download it. Mac users can do so by running brew install graphviz
while Linux users can try sudo apt install graphviz
( modify to your system specific package manager). Here is a link to their official documentation
If you're encountering an error like the following when trying to run graphviz after installing it, just restart the notebook and verify you've got graphviz installed by running dot -v
in your shell.
Command '[PosixPath('dot'), '-Kdot', '-Tsvg']' died with <Signals.SIGKILL: 9>.
Here are the steps to start running the notebooks
- Create a virtual environment
python3 -m venv .venv
source .venv .venv/bin/activate
- Install the dependencies
pip3 install -r requirements.txt
- Add the virtual environment to Jupyter notebook
python -m ipykernel install --user --name=instructor-env
- Add OpenAI API Key into your shell by running the following command. This will be set for as long as the shell is open.
export OPENAI_API_KEY=<api key goes here>
- Start Jupyter lab
jupyter lab