2023-04-09 22:44:31 -04:00
import os
2023-05-09 21:49:39 -04:00
import gradio as gr
2023-04-09 22:44:31 -04:00
# get the current directory of the script
current_dir = os . path . dirname ( os . path . abspath ( __file__ ) )
# check if the bias_options.txt file exists, if not, create it
bias_file = os . path . join ( current_dir , " bias_options.txt " )
if not os . path . isfile ( bias_file ) :
with open ( bias_file , " w " ) as f :
f . write ( " *I am so happy* \n *I am so sad* \n *I am so excited* \n *I am so bored* \n *I am so angry* " )
# read bias options from the text file
with open ( bias_file , " r " ) as f :
bias_options = [ line . strip ( ) for line in f . readlines ( ) ]
2023-02-24 17:00:11 -05:00
2023-01-28 21:00:51 -05:00
params = {
2023-02-26 00:37:21 -05:00
" activate " : True ,
" bias string " : " *I am so happy* " ,
2023-04-09 22:44:31 -04:00
" use custom string " : False ,
2023-01-28 21:00:51 -05:00
}
2023-04-06 23:15:45 -04:00
2023-01-26 22:40:39 -05:00
def input_modifier ( string ) :
"""
This function is applied to your text inputs before
they are fed into the model .
2023-04-06 23:15:45 -04:00
"""
2023-02-10 13:24:26 -05:00
return string
2023-01-26 22:40:39 -05:00
2023-04-06 23:15:45 -04:00
2023-01-26 22:40:39 -05:00
def output_modifier ( string ) :
"""
This function is applied to the model outputs .
"""
2023-01-28 21:00:51 -05:00
return string
2023-01-29 08:11:59 -05:00
2023-04-06 23:15:45 -04:00
2023-01-29 08:11:59 -05:00
def bot_prefix_modifier ( string ) :
"""
This function is only applied in chat mode . It modifies
the prefix text for the Bot and can be used to bias its
behavior .
"""
2023-04-06 23:15:45 -04:00
if params [ ' activate ' ] :
2023-04-09 22:44:31 -04:00
if params [ ' use custom string ' ] :
return f ' { string } { params [ " custom string " ] . strip ( ) } '
else :
return f ' { string } { params [ " bias string " ] . strip ( ) } '
2023-02-26 00:37:21 -05:00
else :
return string
2023-02-24 17:00:11 -05:00
2023-04-06 23:15:45 -04:00
2023-02-24 17:00:11 -05:00
def ui ( ) :
# Gradio elements
2023-02-26 00:37:21 -05:00
activate = gr . Checkbox ( value = params [ ' activate ' ] , label = ' Activate character bias ' )
2023-04-09 22:44:31 -04:00
dropdown_string = gr . Dropdown ( choices = bias_options , value = params [ " bias string " ] , label = ' Character bias ' , info = ' To edit the options in this dropdown edit the " bias_options.txt " file ' )
use_custom_string = gr . Checkbox ( value = False , label = ' Use custom bias textbox instead of dropdown ' )
custom_string = gr . Textbox ( value = " " , placeholder = " Enter custom bias string " , label = " Custom Character Bias " , info = ' To use this textbox activate the checkbox above ' )
2023-02-24 17:00:11 -05:00
# Event functions to update the parameters in the backend
2023-04-09 22:44:31 -04:00
def update_bias_string ( x ) :
if x :
params . update ( { " bias string " : x } )
else :
params . update ( { " bias string " : dropdown_string . get ( ) } )
return x
def update_custom_string ( x ) :
params . update ( { " custom string " : x } )
dropdown_string . change ( update_bias_string , dropdown_string , None )
custom_string . change ( update_custom_string , custom_string , None )
2023-02-26 00:37:21 -05:00
activate . change ( lambda x : params . update ( { " activate " : x } ) , activate , None )
2023-04-09 22:44:31 -04:00
use_custom_string . change ( lambda x : params . update ( { " use custom string " : x } ) , use_custom_string , None )
# Group elements together depending on the selected option
def bias_string_group ( ) :
if use_custom_string . value :
return gr . Group ( [ use_custom_string , custom_string ] )
else :
return dropdown_string