Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -136,7 +136,7 @@ def create_story_summary(chat_history):
|
|
| 136 |
return summary_instruction
|
| 137 |
|
| 138 |
# Modified function for proper Gradio format (lists)
|
| 139 |
-
def respond(message: str, chat_history: List[str], genre: Optional[str] = None, use_full_memory: bool = True) -> Tuple[str, List[str]]:
|
| 140 |
"""Generate a response based on the current message and conversation history."""
|
| 141 |
if not message.strip():
|
| 142 |
return "", chat_history
|
|
@@ -146,11 +146,9 @@ def respond(message: str, chat_history: List[str], genre: Optional[str] = None,
|
|
| 146 |
api_messages = [{"role": "system", "content": get_enhanced_system_prompt(genre)}]
|
| 147 |
logging.debug(f"System Message: {api_messages[0]}")
|
| 148 |
|
| 149 |
-
# Add chat history - convert from
|
| 150 |
if chat_history and use_full_memory:
|
| 151 |
-
|
| 152 |
-
history_pairs = list(zip(chat_history[::2], chat_history[1::2]))
|
| 153 |
-
for user_msg, bot_msg in history_pairs[-MEMORY_WINDOW:]:
|
| 154 |
api_messages.extend([
|
| 155 |
{"role": "user", "content": str(user_msg)},
|
| 156 |
{"role": "assistant", "content": str(bot_msg)}
|
|
@@ -161,28 +159,30 @@ def respond(message: str, chat_history: List[str], genre: Optional[str] = None,
|
|
| 161 |
api_messages.append({"role": "user", "content": str(message)})
|
| 162 |
logging.debug(f"Final Message List: {api_messages}")
|
| 163 |
|
| 164 |
-
# Make API call
|
| 165 |
logging.debug("Making API call...")
|
| 166 |
response = client.chat_completion(
|
| 167 |
messages=api_messages,
|
| 168 |
max_tokens=MAX_TOKENS,
|
| 169 |
temperature=TEMPERATURE,
|
| 170 |
-
top_p=TOP_P
|
|
|
|
| 171 |
)
|
| 172 |
logging.debug("API call completed")
|
| 173 |
|
| 174 |
# Extract response
|
| 175 |
bot_message = response.choices[0].message.content
|
| 176 |
-
logging.debug(f"Bot Response: {bot_message[:100]}...")
|
| 177 |
|
| 178 |
-
# Update history using
|
| 179 |
-
updated_history = chat_history
|
|
|
|
| 180 |
return "", updated_history
|
| 181 |
|
| 182 |
except Exception as e:
|
| 183 |
logging.error("Error in respond function", exc_info=True)
|
| 184 |
error_msg = f"Story magic temporarily interrupted. Please try again. (Error: {str(e)})"
|
| 185 |
-
return "", chat_history + [message, error_msg]
|
| 186 |
|
| 187 |
def save_story(chat_history):
|
| 188 |
"""Convert chat history to markdown and return as downloadable file"""
|
|
@@ -281,7 +281,7 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
|
| 281 |
return tuple(results)
|
| 282 |
|
| 283 |
# New direct handler for starter clicks
|
| 284 |
-
def use_starter(starter_text, history, selected_genre, memory_flag):
|
| 285 |
"""Handle starter button clicks with proper message formatting"""
|
| 286 |
if not starter_text:
|
| 287 |
return "", history
|
|
@@ -298,7 +298,7 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
|
| 298 |
|
| 299 |
except Exception as e:
|
| 300 |
error_msg = f"Story magic temporarily interrupted. Please try again. (Error: {str(e)})"
|
| 301 |
-
return "", history + [starter_text, error_msg]
|
| 302 |
|
| 303 |
# Simplified button connections
|
| 304 |
for starter_button in starter_buttons:
|
|
|
|
| 136 |
return summary_instruction
|
| 137 |
|
| 138 |
# Modified function for proper Gradio format (lists)
|
| 139 |
+
def respond(message: str, chat_history: List[Tuple[str, str]], genre: Optional[str] = None, use_full_memory: bool = True) -> Tuple[str, List[Tuple[str, str]]]:
|
| 140 |
"""Generate a response based on the current message and conversation history."""
|
| 141 |
if not message.strip():
|
| 142 |
return "", chat_history
|
|
|
|
| 146 |
api_messages = [{"role": "system", "content": get_enhanced_system_prompt(genre)}]
|
| 147 |
logging.debug(f"System Message: {api_messages[0]}")
|
| 148 |
|
| 149 |
+
# Add chat history - convert from tuples to API format
|
| 150 |
if chat_history and use_full_memory:
|
| 151 |
+
for user_msg, bot_msg in chat_history[-MEMORY_WINDOW:]:
|
|
|
|
|
|
|
| 152 |
api_messages.extend([
|
| 153 |
{"role": "user", "content": str(user_msg)},
|
| 154 |
{"role": "assistant", "content": str(bot_msg)}
|
|
|
|
| 159 |
api_messages.append({"role": "user", "content": str(message)})
|
| 160 |
logging.debug(f"Final Message List: {api_messages}")
|
| 161 |
|
| 162 |
+
# Make API call with timeout
|
| 163 |
logging.debug("Making API call...")
|
| 164 |
response = client.chat_completion(
|
| 165 |
messages=api_messages,
|
| 166 |
max_tokens=MAX_TOKENS,
|
| 167 |
temperature=TEMPERATURE,
|
| 168 |
+
top_p=TOP_P,
|
| 169 |
+
timeout=30 # 30 second timeout
|
| 170 |
)
|
| 171 |
logging.debug("API call completed")
|
| 172 |
|
| 173 |
# Extract response
|
| 174 |
bot_message = response.choices[0].message.content
|
| 175 |
+
logging.debug(f"Bot Response: {bot_message[:100]}...")
|
| 176 |
|
| 177 |
+
# Update history using tuple format [(user_msg, bot_msg), ...]
|
| 178 |
+
updated_history = list(chat_history) # Create a copy
|
| 179 |
+
updated_history.append((message, bot_message)) # Add as tuple
|
| 180 |
return "", updated_history
|
| 181 |
|
| 182 |
except Exception as e:
|
| 183 |
logging.error("Error in respond function", exc_info=True)
|
| 184 |
error_msg = f"Story magic temporarily interrupted. Please try again. (Error: {str(e)})"
|
| 185 |
+
return "", list(chat_history) + [(message, error_msg)]
|
| 186 |
|
| 187 |
def save_story(chat_history):
|
| 188 |
"""Convert chat history to markdown and return as downloadable file"""
|
|
|
|
| 281 |
return tuple(results)
|
| 282 |
|
| 283 |
# New direct handler for starter clicks
|
| 284 |
+
def use_starter(starter_text: str, history: List[Tuple[str, str]], selected_genre: str, memory_flag: bool) -> Tuple[str, List[Tuple[str, str]]]:
|
| 285 |
"""Handle starter button clicks with proper message formatting"""
|
| 286 |
if not starter_text:
|
| 287 |
return "", history
|
|
|
|
| 298 |
|
| 299 |
except Exception as e:
|
| 300 |
error_msg = f"Story magic temporarily interrupted. Please try again. (Error: {str(e)})"
|
| 301 |
+
return "", list(history) + [(starter_text, error_msg)]
|
| 302 |
|
| 303 |
# Simplified button connections
|
| 304 |
for starter_button in starter_buttons:
|