How to use many assistants on the right way?

Hy Devs,

I am building an app, where I wanna use more assistants, and this question comes up:
I try to create for example 3 different Assistants and give the possibility to change their model and or instructions.
First I thought I would create 1-1 Assistant in Name and instruction dimension with 1 model, and if I need to modify any of its parameters, I will create a new copy (new assistant_id, etc) from the donor Assistant and change the model and instructions based on the request and use it until the message will be processed. After I would delete it, and so on.
So I would have some saved Assistants and in case of needs, I would create a temporary immutable, use it, and destroy it.

But then came to my mind, do I need to store any Assistants at all?
Or I should just create a new one with every request, set the instructions and all data from my local database attach it to the run queue, and destroy them after the message is processed?

Another question, is there a benefit to storing and re-using the Assistants from the result point of view, or is it only that important which Assistant is passed to the thread (because it is stateless)?


Hello @haka

Let me take a stab at answering this from my experience. Whether you have pre-created Assistants or create them on the fly is a matter of personal preference an use case.

For example, I have several clients where the settings remain constant and the only thing that changes are the files. For them, I just have static Assistants and change the files as needed in the Run.

In a few, albeit more rare for me, cases I have situations where the instructions and temperature need to change according to a variety of user choices. For those, I used to create Assistants on the fly.

I say “used to” as I now use static Assistants even for the changing situations because, for me, it’s easier to just override the settings in the Run and not have to deal with recreating an Assistant every time.

Just my .02