Dieses Repository hilft, synthetische Konversation zwischen Charakter und Benutzer zu sammeln. Diese Pipeline unterstützt verschiedene Modellanbieter, einschließlich OpenAI oder Custom ISVC.
Sterne dieses Repository:
Umarmungsface -Datensätze:
Wenn Sie mit diesem Projekt einen Datensatz erstellt haben, füge ich Ihnen gerne hier hinzu.
Die Pipeline für synthetische Datensatzgenerierung besteht aus 2 Hauptteilen:
Um Charakterprofile zu erzeugen, können wir OpenAIs gpt-3.5-turbo verwenden. Da wir hier nichts Besonderes generieren werden, können wir uns keine Sorgen um Mäßigung machen (nur gute Samen erstellen).
Um das Skript auszuführen, können wir Folgendes ausführen:
cd experiments/character_profiles
python3 main.py --config_path ./experiments/topic_experts/romance/config.yamlInfolgedessen können wir solche Charaktere erhalten:
{
"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 "
} Diese Phase der Pipeline kann mit jedem Cloud -Anbieter mit geringfügigen Änderungen durchgeführt werden. Chai-Nutzer bevorzugen Vicuñas Generationen anstelle von OpenAs gpt-3.5-turbo . Sie können jedoch gpt-3.5-turbo oder gpt4 verwenden, sehen Sie sich dieses Beispiel an: Link.
Wir werden erweiterten Bot Builder verwenden. Beispielcode könnte so aussehen:
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 ())Ausgabe:
{
"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. "
}
]
}Wir verwenden Vorlagen und Samen, um mit Bot Builder zu arbeiten. Alle Modelle und Proprter teilen sich dieselbe API, daher ist es sehr einfach, sich zu ändern (z. B. öffnen) oder sich mit neuen PromPters oder Modellen ausdehnen. Schauen Sie sich diese config.py an.
Sobald wir Samen und Vorlagen in config.py vorbereitet haben, sind wir bereit für die Startgeneration:
cd experiments/topic_experts
python3 main.py --config_path romantic/config.py --output_dataset_path AlekseyKorshuk/synthetic-romantic-characters