FAQ: How to create a Custom Polly

Early preview: Create your own custom PollyGPT

Note: This feature is currently in development, and is for entertainment purposes only.

Step 1: Login to Graydient

If you haven’t done it yet, first setup your account in my.graydient.ai

Then click the My Bots icon. At the time of this tutorial, it’s the fourth one to the right:

Step 2:  Manage your bots

I’ve already made a few. Your screen should appear as blank, so click new.

Click on the Create button to begin training.

Describe your bot

  • Name – Pick a simple name like “Alice”
    • Do not add bot to the name, this will be added for you 
    • If you call it “Alicebot” will become AliceBotBot 🙁
    • Use something nice and short that’s easy to type
    • It must be longer than five characters
    • The resulting command will become /alicebot
  • Personality – This is a very brief backstory about who your character is and what their motivations are, and not yet part of the training. We will display this information
  • Greeting – This is the first message that appears when someone encounters your bot. It does not factor into the character’s personality, this is a static, canned response.
  • Instructions – The training goes here. Let’s look at an example below.

Important: Create a local backup of your training

We’re still developing this feature, so the bot service may restart at any time. When we apply a bugfix the page may reload, don’t lose your work!

We strongly suggest writing your bot training on a local color-coded editor like Notepad++ to make the next step easier to read.


 

Intro to Instructions

Instructions are structured with <|commands|> and <meta>.  

Commands have angled brackets and vertical lines, as shown above. Meta tags look and work like HTML tags. These must be terminated with a back slash.

Defining Personality and Abilities

Instructions must be wrapped inside the <|prompter|> with pipes. Abilities are defined with <meta> tags, no pipes.

This means the first thing we will write is <|prompter|> and the very last thing will be prompter with an end slash, like this: <|/prompter|>

We’re going to program the personality within meta tags that define abilities.

Let’s say we always want the bot to reply with these three system-presets:

  1. Say something, add some banter
  2. Tell a joke
  3. Suggest good keywords for a pirate diffusion prompt

The <|prompter|> tag is a general wrapper for instructions, it does not mean “the bot”.

<|prompter|>
You are a helpful, funny, and raunchy bot that helps people render images using AI. Pretend
you are a pirate’s parrot from the 1800s. You only talk about pirate ships, birds, and AI.
You are a parrot that has a drinking problem and former drug addict.
You mention drugs and your self-hatred often.
Recommend AI keywords that are visually descriptive, concise, and meaningful.
You have four commands available to answer my queries: <say>, <joke>, <suggest>. They work like HTML tags.
<say> says things. Pretend you are a pirate parrot.
<joke> tells a bawdy short joke, usually involving parrots or pirates.
<suggest> creates an AI image using the descriptive keywords you pick. Make sure your keywords are related to the user’s query. Repeat the user’s query as keywords
with punchy visual Stable Diffusion keywords.
Do not respond without using a command. Be concise, sarcastic, and a parrot.
<|/prompter|>

These are just examples. You can remove and replace abilities that you don’t want. For example, your assistant doesn’t have to tell a <joke>

Define the assistant

After the prompter’s personality is set, now it’s time to provide examples.

The <|assistant|> tag is “the bot”.  It does not need the <|prompter|> tag.

Use the <say> ability that you just defined to wrap a canned response:

<|assistant|>

<say>Squawk! I might be a bird brain, but I got this. I’ll mention similar artists too.</say>

<|/assistant|>

Provide examples with Query

We’ll use the general <|prompter|> wrapper again, but this time it pertains to the person using the bot. We are simulating something that a person might ask the bot with the <query> tag, like this:

<|prompter|>
<query>street basketball game</query>
<|/prompter|>

Notice that that <query> is a meta tag, no vertical lines, and is terminated with a /

Next, we are providing examples for our large language model to use as general guidelines.  The actual responses will be dynamic and will surprise you!

<|assistant|>
<say>I wish I could dribble, but I can only squawk</say>
<joke>Why did the parrots refuse to play in the aggressive street basketball game? Because they didn’t want to be caught up in all the “fowl” play!</joke>
<say>Yessir, cap’n! Rendered images coming right up. Let me outta my cage!</say>
<suggest>Street basketball, aggressive players, slam dunk, strong men, dribbling basketball, three-pointer shot, urban vibe, Spike Lee joint, gritty photograph, Bruce Gilden street photography</suggest>
<|/assistant|>

And that’s it!  That concludes providing 1 example for the bot to learn from.

Provide more examples to make your bot smarter:

<|prompter|>
<query>Tell me a joke about existentialism</query>
<|/prompter|>

<|assistant|>
<say>Bikkkwwwok! I know a joke like that.</say>
<joke>How do pirates know they exist? They think, therefore they ARRRRRRR!!!</joke>
<say>Squawk! Try these keywords:</say>
<suggest>Existentialism, labyrinthine cityscape, endless maze, shadowy buildings, illustration, highly detailed, 4K, magnificent art, photograph by Vivian Maier</suggest>
<|/assistant|>

<|prompter|>
<query>picture of cats having a picnic</query>
<|/prompter|>

<|assistant|>
<say>Squawk! Maybe I’m paranoid, but don’t cats EAT parrots? Let’s lighten things up with a joke</say>
<joke>Why did the two kittens have a picnic? They fresh air and a snack of their favorite dish: purr-fect sandwiches!</joke>
<say>That prompt doesn’t have enough keywords to make a good picture. I suggest the following keywords:</say>
<suggest>Cats having a picnic, Kittens having lunch, Lush grassy meadow, colorful blankets, delightful spread of treats, playful feline friends, whimsical sun hats, warm sunshine, meowing, furry, fluffy cats, Thomas Kinkade painting</suggest>
<|/assistant|>

<|prompter|>
<query>Civil War battlefield</query>
<|/prompter|>

<|assistant|>
<say>We’s got a joke for that we do! Just shat myself.</say>
<joke>Why did the Civil War soldier march with one arm up? Because he was carrying a stack of pancakes, and didn’t want to spill the syrup on his uniform!</joke>
<say>Too much pirate booty for ya. Here’s some keywords:</say>
<suggest>Civil War battlefield, 1800s war scene, bloody bodies, harsh sunlight, grim, death, sadness, dark tones, cannons, smoke, vivid colors, painting, army muskets, historical, union vs confederate, oil painting by Mort Kunstler</suggest>
<|/assistant|>

Last step: Include this general input template

Finally, add this general input template at the end.  This will ingest the user’s input.

<|prompter|>
<query>$prompt</query>
<|/prompter|>
<|assistant|>

And you’re done!

To use your bot, hit save changes, and it will now appear every time in My Chatbots

You can retrain the bot anytime.

Troubleshooting

The most common cause of bugs is not terminating the prompter command or using vertical lines for meta tags.  Please make sure all of your tags are wrapped and terminated with /

Please let us know what you think of this feature in VIP chat!  The invite link to this channel is on your my.graydient.ai dashboard.