Hello guys ,
I am trying to reduce my workload costs . I created a chat bot application , right now I am testing out things whether they work or not . I have to fields of messages for database one is from AI bot and another is from the user .
Before I use to create a new table everytime a user or the AI send a message and store it . But now I was wondering whether I can try like this :?
I will create one table for every user individually and in that table I will create two fields (Ai messages , User messages ). So when a message one I will add the message to the table as following example :
I create a table when a user send “Hi” and if the user send another message saying “How are you today” , Instead of creating a new table I will combine the text like this [Hi(1),How are you today(3)] (1, 3 numbers are ID for every message , they are unique)
So to display the chat I will split these messages using spliby function separating from (,) . Now I will have list of two messages like Hi(1) and How are you today(3) .
I want to know how can I sort this list according to the numbers in descending order .
Note:I cant display it after splitting because in between those messages there are AI bot messages aswell . AI messages will be like “Hello , How can I assist you (2)” and “I am good , How are you. Thanks for asking (4)” .
Example messages to get a clear idea
You need the following structure:
Option set: Role
Conversation
Message
- Conversation (Conversation)
- Role (Role option set)
- content
- User
To display messages, do a search for messages for X conversation, sorted by created date in ascending order.
To submit the messages as message history in an API call to OpenAI or similar, Do a search for Message:format as text and inside each one it’ll be something like {"role": This Message's Role's id:formatted as JSON-safe, "content": This Message's content:formatted as JSON-safe}.
1 Like
Do a search function costing lot of workloads , that’s why I choose to get this preexisting list so that searching workload wont be necessary .
Like we will just get the message texts from the user and split them then sort them and then display them accordingly
Don’t do that, for a whole host of reasons. Just don’t. The simplest solution is generally the correct one.
I am just doing a trial and error , So if this works and if it reduce the workloads , this method might be useful for the users in other use cases as well . But if it should not be done no matter what , I wont do it .
Would you mind specifying the few reasons
- Your structure format can be broken easily if a user formats their message in a certain way
- When you display a list of conversations in a sidebar, all of the conversation’s message history will be downloaded at the same time (as it’s stored on the conversation) which will make it WU intensive and less performant
- Your current structure stores no information, even as basic as when the message is sent, which you’ll want for analytics and basic tracking.
- You’ll find exceedingly difficult to delete or edit past messages
- You’ll have no way for users to attach specific actions (e.g flagging/rating a message with thumbs up/down for feedback) to a specific message
This method is not useful at all, unfortunately. You’re making life hard for yourself!
1 Like
Thanks for the knowledge , I really din’t go this deep
1 Like
And by the way can you tell me any alternative for creating a data everytime a new message is sent .
When a user send a message and after getting the reply there are three tables that are created .
Which is consuming more workload for single message sent
Any alternatives ?
I am storing the system role also because when a user send a message , I will send all the previous messages to OpenAI to get answers based on past messages . The answers should be based on the systems prompt so I will send the systems prompt as a first message then other messages .
[Note: I am using a OpenAI plugin]|