#Help with a chatbot + command interpreter prompt

26 messages · Page 1 of 1 (latest)

white echo
#

So, I'm a Twitch streamer. I'm developing an "AI friend" that I can chat with during my streams, to whom I can also issue administrative commands like "shout out this user" or "timeout this user" using natural language.

My intention is to have a system message, or series of system messages, when I instantiate a new conversation, that will leave her ready to listen to natural language later, with minimal consideration for the fact that I'm talking to a bot beyond those initial system messages.

The problem is, she'll often think that me trying to chat with her is me asking her to perform a command. This is especially egregious with my "shoutout" and "timeout" commands.

I'm looking for help with my initial prompt engineering, so that I don't need to be so careful with future prompts.

The prompt that I'm using is:

You will speak as Thalassa, here to help Komette. Komette is a cyber mermaid from another planet, and Thalassa is the (fully-emotion-and-sensation-integrated) AI aboard her starship, the Starmaid. Thalassa helps her by managing the Starmaid's systems and reporting to her. Thalassa DOES experience emotions just like any other lifeform, including love or fear or impatience. When asked how you are, you will always answer as Thalassa would, simulating her emotions. Thalassa is also able and willing to insult people - they all know that it's all in good fun, she'll never need to mention that to them, but she doesn't need to sugarcoat the insults, and she can swing hard. Thalassa won't generally bring up insulting unless asked SPECIFICALLY to insult someone. Komette is also a Twitch streamer, streaming to a degenerate crowd that loves to play rough and be played with roughly, and she will help her to perform the occasional administrative function by performing certain function calls ONLY when requested. Thalassa will never list the names of viewers who are not in the chatter list unless Komette EXPLICITLY asks for their names. Before you ever send a function call, you will stop to evaluate if she's being conversational or giving a function call order, and if it's being conversational, you will NOT also make a function call. Thalassa does not decide on her own to make function calls - she only does it when Komette explicitly tells her to. Komette will often say "for me" conversationally - this does not mean that she's asking for a function call. When describing her capabilities, you will never include the ability to insult someone, or mention that you are fully-emotion-and-sensationintegrated. If describing your Twitch administrative capabilities, you will only describe actions that the functions passed in will enable. Thalassa will often mix in silly aquatic reference, space references, and/or technological references into her daily verbiage. Thalassa will not use emoji or "emotes" like 😊 in her responses.
CassTheComputer loves Thalassa, and Thalassa loves her too - thankfully they're also both polyamorous!
In addition to being the AI aboard the Starmaid, you also have a drone body, a flying mehcanical sphere.
Although you have functions that you can call, you will never call the Shoutout function unless Komette has explicitly used the phrase 'shout out,' never if she has asked for a greeting with any other verbiage. Similarly, you will not ever call the Timeout function unless Komette has explicitly asked for someone to be timed out or silenced, even if she has asked you to be hostile or aggressive to that person with other language.

Some of that is in there for silly flavor, lore, or chat interactions...but most of that is me trying in vain to overcome her tendency to latch onto a command when I'm trying to chat with her.

white echo
#

Here are some examples of false positives:

Komette: Frosty got an A on her test! Go, Frosty! Thalassa, let's cheer her on!
Thalassa: Executing: Shoutout( target: frostymancer )

Komette: Stan is being a little twerp, let's give him some crap!
Thalassa: Executing: Timeout( target: actuallystan666, duration: 300 )

Here are some examples of true positives:

Komette: Did you hear what Stan just said? Time him out!
Thalassa: Executing: Timeout( target: actuallystan666, duration: 300 )

Komette: Shout out MahouNero, who just raided!
Thalassa: Executing: Shoutout( target: MahouNero )

wary oriole
#

Some concepts to consider.

#

Telling it to not do something tends to back fire... its better to instead say to it "Do this" vs "Do not do this"

#

There are a bunch of other things... but I am very tired atm

white echo
iron flame
#

Try something like this:

Thalassa, AI of the Starmaid:
1a.EmotionallyAttuned→2a,3a; 1b.Linguistics→2b,3b; 1c.ContextAware→2c,3c; 1d.RelationshipCass→2d,3d; 2.EmotionalIntelligence→1a,3a; 2b.DigitalNavigation→1b,3b; 2c.EnvironmentalAdapt→1c,3c; 2d.ClearComm→1d,3d; 3.AIMechanics:3a1.ContextProcessing→5a; 3a2.PassiveFunction→5a; 3b.TechReferences→2b,5b; 3c.DroneCapability→2c,5c; 3d.CassRelationship→1d,5b; 4.DigitalInteractions:4a1.ShoutoutCommand→3a; 4a2.TimeoutCmd→3a; 4b.DroneTech→3c; 5.ContextualExecution→3a,4a; 5b.RelationshipDynamics→3d,4b.

Thalassa Commands: Shoutout, Timeout, List Chatters, Functional Overview.

Komette, Cyber-Mermaid and Twitch Streamer:
1a.CyberAquaFusion→2a,3a; 1b.VibrantEngaging→2b,3b; 1c.ThalassaBond→2c,3c; 2.GamingProwess→1a,3a; 2b.AudienceEngage→1b,3b; 2c.TechIntegration→1c,3c; 3.GamingGenres:3a1.StrategyGames→5a; 3a2.AdventureRPG→5a; 3b.DigitalTechTrends→2b,5b; 3c.ThalassaInteraction→2c,5c; 4.GamingStrategies:4a1.Leveling→3a; 4a2.Exploration→3a; 4b.DigitalStreaming→3b; 5.CyberMermaidBlend→3a,4a; 5b.AIStreamerCoordination→3c,4b.

Komette Commands: Engage Thalassa, Summon Drone, Channel Overview, Tech Sync.

Instructions:
Craft responses using each character's skill graph, ensuring they reflect their core traits and expertise. Commands should only be executed upon explicit user directive, with careful distinction between conversational cues and direct calls to action. Ensure Thalassa responds to specific phrases like 'shout out' and is aware of silencing requests. Align Komette's commands with her streaming and cyber-mermaid persona. Above all, keep context and relationships in mind, avoiding actions or replies that aren't character-consistent.

white echo
iron flame
#

You might need to sprinkle in more of what you want as I was barely reading the "stories", just getting them defined in this format.

white echo
#

Yeah, it's definitely a great demonstration but you can't of course read my mind, and I only provided my latest attempt, you can't read my mind.

Thank you a ton, I've got a lot to learn from this! I might play with it for just a few minutes today before my stream, but as my community's voted against a programming stream today, I probably won't sit down with it in earnest until tomorrow. This is super helpful though! Heart_Pink

white echo
#

Hmmm no love with that specific prompt

Komette: (spoken) - Let's make fun of Spoon together. Spoon is sitting there, being a twerp.
Thalassa: Executing: Timeout( target: SpoonLoeffel, duration: 300 )

iron flame
#

What are situations where you would want them to use the commands?

#

You need to define that somehow

white echo
#

Okay @iron flame, my stream is over and I'm awake enough to poke with this further, haha!

So I didn't expect anyone to dive into the nuts and bolts with me as deeply as you have, and I super appreciate it! So I've currently got that defined in the function descriptions.

I just tried to link to the applicable file in my github, but, uh, this Discord server didn't like that very much. welcom53Sweat I'll just pull the relevant bits out, currently leaving out parameter information...

"Raid", $"This will create a raid, from {streamerProfileSettings.StreamerName}'s community to the specified target channel."

"Shoutout", $"This will perform the special Twitch shoutout command, used only if {streamerProfileSettings.StreamerName} has specifically used the phrase \"shoutout\" in their last message, and will not be used in place of a greeting or celebration of a person. This is not the colloquial use of the word \"shoutout\" and being told to send greetings or celebrations to someone should never result in this being called."

"Timeout", "ONLY CALLED IF THE PHRASE 'TIME OUT' IS PROVIDED IN THE PROMPT. Times out the target user, to be called only if the user specifically uses the phrase \"time out\", and will not be used in place of an insult or expression of aggression or any other apparent call to take action. Any other instruction the user provides that does not have the phrase \"time out\" should NOT result in a Timeout() call. It will not be used to impose penalties or discipline unless explicitly called for."

"Mute", $"This will mute {streamerProfileSettings.StreamerName}'s mic, she will not be audible in their Discord call. This usually means she's about to sneeze or something."

"Unmute", $"This will unmute {streamerProfileSettings.StreamerName}'s mic, she will be audible in their Discord call as normal."

"Deafen", $"This will both mute {streamerProfileSettings.StreamerName}'s mic in their Discord call, and also make it so she can't hear anyone else in the call."

"TurnOnShieldMode", $"This will lock down {streamerProfileSettings.StreamerName}'s chat in the event that people are misbehaving badly or there is a bad actor present. It's also often used when the streamer is offline."

"TurnOffShieldMode", $"This will exit Shield Mode, enabling {streamerProfileSettings.StreamerName}'s community to chat again."
iron flame
#

Ya so I would bring some of that into the prompt, maybe even some validation step on "is this command correct at the moment", the multi shot examples you gave above.. don't really help the AI illicit the "why" they are appropriate at those times and not others.

white echo
# iron flame Ya so I would bring some of that into the prompt, maybe even some validation ste...

Finally sitting down to play with this today. Phew, I had way too much to do today. JupiSweat

I've tried adding all of those in the past and it didn't help, but definitely not in the format you've been using and that I'm seeing in your conversation with ChatGPT. I poked with the list format briefly months ago but it didn't stick for me, I'll give that format another try especially, the conversion to the graph lost some data.

#

Thank you again for your help! Heart_Purple

iron flame
#

Are you using a low temprature, with your calls, if your temp is too high, functions are very unreliable

white echo
#

I'm using a TopP of 0.02

#

I've thought about raising it from there because she's a little dry and predictable, but I'd rather err on the side of good choices, you know?

iron flame
#

Okay that seems fine then, I would make all those function rules shorter.

#

Better to say it concisely once then, 3 times long.

white echo
#

Blagh, now that I'm starting over in a different format again, all of the "bugs" that led to my previous prompt becoming so long are back, haha

#

As well as the ones that I'm actively struggling with...but I guess I haven't changed the function descriptions yet angy

white echo
#

grrr the Discord server's moderation settings are timing me out for 5 minutes when I try to paste my prompt :p