Hi and thanks, that's nice to hear
The easiest way to implement something like this would be to start a separate instance for each annotator and use a custom stream for each of them, with a different order of examples (randomly, or specific based on the annotator). Since the only difference between the instances is the stream, you might not even need a custom recipe and can just use a custom loader. See here for an example: https://prodi.gy/docs/api-loaders#loaders-custom
If you want your loader to be more elegant, you could use a library like typer
to let it take arguments on the command line, so you could do something like loader.py --annotator estelle | prodigy ...
or loader.py --random --n-examples 10 | prodigy ...
etc.
(If your data is in JSON and you know jq
, there's probably also a super elegant way to do the shuffling/ordering in a single line on the CLI, then pipe that forward to the recipe and set --loader json
. But I'm not a jq
wizard, so I couldn't give you any code example for the jq
part )