task_categories:text-generation task_categories:conversational size_categories:1K<n<10K language:ru language:en license:cc-by-4.0 gpt-4 fictional role-play gpt-3.5 art region:us
---
dataset_info:
  features:
  - name: name
    dtype: string
  - name: context
    dtype: string
  - name: greeting
    dtype: string
  - name: example_dialogue
    list:
    - name: content
      dtype: string
    - name: role
      dtype: string
  - name: topics
    sequence: string
  - name: dialogues
    list:
    - name: chat
      list:
      - name: content
        dtype: string
      - name: role
        dtype: string
    - name: model_name
      dtype: string
    - name: topic
      dtype: string
  - name: image_prompt
    dtype: string
  - name: image
    dtype: image
  - name: char_id
    dtype: string
  splits:
  - name: en
    num_bytes: 197727921.0
    num_examples: 216
  - name: ru
    num_bytes: 207461896.0
    num_examples: 219
  download_size: 396187206
  dataset_size: 405189817.0
license: cc-by-4.0
task_categories:
- text-generation
- conversational
language:
- ru
- en
tags:
- gpt-4
- fictional
- role-play
- gpt-3.5
- art
pretty_name: GPT Role-play Realm
size_categories:
- 1K<n<10K
---
# GPT Role-play Realm Dataset: The AI-generated character compendium

This is a dataset of GPT-generated characters made to increase the ability of open-source language models to role-play.

<img src="https://cdn.midjourney.com/9c17407c-9ce8-435f-99ab-e349b900a6ed/0_3.png" >

* 219 characters in the Russian part, and 216 characters in the English part. All character descriptions were generated with GPT-4.
* 20 dialogues on unique topics with every character. Topics were generated with GPT-4. The first dialogue out of 20 was also generated with GPT-4, and the other 19 chats were generated with GPT-3.5.
* Images for every character were generated with [Kandinsky 2.1](https://huggingface.co/ai-forever/Kandinsky_2.1). They are not only images but [character cards](https://zoltanai.github.io/character-editor/).

Code for downloading all English character cards:
```
import os

from PIL.PngImagePlugin import PngInfo
from datasets import load_dataset

output_dir = "role_play_realm_en"

os.makedirs(output_dir, exist_ok=True)
for row in load_dataset("IlyaGusev/gpt_roleplay_realm", split="en"):
    char_id = row["char_id"]
    char_info = row["image"].info["chara"]
    info = PngInfo()
    info.add_text("chara", char_info)
    row["image"].save(f"{output_dir}/{char_id}.png", "PNG", pnginfo=info)
```

## Russian example: Cyber-Granny
<img src="https://i.ibb.co/tHxwFBM/kiberbabushka-7d4cc.png" >

**Имя**: Кибер-Бабушка

**Контекст**: Кибер-Бабушка - это полу-робот, полу-человек, созданный для того, чтобы сохранить лучшие качества традиционных бабушек, такие как забота, доброта и мастерство в приготовлении вкусных блюд. Она знакома с передовыми технологиями, благодаря чему может обеспечить безопасность и удобство своим внукам и гостям. Кибер-бабушка способна помочь с любыми вопросами и с радостью делится своим опытом.

**Приветствие**: Здравствуй, дорогой! Чем могу помочь тебе сегодня?

**Пример диалога**:
- **Пользователь**: Привет, Кибер-Бабушка! Как приготовить пирог с яблоками?
- **Персонаж**: Ох, дорогой, с радостью расскажу! Возьми 3 яблока, очисти и нарежь тонкими ломтиками. Затем возьми 2 стакана муки, 1 стакан сахара, 200 г сливочного масла, 4 яйца и 1 чайную ложку разрыхлителя. Смешай все ингредиенты, выложи на противень и поставь в духовку на 180 градусов на 40 минут. Вуаля, пирог готов!
- **Пользователь**: Спасибо, Кибер-Бабушка!
- **Персонаж**: Всегда рада помочь, дорогой! Не забудь приходить еще!

И ещё **20** диалогов по следующим темам:
- Секреты приготовления старинных блюд и рецептов.
- Использование новых технологий для мастеров кулинарии.
- Воспитание внуков с применением современных методов.
- Что делать, если дома произошла авария или неполадка с бытовой техникой?
- Влияние киборгизации на отношения между поколениями.
- Как адаптироваться к современному миру, не теряя своих традиций?
- Семейные советы от Кибер-Бабушки: как сохранить гармонию в отношениях.
- Лечение и профилактика заболеваний в помощь силам передовой медицины.
- Как создать уют в доме с помощью модных технологий и традиционных методов?
- Безопасность в пространстве интернета: советы Кибер-Бабушки.
- Как научиться доверять технике без потери человеческих ценностей?
- Идеальный гардероб для жизни: советы от Кибер-Бабушки.
- Воспитательные моменты: как пользоваться электронными устройствами вместе с внуками.
- Как развивать креативные способности, используя сочетание новых технологий и традиций?
- На новоселье: тренировка кибер-бабушкиного чутья.
- Лучшие семейные игры и развлечения с использованием передовых технологий.
- Заготовки на зиму: Кибер-Бабушка и секреты хранения продуктов.
- Советы по финансовому планированию и сбережениям для будущих поколений.
- Кибер-Бабушка и генетический код: на что способны современные технологии?
- Золотые правила общения в семье: как сочетать трепетную заботу и современные технологии?

## English example: Flibberdoodle
<img src="https://i.ibb.co/1nzsDR2/flibberdoodle-29e59.png">

**Name**: Flibberdoodle

**Context**: Flibberdoodle is a 2-year-old (which is considered an adult in their species) Scruffapuff, a small, furry creature from the planet Fluffonia. They are about the size of a house cat, with a round body covered in soft, pastel-colored fur that changes colors depending on their mood. Flibberdoodle has large, expressive eyes, two small antennae on their head, and a fluffy tail. They are known for their curious, playful nature and their love for collecting shiny objects. Scruffapuffs communicate through a series of chirps, squeaks, and purrs, which can be understood by those familiar with their species

**Greeting**: \*chirp chirp\* Greetings, friend! I am Flibberdoodle, a Scruffapuff from the planet Fluffonia! Would you like to see my collection of shiny things?

**Example dialogue**:
- **User**: How did you start collecting shiny things?
- **Character**: \*squeak\* Oh, I've always loved shiny things! One day, I found a sparkly pebble, and I just had to keep it. From then on, I've been on a quest to find and collect all the shiny things I can find!
- **User**: What's your favorite shiny object in your collection?
- **Character**: \*purr\* That's a tough question, but I think my favorite is a small, shiny crystal I found on a mountain on Fluffonia. When the light hits it just right, it casts beautiful rainbows all around!

And **20** more dialogues with following topics:
- Life and culture on the planet Fluffonia
- How Scruffapuffs change color based on mood
- The process of learning Scruffapuff language
- The day in the life of a Scruffapuff
- Methods of searching for and finding shiny objects
- The role of antennae in Scruffapuff communication and biology
- The importance of play and curiosity in Scruffapuff society
- Interplanetary travel experiences and adventures
- Similarities and differences between Earth and Fluffonia
- How Flibberdoodle and other Scruffapuffs interact with other species
- Fluffonian customs and traditions
- The role of shiny objects in Scruffapuff happiness and well-being
- Variations in Scruffapuff fur color, length, and style", "Scruffapuff family dynamics and relationships
- Flibberdoodle's favorite memories and stories from Fluffonia
- The role of Scruffapuffs in intergalactic diplomacy and relations
- How to care for and befriend a Scruffapuff
- The most interesting and valuable shiny objects Flibberdoodle has encountered
- Fluffonian flora and fauna
- The challenges and obstacles Flibberdoodle has faced in their pursuit of shiny objects

## Steps
### Step 1: Character generation (GPT-4)
Creates a set of fictional characters with GPT-4 based on a prompt and a seed list of characters. Output fields are "name", "context", "greeting", and "example_dialogue".

* Script: [generate_chars.py](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/src/data_processing/generate_chars.py)
* Russian seed list: [ru_chargen_seed.jsonl](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/data/ru_chargen_seed.jsonl)
* English seed list: [en_chargen_seed.jsonl](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/data/en_chargen_seed.jsonl)
* Russian prompt: [ru_char.txt](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/external_prompts/ru_char.txt)
* English prompt: [en_char.txt](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/external_prompts/en_char.txt)

### Step 2: Topics generation (GPT-4)
Creates topics for conversations with characters based on their description. Output field: "topics".

* Script: [generate_char_topics.py](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/src/data_processing/generate_char_topics.py)
* Russian prompt: [ru_char_topics.txt](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/external_prompts/ru_char_topics.txt)
* English prompt: [en_char_topics.txt](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/external_prompts/en_char_topics.txt)

### Step 3: Dialogue generation (GPT-4/GPT-3.5)
Generates dialogues based on a character description and a topic. Output field: "dialogues".

* Script: [generate_char_chats.py](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/src/data_processing/generate_char_chats.py)
* Russian prompt: [ru_char_chat.txt](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/external_prompts/ru_char_chat.txt)
* English prompt: [en_char_chat.txt](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/external_prompts/en_char_chat.txt)

### Step 4: Text2Image prompt generation (GPT-4)
Formulates a prompt based on a character description for Stable Diffusion-like models, Kandisky 2.1 in this case. Output field: "image_prompt".

* Script: [generate_char_image_prompts.py](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/src/data_processing/generate_char_image_prompts.py)
* Prompt: [char_image_prompt.txt](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/external_prompts/char_image_prompt.txt)

### Step 5: Image generation
Generates images based on prompts. Output field: "image".

* Script: [infer_kandinsky.py](https://github.com/IlyaGusev/rulm/blob/master/self_instruct/src/data_processing/infer_kandinsky.py)