Browse Source

Added dropdown to character bias. (#986)

BlueprintCoding 2 years ago
parent
commit
8178fde2cb
1 changed files with 42 additions and 6 deletions
  1. 42 6
      extensions/character_bias/script.py

+ 42 - 6
extensions/character_bias/script.py

@@ -1,8 +1,23 @@
 import gradio as gr
 import gradio as gr
+import os
+
+# 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()]
 
 
 params = {
 params = {
     "activate": True,
     "activate": True,
     "bias string": " *I am so happy*",
     "bias string": " *I am so happy*",
+    "use custom string": False,
 }
 }
 
 
 
 
@@ -11,7 +26,6 @@ def input_modifier(string):
     This function is applied to your text inputs before
     This function is applied to your text inputs before
     they are fed into the model.
     they are fed into the model.
     """
     """
-
     return string
     return string
 
 
 
 
@@ -19,7 +33,6 @@ def output_modifier(string):
     """
     """
     This function is applied to the model outputs.
     This function is applied to the model outputs.
     """
     """
-
     return string
     return string
 
 
 
 
@@ -29,9 +42,11 @@ def bot_prefix_modifier(string):
     the prefix text for the Bot and can be used to bias its
     the prefix text for the Bot and can be used to bias its
     behavior.
     behavior.
     """
     """
-
     if params['activate']:
     if params['activate']:
-        return f'{string} {params["bias string"].strip()} '
+        if params['use custom string']:
+            return f'{string} {params["custom string"].strip()} '
+        else:
+            return f'{string} {params["bias string"].strip()} '
     else:
     else:
         return string
         return string
 
 
@@ -39,8 +54,29 @@ def bot_prefix_modifier(string):
 def ui():
 def ui():
     # Gradio elements
     # Gradio elements
     activate = gr.Checkbox(value=params['activate'], label='Activate character bias')
     activate = gr.Checkbox(value=params['activate'], label='Activate character bias')
-    string = gr.Textbox(value=params["bias string"], label='Character bias')
+    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')
 
 
     # Event functions to update the parameters in the backend
     # Event functions to update the parameters in the backend
-    string.change(lambda x: params.update({"bias string": x}), string, None)
+    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)
     activate.change(lambda x: params.update({"activate": x}), activate, None)
     activate.change(lambda x: params.update({"activate": x}), activate, None)
+    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