As I am sure that you are aware, it is said that Mahabharat was conceived by Ved Vyas; but scribed by Ganeshji.
Legend has it that Ved Vyas asked Ganeshji to write the Mahabharat. Ganeshji agreed to write the Mahabharat; but only if his pen did not falter (meaning that Ved Vyas had to continuously speak). Ved Vyas agreed to this with his own condition that Ganeshji had to completely understand each verse before he penned it down.
It is said that some verses in Mahabharat were overly complex; so that Ved Vyas could buy time to think; as Ganeshji was writing it down after understanding it.
I was not aware of that - but so cool! Thanks for sharing…(I will definitely use that in future examples!)
As far as what it means “to understand” if, in fact, what Ganeshji was understanding was the subtext of the work then there were likely certain aspects of the narrative that resonated with him as he wrote. He could “appreciate” the meaning behind the words, and could therefore write about them more clearly as it wasn’t just about mimic-ing the string of words and sentences, but what the purpose/point of the work was - i.e., what was being communicated (the message).
You could come up with a framework of “appreciations” that, if based on a set of rules and relationships, could then objectify the process of discovering and unearthing the subtext. This is how you avoid the “what it means to you is different than what it means” subjective bias that often brings typical conversations of meaning to a halt. With a narrative framework, you could then repeat the process and make it easier for others/collaborators to work with you through these shared set of appreciations.
I have a mechanism to do that… My latest pass breaks generation into two phases; a grounding phase followed by a concatenation phase. Keep in mind that my ultimate goal is to automate the writing of technical documents which need to be grounded in a truth like a codebase…
What seems to be working well, for technical docs at least, is if I first write a section of a doc and focus just on grounding it in whatever corpus of truth you want it based on. I then take the output of this first grounding phase and pass that to a second prompt whose job is to append it to the document. This concatenation prompt is free to rewrite the section as needed to work more cohesively with the document.
What’s nice about this two phase approach is that you can mix and match models. Gpt-4o, for example, seems perfectly well suited to perform the concatenation.
The grounding phase is where you can do your database lookups to retrieve timelines and facts. I use our Awareness reasoning engine for grounding because it has an infinite input context window but you could use RAG or any other system you want.
The other interesting bit about separating out the two phases is that you can run them completely independently. For example, I took a bunch of separate bios from my employees and passed it through the concat phase. It stitched all of them together to create a team members page for our website. As a test I then passed the same list back through the concat phase and asked for tweets I got a list of tweet length bios out complete with emojis.
Thanks for the explanation… to make things more visually concrete for me would you mind sharing an example of what you pass in for context to a prompt. I’d just like to understand what the model sees for each step of the generation…
I can see how taking a more “discovery writer” approach solves for straying away from the outline. There is no firm outline more of just a goal if I’m following you correctly. That solves the looking forward problem but I’m seeing issues with the model both looking forward and looking backwards. Or are you saying that with your approach the model doesn’t need to look forwards or backwards very far?
BTW… I should say that I’m getting outstanding results with my current approach on the technical writing side of things. I had my tool write a post on long context understanding this morning and it was excellent. It used about 1.5 million tokens of grounding data from about 20 web searches and it wrote a really well balanced post with good cohesion across all of the sections.
It used a mix of models; gpt-4o-mini processed the bulk of grounding tokens, o1 wrote the grounded section text, and gpt-4o stitched everything together into the final document of around 2,500 words. This mix resulted in a generation time of under 5 minutes for a cost of around $2.
$2 for 2,500 words might seem a bit steep but keep in mind that all of those words are squarely grounded in facts. That could have just as easily been 1.5 million tokens worth of code used for the grounding.
I have to say that o1 is way better than 4o at hitting target word counts. It’s likely the added reasoning loop.
From the sound of it, I think we’re approaching this in the same way, just different domains. Your timeline database is similar to what I’ve got saved in my app, only its more focused on narrative (fiction and non-fiction) so its more about the “story”.
But yes, the framework is setup so that the relationship between the items has meaning - so you really don’t even need to reference previous blocks or subsequent blocks (though you might want to for the occasional “logical” connection).
For a really super simple example, you can look at the ghosts in “A Christmas Carol”. They provide a narrative function and are related to each through time (Past, Present, Future). Knowing that order, you could conceivably reach out to 4o and ask for it to write a sequence about Past. Then do another run and set that one to Present. And another to Future.
On all three runs, you don’t really need to reference the other blocks as the concept of Past, Present, and Future are already meaningfully tied to one another. The audience/reader will pick up on that underlying subtext regardless of what the actual storytelling is (the results of the 4o pass).
That order and those reference points are tied back to the meaning of the text, and so just by grounding the generation in those thematic topics you end up communicating something more to the audience than the actual words.
o1 is GREAT for discovering and putting together those thematic items in an order that resonates both logically (satisfaction) and emotionally (fulfillment).
Ok that’s helpful thanks. This is similar to what I’m doing in my technical writing work. I generate each section of the document in isolation. I have an added step though that takes all of those sections that were generated in isolation and stitches them together using another prompt. This stitching prompt is free to rewrite the section as needed to fit more cohesively with the overall document.
In my limited testing, it’s difficult to tell that the entire document wasn’t written in a single pass.