mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-26 03:04:13 +00:00
(feat) verbose logs + fallbacks - working well
This commit is contained in:
parent
f63f9d02cc
commit
b4d9754dc2
2 changed files with 41 additions and 8 deletions
|
@ -7,7 +7,9 @@ handler = logging.StreamHandler()
|
||||||
handler.setLevel(logging.DEBUG)
|
handler.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
# Create a formatter and set it for the handler
|
# Create a formatter and set it for the handler
|
||||||
formatter = logging.Formatter()
|
|
||||||
|
formatter = logging.Formatter("\033[92m%(name)s - %(levelname)s\033[0m: %(message)s")
|
||||||
|
|
||||||
handler.setFormatter(formatter)
|
handler.setFormatter(formatter)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -318,7 +318,7 @@ class Router:
|
||||||
async def _acompletion(self, model: str, messages: List[Dict[str, str]], **kwargs):
|
async def _acompletion(self, model: str, messages: List[Dict[str, str]], **kwargs):
|
||||||
model_name = None
|
model_name = None
|
||||||
try:
|
try:
|
||||||
verbose_router_logger.info(
|
verbose_router_logger.debug(
|
||||||
f"Inside _acompletion()- model: {model}; kwargs: {kwargs}"
|
f"Inside _acompletion()- model: {model}; kwargs: {kwargs}"
|
||||||
)
|
)
|
||||||
deployment = self.get_available_deployment(
|
deployment = self.get_available_deployment(
|
||||||
|
@ -365,8 +365,14 @@ class Router:
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.success_calls[model_name] += 1
|
self.success_calls[model_name] += 1
|
||||||
|
verbose_router_logger.info(
|
||||||
|
f"litellm.acompletion(model={model_name})\033[32m 200 OK\033[0m"
|
||||||
|
)
|
||||||
return response
|
return response
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
verbose_router_logger.info(
|
||||||
|
f"litellm.acompletion(model={model_name})\033[31m Exception {str(e)}\033[0m"
|
||||||
|
)
|
||||||
if model_name is not None:
|
if model_name is not None:
|
||||||
self.fail_calls[model_name] += 1
|
self.fail_calls[model_name] += 1
|
||||||
raise e
|
raise e
|
||||||
|
@ -387,7 +393,7 @@ class Router:
|
||||||
|
|
||||||
def _image_generation(self, prompt: str, model: str, **kwargs):
|
def _image_generation(self, prompt: str, model: str, **kwargs):
|
||||||
try:
|
try:
|
||||||
verbose_router_logger.info(
|
verbose_router_logger.debug(
|
||||||
f"Inside _image_generation()- model: {model}; kwargs: {kwargs}"
|
f"Inside _image_generation()- model: {model}; kwargs: {kwargs}"
|
||||||
)
|
)
|
||||||
deployment = self.get_available_deployment(
|
deployment = self.get_available_deployment(
|
||||||
|
@ -434,8 +440,14 @@ class Router:
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.success_calls[model_name] += 1
|
self.success_calls[model_name] += 1
|
||||||
|
verbose_router_logger.info(
|
||||||
|
f"litellm.image_generation(model={model_name})\033[32m 200 OK\033[0m"
|
||||||
|
)
|
||||||
return response
|
return response
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
verbose_router_logger.info(
|
||||||
|
f"litellm.image_generation(model={model_name})\033[31m Exception {str(e)}\033[0m"
|
||||||
|
)
|
||||||
if model_name is not None:
|
if model_name is not None:
|
||||||
self.fail_calls[model_name] += 1
|
self.fail_calls[model_name] += 1
|
||||||
raise e
|
raise e
|
||||||
|
@ -456,7 +468,7 @@ class Router:
|
||||||
|
|
||||||
async def _aimage_generation(self, prompt: str, model: str, **kwargs):
|
async def _aimage_generation(self, prompt: str, model: str, **kwargs):
|
||||||
try:
|
try:
|
||||||
verbose_router_logger.info(
|
verbose_router_logger.debug(
|
||||||
f"Inside _image_generation()- model: {model}; kwargs: {kwargs}"
|
f"Inside _image_generation()- model: {model}; kwargs: {kwargs}"
|
||||||
)
|
)
|
||||||
deployment = self.get_available_deployment(
|
deployment = self.get_available_deployment(
|
||||||
|
@ -503,8 +515,14 @@ class Router:
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.success_calls[model_name] += 1
|
self.success_calls[model_name] += 1
|
||||||
|
verbose_router_logger.info(
|
||||||
|
f"litellm.aimage_generation(model={model_name})\033[32m 200 OK\033[0m"
|
||||||
|
)
|
||||||
return response
|
return response
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
verbose_router_logger.info(
|
||||||
|
f"litellm.aimage_generation(model={model_name})\033[31m Exception {str(e)}\033[0m"
|
||||||
|
)
|
||||||
if model_name is not None:
|
if model_name is not None:
|
||||||
self.fail_calls[model_name] += 1
|
self.fail_calls[model_name] += 1
|
||||||
raise e
|
raise e
|
||||||
|
@ -578,7 +596,7 @@ class Router:
|
||||||
|
|
||||||
async def _atext_completion(self, model: str, prompt: str, **kwargs):
|
async def _atext_completion(self, model: str, prompt: str, **kwargs):
|
||||||
try:
|
try:
|
||||||
verbose_router_logger.info(
|
verbose_router_logger.debug(
|
||||||
f"Inside _atext_completion()- model: {model}; kwargs: {kwargs}"
|
f"Inside _atext_completion()- model: {model}; kwargs: {kwargs}"
|
||||||
)
|
)
|
||||||
deployment = self.get_available_deployment(
|
deployment = self.get_available_deployment(
|
||||||
|
@ -625,8 +643,14 @@ class Router:
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.success_calls[model_name] += 1
|
self.success_calls[model_name] += 1
|
||||||
|
verbose_router_logger.info(
|
||||||
|
f"litellm.atext_completion(model={model_name})\033[32m 200 OK\033[0m"
|
||||||
|
)
|
||||||
return response
|
return response
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
verbose_router_logger.info(
|
||||||
|
f"litellm.atext_completion(model={model_name})\033[31m Exception {str(e)}\033[0m"
|
||||||
|
)
|
||||||
if model_name is not None:
|
if model_name is not None:
|
||||||
self.fail_calls[model_name] += 1
|
self.fail_calls[model_name] += 1
|
||||||
raise e
|
raise e
|
||||||
|
@ -698,7 +722,7 @@ class Router:
|
||||||
|
|
||||||
async def _aembedding(self, input: Union[str, List], model: str, **kwargs):
|
async def _aembedding(self, input: Union[str, List], model: str, **kwargs):
|
||||||
try:
|
try:
|
||||||
verbose_router_logger.info(
|
verbose_router_logger.debug(
|
||||||
f"Inside _aembedding()- model: {model}; kwargs: {kwargs}"
|
f"Inside _aembedding()- model: {model}; kwargs: {kwargs}"
|
||||||
)
|
)
|
||||||
deployment = self.get_available_deployment(
|
deployment = self.get_available_deployment(
|
||||||
|
@ -745,8 +769,14 @@ class Router:
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.success_calls[model_name] += 1
|
self.success_calls[model_name] += 1
|
||||||
|
verbose_router_logger.info(
|
||||||
|
f"litellm.aembedding(model={model_name})\033[32m 200 OK\033[0m"
|
||||||
|
)
|
||||||
return response
|
return response
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
verbose_router_logger.info(
|
||||||
|
f"litellm.aembedding(model={model_name})\033[31m Exception {str(e)}\033[0m"
|
||||||
|
)
|
||||||
if model_name is not None:
|
if model_name is not None:
|
||||||
self.fail_calls[model_name] += 1
|
self.fail_calls[model_name] += 1
|
||||||
raise e
|
raise e
|
||||||
|
@ -766,7 +796,6 @@ class Router:
|
||||||
verbose_router_logger.debug(f"Async Response: {response}")
|
verbose_router_logger.debug(f"Async Response: {response}")
|
||||||
return response
|
return response
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
verbose_router_logger.info(f"An exception occurs: {e}")
|
|
||||||
verbose_router_logger.debug(f"Traceback{traceback.format_exc()}")
|
verbose_router_logger.debug(f"Traceback{traceback.format_exc()}")
|
||||||
original_exception = e
|
original_exception = e
|
||||||
fallback_model_group = None
|
fallback_model_group = None
|
||||||
|
@ -821,7 +850,9 @@ class Router:
|
||||||
try:
|
try:
|
||||||
## LOGGING
|
## LOGGING
|
||||||
kwargs = self.log_retry(kwargs=kwargs, e=original_exception)
|
kwargs = self.log_retry(kwargs=kwargs, e=original_exception)
|
||||||
verbose_router_logger.info(f"Falling back to {mg}")
|
verbose_router_logger.info(
|
||||||
|
f"Falling back to model_group = {mg}"
|
||||||
|
)
|
||||||
kwargs["model"] = mg
|
kwargs["model"] = mg
|
||||||
kwargs["metadata"]["model_group"] = mg
|
kwargs["metadata"]["model_group"] = mg
|
||||||
response = await self.async_function_with_retries(
|
response = await self.async_function_with_retries(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue