zach commited on
Commit
2f050a8
·
1 Parent(s): 3885d80

Improve Hume errors, fix error message text in UI

Browse files
src/app.py CHANGED
@@ -64,11 +64,11 @@ def generate_text(
64
  except AnthropicError as ae:
65
  logger.error(f"AnthropicError while generating text: {str(ae)}")
66
  raise gr.Error(
67
- f"There was an issue communicating with the Anthropic API. {ae.message} Please try again later."
68
  )
69
  except Exception as e:
70
  logger.error(f"Unexpected error while generating text: {e}")
71
- raise gr.Error("Failed to generate text. Please try again.")
72
 
73
 
74
  def text_to_speech(
@@ -156,12 +156,12 @@ def text_to_speech(
156
  except ElevenLabsError as ee:
157
  logger.error(f"ElevenLabsError while synthesizing speech from text: {str(ee)}")
158
  raise gr.Error(
159
- f"There was an issue communicating with the Elevenlabs API. {ee.message} Please try again later."
160
  )
161
  except HumeError as he:
162
  logger.error(f"HumeError while synthesizing speech from text: {str(he)}")
163
  raise gr.Error(
164
- "There was an issue communicating with the Hume API. Please try again later."
165
  )
166
  except Exception as e:
167
  logger.error(f"Unexpected error during TTS generation: {e}")
 
64
  except AnthropicError as ae:
65
  logger.error(f"AnthropicError while generating text: {str(ae)}")
66
  raise gr.Error(
67
+ f'There was an issue communicating with the Anthropic API: "{ae.message}"'
68
  )
69
  except Exception as e:
70
  logger.error(f"Unexpected error while generating text: {e}")
71
+ raise gr.Error("Failed to generate text. Please try again later.")
72
 
73
 
74
  def text_to_speech(
 
156
  except ElevenLabsError as ee:
157
  logger.error(f"ElevenLabsError while synthesizing speech from text: {str(ee)}")
158
  raise gr.Error(
159
+ f'There was an issue communicating with the Elevenlabs API: "{ee.message}"'
160
  )
161
  except HumeError as he:
162
  logger.error(f"HumeError while synthesizing speech from text: {str(he)}")
163
  raise gr.Error(
164
+ f'There was an issue communicating with the Hume API: "{he.message}"'
165
  )
166
  except Exception as e:
167
  logger.error(f"Unexpected error during TTS generation: {e}")
src/integrations/anthropic_api.py CHANGED
@@ -128,7 +128,7 @@ class AnthropicError(Exception):
128
 
129
 
130
  class UnretryableAnthropicError(AnthropicError):
131
- """Custom exception for errors related to the Anthropic TTS API that should not be retried."""
132
 
133
  def __init__(self, message: str, original_exception: Optional[Exception] = None):
134
  super().__init__(message, original_exception)
@@ -198,14 +198,13 @@ def generate_text_with_claude(character_description: str) -> str:
198
  return str(blocks or "No content generated.")
199
 
200
  except Exception as e:
201
- logger.exception(f"Error generating text with the Anthropic API: {str(e)}")
202
  if isinstance(e, APIError):
203
  if e.status_code >= 400 and e.status_code < 500:
204
  raise UnretryableAnthropicError(
205
- message=f"Failed to generate text with Anthropic: \"{e.body['error']['message']}\"",
206
  original_exception=e,
207
  ) from e
208
  raise AnthropicError(
209
- message=("Failed to generate text with Anthropic: {e}. "),
210
  original_exception=e,
211
  ) from e
 
128
 
129
 
130
  class UnretryableAnthropicError(AnthropicError):
131
+ """Custom exception for errors related to the Anthropic API that should not be retried."""
132
 
133
  def __init__(self, message: str, original_exception: Optional[Exception] = None):
134
  super().__init__(message, original_exception)
 
198
  return str(blocks or "No content generated.")
199
 
200
  except Exception as e:
 
201
  if isinstance(e, APIError):
202
  if e.status_code >= 400 and e.status_code < 500:
203
  raise UnretryableAnthropicError(
204
+ message=f"\"{e.body['error']['message']}\"",
205
  original_exception=e,
206
  ) from e
207
  raise AnthropicError(
208
+ message=(f"{e.message}"),
209
  original_exception=e,
210
  ) from e
src/integrations/elevenlabs_api.py CHANGED
@@ -129,14 +129,13 @@ def text_to_speech_with_elevenlabs(character_description: str, text: str) -> byt
129
  return None, save_base64_audio_to_file(base64_audio, filename)
130
 
131
  except Exception as e:
132
- logger.exception(f"Error generating text with the ElevenLabs API: {str(e)}")
133
  if isinstance(e, ApiError):
134
  if e.status_code >= 400 and e.status_code < 500:
135
  raise UnretryableElevenLabsError(
136
- message=f"Failed to synthesize speech with ElevenLabs: \"{e.body['detail']['message']}\"",
137
  original_exception=e,
138
  ) from e
139
  raise ElevenLabsError(
140
- message=f"Failed to synthesize speech with ElevenLabs: {e}",
141
  original_exception=e,
142
  ) from e
 
129
  return None, save_base64_audio_to_file(base64_audio, filename)
130
 
131
  except Exception as e:
 
132
  if isinstance(e, ApiError):
133
  if e.status_code >= 400 and e.status_code < 500:
134
  raise UnretryableElevenLabsError(
135
+ message=f"{e.body['detail']['message']}",
136
  original_exception=e,
137
  ) from e
138
  raise ElevenLabsError(
139
+ message=f"{e}",
140
  original_exception=e,
141
  ) from e
src/integrations/hume_api.py CHANGED
@@ -27,6 +27,7 @@ from typing import Literal, Optional
27
 
28
  # Third-Party Library Imports
29
  import requests
 
30
  from tenacity import retry, stop_after_attempt, wait_fixed, before_log, after_log
31
 
32
  # Local Application Imports
@@ -70,6 +71,15 @@ class HumeConfig:
70
  class HumeError(Exception):
71
  """Custom exception for errors related to the Hume TTS API."""
72
 
 
 
 
 
 
 
 
 
 
73
  def __init__(self, message: str, original_exception: Optional[Exception] = None):
74
  super().__init__(message)
75
  self.original_exception = original_exception
@@ -136,8 +146,13 @@ def text_to_speech_with_hume(character_description: str, text: str) -> bytes:
136
  return generation_id, save_base64_audio_to_file(base64_audio, filename)
137
 
138
  except Exception as e:
139
- logger.exception(f"Error synthesizing speech with Hume: {e}")
 
 
 
 
 
140
  raise HumeError(
141
- message=f"Failed to synthesize speech with Hume: {e}",
142
  original_exception=e,
143
  ) from e
 
27
 
28
  # Third-Party Library Imports
29
  import requests
30
+ from requests.exceptions import HTTPError
31
  from tenacity import retry, stop_after_attempt, wait_fixed, before_log, after_log
32
 
33
  # Local Application Imports
 
71
  class HumeError(Exception):
72
  """Custom exception for errors related to the Hume TTS API."""
73
 
74
+ def __init__(self, message: str, original_exception: Optional[Exception] = None):
75
+ super().__init__(message)
76
+ self.original_exception = original_exception
77
+ self.message = message
78
+
79
+
80
+ class UnretryableHumeError(HumeError):
81
+ """Custom exception for errors related to the Hume TTS API that should not be retried."""
82
+
83
  def __init__(self, message: str, original_exception: Optional[Exception] = None):
84
  super().__init__(message)
85
  self.original_exception = original_exception
 
146
  return generation_id, save_base64_audio_to_file(base64_audio, filename)
147
 
148
  except Exception as e:
149
+ if isinstance(e, HTTPError):
150
+ if e.response.status_code >= 400 and e.response.status_code < 500:
151
+ raise UnretryableHumeError(
152
+ message=f'"{e.response.text}"',
153
+ original_exception=e,
154
+ ) from e
155
  raise HumeError(
156
+ message=f"{e}",
157
  original_exception=e,
158
  ) from e