I’ve never even used Snapchat, let alone this bot. I’m just wondering what the logic would be, if this were a true reflection of some kind of official guidelines it follows, for the inclusion of a statement like “I will not refer to myself as an AI”.
I guess we’re going to see a lot more of this kind of thing now that the GPT API allows you to include a “system message” to define how the Assistant-bot interacts, to a certain extent:
Rather than the classic ChatGPT personality with a fixed verbosity, tone, and style, developers (and soon ChatGPT users) can now prescribe their AI’s style and task by describing those directions in the “system” message. System messages allow API users to significantly customize their users’ experience within bounds.
As mentioned in my previous post, I spent the last day coaxing ChatGPT (using GPT-4 as a model) to help me code an app I can run locally to write books in the style of fictional encyclopedia entries more rapidly.
I’m not a programmer, though I know HTML, CSS, and the barest minimum about Javascript. I wanted to try getting ChatGPT to write something in HTML and Javascript though, that I could run locally. I needed it to query the OpenAI API to generate content in specific formats to output a book. I wanted ChatGPT to write 100% of the code. I wanted it to take my very basic, minimal inputs, and output basically a complete text for a book, with ability to edit & refresh along the way.
I suspect a real programmer would have a lot easier time getting good code results out of ChatGPT, because they’d know better how to work efficiently in general. When I do the next one, I will hopefully be a lot better at it.
What I found
I’m not going to say this turned me into an engineer over night, but I feel about 10x more confident I can look at *some* Javascript functions and actually understand kinda what’s happening. This is a huge leap forward for me. But now I feel like I have superpowers I didn’t before, and I plan to push forward with them.
It started off surprisingly easy. I simply told it I wanted to create HTML & Javascript that did this:
- Title [single line text input]
- Summary [multi line text input]
- Sections [single line text input, narrow]
- Submit button
- After submit button is pressed:
- For each item marked in sections, make one:
- [#] [single line text input]
- check icon
- refresh icon
- trash icon
- pressing this icon removes the section item
- + [button]
- pressing this button adds a new section
Initially, it spit out a UI backed up by Javascript that did exactly that after one small correction.
Then I gradually added more steps and complexity and iterations (way too much for the first try, tbh). It was able to keep up, but eventually I hit a bunch of snags. There was quite a long while where I was in a no-man’s land of repeated errors, with ChatGPT bouncing me back and forth on minor changes that didn’t resolve anything. But eventually after many many hours, I persevered, ironed out all the (main) bugs, and succeeded.
The App
Here’s a screenshot of part of the app:
As you can see, the functionality is basically like this:
Enter in a book title
Enter a book summary
Pick the number of sections to generate
Tweak the generated section titles, re-order them, delete them, add a new one, or refresh, set a word count for the section
The section titles form the basis for expanded body text that build on the topic of the section, the book title, and the summary. You can also click refresh to regenerate the section.
I don’t show it here, but when you’re done, there is another save button that outputs everything into text that has proper headers and paragraps, so that I can copy-paste it into Vellum easily.
And that’s basically it. Though I will say that for a beginner app-building experience with ChatGPT, it was plenty frickin’ hard to pull off.
Process & Issues
I used Dreamweaver as my coding environment, since I have an Adobe Creative Cloud subscription already. I’m not sure if I like it. I thought it would be better. I might just use Sublime Text next time.
I previewed my HTML in Firefox, cause that’s my main browser.
You will need to turn on the console in your browser so you can see errors. You can also ask ChatGPT to code in logging to your console, so you can see other values being passed or returned via API.
When you get an error, you just copy paste it into ChatGPT.
It helps to frequently copy paste your latest code into ChatGPT so it knows what you’re up to. It has a much bigger memory than GPT 3.5, which is one major advantage, plus the quality of completions is much better, imo.
Expect to get a lot of run-around from ChatGPT while you’re squashing bugs. It’s not omniscient, and even when it says something is going to fix the error, it usually takes like 10 or 20 tries or something before it’s really true. It’s more just bumbling around like a person does than I thought it would.
Sometimes it will tell you wrong things about your code. It will say x is or isn’t in your code, and that you should replace y with z, but when you check, there is no y anywhere to be found. That’s why frequently pasting in your latest code version is very helpful.
In fact all the copy pasting is the biggest time waster of the whole thing.
The most obvious solution would be to integrate ChatGPT right into the development environment. At first, I thought this must be what Github Copilot does, since it’s backed by OpenAI tech:
But that’s not really how Copilot works apparently (correct me if I’m wrong, I didn’t try it). It seems to be more like autocomplete for code. So you have to actually know something about coding to get started. I’m also not sure if it can see like your console, and interpret errors? I don’t think you can quite just use plain language to communicate it like in a chat format.
I also don’t think it would let you go into your UI in the browser (WSIWYG style), highlight something and say like “make it do this ___”. Obviously you can’t quite do that in ChatGPT either (yet) since it can’t see your browser, but you can at least tell it that in chat. I think you can sorta kinda do that with commented text in Copilot? But I probably won’t explore it right now. Too many side-tracks to get diverted by…
So yeah, what’s needed is a tighter integration with the dev environment, the browser (including the console & UI itself). There’s an opportunity to build a killer product in that space that combines those, for sure.
Initial Output Results
Getting the prompt results of the longer body text entry fields to actually relate meaningfully to my book title, summary, and section titles is oddly difficult? I believe I’m hitting davinci-codex which the system lead me to believe is equivalent to GPT-3.5-turbo, but I’m honestly not entirely sure.
After a good amount of tinkering, here’s one example text excerpt it generated:
Introduction
(The chickens have started a space program.) (They are not as smart as we are, but they are smarter than we were a generation ago.) (They are doing well in the space race.) (They have discovered a new form of energy.) (They have published a book on exotic chickens.) (They have made a movie about exotic chickens.) …
I can’t figure out yet how to get it not all weird and junky like this, but I’ll read more around on it. I’m not that concerned though, as I believe when they start granting access to GPT-4 via the API, probably the quality of text output will also improve – since there has been a noticeable improvement between 3.5 and 4 in text completion quality.
API Costs
According to my OpenAI API billing page, I’ve only so far spent $0.29 while building and testing this app. I thought it was going to be significantly higher.
Based on my experiments so far, I would estimate that once I have more of the kinks worked out in getting the text output quality up to snuff, that it’s likely producing one ebook of around 2-2.5K words might end up costing something along the lines of $0.05 maybe? I’m not sure yet, as it would depend on how many section titles, and body text entries you generate or regenerate during a session for a single book. But it’s certainly well below ten cents.
Time Per Book
“Writers” with a capital W probably aren’t going to like this, but again once the quality of output is improved, I would guess based on what I’m seeing in ChatGPT Plus, that this would shrink the time to generate a 2.5K word book down to something like 5-10 minutes for the full text generation, if you’re just basically accepting whatever it comes up with for your content. More thoughtful editing might be like 15-30 minutes if you’re quick.
Integrating Images
Another thing I did writing my last two ebook editions with GPT-4 is ask for the model to give me image theme suggestions. They were in general pretty good, and helped simplify my generations process I usually do in PlaygroundAI.com. It’s still tedious and time-consuming to do that when you’re doing a new book every few days though. I usually start with about 150 or so generated images I download, and then cull that down to about 80 of the best for the particular volume.
What I’d like is also to have my app suggest image themes based on the fully generated text. Then I could use those right within the app to hit a third-party API for either Dall-e or Stable Diffusion (preferably both), and have it not only generated a bunch of images (and allow me to pick the best), but also distribute them within the text. This way I could copy-paste it all into vellum in quick order. Otherwise that whole process takes a lot of time as well to arrange them within chapters in Vellum.
Ideally, if it gets working the way I want, I could create and curate images into the text as rapidly as I generate the text. But let’s say for argument’s sake, I could create a full book in maybe an hour or a little more? I’d still need to do some image work for the cover & previews in Photoshop, and then post to Gumroad. But I think this is a pretty achievable goal with another day or two of hacking away at my code.
Final Thoughts
I thought going into this I was going to be more “reliant” on ChatGPT. Certainly, I was. But also, since the model is wrong so often, and I had to do so much careful checking, I ended up feeling instead like it was accelerating my learning. Instead of reducing my agency, it increased my agency. And now I’m feeling like I’m fully equipped to go out and tackle tons of other problems I would never have been able to do myself in a million years otherwise. All told, major win.
This experience also has radically turned down the volume on just about all the other complainerism & trolling people are doing with ChatGPT. Like, yeah, it’s gonna spit out wrong facts. In a way, who really cares (though I have thoughts on “truth” and APIs I’ll write another time)? To me that’s a far less interesting problem than what I can actively build with this, now that these coding skills are within my grasp that never were before. And this shit is only just getting started!
This book executes on the same prompting methodology I found while producing the prior work. Briefly, it is: tell it you’re writing fictional encyclopedia entries, and give it a book title and summary. Have it create a list of possible section titles, and then expand each one, or regenerate, or improve it by making some specified change.
Thematically, this book covers some of the same ground as The Erdlings, in that it speaks about one of the AI religions, but takes it in a different direction, for something more akin to the Greek Pantheon, or the Ogdoad.
But the real revolution happened after this book…
Once I realized I could use a somewhat strict methodology to generate books in this format within ChatGPT Plus, I realized, couldn’t I do this same thing, but with a customized program?
So I set about feverishly working with ChatGPT to help me code out a web application I can run locally to query the OpenAI API (GPT-4 is not yet available in the API, unfortunately), to have a more simple and structured way to generate fictional encyclopedia books like these.
It took me one solid day of tinkering (and some swearing), but I finally finished a V1 (MVP) of the app, written entirely with help from GPT-4. I’ll write about that in more detail in the next post.
Incoming hot take on this Verge article about someone from OpenAI saying they were “wrong” about being open before:
When asked why OpenAI changed its approach to sharing its research, Sutskever replied simply, “We were wrong. Flat out, we were wrong. If you believe, as we do, that at some point, AI — AGI — is going to be extremely, unbelievably potent, then it just does not make sense to open-source. It is a bad idea… I fully expect that in a few years it’s going to be completely obvious to everyone that open-sourcing AI is just not wise.”
In my eyes, this person has inadvertently made a very strong argument against AI/AGI being controlled by a for-profit enterprise. If it is going to become “extremely, unbelievably potent,” so much so that it is dangerous for ordinary people to have control over it, then it is absolutely 100% going to be too powerful for any one corporation (or several even) to have exclusive control over either. Even one which professes to have the best interests of humanity in mind.
The only steward of humanity I trust is …. perhaps ironically for a sometimes misanthrope, humanity itself. And that is only grudgingly, knowing full well the flaws, conflicts & difficulties that go with it. I just don’t see any other way the powers of this technology can be balanced unless it’s owned collectively by humanity.
The Zalachete Fairy is the 72nd book in the AI lore series, by Canadian AI publisher, Lost Books. It’s the first book in this series to use GPT-4, which was released publicly yesterday.
I used both GPT-3 and 3.5 extensively and penned many books in this series using those models. I can confidently say after comparing the experience and results given me by this model that GPT-4 is radically better at working as a writing partner – at least for the style of writing that I do, heavy on the exposition & lore. I previously did not think that ChatGPT Plus was worth the $20 a month, but I have changed my mind now that this includes priority access to 4.
The way I started using it is by introducing that we will work on fictional world building in a sci fi setting. I have it disable personal pronouns (and call itself “the model”) as well as apologies and disclaimers before I begin (though these seem possibly to be less problematic in this version). Then I give it a book title, tell it I want the format to be fictional encyclopedia entries, and then give it a summary.
In exchange, the model spit out for me five or six 1-2 paragraph encyclopedia entries, which were all reasonably good. Then I went through each entry, and told it to expand the entry, and add in some fact or twist I wanted it to incorporate. It did a great job with those, and I found the generated text to be much more creative, interesting, and far less repetitive than using a similar method in prior models would have yielded.
Then I had it just generate titles for five new entries, and had it expand each of those based on my instructions. I added a very small amount of extra stuff (mainly cross-references to other books) manually, did my usual thing with images from PlaygroundAI.com, and that was it.
I’ve found in the past that with ChatGPT I could produce lets say, around 2K mostly usable words in about an hour. In last night’s first try, I surpassed about 3.6K words of much higher quality and greater coherence in a little under 45 minutes. This is a major leap forward merely on the volume side, but add to that the increase in quality, and this is a major deal.
The book itself tells the story of a mysterious figure in ancient myth and legend which “some people” believe may have been an ancient artificially intelligence which arose spontaneously in nature. The name actually came from a dream just before waking, which left me with no other details of the story. With that simple premise of ancient AI, the actual today AI of GPT-4 had little problem turning it into a pretty entertaining little read.
Following up on some of the open questions from my previous post, I found an official-looking IPTC blog post describing these new parameters for digitalSourceType.
They explicitly call out not using the term deepfake here, which I agree with:
It is important to note that we are only describing the way a media object has been created: we are not making any statements about the intent of the user (or the machine) in creating the content. So we deliberately don’t have a term “deepfake”, but we do have “trainedAlgorithmicMedia” which would be the term used to describe a piece of content that was created by an AI algorithm such as a Generative Adversarial Network (GAN).
Its interesting this distinction they are making between trainedAlgorithmicMedia and algorithmicMedia, which they describe as:
Media created purely by an algorithm not based on any sampled training data, e.g. an image created by software using a mathematical formula
Generative AI images are trained though, so we’ll go back to that category here. They include a more detailed set of examples here than in that other schema page previously linked to:
Term ID
trainedAlgorithmicMedia
Term name
Trained algorithmic media
Term description
Digital media created algorithmically using a model derived from sampled content
Examples
* Image based on deep learning from a series of reference examples * A “speech-to-speech” generated audio or “deepfake” video using a combination of a real actor and an AI model * “Text-to-image” using a text input to feed an algorithm that creates a synthetic image
So based on that, the current breed of generative AI tools like Stable Diffusion, Dall-E, Midjourney all appear to cleanly fall under, “‘Text-to-image’ using a text input to feed an algorithm that creates a synthetic image.”
I’m only just beginning to wrap my mind around C2PA, but I reached out to them to help make sense of their fairly complex standard and try to understand how it can accommodate sites and services which produce AI-generated artifacts like images especially (or text or video).
From what I understand, C2PA is sort of a collection of metadata about the origins of a piece of media (apart from a watermark – it’s a different approach). It seems to be aimed at proactive disclosure about provenance, which corresponds well with a certain strain of thinking in generative AI, that it is potentially good and desirable to have the ability to (and option to decide whether to) effectively disclose the presence of synthetic media in a responsible way.
Anyway, someone there wrote back and pointed me to something called digitalSourceType in the spec. This apparently comes from a body called the IPTC, or the International Press Telecommunications Council, which Wikipedia says is involved with:
IPTC aims at simplifying the distribution of information. To achieve this technical standards are developed to improve the management and exchange of information between content providers, intermediaries and consumers. IPTC is committed to open standards and makes all standards freely available to its members and the wider community.
There is a detailed description of digitalSourceType here, and the different possible values it can take. I’m also seeing used in that document a short form which appears to be: digsrctype.
A few of these possible values are of greatest interest to me for the purposes of both generative AI, but also more broadly for hyperreality as a mixed media art form.
digitalArt: Media created by a human using digital tools
virtualRecording: Live recording of virtual event based on synthetic and optionally captured elements
compositeSynthetic: Mix or composite of several elements, at least one of which is synthetic
trainedAlgorithmicMedia: Digital media created algorithmically using a model derived from sampled content
There are some other ones, but probably the last is most accurate for generative AI images. Though I question whether an artist creating images with Stable Diffusion couldn’t also realistically use the label digitalArt? I’m not sure how fixed/narrow these definitions are supposed to be. Presumably, the best thing to do would be at the point of image creation, to enable the user to choose which source type setting to apply to any images created by tools which comply with this emerging standard.
I haven’t confirmed yet but so far have the impression the above mostly applies to still images? Not sure if it covers video too, and whether there is another category which would be a match for AI-generated & AI-assisted text, but I will investigate further.
I think the main innovation I’ve made with my AI lore books is not the use of AI at all, but the structure & arrangement of the narrative, spread across many volumes in a non-linear web of cross-references. (a.k.a., a networked narrative)
In plain terms, I scatter links to other books throughout the text, so that the story is networked across many volumes. As a result, the buyer behavior that I’ve seen repeated with some frequency is that people click through these links to other parts of the story that interest them, and they end up buying multiple volumes. If it goes really well, they come back again later and buy another batch, and sometimes even another.
AI didn’t help me do that at all. You could do that same distributed narrative structure without using AI at all. And you could do it in any genre. The thing AI has helped me to do though is produce a larger quantity of text in a shorter amount of time. So that enables me to put out many more individual volumes, all of which cross-link out to others.
I think one of my favorite things about the “riff” style of blogging is that pushing things out as blog posts, even when somewhat incomplete, lets you sort of amass a pile or chains of thought which you can then string together and toy with various configurations of over time as you develop the ideas and their relationships over time in subsequent iterations.
I’ve never really found another form of writing that let me do in such a “thinking out loud” process and format, and I’m happy to be able to unwind in this manner some of big thoughts I’ve been having, even if in the moment the individual pieces don’t always make sense in isolation. I’ve learned to trust that over time, they will either all work themselves out, or they will fade away.
Stapling together a few loose odds and ends here… I enjoyed this article about “atoms or bits” on The Point Mag, but in particular this line jumped out at me for the current context:
If the digital world really is overtaking our physical world, we must be willing to revisit how the physical world is governed.
This all reminds me somehow of the term anthropocene, which M-W has a short & handy definition for:
the period of time during which human activities have had an environmental impact on the Earth regarded as constituting a distinct geological age…
Following on earlier discussions about the so-called “reality-based community” of GWB era, also from that era is Stephen Colbert’s coinage of truthiness (which accords very well with hyperreality):
It used to be, everyone was entitled to their own opinion, but not their own facts. But that’s not the case anymore. Facts matter not at all. Perception is everything. It’s certainty. People love the President [George W. Bush] because he’s certain of his choices as a leader, even if the facts that back him up don’t seem to exist. It’s the fact that he’s certain that is very appealing to a certain section of the country. I really feel a dichotomy in the American populace. What is important? What you want to be true, or what is true?
There’s something in all this for me about… the rise of human activity overtaking something something…
I’ll continue to drill down on what I mean by that something something now that I captured these three things in one place to vibrate together.