Este repositorio ayuda a recopilar una conversación sintética entre el personaje y el usuario. Esta tubería admite diferentes proveedores de modelos, incluido OpenAI o ISVC personalizado.
Estrella este repositorio:
Conjuntos de datos de Huggingface:
Si realizó un conjunto de datos con este proyecto, me complace agregar el suyo aquí.
La tubería de generación de conjuntos de datos sintéticos consta de 2 partes principales:
Para generar perfiles de personajes podemos usar gpt-3.5-turbo de OpenAI. Como no vamos a generar nada especial aquí, no podemos preocuparnos por la moderación (solo crear buenas semillas).
Para ejecutar el script podemos hacer lo siguiente:
cd experiments/character_profiles
python3 main.py --config_path ./experiments/topic_experts/romance/config.yamlComo resultado, podemos obtener personajes como este:
{
"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 "
} Esta etapa de la tubería se puede hacer con cualquier proveedor de nubes con cambios menores. Los usuarios de Chai prefieren las generaciones de Vicuña en lugar del gpt-3.5-turbo de OpenAI. Pero puede usar gpt-3.5-turbo o gpt4 , eche un vistazo a este ejemplo: Link.
Usaremos Bot Builder extendido. El código de muestra puede verse así:
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 ())Producción:
{
"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. "
}
]
}Utilizamos plantillas y semillas para operar con BOT Builder. Todos los modelos y promapotadores comparten la misma API, por lo que es muy fácil de cambiar (para OpenAi, por ejemplo) o se extiende con nuevos promocidores o modelos. Eche un vistazo a esta configuración.
Tan pronto como preparamos semillas y plantillas en config.py, estamos listos para iniciar la generación:
cd experiments/topic_experts
python3 main.py --config_path romantic/config.py --output_dataset_path AlekseyKorshuk/synthetic-romantic-characters