From 44f71aa3213a8519bc6a6a645292c6ec93264279 Mon Sep 17 00:00:00 2001 From: Krrish Dholakia Date: Wed, 6 Sep 2023 11:28:37 -0700 Subject: [PATCH] logging replicate response logs --- litellm/__pycache__/utils.cpython-311.pyc | Bin 87145 -> 87286 bytes litellm/llms/replicate.py | 8 +++++--- litellm/utils.py | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/litellm/__pycache__/utils.cpython-311.pyc b/litellm/__pycache__/utils.cpython-311.pyc index 47392379dccbee0b51d6c20cb01259a2b1c7c7c5..e1a08adbd57139bea7710106c269451be80216b7 100644 GIT binary patch delta 7389 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 xD<6v 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 Y^CEG6V9+84olE*2-jry&O0--41yTbwHUIzs diff --git a/litellm/llms/replicate.py b/litellm/llms/replicate.py index ef4a1a29e..f3c7a52c8 100644 --- a/litellm/llms/replicate.py +++ b/litellm/llms/replicate.py @@ -50,6 +50,7 @@ def handle_prediction_response(prediction_url, api_token, print_verbose): } status = "" + logs = "" while True and (status not in ["succeeded", "failed", "canceled"]): print_verbose("making request") time.sleep(0.0001) @@ -60,9 +61,10 @@ def handle_prediction_response(prediction_url, api_token, print_verbose): output_string = "".join(response_data['output']) print_verbose(f"Non-streamed output:{output_string}") status = response_data['status'] + logs = response_data.get("logs", "") else: print_verbose("Failed to fetch prediction status and output.") - return output_string + return output_string, logs # Function to handle prediction response (streaming) def handle_prediction_response_streaming(prediction_url, api_token, print_verbose): @@ -131,14 +133,14 @@ def completion( print_verbose("streaming request") return handle_prediction_response_streaming(prediction_url, api_key, print_verbose) else: - result = handle_prediction_response(prediction_url, api_key, print_verbose) + result, logs = handle_prediction_response(prediction_url, api_key, print_verbose) ## LOGGING logging_obj.post_call( input=prompt, api_key="", original_response=result, - additional_args={"complete_input_dict": input_data}, + additional_args={"complete_input_dict": input_data,"logs": logs}, ) print_verbose(f"raw model_response: {result}") diff --git a/litellm/utils.py b/litellm/utils.py index 32434c0bf..3834a647c 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -241,6 +241,7 @@ class Logging: self.model_call_details["additional_args"] = additional_args # User Logging -> if you pass in a custom logging function + print_verbose(f"model call details: {self.model_call_details}") print_verbose( f"Logging Details Post-API Call: logger_fn - {self.logger_fn} | callable(logger_fn) - {callable(self.logger_fn)}" )