Hi @Vincent!
set_hashes calls get_hash (from prodigy.util import get_hash), which will set input_hash based on any values for keys "text", "image", "html", "input" using murmurhash.
task_hash is similar but will prefix the task with the input_hash and a new murmurhash hash for values with keys "spans", "label", "options", "arcs".
Also, it's important to be aware of a small quirk if you have any keys named in the ignore list. See this post for more details:
Hopefully this helps!