(feat) custom API callbacks

This commit is contained in:
ishaan-jaff 2024-02-15 13:44:07 -08:00
parent 4e8a94b916
commit b3f5402017
2 changed files with 38 additions and 4 deletions

View file

@ -29,9 +29,11 @@ from litellm._logging import print_verbose, verbose_logger
class GenericAPILogger:
# Class variables or attributes
def __init__(self, endpoint=None):
def __init__(self, endpoint=None, headers=None):
try:
verbose_logger.debug(f"in init GenericAPILogger, endpoint {endpoint}")
self.endpoint = endpoint
self.headers = headers
pass
@ -44,7 +46,7 @@ class GenericAPILogger:
def log_event(self, kwargs, response_obj, start_time, end_time, print_verbose):
try:
verbose_logger.debug(
f"s3 Logging - Enters logging function for model {kwargs}"
f"GenericAPILogger Logging - Enters logging function for model {kwargs}"
)
# construct payload to send custom logger
@ -54,6 +56,7 @@ class GenericAPILogger:
litellm_params.get("metadata", {}) or {}
) # if litellm_params['metadata'] == None
messages = kwargs.get("messages")
cost = kwargs.get("response_cost", 0.0)
optional_params = kwargs.get("optional_params", {})
call_type = kwargs.get("call_type", "litellm.completion")
cache_hit = kwargs.get("cache_hit", False)
@ -74,6 +77,7 @@ class GenericAPILogger:
"response": response_obj,
"usage": usage,
"metadata": metadata,
"cost": cost,
}
# Ensure everything in the payload is converted to str
@ -87,11 +91,14 @@ class GenericAPILogger:
import json
payload = json.dumps(payload)
data = {
"data": payload,
}
print_verbose(f"\nGeneric Logger - Logging payload = {payload}")
print_verbose(f"\nGeneric Logger - Logging payload = {data}")
# make request to endpoint with payload
response = requests.post(self.endpoint, data=payload, headers=self.headers)
response = requests.post(self.endpoint, data=data, headers=self.headers)
response_status = response.status_code
response_text = response.text

View file

@ -0,0 +1,27 @@
# this is an example endpoint to receive data from litellm
from fastapi import FastAPI, HTTPException, Request
app = FastAPI()
@app.post("/log-event")
async def log_event(request: Request):
try:
# Assuming the incoming request has JSON data
data = await request.json()
print("Received request data:")
print(data)
# Your additional logic can go here
# For now, just printing the received data
return {"message": "Request received successfully"}
except Exception as e:
print(f"Error processing request: {str(e)}")
raise HTTPException(status_code=500, detail="Internal Server Error")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=8000)