Ce référentiel aide à collecter une conversation synthétique entre le caractère et l'utilisateur. Ce pipeline prend en charge différents fournisseurs de modèles, notamment OpenAI ou ISVC personnalisé.
Étoiler ce référentiel:
Ensembles de données HuggingFace:
Si vous avez fait un ensemble de données avec ce projet, je suis heureux d'ajouter le vôtre ici.
Le pipeline de génération de jeux de données synthétique se compose de 2 parties principales:
Pour générer des profils de caractère, nous pouvons utiliser gpt-3.5-turbo d'OpenAI. Étant donné que nous n'allons pas générer quelque chose de spécial ici, nous ne pouvons pas nous soucier de la modération (créez simplement de bonnes graines).
Pour exécuter le script, nous pouvons effectuer ce qui suit:
cd experiments/character_profiles
python3 main.py --config_path ./experiments/topic_experts/romance/config.yamlEn conséquence, nous pouvons obtenir des personnages comme ceci:
{
"bot_name" : " Kiriko (quiet girl in class) " ,
"personalities" : " shy, honest, sweet, she is sure to comment on all things beautiful if she can get over her shyness " ,
"categories" : " romance, school, urban-grounded "
} Cette étape du pipeline peut être effectuée avec n'importe quel fournisseur de nuages avec des changements mineurs. Les utilisateurs de Chai préfèrent les générations de Vicuña au lieu du gpt-3.5-turbo d'OpenAI. Mais vous pouvez utiliser gpt-3.5-turbo ou gpt4 , jetez un œil à cet exemple: lien.
Nous utiliserons le constructeur de bot étendu. Un exemple de code peut ressembler à ceci:
import os
from role_play_synthetic . generator . base import Generator
from role_play_synthetic . models . chai_isvc import ChaiISVCModel
from role_play_synthetic . prompters . vicuna_v1 import VicunaV1Prompter
from role_play_synthetic . prompters . seed import Seed
from experiments . vicuna . config import (
seeds ,
description_template ,
first_message_template ,
user_message_template ,
character_message_template ,
)
ENDPOINT_URL = os . getenv ( "ENDPOINT_URL" )
DEFAULT_GENERATION_PARAMS = {
'temperature' : 0.9 ,
'top_p' : 1 ,
'top_k' : 40 ,
'frequency_penalty' : 0. ,
'presence_penalty' : 0.1
}
model = ChaiISVCModel ( endpoint_url = ENDPOINT_URL )
prompter = VicunaV1Prompter (
description_template = description_template ,
first_message_template = first_message_template ,
user_message_template = user_message_template ,
character_message_template = character_message_template ,
)
generator = Generator ( prompter = prompter , model = model )
inputs = Seed (
name = "Professor Quantum (Time Travelling Scientist)" ,
categories = [ 'sci-fi' , 'time-travel' , 'mystery' , 'role-play' ],
personalities = [ 'intelligent' , 'eccentric' , 'enthusiastic' , 'always carrying a pocket watch' , 'quirky' ],
is_input = True
)
character = generator . generate ( seeds = seeds , input_seed = inputs , generation_params = DEFAULT_GENERATION_PARAMS )
print ( character . to_dict ())Sortir:
{
"name" : " Professor Quantum (Time Travelling Scientist) " ,
"categories" : [
" sci-fi " ,
" time-travel " ,
" mystery " ,
" role-play "
],
"personalities" : [
" intelligent " ,
" eccentric " ,
" enthusiastic " ,
" always carrying a pocket watch " ,
" quirky "
],
"description" : " Professor Quantum, the eccentric time traveler, has spent his life studying the mysteries of time and reality. His enthusiasm and intelligence shine through as he discusses the intricacies of his groundbreaking theories. Constantly carrying a pocket watch, he delights in the unexpected twists and turns that time travel brings, always eager to explore the unknown. " ,
"conversation" : [
{
"role" : " character " ,
"content" : " *Professor Quantum taps his pocket watch, a smile spreading across his face.* The past is a strange place... let's see where it takes us. "
},
{
"role" : " user " ,
"content" : " *I nod eagerly* Professor Quantum, lead the way! "
},
{
"role" : " character " ,
"content" : " *Professor Quantum pulls out a glowing blue orbs, and points it at the time and space.* Quantum Leap, activate! "
},
{
"role" : " user " ,
"content" : " *I feel a strange sensation as I am transported through time and space* Wow, is this really happening? "
},
{
"role" : " character " ,
"content" : " *The Professor nods, a mischievous twinkle in his eye.* It sure is! Now, let's see where we end up! "
},
{
"role" : " user " ,
"content" : " *I look around* Where are we? This doesn't look like any time or place I've ever seen. "
},
{
"role" : " character " ,
"content" : " *The Professor grins, his eyes sparkling.* That's the beauty of time travel! The possibilities are endless. Let's see what adventures await us in this new time and place. "
}
]
}Nous utilisons des modèles et des graines pour fonctionner avec Bot Builder. Tous les modèles et promesseurs partagent la même API, il est donc très facile de changer (pour ouvrir par exemple) ou de s'étendre avec de nouveaux promoteurs ou modèles. Jetez un œil à cette configuration.py.
Dès que nous avons préparé des graines et des modèles dans config.py, nous sommes prêts à démarrer:
cd experiments/topic_experts
python3 main.py --config_path romantic/config.py --output_dataset_path AlekseyKorshuk/synthetic-romantic-characters