site banner

Friday Fun Thread for April 28, 2023

Be advised: this thread is not for serious in-depth discussion of weighty topics (we have a link for that), this thread is not for anything Culture War related. This thread is for Fun. You got jokes? Share 'em. You got silly questions? Ask 'em.

3
Jump in the discussion.

No email address required.

I've been totally mesmerized by ChatGPT4's writing capabilities lately, having used it to generate hours upon hours of entertainment somewhere in the gray area between a TTRPG and collaborative fanfic. I give it the outline of a scene, tell it what the characters do. If there's combat or uncertainty, I have it evaluate using the game rules and their character sheets. Mostly though, it reads like a choose-your-own-adventure novel with all possibilities open.

Consider this tavern-meet scene from the Cyberpunk universe: I think this is pretty fucking good. GPT's prose is not high art, but it's a damn sight better than what I could manage. If I played a live game with friends, we would not narrate this well. If we played a PbP or written game, I'd still forget to colour the similes with elements of each character's backstory like GPT did without my even asking.

It's empowering to be able to orchestrate tropey pulp so quickly. Normally I'm a slow writer (seconding @PatellaFarmer 's comment a while ago ), and not a good one - both for fiction and nonfiction. I'll agonize over word choice, phrasing, go back, edit too much, and it'll still come out awful (e.g. this post).

With GPT though, I'm like Mickey in Fantasia's Sorcerer's Apprentice and god, it's fun! "Have two characters enage in a fierce argument reflecting their core moral differences". "Write a climactic battle scene, every action heightened to the stuff of legend", "Do a silly montage anime music video (AMV) set to an angsty alt-rock song (Paramore, MCR or something) Cut the lyrics with descriptions of each clip as you write the next few days of story." Call me easily amused, I guess.

Maybe I'll get bored eventually, but for now, I'm astonished at how addicting it is. A quick ctrl+F of my inputs says I made 422 requests on one session alone: great value for the monthly subscription. I found myself staying up late several nights to wait for the next quota rollover. It's like that just one more episode feeling of a good TV show, but the next episode never disappoints, because you can tell the writers to go back and fix it straight away. Then they do!

Of course, it's not without flaws. Given the limited context window, ChatGPT behaves kinda like "Skeleton Jelly", forgetting details you haven't mentioned recently. You have to act as its script supervisor and fix continuity when it inevitably screws up. I mitigate this by keeping a running "save file" prompt of character stats, appearance, the story so far. So long as I keep that up to date and re-prompt it, it does all right, at the cost of re-using the same descriptive words more than it should.

There are also quirks I wish I didn't have to burn requests correcting. Like, for whatever reason - my prompting? its training data? - dialogue tends to drift into therapy-speak. Characters validate each others' feelings and everyone is super happy and supportive. I have to keep pulling on the reins to maintain tension and conflict.

Anyway, I highly recommend trying some stories with it if you like narrative crafting or TTRPGs but otherwise can't write.

I am building a crypto version of Gwern's CYOA idea for a pretty big hackathon. Ideally (and IMO probably) we win a prize of at least $10k, then make some connections and turn it into a real thing. If anyone would like to join me (for prompt engineering, development, or marketing) please reach out and I'll provide more details. I am great at the crypto stuff and OK at everything else, so in particular someone with a basic understanding of AWS or nice front-end development would be useful.

Holy shit. That could be so good. Infinite MUD.

That's the goal!

I read through Gwern's CYOA idea and it seems very promising. The biggest hurdle is clearly consistency/memory. There could however be an ambitious way to improve it, implementing memory like they did in this https://arxiv.org/abs/2304.03442. It allows for consistency with minimal context window usage.

This is how I would implement it:

Store every location in a big node diagram. Every new Location creates a new node, with its features as sub nodes or roots. Any unaltered new node is saved globally in all branches, alterations to the nodes stay branch specific. So you could find an ominous Altar in the cellar on a hunt for cultists, but after this generation it could then turn up on unrelated branches, creating a more dynamic and consistent world.

There are a few flaws here, It would be very computationally expensive to refer to the node diagram on every generation and check when to alter it, then again the whole point of the CYOA gimmick is to generate that stuff once and then reuse. It could also taint branches with potentially unwanted things from other branches, turning this more into collaborative world building.

You could do a similar thing to characters, storing their details in notes that are called up when they are in a scene.

While I don't think you need a very exact or thorough implementation of this, something that's supposed to be used by many people and extend for quite some time does need some kind of long term data storage. Or you could bank everything on the massive 32 thousand token window for gpt-4 that's going to be rolled out.

Ignoring my rambling, I am really interested in learning more details about how you're deciding to go about implementing the project.

Yeah there's all sorts of absolutely fascinating decisions to make. I agree that memory is the biggest hurdle and in general it seems that the more that can be handled by regular code, the better. Ideally there are multiple layers of GPT interpretation of whatever information is presented to it. Maybe you have a context layer and a location layer, and one GPT plugin summarizes them for the next plugin, which combines the summary with the player's chosen action to determine what happens next.

I like the location idea but it does have some drawbacks--namely if a branch has an explosion or something that modifies a location, the Location system will guarantee that that explosion didn't happen. Perhaps you could have a location system and then a separate plugin with branch-specific modifications to that Location. Same with characters, quests, etc. I think you definitely would need this Location system to be interpreted by GPT though, because any other solution would necessitate a grid system or something along those lines which I think would stifle creativity a bit. You'd also want the system to be able to locate landmarks and mention them when they're within sight, which would be quite difficult to implement, but very worthwhile.

To be honest I have a busy job and only have a month to build it, so I will be happy if what comes out at the end works at all haha. Once this grind is over it will be fun to put a lot more time into optimizing everything though. This is the sort of thing that could just be improved upon forever. My understanding is that in certain respects (such as the context window) AI should be subject to Moore's Law so in a few years maybe we have enormous 200k context windows and all of this becomes very easy.

I'll follow up with more details when I have them written down, but tbh Gwern's writeup suffices for me for now.

The whole crypto aspect is mostly just to get funding, right now (crypto hackathons seem to have much less competition), at the VC stage (same), and if/when it actually becomes a real company. The basic idea is that you can buy an NFT of a branch in the story, and then you "own" that branch and earn royalties whenever anyone buys a branch downstream from yours. I am not much of a crypto person (despite working in the field) but I think people would genuinely enjoy owning stories on the blockchain. My hope is that it further incentivizes people to search for high-quality branches--they get paid if they choose the best branch after all. Then all the NFT purchases would go towards subsidizing the experience for your regular consumer who just wants to read a cool crowdsourced CYOA book.

Yeah, I agree with everything you wrote here (Although I already mentioned the branch specific modification to locations in my original comment). The crypto stuff actually seems a lot harder to implement than the rest of the program, imo. I might actually try to develop a location/character database/lookup in my ample free time myself, run it all locally on some 7b model. Will share the code on GitHub if I manage. Some interesting prompt engineering challenges there, I think.

Good luck on grabbing some of that crypto money!

Oops, must have missed your comment about branch-specific modification. I'd certainly be interested in seeing what you come up with. Part of the reason I'm excited to build this is because if it works at all then I will enjoy it, even if it never goes anywhere.

Have you played with loom? There's a good description of what it is here -- in particular the very first image, of the completion tree from the prompt "In the beginning, GPT-3 created the root node of the", should give you a good idea of exactly what the software does and why the thing it does is a thing you might want to do.

I'm not impressed. I mean, I'm impressed insofar as a Chatbot can write anything, but the particular example you posted was of the quality I'd expect from a community college student taking a creative writing elective.

You might want to update your priors. Have you taken a creative writing class? I took one sophomore year at a prestigious U.S. university. The writing quality was nowhere near GPT4 level. I can only imagine how bad a community college class would be. I expect that most students would struggle to produce a coherent narrative at all.

The vast majority of people are terrible at writing.

But a community college student can't churn out a page in ten seconds, fast enough to run an ongoing open-ended story at the pace of a conversation. Maybe I unintentionally emphasized the wrong thing. It's not so much the prose, but the interactivity of it.

I mean, yeah, it's a cool toy, but other than that, what's the point? On a different note, is there any kind of payoff? I"m not terribly familiar with the genre you were having it work in, but I'd be curious if it's capable of writing a unique story with different cool plot twists and an original ending, or if it just regurgitates common tropes, i.e. there are two opposing sides fighting it out and the good guys win at the end. I was playing with GTP3 a while back getting it to write a satirical obituary for the past Penguins season, and while it seemed impressive at first, rerunning the prompt with other teams (including those from entirely different sports) produced practically identical results. It spoke in generalities rather than cite specifics, and when asked for specifics, it was still vague and often wrong. For instance, it said something about Sidney Crosby not having a good season while anyone who remotely followed the team knew that the problems weren't with the stars but with depth and goaltending. The fact that it's not up to date wasn't the problem, either, since it wrote the same obituary for other teams that were within its purview.

I mean, to me, this kind of overwrought prose is totally dreadful and nearly unreadable. Though it's impressive that it churns it out so quickly, boring writing is still boring, no matter how much you pile it up.

But as @2rafa pointed out, GPT4 isn't fine-tuned for writing good fiction. With the proper fine-tuning we might be able to get there.

Consider, for example, all the Stable Diffusion models that are fine tuned to make various types of art.

I predict that we could fine-tune GPT4 to write without overwrought prose quite easily. And we might not even need to do that. We might just need better prompts.

For sure, though it's likely my fault. I think the prompt for it included "as if in a cyberpunk novel or role playing game", and some of that is inherent to the genre.

What's the best prompt format to help it write steps in an RPG campaign? I'm pinging my GM now to help him press out the next steps in our Battletech campaign, and want to add context to the universe and provide after-action reports to keep the continuity going.

I assume it'd be something like "The mission we previously described went like this: .... I want the next part of the story to involve visiting planet Y and chasing after faction Z. What comes next?"

That'd probably work. Sometimes I'm asking questions and letting it write. Other times I just tell it how it should go, or did go (it writes better in past tense). You can ask for combat with rules - admittedly that's not it's forte, and often needs correction.

My usual format is something like: "Write the scene/story/day as a bunch of things happen, then write what happens next, and make sure you do it in this style, including this, that and the other".