Hey all, I know this has been discussed and there is extensive information in the guides, but there seems to be some lack of clarity on instructions parameter vs developer role.
I’m trying to determine if I use the responses memory to create chains, how instructions and developer roles are prioritised. I’ve read the chain of command guide as well but there they use the term ‘instructions’ without mentioning whether its for the parameter or for developer roles so it’s confusing for me.
For the sake of clarity I will refer to ‘instructions parameter’ and ‘developer role inputs’.
What I know
- I know that instruction parameter does not get carried forward; and that developer role inputs do.
What I don’t know
If I create a chain and how do instruction parameter and developer role input work together.
I’ve tested it with a bunch of different simple options. Ones that clearly compete (e.g. ‘all answers must be ‘apple’’ vs ‘all answers must be ‘pear’’) and those that can be used simultaneously (e.g. ‘all answers must be ‘apple’’ and 'all answers must be in ‘caps’)
When I use developer roles throughout it seems to react as you would expect. If it can satisfy both the current messages developer role input and the developer role input from chat history, it does so. And if they compete, it chooses the latest one. [This makes sense to me]
It’s when I throw in the instructions parameter that it doesn’t always behave as expected. E.g. if I put a developer role in the first message and then use an instruction in the third message I would expect that the instruction parameter takes precedence (regardless if it competes with previous developer role inputs). But it doesn’t seem to behave that way and when I test it I get mixed results, sometimes adhering to instructions, sometimes not.
E.g. I ran two calls: first one uses developer role input to say all answers must be ‘apple’. Second has an instruction parameter that all answers must be in ALL CAPS. I ran this and 8 times out of 10 it made sure the answer was ‘APPLE’ (correct). But there were at least 2 times that the answer was outputted as a lowercase ‘apple’.
If I put both in one message (instructions and developer role input) it seems to favour the developer role. Which is strange because there is a line in the guide somewhere that instructions parameter takes precedence over input. But then the example they show uses a simple input message and not roles - which could change things.
I know this might be overkill, but I feel like there is some nice synchronisation you can have by using developer role inputs for more project wide “instructions” while the instructions parameter can add some unique things for specific calls. But based on how I see irregularity here I’m not that comfortable trusting it. It might be that I’m making them too similar…like the fact that I told it to make the answer ‘pear’ and then tell it to put it in ALL CAPS could be seen as a competing statement even though I didn’t specify ‘pear’ needs to be lowercase, it would just copy it exactly as I had inputted it.
Sorry for the rambling, hopefully someone smarter than me can explain this to me Thanks a lot!
- GR