forked from phoenix/litellm-mirror
Merge pull request #3489 from BerriAI/litellm_send_slack_alerts_model_new
Feat - send slack alerts on `model/new`
This commit is contained in:
commit
0012463a9b
2 changed files with 60 additions and 3 deletions
|
@ -412,6 +412,53 @@ class SlackAlerting:
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
async def model_added_alert(self, model_name: str, litellm_model_name: str):
|
||||||
|
model_info = litellm.model_cost.get(litellm_model_name, {})
|
||||||
|
model_info_str = ""
|
||||||
|
for k, v in model_info.items():
|
||||||
|
if k == "input_cost_per_token" or k == "output_cost_per_token":
|
||||||
|
# when converting to string it should not be 1.63e-06
|
||||||
|
v = "{:.8f}".format(v)
|
||||||
|
|
||||||
|
model_info_str += f"{k}: {v}\n"
|
||||||
|
|
||||||
|
message = f"""
|
||||||
|
*🚅 New Model Added*
|
||||||
|
Model Name: `{model_name}`
|
||||||
|
|
||||||
|
Usage OpenAI Python SDK:
|
||||||
|
```
|
||||||
|
import openai
|
||||||
|
client = openai.OpenAI(
|
||||||
|
api_key="your_api_key",
|
||||||
|
base_url={os.getenv("PROXY_BASE_URL", "http://0.0.0.0:4000")}
|
||||||
|
)
|
||||||
|
|
||||||
|
response = client.chat.completions.create(
|
||||||
|
model="{model_name}", # model to send to the proxy
|
||||||
|
messages = [
|
||||||
|
{{
|
||||||
|
"role": "user",
|
||||||
|
"content": "this is a test request, write a short poem"
|
||||||
|
}}
|
||||||
|
]
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
Model Info:
|
||||||
|
```
|
||||||
|
{model_info_str}
|
||||||
|
```
|
||||||
|
"""
|
||||||
|
|
||||||
|
await self.send_alert(
|
||||||
|
message=message, level="Low", alert_type="new_model_added"
|
||||||
|
)
|
||||||
|
pass
|
||||||
|
|
||||||
|
async def model_removed_alert(self, model_name: str):
|
||||||
|
pass
|
||||||
|
|
||||||
async def send_alert(
|
async def send_alert(
|
||||||
self,
|
self,
|
||||||
message: str,
|
message: str,
|
||||||
|
@ -422,6 +469,7 @@ class SlackAlerting:
|
||||||
"llm_requests_hanging",
|
"llm_requests_hanging",
|
||||||
"budget_alerts",
|
"budget_alerts",
|
||||||
"db_exceptions",
|
"db_exceptions",
|
||||||
|
"new_model_added",
|
||||||
],
|
],
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
|
@ -447,9 +495,12 @@ class SlackAlerting:
|
||||||
# Get the current timestamp
|
# Get the current timestamp
|
||||||
current_time = datetime.now().strftime("%H:%M:%S")
|
current_time = datetime.now().strftime("%H:%M:%S")
|
||||||
_proxy_base_url = os.getenv("PROXY_BASE_URL", None)
|
_proxy_base_url = os.getenv("PROXY_BASE_URL", None)
|
||||||
formatted_message = (
|
if alert_type == "new_model_added":
|
||||||
f"Level: `{level}`\nTimestamp: `{current_time}`\n\nMessage: {message}"
|
formatted_message = message
|
||||||
)
|
else:
|
||||||
|
formatted_message = (
|
||||||
|
f"Level: `{level}`\nTimestamp: `{current_time}`\n\nMessage: {message}"
|
||||||
|
)
|
||||||
if _proxy_base_url is not None:
|
if _proxy_base_url is not None:
|
||||||
formatted_message += f"\n\nProxy URL: `{_proxy_base_url}`"
|
formatted_message += f"\n\nProxy URL: `{_proxy_base_url}`"
|
||||||
|
|
||||||
|
|
|
@ -7303,6 +7303,7 @@ async def add_new_model(
|
||||||
"""
|
"""
|
||||||
# encrypt litellm params #
|
# encrypt litellm params #
|
||||||
_litellm_params_dict = model_params.litellm_params.dict(exclude_none=True)
|
_litellm_params_dict = model_params.litellm_params.dict(exclude_none=True)
|
||||||
|
_orignal_litellm_model_name = model_params.litellm_params.model
|
||||||
for k, v in _litellm_params_dict.items():
|
for k, v in _litellm_params_dict.items():
|
||||||
if isinstance(v, str):
|
if isinstance(v, str):
|
||||||
encrypted_value = encrypt_value(value=v, master_key=master_key) # type: ignore
|
encrypted_value = encrypt_value(value=v, master_key=master_key) # type: ignore
|
||||||
|
@ -7329,6 +7330,11 @@ async def add_new_model(
|
||||||
prisma_client=prisma_client, proxy_logging_obj=proxy_logging_obj
|
prisma_client=prisma_client, proxy_logging_obj=proxy_logging_obj
|
||||||
)
|
)
|
||||||
|
|
||||||
|
await proxy_logging_obj.slack_alerting_instance.model_added_alert(
|
||||||
|
model_name=model_params.model_name,
|
||||||
|
litellm_model_name=_orignal_litellm_model_name,
|
||||||
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=500,
|
status_code=500,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue