Yes. This is called (or was called) function calling. The information is scattered in the docs
The general idea is that you provide these functions to your Assistant as a schema along with a description. When your Assistant is attached to a run it determines if a function is needed. It creates the function for you (stringified) and then changes the status to “requires_action”.
You then need to run the function (I used a simple map) and then return the results using the submitToolOuputs endpoint. GPT then uses the results to form a response.