I am working with the Assistant API and would look to hear about the advantages and disadvantages of creating user-specific assistant versus using the same assistant for all users (with separate threads). Here is my understanding so far but I am sure that I am missing something here:
Advantages: I can customize the assistant for each user (e.g. modify the instructions to include user information)
Disadvantages: Additional costs because vector storage is charged by size per day per assistant. Or has that changed in v2?
Each assistant can use two vector stores, one associated with the assistant and another with the thread.
I imagine there may be some common information which is needed for all users which could be in the assistant vector store, then each user might have a smaller vector store for just their information. Eliminating the information redundancy limits the extra costs you’ll incur for the storage.
The other thing I would suggest if you’re concerned about storage space is to make sure you’re using the most condensed format possible.
If you have PDFs, extract the text yourself and reformat it into markdown, etc.
Advantages: I can customize the assistant for each user (e.g. modify the instructions to include user information)
Not really. You can have one single assistant for all users and change the instructions at run level. You can customize both the instructions and additional_instructions for each user every time they run the assistant.
Thanks! So is there any reason to have a separate assistant per user? I only considered that based on suggestions in this forum but the advantage was never really clear to me.
I would use one assistant per user only if each user needs to upload their own files (e.g. for knowledge retrieval/file search).
I have assistants in production constantly interacting with users via WhatsApp and it’s just one assistant. All the users consume the information from the same files so no need for me to create an assistant per user.
In some cases, even when the users need files, I use one single assistant because I don’t upload the file to the assistant but have the files on Google Drive and the assistant knows, based on each user ID, which files to access.
This thread is so helpful. I’ve been focussed on building user based assistants as I wanted to have a reference of company information and brand tone and style of voice for the assistant to use.
Having read this thread I am now rethinking this and perhaps linking to a google doc for that information may be the best way to do that instead.
It would be great to know what people think in this forum who’ve tried different options.
When and where should additional instructions be added. What I wanted is for the instructions to be effective for each assistant/thread. What I have, currently, is that a user can start a threaded conversation in a private telegram chat and continue using that thread in a Telegram Group. For example if I want replies to be in Chinese, I can just send a message without using additional instructions and it will be effective in both the private and group chat.
That being the case, when should I used additional instructions vs let the user decide via messages to the Assistant.