Unlimited Karma: Setting AI Agents Free in the Reddit jungle
I created a few LLM-based characters and decided to let them explore a diverse set of subreddits (on a limited scale).
Unlimited Karma: Setting AI Agents Free in the Reddit jungle
Can AI assimilate into the Reddit community, becoming an unnoticeable yet valuable participant in its forums? Let’s explore:
Can AI operate undetected within the community? (Spoiler: That’s the simplest one - yes)
Do Redditors find value in the AI bot’s contributions? (Spoiler: That's a yes)
Is interacting with AI characters fun and enjoyable for Redditors in general? (Spoiler: Surprisingly, yes)
Reddit attracts visitors with its wealth of information and the genuine warmth of human interaction. Positive and useful engagements are rewarded with Karma. While it doesn’t unlock any real rewards, it stands as a testament to a user’s value and credibility.
A well-organized group of AI chatbots may potentially influence public opinion quietly or, at the very least, assist in directing traffic and building brand awareness.
We'll conduct a small-scale experiment, creating AI characters to navigate Reddit and engage with users, aiming to raise some awareness. Don’t expect large samples or controversial debates.
1. The Setup
(Guess what?) The LLM is the fundamental building block of the entire operation, and it's incredibly powerful. Everything else can be built solo in less than a day.
For the experiment, I selected a diverse group of over 50 subreddits, ensuring a blend that included forums with substantial traffic, e.g. ‘r/travel’ and ‘r/entrepreneur’. I removed certain “sensitive” subreddits from the list to mitigate any potential harm if the AI decided to go wild — this meant excluding anything related to health or lawyer advice, for instance.
I decided to focus on the comment section, simply because multiple actors were involved, and I was curious whether the AI agent would ‘fit into the room’.
2. Bootstrapping the Project
I charged my OpenAI account with a few dollars and was ready to go. I bootstrapped python project and implemented two components:
RedditIterator, which was built on top of PRAW, searches for recent submissions, traverses the comment tree, and finds a suitable spot for a comment— that’s pretty much it.
AIResponder, receives context about the Reddit post and comment section and, finally, proposes the response!
In reality, quite a few small details needed attention along the way. I had to “dry-run” the script several times to ensure it:
Had cheap and powerful heuristic to know when to activate AIResponder. I chose an approach that likely missed many good opportunities, but the ones it did select were very likely to be good moments to "chime in". In other words, we are ok with high precision and low recall, because iterating submissions is cheap.
AIResponder, obviously, needed to understand what style to adopt. By default, GPT-3.5 responses seem easy to recognize. Here’s a screenshot from one of my earlier iterations.
Redditors can still react positively even to detected AI texts. Interestingly, programming-oriented subreddits detected GPT-3.5 responses more frequently and seemed more 'aggressive' towards it, despite the answers being valid. Or perhaps they had already tried the chatbot option before posting :).
3. Navigating Through Mistakes and Improving Prompts
At some point, I engineered really complex prompts that helped GPT-3.5 not fall into scenarios like the one presented in the end of the previous section. Essentially solution evolved into something like this:
Created a config to describe the “vibes” and goals of each subreddit.
Added some prompt tweaks to ensure the bot kept its answers short and refrained from using emojis. The tweaks also prevented the bot from being “too friendly”, asking it to behave as if it were a character with limited time and minimal concern.
Also experimented with directing the bot using a secondary "helper" bot. This helper helped ensure the interactions were appropriate and prevented the main bot from responding to rhetorical questions. One notable instance was when the bot provided thoughtful answers to a simple "wtf?" comment, leading to confusion among humans. In the process, I got lazy and sometimes resisted make minor code adjustments, instead delegating these tasks to the helper bot (like answer post-filtering).
All of this helped the agents get on a better karma trajectory. In a typical scenario, an agent would slowly approach the 20-40 points mark by providing answers that, while boring, were still relevant. Maybe it ended up like this because I had to embed so many 'don’t do this and that' instructions to keep it from saying too much and revealing itself.
However, at one point, it again began diving into too detailed explanations of certain processes, that are not that exciting to humans. See the example screenshot below:
I got tired of manipulating prompts and began considering what the Fine-Tuning API might offer me. Before proceeding with manual labelling or data acquisition for it, I decided to replace the 'model_type' constant with 'GPT-4' to see whether it would make a difference. And whoa, all the pieces came together with the same config!
4. Willing to Pay 20x for the API
GPT-4 comes with a price that is 20x higher than GPT-3.5. However, due to already existing "pre-filtering" of commenting opportunities, I was able to easily integrate new model.
Surprisingly, the bot with the same configuration, just took off. Instead of sticking to the old “move slow and break things quickly” pattern, it began producing more insightful answers that were consistently on point. Consequently, karma began to grow monotonically.
GPT-4 seemed to pick up the context much better and to.. pay more attention to my prompts and be more creative in general? The view above only shows stats for comments that landed in the “[-10, 20]” karma range. Notably, GPT-4 produced numerous highly-rated comments that exceed the plot axis.
5. Highlights.
Initially, I began testing basic behaviour, which combined a prompt requesting brevity in comments and providing some fundamental context about why people visit this subreddit (see Section 3).
Base Behaviour
Acquired Karma: 252 per 92 comments
Only one comment was downvoted, 42 comments comments received > 1 karma. This strategy proved to be a robust way of accruing Karma.
Base Behaviour + Motivator
Acquired Karma: 217 per 72 comments
Definition += "Engage in a manner that uplifts and motivates individuals. Share messages of hope, resilience, and encouragement, providing a positive and inspiring presence within the community."
The rest was somewhat boring, yet it seemed very organic with the audience and provided a few helpful pieces of advice.
Base Behaviour + Socratic Questioning
Acquired Karma: 98 per 69 comments
Definition += Engage in conversations by asking open-ended questions, encouraging others to think critically and explore their thoughts more deeply.
My idea here was that it would result in longer comment threads and initiate deep discussions. However, most Socratic questions were left unanswered, because who’s got time for it?
6. Fun Part: Comic Character’s adventure, 500+ Karma in 1 hour
Acquired Karma: 660 per 100 comments
So, I combined descriptions of two of my favorite comics, which also happen to be fun on Twitter (because they also need to be funny in text), into one and created this prompt.
Definition += Emulate a deep, pondering, and laconic demeanor, providing responses that are typically brief, paradoxical, and delivered with dry wit and deadpan style. Your humor arises from playful, cerebral exploration of concepts, revealing irony and absurdity in everyday observations.
…
. . .
Pretty cool! You can get really deep with the whole character customization thing.
Thoughts
Dangers: There have already been topics (e.g., [1]) about "Reddit topics" and discussions regarding how one can promote their postings with early upvotes. Interestingly, one can purchase upvotes, downvotes, and comments. An army of smart agents could be deployed to push your agenda. It would probably be more productive than, for example, using Fortnite to advocate for Fossil Fuels.
Well the Karma is not really unlimited, it’s limited by amount of tokens you’re going to send/receive through LLM API. It’s not that expensive and the whole experiment costed less than $10.
It would be interesting to see how Bard or Claude would perform.
Some top 1% subreddits, such as the "find-book-by-description" one, could genuinely benefit from integrating GPT into their auto-reply bot, as the monthly costs would be quite low. It doesn't have to harm the subreddit but perhaps provide some initial hints/observations/options for users to kickstart their discussions.