Some tools can be found in the discussion here
some of them will probably work in 3D too. You should also consider if your data are “perfect” or if they contain noise before choosing an interpolation method. With DIVAnd, you can do something like
using DIVAnd
func(x,y,z) = x .+ y.^2 .+ z
# ----Data---
x_train = 5*rand(10)
y_train = 5*rand(10)
z_train = 5*rand(10)
A = func.(x_train,y_train,z_train)
myfun=DIVAndfun((x_train,y_train,z_train),A;epsilon2=0.001)
i=1
@show A[i],myfun(x_train[i],y_train[i],z_train[i])
@show myfun(2.5,2.5,2.5)