Hey @Naeem_Saleem,
RedisGears C API is not yet documented because it’s not yet fully finalize (though it’s really mature and I believe that it will be finalized and documented in the near coming versions). That said, it does not mean you can not use it, its just mean that you should keep in mind that there might be small changes in the API that will require changes in your code.
The main benefit you will gain in using RedisGears and not Redis directly is:
- Cluster support. So for example, if you use cluster or you choose to move to cluster one day, the fact that you are using Gears will make it very simple and almost smooth (maybe even entirely smooth if you follow some basic rules)
- A more reach notification API, you can specify keys prefix, whether or not to read values. On streams, you can specify whether or not to trim the stream, what do to on failures, and so on … All this logic is already implemented in Gears and you get it for free by the fact that you are using RedisGears.
Please notice that if most of the computing time is spent on running AI models then I believe the python will not be a big overhead, That said if you choose to try the RedisGears and RedisIA C API I will be very happy to guide you closely through the development process. I will also understand if you decide not to do it because the API is not yet finalized.
If you choose to give it a try then continue reading, if not then you can stop reading now 
So to get started I suggest you to take a look at this branch: Changes to gears core to support plugable plugings by MeirShpilraien · Pull Request #372 · RedisGears/RedisGears · GitHub
This branch (which will be merged to master once the review is finished) introduces the most recent changes to the API, but more importantly, it introduces Gears capability to load plugins (.so files), written in C or C++ (even RUST). Gears plugin can use all the Redis module C API but also the RedisGears C API. The RedisGears C API is given here: https://github.com/RedisGears/RedisGears/blob/gears_plugins_support_core_changes/src/redisgears.h
As I said it’s not yet documented but I believe that with some examples you can start work with it. The idea is that you need to put your compiled plugin in some directory and point RedisGears to look for plugins in this directory using PluginsDirectory
configuration value (Read here on how to set RedisGears configuration value https://oss.redislabs.com/redisgears/configuration.html)
RedisGears will load your compiled .so file and call RedisGears_OnLoad
function. This function must register your plugin using RedisGears_InitAsGearPlugin
that gets RedisModuleCtx, plugin name, and plugin version. If this call success then your plugin was registered and you can continue.
See here for how we do it on the JVM plugin: https://github.com/RedisGears/RedisGears/blob/0d5aa2542c606b97b4e2bb9c303d1dd0408b4af9/plugins/gears_jvm/gears_jvm.c#L2898
After your plugin is registered you need to register callbacks functions. Those functions, after registered, will be accessible to be used on executions on the entire Redis cluster.
Again see the jvm example: https://github.com/RedisGears/RedisGears/blob/0d5aa2542c606b97b4e2bb9c303d1dd0408b4af9/plugins/gears_jvm/gears_jvm.c#L2951
Then you can build an execution plan and run it or register it on keyspace notification. This can be done like this:
char* err = NULL;
FlatExecutionPlan* rsctx = RGM_CreateCtx(KeysReader, &err);
RGM_Filter(rsctx, Example_Filter, NULL);
ExecutionPlan* ep = RGM_Run(rsctx, ExecutionModeAsync, readeArgs, NULL, NULL, NULL);
Again you can see how it was done on the jvm: https://github.com/RedisGears/RedisGears/blob/0d5aa2542c606b97b4e2bb9c303d1dd0408b4af9/plugins/gears_jvm/gears_jvm.c#L1184 https://github.com/RedisGears/RedisGears/blob/0d5aa2542c606b97b4e2bb9c303d1dd0408b4af9/plugins/gears_jvm/gears_jvm.c#L1694 https://github.com/RedisGears/RedisGears/blob/0d5aa2542c606b97b4e2bb9c303d1dd0408b4af9/plugins/gears_jvm/gears_jvm.c#L1926
You can also see how to use different readers: https://github.com/RedisGears/RedisGears/blob/0d5aa2542c606b97b4e2bb9c303d1dd0408b4af9/plugins/gears_jvm/gears_jvm.c#L1657 https://github.com/RedisGears/RedisGears/blob/0d5aa2542c606b97b4e2bb9c303d1dd0408b4af9/plugins/gears_jvm/gears_jvm.c#L1588
Now if your goal is to also integrate with RedisAI then take a look at RedisAI low-level API: https://github.com/RedisAI/RedisAI/blob/master/src/redisai.h