Tracking inputs, outputs, and metadata, along with data flowing through your app, is essential to understanding your system’s performance. Versioning your app over time is equally important, because it shows how changes to your code or parameters affect your outputs. Weave’s Model class tracks these changes for you.
This tutorial is for developers who want to compare and reproduce results across different versions of an LLM application. By the end, you’ll have a versioned Weave Model that captures your application’s parameters and code. You’ll also know how to retrieve and reuse a previous version.
In this tutorial, you’ll learn:
- How to use Weave
Model to track and version your application and its parameters.
- How to export, modify, and reuse a Weave
Model already logged.
Use weave.Model
The weave.Model class is only supported in Python.
Using Weave Models means that Weave stores and versions parameters such as model vendor IDs, prompts, temperature, and more when they change.
To create a Model in Weave, you need the following:
- A class that inherits from
weave.Model.
- Type definitions on all class fields.
- A typed
invoke function with the @weave.op() decorator.
When you change the class fields or the code that defines your model, Weave logs these changes and updates the version. This ensures that you can compare the generations across different versions of your app.
In the following example, Weave tracks and versions the model name, temperature, and system prompt:
Now you can instantiate and call the model with invoke:
After calling .invoke(), the trace in Weave tracks the model parameters along with the code for the model functions decorated with weave.op(). The model is also versioned (v21 in this case). Click the model to see all the calls that used that version.
A note on using weave.Model:
- You can use
predict instead of invoke for the name of the function in your Weave Model if you prefer.
- To track other class methods with Weave, wrap them in
weave.op().
- Weave ignores parameters starting with an underscore and doesn’t log them.
Export and reuse a logged weave.Model
Now that your model is versioned in Weave, you can retrieve any previous version and run it again without redefining it in code. This is useful for reproducing past results or for sharing a specific model version with others.
Because Weave stores and versions Models that you’ve invoked, you can export and reuse them.
Get the Model ref
In the Weave UI, you can get the Model ref for a particular version.
Use the Model
Once you have the URI of the Model object, you can export and reuse it. The exported model is already initialized and ready to use:
You can now see that the new input uses the same Model version (v21):
You now have a versioned Weave Model that you can iterate on, retrieve, and reuse across different versions of your application.
What’s next