Improving OpenAI Integration Efficiency in Bubble
Here's a quick tip for how to improve the efficiency of your OpenAI integration with your Bubble app. Now if you're learning Bubble and you haven't checked our website planetnoecode.com then you need to check it out because we've got even more Bubble tutorial videos than you can find on our YouTube channel and many of them are member exclusives and you can sign up today to become a member and get access to all of our videos.
Understanding OpenAI Message Context
But this is the bit that I want to draw your attention to with the OpenAI integration. Remember with OpenAI you need to supply all of the previous messages in a conversation in order for it to respond with understanding the historical context of each message.
Efficient Message Formatting
So the way we do that is that we do a search for messages and when this first became possible when OpenAI released GPT 3.5 Turbo and suddenly all of these things that we had in our brains, how could we create them, these AI tools and now you can build them. I came up with this way of formatting it which is that you have a text field like a human readable field and then you also have a JSON field. So whenever you create a message you create the JSON structure for the user here and then the equivalent in here and you can see that I need to update this.
Optimizing the Workflow
So let's fix this and let's put in the step that I want to share with you about making this much more efficient. Instead of saying search for messages then show each item's JSON. Instead we shall say format as text and then that allows and I'm going to have to copy the example they give here. I'll copy that from the documentation. That allows us to format the JSON in the midst of the workflow rather than having to save it to our database.
Using Delimiters and Dynamic Data
The delimiter that's the computer science term for what separates them and what separates them is a comma and a space and then we can just add in dynamic data here. So this message is I don't think I'm saving roll am I? Okay so I need to save roll. Think you can see where this is going. So the roll here is user and then the roll here is assistant.
Formatting JSON Safely
Oh no I'm not adding a new field. I'm saying roll. That then means that in the format as text I can say this message is roll and then in here I'm going to get rid of everything including the speech marks because I'm going to make it JSON safe. So I can say this message is text JSON safe. Because JSON safe wraps it in its own speech marks and that is also going to ensure that I don't get any syntax errors if someone puts in a colon or any other punctuation that's going to cause an issue with the JSON. Bubble protects against that by using this modifier here formatted as JSON safe.
Simplifying the Workflow
So because I've got that in place I now no longer need to save JSON so I can remove the field there and then just because I'm coming back to this demo I'm just going to fix this bit which is to say save the result of step two first items message content. Yeah because that's the reply that opening I sends back.
Conclusion: Improving App Efficiency
Anyway that's a really quick little tip. It's a small thing you can change but if you're trying to reduce workload units if you approach app development how I do which is that if you can make it simpler do then this is something that you can do to make your app simpler which is to use the format as text to take out multiple fields and format them in a way that you're trying to structure your data. In this case we're trying to structure it as the appropriate JSON syntax to be sent over to OpenAI.