Spaces:
Sleeping
Sleeping
#### What this does #### | |
# On success, logs events to Promptlayer | |
import dotenv, os | |
import requests | |
import requests | |
dotenv.load_dotenv() # Loading env variables using dotenv | |
import traceback | |
class PromptLayerLogger: | |
# Class variables or attributes | |
def __init__(self): | |
# Instance variables | |
self.key = os.getenv("PROMPTLAYER_API_KEY") | |
def log_event(self, kwargs, response_obj, start_time, end_time, print_verbose): | |
# Method definition | |
try: | |
new_kwargs = {} | |
new_kwargs["model"] = kwargs["model"] | |
new_kwargs["messages"] = kwargs["messages"] | |
# add kwargs["optional_params"] to new_kwargs | |
for optional_param in kwargs["optional_params"]: | |
new_kwargs[optional_param] = kwargs["optional_params"][optional_param] | |
print_verbose( | |
f"Prompt Layer Logging - Enters logging function for model kwargs: {new_kwargs}\n, response: {response_obj}" | |
) | |
request_response = requests.post( | |
"https://api.promptlayer.com/rest/track-request", | |
json={ | |
"function_name": "openai.ChatCompletion.create", | |
"kwargs": new_kwargs, | |
"tags": ["hello", "world"], | |
"request_response": dict(response_obj), | |
"request_start_time": int(start_time.timestamp()), | |
"request_end_time": int(end_time.timestamp()), | |
"api_key": self.key, | |
# Optional params for PromptLayer | |
# "prompt_id": "<PROMPT ID>", | |
# "prompt_input_variables": "<Dictionary of variables for prompt>", | |
# "prompt_version":1, | |
}, | |
) | |
print_verbose( | |
f"Prompt Layer Logging: success - final response object: {request_response.text}" | |
) | |
response_json = request_response.json() | |
if "success" not in request_response.json(): | |
raise Exception("Promptlayer did not successfully log the response!") | |
if "request_id" in response_json: | |
print(kwargs["litellm_params"]["metadata"]) | |
if kwargs["litellm_params"]["metadata"] is not None: | |
response = requests.post( | |
"https://api.promptlayer.com/rest/track-metadata", | |
json={ | |
"request_id": response_json["request_id"], | |
"api_key": self.key, | |
"metadata": kwargs["litellm_params"]["metadata"], | |
}, | |
) | |
print_verbose( | |
f"Prompt Layer Logging: success - metadata post response object: {response.text}" | |
) | |
except: | |
print_verbose(f"error: Prompt Layer Error - {traceback.format_exc()}") | |
pass | |