Update app.py
Browse files
app.py
CHANGED
|
@@ -67,21 +67,15 @@ def upload(files: Optional[List[str]], chatbot: CHAT_HISTORY) -> CHAT_HISTORY:
|
|
| 67 |
return chatbot
|
| 68 |
|
| 69 |
|
| 70 |
-
# Concatenate the hidden pre-filled text with the user input
|
| 71 |
-
prefilled_text = "You are a specialized Prompt Generator focused on improving the original text while maintaining its essence. Keep the prompt length under 50 words never exceed this limit"
|
| 72 |
-
|
| 73 |
-
def get_prefilled_text(user_input):
|
| 74 |
-
return f"{prefilled_text} + {user_input}"
|
| 75 |
-
|
| 76 |
-
# Update the user input function to use the concatenated text
|
| 77 |
def user(text_prompt: str, chatbot: CHAT_HISTORY):
|
| 78 |
if text_prompt:
|
| 79 |
-
|
| 80 |
-
|
|
|
|
|
|
|
| 81 |
return "", chatbot
|
| 82 |
|
| 83 |
|
| 84 |
-
|
| 85 |
def bot(
|
| 86 |
google_key: str,
|
| 87 |
files: Optional[List[str]],
|
|
@@ -93,7 +87,7 @@ def bot(
|
|
| 93 |
chatbot: CHAT_HISTORY
|
| 94 |
):
|
| 95 |
if len(chatbot) == 0:
|
| 96 |
-
return
|
| 97 |
|
| 98 |
google_key = google_key if google_key else GOOGLE_API_KEY
|
| 99 |
if not google_key:
|
|
@@ -127,100 +121,56 @@ def bot(
|
|
| 127 |
stream=True,
|
| 128 |
generation_config=generation_config)
|
| 129 |
|
| 130 |
-
|
| 131 |
-
chatbot[-1][1] = ""
|
| 132 |
for chunk in response:
|
| 133 |
-
|
| 134 |
-
section = chunk.text[i:i + 10]
|
| 135 |
-
chatbot[-1][1] += section
|
| 136 |
-
time.sleep(0.01)
|
| 137 |
-
yield chatbot
|
| 138 |
|
|
|
|
| 139 |
|
| 140 |
-
|
| 141 |
-
label="
|
| 142 |
value="",
|
| 143 |
-
|
| 144 |
-
|
| 145 |
-
|
| 146 |
-
|
| 147 |
)
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
height=
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 154 |
)
|
|
|
|
|
|
|
|
|
|
| 155 |
text_prompt_component = gr.Textbox(
|
| 156 |
-
|
| 157 |
-
placeholder="Type or Paste Your Prompt Here",
|
| 158 |
show_label=False,
|
| 159 |
autofocus=True,
|
| 160 |
scale=8
|
| 161 |
)
|
| 162 |
|
| 163 |
-
|
| 164 |
-
label=
|
|
|
|
|
|
|
|
|
|
|
|
|
| 165 |
)
|
| 166 |
-
run_button_component = gr.Button(value="Run", variant="primary", scale=1)
|
| 167 |
-
temperature_component = gr.Slider(
|
| 168 |
-
minimum=0,
|
| 169 |
-
maximum=1.0,
|
| 170 |
-
value=0.4,
|
| 171 |
-
step=0.05,
|
| 172 |
-
label="Temperature",
|
| 173 |
-
info=(
|
| 174 |
-
"Temperature controls the degree of randomness in token selection. Lower "
|
| 175 |
-
"temperatures are good for prompts that expect a true or correct response, "
|
| 176 |
-
"while higher temperatures can lead to more diverse or unexpected results. "
|
| 177 |
-
))
|
| 178 |
-
max_output_tokens_component = gr.Slider(
|
| 179 |
-
minimum=1,
|
| 180 |
-
maximum=2048,
|
| 181 |
-
value=1024,
|
| 182 |
-
step=1,
|
| 183 |
-
label="Token limit",
|
| 184 |
-
info=(
|
| 185 |
-
"Token limit determines the maximum amount of text output from one prompt. A "
|
| 186 |
-
"token is approximately four characters. The default value is 2048."
|
| 187 |
-
))
|
| 188 |
-
stop_sequences_component = gr.Textbox(
|
| 189 |
-
label="Add stop sequence",
|
| 190 |
-
value="",
|
| 191 |
-
type="text",
|
| 192 |
-
placeholder="STOP, END",
|
| 193 |
-
info=(
|
| 194 |
-
"A stop sequence is a series of characters (including spaces) that stops "
|
| 195 |
-
"response generation if the model encounters it. The sequence is not included "
|
| 196 |
-
"as part of the response. You can add up to five stop sequences."
|
| 197 |
-
))
|
| 198 |
-
top_k_component = gr.Slider(
|
| 199 |
-
minimum=1,
|
| 200 |
-
maximum=40,
|
| 201 |
-
value=32,
|
| 202 |
-
step=1,
|
| 203 |
-
label="Top-K",
|
| 204 |
-
info=(
|
| 205 |
-
"Top-k changes how the model selects tokens for output. A top-k of 1 means the "
|
| 206 |
-
"selected token is the most probable among all tokens in the model’s "
|
| 207 |
-
"vocabulary (also called greedy decoding), while a top-k of 3 means that the "
|
| 208 |
-
"next token is selected from among the 3 most probable tokens (using "
|
| 209 |
-
"temperature)."
|
| 210 |
-
))
|
| 211 |
-
top_p_component = gr.Slider(
|
| 212 |
-
minimum=0,
|
| 213 |
-
maximum=1,
|
| 214 |
-
value=1,
|
| 215 |
-
step=0.01,
|
| 216 |
-
label="Top-P",
|
| 217 |
-
info=(
|
| 218 |
-
"Top-p changes how the model selects tokens for output. Tokens are selected "
|
| 219 |
-
"from most probable to least until the sum of their probabilities equals the "
|
| 220 |
-
"top-p value. For example, if tokens A, B, and C have a probability of .3, .2, "
|
| 221 |
-
"and .1 and the top-p value is .5, then the model will select either A or B as "
|
| 222 |
-
"the next token (using temperature). "
|
| 223 |
-
))
|
| 224 |
|
| 225 |
user_inputs = [
|
| 226 |
text_prompt_component,
|
|
@@ -243,7 +193,6 @@ with gr.Blocks() as demo:
|
|
| 243 |
gr.HTML(SUBTITLE)
|
| 244 |
gr.HTML(DUPLICATE)
|
| 245 |
with gr.Column():
|
| 246 |
-
google_key_component.render()
|
| 247 |
chatbot_component.render()
|
| 248 |
with gr.Row():
|
| 249 |
text_prompt_component.render()
|
|
@@ -260,26 +209,27 @@ with gr.Blocks() as demo:
|
|
| 260 |
run_button_component.click(
|
| 261 |
fn=user,
|
| 262 |
inputs=user_inputs,
|
| 263 |
-
outputs=[
|
| 264 |
queue=False
|
| 265 |
).then(
|
| 266 |
-
fn=bot, inputs=bot_inputs, outputs=[
|
| 267 |
)
|
| 268 |
|
| 269 |
text_prompt_component.submit(
|
| 270 |
fn=user,
|
| 271 |
inputs=user_inputs,
|
| 272 |
-
outputs=[
|
| 273 |
queue=False
|
| 274 |
).then(
|
| 275 |
-
fn=bot, inputs=bot_inputs, outputs=[
|
| 276 |
)
|
| 277 |
|
| 278 |
upload_button_component.upload(
|
| 279 |
fn=upload,
|
| 280 |
inputs=[upload_button_component, chatbot_component],
|
| 281 |
-
outputs=[chatbot_component],
|
| 282 |
queue=False
|
| 283 |
)
|
| 284 |
|
| 285 |
demo.queue(max_size=99).launch(debug=False, show_error=True)
|
|
|
|
|
|
| 67 |
return chatbot
|
| 68 |
|
| 69 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
def user(text_prompt: str, chatbot: CHAT_HISTORY):
|
| 71 |
if text_prompt:
|
| 72 |
+
# Pre-filled text to go with user input
|
| 73 |
+
prefilled_text = "You are a specialized Prompt Generator focused on improving the original text while maintaining its essence. Keep the prompt length under 50 words never exceed this limit"
|
| 74 |
+
full_prompt = f"{prefilled_text} {text_prompt}"
|
| 75 |
+
chatbot.append((full_prompt, None))
|
| 76 |
return "", chatbot
|
| 77 |
|
| 78 |
|
|
|
|
| 79 |
def bot(
|
| 80 |
google_key: str,
|
| 81 |
files: Optional[List[str]],
|
|
|
|
| 87 |
chatbot: CHAT_HISTORY
|
| 88 |
):
|
| 89 |
if len(chatbot) == 0:
|
| 90 |
+
return ''
|
| 91 |
|
| 92 |
google_key = google_key if google_key else GOOGLE_API_KEY
|
| 93 |
if not google_key:
|
|
|
|
| 121 |
stream=True,
|
| 122 |
generation_config=generation_config)
|
| 123 |
|
| 124 |
+
generated_text = ''
|
|
|
|
| 125 |
for chunk in response:
|
| 126 |
+
generated_text += chunk.text
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
|
| 128 |
+
return generated_text
|
| 129 |
|
| 130 |
+
output_text_component = gr.Textbox(
|
| 131 |
+
label="Generated Text",
|
| 132 |
value="",
|
| 133 |
+
placeholder="Generated text will appear here",
|
| 134 |
+
readonly=True,
|
| 135 |
+
scale=8,
|
| 136 |
+
multiline=True
|
| 137 |
)
|
| 138 |
+
|
| 139 |
+
def copy_text():
|
| 140 |
+
output_text_component.copy()
|
| 141 |
+
|
| 142 |
+
output_copy_icon = gr.HTML(
|
| 143 |
+
"<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' "
|
| 144 |
+
"fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' "
|
| 145 |
+
"stroke-linejoin='round' class='feather feather-copy' onclick='copyText()'>"
|
| 146 |
+
"<rect x='9' y='9' width='13' height='13' rx='2' ry='2'></rect>"
|
| 147 |
+
"<path d='M9 15h4'></path><path d='M15 9v6'></path></svg>"
|
| 148 |
+
"<script>"
|
| 149 |
+
"function copyText() {"
|
| 150 |
+
"var copyText = document.getElementById('output-text');"
|
| 151 |
+
"copyText.select();"
|
| 152 |
+
"document.execCommand('copy');"
|
| 153 |
+
"alert('Copied to clipboard!');"
|
| 154 |
+
"}"
|
| 155 |
+
"</script>"
|
| 156 |
)
|
| 157 |
+
|
| 158 |
+
output_text_component_copy = gr.OutputComponent([output_text_component, output_copy_icon])
|
| 159 |
+
|
| 160 |
text_prompt_component = gr.Textbox(
|
| 161 |
+
placeholder="Hi there! [press Enter]",
|
|
|
|
| 162 |
show_label=False,
|
| 163 |
autofocus=True,
|
| 164 |
scale=8
|
| 165 |
)
|
| 166 |
|
| 167 |
+
chatbot_component = gr.Chatbot(
|
| 168 |
+
label='Gemini',
|
| 169 |
+
bubble_full_width=False,
|
| 170 |
+
avatar_images=AVATAR_IMAGES,
|
| 171 |
+
scale=2,
|
| 172 |
+
height=400
|
| 173 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 174 |
|
| 175 |
user_inputs = [
|
| 176 |
text_prompt_component,
|
|
|
|
| 193 |
gr.HTML(SUBTITLE)
|
| 194 |
gr.HTML(DUPLICATE)
|
| 195 |
with gr.Column():
|
|
|
|
| 196 |
chatbot_component.render()
|
| 197 |
with gr.Row():
|
| 198 |
text_prompt_component.render()
|
|
|
|
| 209 |
run_button_component.click(
|
| 210 |
fn=user,
|
| 211 |
inputs=user_inputs,
|
| 212 |
+
outputs=[output_text_component, chatbot_component],
|
| 213 |
queue=False
|
| 214 |
).then(
|
| 215 |
+
fn=bot, inputs=bot_inputs, outputs=[output_text_component_copy],
|
| 216 |
)
|
| 217 |
|
| 218 |
text_prompt_component.submit(
|
| 219 |
fn=user,
|
| 220 |
inputs=user_inputs,
|
| 221 |
+
outputs=[ output_text_component, chatbot_component],
|
| 222 |
queue=False
|
| 223 |
).then(
|
| 224 |
+
fn=bot, inputs=bot_inputs, outputs=[output_text_component_copy],
|
| 225 |
)
|
| 226 |
|
| 227 |
upload_button_component.upload(
|
| 228 |
fn=upload,
|
| 229 |
inputs=[upload_button_component, chatbot_component],
|
| 230 |
+
outputs=[output_text_component, chatbot_component],
|
| 231 |
queue=False
|
| 232 |
)
|
| 233 |
|
| 234 |
demo.queue(max_size=99).launch(debug=False, show_error=True)
|
| 235 |
+
|