PeterPinetree commited on
Commit
5616d3e
·
verified ·
1 Parent(s): 4b95bd0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -35
app.py CHANGED
@@ -178,14 +178,17 @@ def respond(message, chat_history, genre=None, use_full_memory=True):
178
  error_message = f"Story magic temporarily interrupted. Please try again. (Error: {str(e)})"
179
  yield chat_history + [(message, error_message)]
180
 
181
- def update_examples(genre):
182
- """Update the example prompts based on the selected genre"""
183
- examples = get_examples_for_genre(genre)
184
- examples.insert(0, "Begin my adventure") # Always include this option
185
- return gr.Examples(
186
- examples=[[ex] for ex in examples],
187
- inputs=msg
188
- )
 
 
 
189
 
190
  # Create interface with additional customization options
191
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
@@ -226,27 +229,52 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
226
  info="When enabled, the AI will try to remember the entire story"
227
  )
228
 
229
- # Initialize with fantasy examples
230
- examples_box = gr.Examples(
231
- examples=[[ex] for ex in get_examples_for_genre("fantasy")],
232
- inputs=msg,
233
- label="Examples"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
234
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
235
 
236
- # Update examples when genre changes
237
- def update_example_text(genre):
238
- return "\n".join(get_examples_for_genre(genre))
239
-
240
- examples_textbox = gr.Textbox(
241
- value=update_example_text("fantasy"),
242
- label="Example Story Starters",
243
- interactive=False
244
- )
245
 
 
246
  genre.change(
247
- fn=update_example_text,
248
  inputs=[genre],
249
- outputs=[examples_textbox]
250
  )
251
 
252
  # Set up event handlers for the chatbot
@@ -258,17 +286,6 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
258
  clear.click(lambda: "", None, msg, queue=False)
259
 
260
  # Add a download story button
261
- def save_story(chat_history):
262
- if not chat_history:
263
- return "No story to save yet!"
264
-
265
- story_text = "# My Interactive Adventure\n\n"
266
- for user_msg, bot_msg in chat_history:
267
- story_text += f"**Player:** {user_msg}\n\n"
268
- story_text += f"**Story:** {bot_msg}\n\n---\n\n"
269
-
270
- return story_text
271
-
272
  with gr.Row():
273
  save_btn = gr.Button("Save Story as Markdown", variant="secondary")
274
  story_output = gr.Markdown(visible=False)
 
178
  error_message = f"Story magic temporarily interrupted. Please try again. (Error: {str(e)})"
179
  yield chat_history + [(message, error_message)]
180
 
181
+ def save_story(chat_history):
182
+ """Convert chat history to markdown for download"""
183
+ if not chat_history:
184
+ return "No story to save yet!"
185
+
186
+ story_text = "# My Interactive Adventure\n\n"
187
+ for user_msg, bot_msg in chat_history:
188
+ story_text += f"**Player:** {user_msg}\n\n"
189
+ story_text += f"**Story:** {bot_msg}\n\n---\n\n"
190
+
191
+ return story_text
192
 
193
  # Create interface with additional customization options
194
  with gr.Blocks(theme=gr.themes.Soft()) as demo:
 
229
  info="When enabled, the AI will try to remember the entire story"
230
  )
231
 
232
+ # Create story starter buttons that automatically submit
233
+ gr.Markdown("## Story Starters")
234
+ story_starters = []
235
+
236
+ def create_example_click_handler(example_text):
237
+ def example_click():
238
+ return example_text
239
+ return example_click
240
+
241
+ # Create a start button
242
+ start_btn = gr.Button("Begin my adventure", variant="secondary")
243
+ start_btn.click(
244
+ fn=create_example_click_handler("Begin my adventure"),
245
+ outputs=[msg],
246
+ queue=False
247
+ ).then(
248
+ fn=respond,
249
+ inputs=[msg, chatbot, genre, full_memory],
250
+ outputs=[chatbot]
251
  )
252
+
253
+ # Create example buttons for the current genre
254
+ example_buttons = []
255
+ for i, example in enumerate(get_examples_for_genre("fantasy")):
256
+ btn = gr.Button(example, elem_id=f"example_{i}")
257
+ btn.click(
258
+ fn=create_example_click_handler(example),
259
+ outputs=[msg],
260
+ queue=False
261
+ ).then(
262
+ fn=respond,
263
+ inputs=[msg, chatbot, genre, full_memory],
264
+ outputs=[chatbot]
265
+ )
266
+ example_buttons.append(btn)
267
 
268
+ # Function to update example buttons when genre changes
269
+ def update_example_buttons(genre):
270
+ examples = get_examples_for_genre(genre)
271
+ return [gr.Button.update(value=example) for example in examples[:4]] # Limit to 4 examples
 
 
 
 
 
272
 
273
+ # Connect genre dropdown to update example buttons
274
  genre.change(
275
+ fn=update_example_buttons,
276
  inputs=[genre],
277
+ outputs=example_buttons
278
  )
279
 
280
  # Set up event handlers for the chatbot
 
286
  clear.click(lambda: "", None, msg, queue=False)
287
 
288
  # Add a download story button
 
 
 
 
 
 
 
 
 
 
 
289
  with gr.Row():
290
  save_btn = gr.Button("Save Story as Markdown", variant="secondary")
291
  story_output = gr.Markdown(visible=False)