role play synthetic
1.0.0
このリポジトリは、キャラクターとユーザーの間の合成会話を収集するのに役立ちます。このパイプラインは、OpenAIまたはカスタムISVCを含むさまざまなモデルプロバイダーをサポートしています。
このリポジトリに主演:
Huggingfaceデータセット:
このプロジェクトでデータセットを作成した場合は、ここに追加していただきます。
合成データセット生成パイプラインは、2つの主要な部分で構成されています。
文字プロファイルを生成するには、Openaiのgpt-3.5-turboを使用できます。ここでは特別なものを生成するつもりはないので、節度を心配することはできません(良い種を作成するだけです)。
スクリプトを実行するには、以下を実行できます。
cd experiments/character_profiles
python3 main.py --config_path ./experiments/topic_experts/romance/config.yamlその結果、このようなキャラクターを取得できます。
{
"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 "
}パイプラインのこの段階は、小さな変更を伴うクラウドプロバイダーで行うことができます。 Chaiユーザーは、Openaiのgpt-3.5-turboの代わりにVicuñaの世代を好みます。ただし、 gpt-3.5-turboまたはgpt4を使用できます。この例をご覧ください:リンク。
拡張ボットビルダーを使用します。サンプルコードは次のようになるかもしれません:
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 ())出力:
{
"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. "
}
]
}テンプレートと種子を使用して、ボットビルダーで操作します。すべてのモデルとプロンプターは同じAPIを共有するため、新しいプロンプターまたはモデルで変更するか(たとえばOpenaiに)非常に簡単に変更できます。このconfig.pyをご覧ください。
config.pyで種子とテンプレートを準備するとすぐに、準備が整っています。
cd experiments/topic_experts
python3 main.py --config_path romantic/config.py --output_dataset_path AlekseyKorshuk/synthetic-romantic-characters