System message versus initial user message in fully automated RAG assistant

I am using the Assistants API with file search, I deploy all my runs via a Python script without obtaining any input from a human user, and my sole goal is for the assistant to provide a JSON object following the schema that I give it. Currently, I attach all my files to the assistant object, my system message is short (“You are an excellent assistant. Use the uploaded files to best respond to a senior project manager’s questions.”), and my first user message is lengthy and includes my desired JSON schema and other related instructions. Then, my Python script parses the assistant’s JSON response and only issues additional automated user message(s) if the JSON object needs to be corrected by the assistant. In the future when I have more files to add, I will retrieve the assistant and thread, add the new files to a new user message, and run it.

Would it be better to move everything in my current initial user message to the system message? If so, would this be a good initial user message: “Follow the system instructions.”?

Have you tried both ways? I would think that having most in system instructions would work better, but it really depends on the instructions.

You would still need to let the model know what you want in the first user message. The instructions might have more weight as a system message, though.


Thanks, Paul. I haven’t tried merging my system message and initial user message yet, so I will. I will also add some more detail to my new initial user message instead of just saying “Follow the system instructions”.