Yes, you can include the info you want the bot to use in the system.
That is basically also part of how the bot should behave.
But after few responses, I dont think they put the history into system. Its just the same…is my point
Plus if you would put the history into system, it might give the actual end-user ability to mess with the bot. Because he could essentially edit the system message.
mainly responding on this:
However personally I prefer to put a fixed info about where the bot is, or what info he should use in the following user message, because if you make the system message complicated, it might listen less to the actual instructions. (talking mainly about 3.5) [plus I have pretty huge “context” about its environment and the info it should use]
Its best to keep system simple, from my experience.
And then just save the history just as it goes, save user prompts as user, save assistant responses as assistant in the history. And limit the number of messages saved.
(if you would be doing summarization, then probably you would just include it in one user message)
I imagine there might be some differences when you save all history only as 1 user message always
(probably starting each prompt/response inside the user message with username: to have it clear who said that)
vs saving each user as user and each assistant as assistant, building up many messages.
I was doing 1 user history with the davinci and then switched to 3.5 and then switched to saving it as each individual message with proper roles and it seemed to work much better for 3.5
I guess there might be some differences that make putting fixed texts that the bot should use, more significant in the system message, than in user. Might make it use it more, or follow it more.
You could put the more important info into system and then some huge less important context into next user message, to make sure that system is not too complex.
But of course, all kinds of ways can work. There are many possible scenarios where different methods might work differently.
EDIT:
Example of ongoing conversation:
System
User
Assistant
User
Assistant
User
Assistant
User
Assistant
Just save it as it was used
You prompt the GPT with user, save it as user in history
You get response from Assistant, save it as assistant in history
Keep adding messages until you reach your limit, then you start removing the oldest ones (except your system, or first user, or any fixed)
Also one thing I found out
If you start the conversation and the bot always starts responding in different ways/styles
You can pre craft the first Assistant message and make it fixed and hidden from end-user, you can just let GPT generate it until you like it or edit it and save it and put it assistant in the code. You do it in the way you want the bot to respond.
(a tip: use GPT4 to pre-craft your first assistant message for GPT3.5)
(e.g.
system - fixed, instructions
user - fixed, any text to keep in mind/use (or you put it in system, your choice)
assistant - fixed, pre crafted assistant message to define the style
and then first actual prompt user
and continue adding messages as conversation goes in the correct roles)
Then that can help direct the way/style it should respond with further
It can be some welcome message, or some acknowledgement of the instructions or just introduction, just anything.
(A welcome message might cause the GPT to never welcome the user though, as it sees it has already done that)
The longer the context (more tokens used/more messages), the bigger the chance that GPT will start forgetting system instructions. It will start defaulting to the OpenAI AI language model responses, if you told it to behave differently in system. (GPT 4 is better at it)