From 98c335acd0773e624965f8259cfcf70bbf9fa6fc Mon Sep 17 00:00:00 2001 From: Krish Dholakia Date: Tue, 17 Sep 2024 23:00:04 -0700 Subject: [PATCH] LiteLLM Minor Fixes & Improvements (09/17/2024) (#5742) * fix(proxy_server.py): use default azure credentials to support azure non-client secret kms * fix(langsmith.py): raise error if credentials missing * feat(langsmith.py): support error logging for langsmith + standard logging payload Fixes https://github.com/BerriAI/litellm/issues/5738 * Fix hardcoding of schema in view check (#5749) * fix - deal with case when check view exists returns None (#5740) * Revert "fix - deal with case when check view exists returns None (#5740)" (#5741) This reverts commit 535228159b6e4e6c8687733f1647d7190a277f7f. * test(test_router_debug_logs.py): move to mock response * Fix hardcoding of schema --------- Co-authored-by: Ishaan Jaff Co-authored-by: Krrish Dholakia * fix(proxy_server.py): allow admin to disable ui via `DISABLE_ADMIN_UI` flag * fix(router.py): fix default model name value Fixes https://github.com/BerriAI/litellm/pull/5689/files/55db19a1e4e73ea91a266b00b7412653b778512c#r1763712148 * fix(utils.py): fix unbound variable error * feat(rerank/main.py): add azure ai rerank endpoints Closes https://github.com/BerriAI/litellm/issues/5667 * feat(secret_detection.py): Allow configuring secret detection params Allows admin to control what plugins to run for secret detection. Prevents overzealous secret detection. * docs(secret_detection.md): add secret detection guardrail docs * fix: fix linting errors * fix - deal with case when check view exists returns None (#5740) * Revert "fix - deal with case when check view exists returns None (#5740)" (#5741) This reverts commit 535228159b6e4e6c8687733f1647d7190a277f7f. * Litellm fix router testing (#5748) * test: fix testing - azure changed content policy error logic * test: fix tests to use mock responses * test(test_image_generation.py): handle api instability * test(test_image_generation.py): handle azure api instability * fix(utils.py): fix unbounded variable error * fix(utils.py): fix unbounded variable error * test: refactor test to use mock response * test: mark flaky azure tests * Bump next from 14.1.1 to 14.2.10 in /ui/litellm-dashboard (#5753) Bumps [next](https://github.com/vercel/next.js) from 14.1.1 to 14.2.10. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v14.1.1...v14.2.10) --- updated-dependencies: - dependency-name: next dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * [Fix] o1-mini causes pydantic warnings on `reasoning_tokens` (#5754) * add requester_metadata in standard logging payload * log requester_metadata in metadata * use StandardLoggingPayload for logging * docs StandardLoggingPayload * fix import * include standard logging object in failure * add test for requester metadata * handle completion_tokens_details * add test for completion_tokens_details * [Feat-Proxy-DataDog] Log Redis, Postgres Failure events on DataDog (#5750) * dd - start tracking redis status on dd * add async_service_succes_hook / failure hook in custom logger * add async_service_failure_hook * log service failures on dd * fix import error * add test for redis errors / warning * [Fix] Router/ Proxy - Tag Based routing, raise correct error when no deployments found and tag filtering is on (#5745) * fix tag routing - raise correct error when no model with tag based routing * fix error string from tag based routing * test router tag based routing * raise 401 error when no tags avialable for deploymen * linting fix * [Feat] Log Request metadata on gcs bucket logging (#5743) * add requester_metadata in standard logging payload * log requester_metadata in metadata * use StandardLoggingPayload for logging * docs StandardLoggingPayload * fix import * include standard logging object in failure * add test for requester metadata * fix(litellm_logging.py): fix logging message * fix(rerank_api/main.py): fix linting errors * fix(custom_guardrails.py): maintain backwards compatibility for older guardrails * fix(rerank_api/main.py): fix cost tracking for rerank endpoints --------- Signed-off-by: dependabot[bot] Co-authored-by: steffen-sbt <148480574+steffen-sbt@users.noreply.github.com> Co-authored-by: Ishaan Jaff Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../docs/proxy/guardrails/secret_detection.md | 557 ++++++++++++++++++ docs/my-website/docs/proxy/ui.md | 11 + docs/my-website/img/admin_ui_disabled.png | Bin 0 -> 243913 bytes docs/my-website/sidebars.js | 1 + .../enterprise_hooks/secret_detection.py | 41 +- litellm/cost_calculator.py | 71 +-- litellm/integrations/custom_batch_logger.py | 5 +- litellm/integrations/custom_guardrail.py | 5 +- litellm/integrations/langsmith.py | 335 +++++++---- litellm/litellm_core_utils/litellm_logging.py | 29 +- litellm/llms/azure_ai/README.md | 1 + litellm/llms/azure_ai/rerank/__init__.py | 1 + litellm/llms/azure_ai/rerank/handler.py | 52 ++ .../llms/azure_ai/rerank/transformation.py | 3 + litellm/llms/cohere/rerank.py | 47 +- litellm/proxy/_new_secret_config.yaml | 35 +- litellm/proxy/common_utils/admin_ui_utils.py | 73 +++ litellm/proxy/guardrails/init_guardrails.py | 12 + litellm/proxy/proxy_config.yaml | 8 +- litellm/proxy/proxy_server.py | 19 +- litellm/proxy/utils.py | 8 +- litellm/rerank_api/main.py | 119 +++- litellm/router.py | 2 +- litellm/tests/test_custom_callback_input.py | 31 + litellm/tests/test_guardrails_config.py | 1 + litellm/tests/test_rerank.py | 41 ++ litellm/types/guardrails.py | 3 + litellm/types/utils.py | 5 + pyrightconfig.json | 2 +- 29 files changed, 1261 insertions(+), 257 deletions(-) create mode 100644 docs/my-website/docs/proxy/guardrails/secret_detection.md create mode 100644 docs/my-website/img/admin_ui_disabled.png create mode 100644 litellm/llms/azure_ai/README.md create mode 100644 litellm/llms/azure_ai/rerank/__init__.py create mode 100644 litellm/llms/azure_ai/rerank/handler.py create mode 100644 litellm/llms/azure_ai/rerank/transformation.py diff --git a/docs/my-website/docs/proxy/guardrails/secret_detection.md b/docs/my-website/docs/proxy/guardrails/secret_detection.md new file mode 100644 index 0000000000..a70c35d96a --- /dev/null +++ b/docs/my-website/docs/proxy/guardrails/secret_detection.md @@ -0,0 +1,557 @@ +# ✨ Secret Detection/Redaction (Enterprise-only) +❓ Use this to REDACT API Keys, Secrets sent in requests to an LLM. + +Example if you want to redact the value of `OPENAI_API_KEY` in the following request + +#### Incoming Request + +```json +{ + "messages": [ + { + "role": "user", + "content": "Hey, how's it going, API_KEY = 'sk_1234567890abcdef'", + } + ] +} +``` + +#### Request after Moderation + +```json +{ + "messages": [ + { + "role": "user", + "content": "Hey, how's it going, API_KEY = '[REDACTED]'", + } + ] +} +``` + +**Usage** + +**Step 1** Add this to your config.yaml + +```yaml +guardrails: + - guardrail_name: "my-custom-name" + litellm_params: + guardrail: "hide-secrets" # supported values: "aporia", "lakera", .. + mode: "pre_call" +``` + +**Step 2** Run litellm proxy with `--detailed_debug` to see the server logs + +``` +litellm --config config.yaml --detailed_debug +``` + +**Step 3** Test it with request + +Send this request +```shell +curl -L -X POST 'http://0.0.0.0:4000/v1/chat/completions' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Bearer sk-1234' \ +-d '{ + "model": "fake-claude-endpoint", + "messages": [ + { + "role": "user", + "content": "what is the value of my open ai key? openai_api_key=sk-1234998222" + } + ], + "guardrails": ["my-custom-name"] +}' +``` + + +Expect to see the following warning on your litellm server logs + +```shell +LiteLLM Proxy:WARNING: secret_detection.py:88 - Detected and redacted secrets in message: ['Secret Keyword'] +``` + + +You can also see the raw request sent from litellm to the API Provider with (`--detailed_debug`). +```json +POST Request Sent from LiteLLM: +curl -X POST \ +https://api.groq.com/openai/v1/ \ +-H 'Authorization: Bearer gsk_mySVchjY********************************************' \ +-d { + "model": "llama3-8b-8192", + "messages": [ + { + "role": "user", + "content": "what is the time today, openai_api_key=[REDACTED]" + } + ], + "stream": false, + "extra_body": {} +} +``` + +## Turn on/off per project (API KEY/Team) + +[**See Here**](./quick_start.md#-control-guardrails-per-project-api-key) + +## Control secret detectors + +LiteLLM uses the [`detect-secrets`](https://github.com/Yelp/detect-secrets) library for secret detection. See [all plugins run by default](#default-config-used) + + +### Usage + +Here's how to control which plugins are run per request. This is useful if developers complain about secret detection impacting response quality. + +**1. Set-up config.yaml** + +```yaml +guardrails: + - guardrail_name: "hide-secrets" + litellm_params: + guardrail: "hide-secrets" # supported values: "aporia", "lakera" + mode: "pre_call" + detect_secrets_config: { + "plugins_used": [ + {"name": "SoftlayerDetector"}, + {"name": "StripeDetector"}, + {"name": "NpmDetector"} + ] + } +``` + +**2. Start proxy** + +Run with `--detailed_debug` for more detailed logs. Use in dev only. + +```bash +litellm --config /path/to/config.yaml --detailed_debug +``` + +**3. Test it!** + +```bash +curl -L -X POST 'http://0.0.0.0:4000/v1/chat/completions' \ +-H 'Content-Type: application/json' \ +-H 'Authorization: Bearer sk-1234' \ +-d '{ + "model": "fake-claude-endpoint", + "messages": [ + { + "role": "user", + "content": "what is the value of my open ai key? openai_api_key=sk-1234998222" + } + ], + "guardrails": ["hide-secrets"] +}' +``` + +**Expected Logs** + +Look for this in your logs, to confirm your changes worked as expected. + +``` +No secrets detected on input. +``` + +### Default Config Used + +``` +_default_detect_secrets_config = { + "plugins_used": [ + {"name": "SoftlayerDetector"}, + {"name": "StripeDetector"}, + {"name": "NpmDetector"}, + {"name": "IbmCosHmacDetector"}, + {"name": "DiscordBotTokenDetector"}, + {"name": "BasicAuthDetector"}, + {"name": "AzureStorageKeyDetector"}, + {"name": "ArtifactoryDetector"}, + {"name": "AWSKeyDetector"}, + {"name": "CloudantDetector"}, + {"name": "IbmCloudIamDetector"}, + {"name": "JwtTokenDetector"}, + {"name": "MailchimpDetector"}, + {"name": "SquareOAuthDetector"}, + {"name": "PrivateKeyDetector"}, + {"name": "TwilioKeyDetector"}, + { + "name": "AdafruitKeyDetector", + "path": _custom_plugins_path + "/adafruit.py", + }, + { + "name": "AdobeSecretDetector", + "path": _custom_plugins_path + "/adobe.py", + }, + { + "name": "AgeSecretKeyDetector", + "path": _custom_plugins_path + "/age_secret_key.py", + }, + { + "name": "AirtableApiKeyDetector", + "path": _custom_plugins_path + "/airtable_api_key.py", + }, + { + "name": "AlgoliaApiKeyDetector", + "path": _custom_plugins_path + "/algolia_api_key.py", + }, + { + "name": "AlibabaSecretDetector", + "path": _custom_plugins_path + "/alibaba.py", + }, + { + "name": "AsanaSecretDetector", + "path": _custom_plugins_path + "/asana.py", + }, + { + "name": "AtlassianApiTokenDetector", + "path": _custom_plugins_path + "/atlassian_api_token.py", + }, + { + "name": "AuthressAccessKeyDetector", + "path": _custom_plugins_path + "/authress_access_key.py", + }, + { + "name": "BittrexDetector", + "path": _custom_plugins_path + "/beamer_api_token.py", + }, + { + "name": "BitbucketDetector", + "path": _custom_plugins_path + "/bitbucket.py", + }, + { + "name": "BeamerApiTokenDetector", + "path": _custom_plugins_path + "/bittrex.py", + }, + { + "name": "ClojarsApiTokenDetector", + "path": _custom_plugins_path + "/clojars_api_token.py", + }, + { + "name": "CodecovAccessTokenDetector", + "path": _custom_plugins_path + "/codecov_access_token.py", + }, + { + "name": "CoinbaseAccessTokenDetector", + "path": _custom_plugins_path + "/coinbase_access_token.py", + }, + { + "name": "ConfluentDetector", + "path": _custom_plugins_path + "/confluent.py", + }, + { + "name": "ContentfulApiTokenDetector", + "path": _custom_plugins_path + "/contentful_api_token.py", + }, + { + "name": "DatabricksApiTokenDetector", + "path": _custom_plugins_path + "/databricks_api_token.py", + }, + { + "name": "DatadogAccessTokenDetector", + "path": _custom_plugins_path + "/datadog_access_token.py", + }, + { + "name": "DefinedNetworkingApiTokenDetector", + "path": _custom_plugins_path + "/defined_networking_api_token.py", + }, + { + "name": "DigitaloceanDetector", + "path": _custom_plugins_path + "/digitalocean.py", + }, + { + "name": "DopplerApiTokenDetector", + "path": _custom_plugins_path + "/doppler_api_token.py", + }, + { + "name": "DroneciAccessTokenDetector", + "path": _custom_plugins_path + "/droneci_access_token.py", + }, + { + "name": "DuffelApiTokenDetector", + "path": _custom_plugins_path + "/duffel_api_token.py", + }, + { + "name": "DynatraceApiTokenDetector", + "path": _custom_plugins_path + "/dynatrace_api_token.py", + }, + { + "name": "DiscordDetector", + "path": _custom_plugins_path + "/discord.py", + }, + { + "name": "DropboxDetector", + "path": _custom_plugins_path + "/dropbox.py", + }, + { + "name": "EasyPostDetector", + "path": _custom_plugins_path + "/easypost.py", + }, + { + "name": "EtsyAccessTokenDetector", + "path": _custom_plugins_path + "/etsy_access_token.py", + }, + { + "name": "FacebookAccessTokenDetector", + "path": _custom_plugins_path + "/facebook_access_token.py", + }, + { + "name": "FastlyApiKeyDetector", + "path": _custom_plugins_path + "/fastly_api_token.py", + }, + { + "name": "FinicityDetector", + "path": _custom_plugins_path + "/finicity.py", + }, + { + "name": "FinnhubAccessTokenDetector", + "path": _custom_plugins_path + "/finnhub_access_token.py", + }, + { + "name": "FlickrAccessTokenDetector", + "path": _custom_plugins_path + "/flickr_access_token.py", + }, + { + "name": "FlutterwaveDetector", + "path": _custom_plugins_path + "/flutterwave.py", + }, + { + "name": "FrameIoApiTokenDetector", + "path": _custom_plugins_path + "/frameio_api_token.py", + }, + { + "name": "FreshbooksAccessTokenDetector", + "path": _custom_plugins_path + "/freshbooks_access_token.py", + }, + { + "name": "GCPApiKeyDetector", + "path": _custom_plugins_path + "/gcp_api_key.py", + }, + { + "name": "GitHubTokenCustomDetector", + "path": _custom_plugins_path + "/github_token.py", + }, + { + "name": "GitLabDetector", + "path": _custom_plugins_path + "/gitlab.py", + }, + { + "name": "GitterAccessTokenDetector", + "path": _custom_plugins_path + "/gitter_access_token.py", + }, + { + "name": "GoCardlessApiTokenDetector", + "path": _custom_plugins_path + "/gocardless_api_token.py", + }, + { + "name": "GrafanaDetector", + "path": _custom_plugins_path + "/grafana.py", + }, + { + "name": "HashiCorpTFApiTokenDetector", + "path": _custom_plugins_path + "/hashicorp_tf_api_token.py", + }, + { + "name": "HerokuApiKeyDetector", + "path": _custom_plugins_path + "/heroku_api_key.py", + }, + { + "name": "HubSpotApiTokenDetector", + "path": _custom_plugins_path + "/hubspot_api_key.py", + }, + { + "name": "HuggingFaceDetector", + "path": _custom_plugins_path + "/huggingface.py", + }, + { + "name": "IntercomApiTokenDetector", + "path": _custom_plugins_path + "/intercom_api_key.py", + }, + { + "name": "JFrogDetector", + "path": _custom_plugins_path + "/jfrog.py", + }, + { + "name": "JWTBase64Detector", + "path": _custom_plugins_path + "/jwt.py", + }, + { + "name": "KrakenAccessTokenDetector", + "path": _custom_plugins_path + "/kraken_access_token.py", + }, + { + "name": "KucoinDetector", + "path": _custom_plugins_path + "/kucoin.py", + }, + { + "name": "LaunchdarklyAccessTokenDetector", + "path": _custom_plugins_path + "/launchdarkly_access_token.py", + }, + { + "name": "LinearDetector", + "path": _custom_plugins_path + "/linear.py", + }, + { + "name": "LinkedInDetector", + "path": _custom_plugins_path + "/linkedin.py", + }, + { + "name": "LobDetector", + "path": _custom_plugins_path + "/lob.py", + }, + { + "name": "MailgunDetector", + "path": _custom_plugins_path + "/mailgun.py", + }, + { + "name": "MapBoxApiTokenDetector", + "path": _custom_plugins_path + "/mapbox_api_token.py", + }, + { + "name": "MattermostAccessTokenDetector", + "path": _custom_plugins_path + "/mattermost_access_token.py", + }, + { + "name": "MessageBirdDetector", + "path": _custom_plugins_path + "/messagebird.py", + }, + { + "name": "MicrosoftTeamsWebhookDetector", + "path": _custom_plugins_path + "/microsoft_teams_webhook.py", + }, + { + "name": "NetlifyAccessTokenDetector", + "path": _custom_plugins_path + "/netlify_access_token.py", + }, + { + "name": "NewRelicDetector", + "path": _custom_plugins_path + "/new_relic.py", + }, + { + "name": "NYTimesAccessTokenDetector", + "path": _custom_plugins_path + "/nytimes_access_token.py", + }, + { + "name": "OktaAccessTokenDetector", + "path": _custom_plugins_path + "/okta_access_token.py", + }, + { + "name": "OpenAIApiKeyDetector", + "path": _custom_plugins_path + "/openai_api_key.py", + }, + { + "name": "PlanetScaleDetector", + "path": _custom_plugins_path + "/planetscale.py", + }, + { + "name": "PostmanApiTokenDetector", + "path": _custom_plugins_path + "/postman_api_token.py", + }, + { + "name": "PrefectApiTokenDetector", + "path": _custom_plugins_path + "/prefect_api_token.py", + }, + { + "name": "PulumiApiTokenDetector", + "path": _custom_plugins_path + "/pulumi_api_token.py", + }, + { + "name": "PyPiUploadTokenDetector", + "path": _custom_plugins_path + "/pypi_upload_token.py", + }, + { + "name": "RapidApiAccessTokenDetector", + "path": _custom_plugins_path + "/rapidapi_access_token.py", + }, + { + "name": "ReadmeApiTokenDetector", + "path": _custom_plugins_path + "/readme_api_token.py", + }, + { + "name": "RubygemsApiTokenDetector", + "path": _custom_plugins_path + "/rubygems_api_token.py", + }, + { + "name": "ScalingoApiTokenDetector", + "path": _custom_plugins_path + "/scalingo_api_token.py", + }, + { + "name": "SendbirdDetector", + "path": _custom_plugins_path + "/sendbird.py", + }, + { + "name": "SendGridApiTokenDetector", + "path": _custom_plugins_path + "/sendgrid_api_token.py", + }, + { + "name": "SendinBlueApiTokenDetector", + "path": _custom_plugins_path + "/sendinblue_api_token.py", + }, + { + "name": "SentryAccessTokenDetector", + "path": _custom_plugins_path + "/sentry_access_token.py", + }, + { + "name": "ShippoApiTokenDetector", + "path": _custom_plugins_path + "/shippo_api_token.py", + }, + { + "name": "ShopifyDetector", + "path": _custom_plugins_path + "/shopify.py", + }, + { + "name": "SlackDetector", + "path": _custom_plugins_path + "/slack.py", + }, + { + "name": "SnykApiTokenDetector", + "path": _custom_plugins_path + "/snyk_api_token.py", + }, + { + "name": "SquarespaceAccessTokenDetector", + "path": _custom_plugins_path + "/squarespace_access_token.py", + }, + { + "name": "SumoLogicDetector", + "path": _custom_plugins_path + "/sumologic.py", + }, + { + "name": "TelegramBotApiTokenDetector", + "path": _custom_plugins_path + "/telegram_bot_api_token.py", + }, + { + "name": "TravisCiAccessTokenDetector", + "path": _custom_plugins_path + "/travisci_access_token.py", + }, + { + "name": "TwitchApiTokenDetector", + "path": _custom_plugins_path + "/twitch_api_token.py", + }, + { + "name": "TwitterDetector", + "path": _custom_plugins_path + "/twitter.py", + }, + { + "name": "TypeformApiTokenDetector", + "path": _custom_plugins_path + "/typeform_api_token.py", + }, + { + "name": "VaultDetector", + "path": _custom_plugins_path + "/vault.py", + }, + { + "name": "YandexDetector", + "path": _custom_plugins_path + "/yandex.py", + }, + { + "name": "ZendeskSecretKeyDetector", + "path": _custom_plugins_path + "/zendesk_secret_key.py", + }, + {"name": "Base64HighEntropyString", "limit": 3.0}, + {"name": "HexHighEntropyString", "limit": 3.0}, + ] +} +``` \ No newline at end of file diff --git a/docs/my-website/docs/proxy/ui.md b/docs/my-website/docs/proxy/ui.md index d678d550ca..a6ed9f6dec 100644 --- a/docs/my-website/docs/proxy/ui.md +++ b/docs/my-website/docs/proxy/ui.md @@ -297,3 +297,14 @@ Set your colors to any of the following colors: https://www.tremor.so/docs/layou - Deploy LiteLLM Proxy Server + +## Disable Admin UI + +Set `DISABLE_ADMIN_UI="True"` in your environment to disable the Admin UI. + +Useful, if your security team has additional restrictions on UI usage. + + +**Expected Response** + + \ No newline at end of file diff --git a/docs/my-website/img/admin_ui_disabled.png b/docs/my-website/img/admin_ui_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..da2da2c5536c928af2982e6eef86effa13db4018 GIT binary patch literal 243913 zcmeEuc|4SF`*w*Esbq~%RATJeva3+p$};wS-^sp>=!>#`B}>T?Ae{Y(qv!8 zQe@v^3p*nTy6wTvD z54BF6qGCREiu`ZNv*0)6UZWG>+i6cNmHVekzFk`e|M0WXe{8F+eu@|TOnHj@G|MRp z;vwKm?lkNF{aN|+ol|H2`90aGQ;`m*$p3we2KY|=^Edb+e&%1_&t#qc_tD^YS!Dln zG!=8!ng98joOt9ZNhw4J_;%j?k%8x_Q;fHWU#A~y-TZy(l)|aU4;6L%POnX!Z}7I7 z68eGro%&TK`q85s4`+3++<5%PHuq7)Spwp1sR?^=1B@*=+D|e*wMN=-Fx!} z=au``ei3dbzGy-vS}IWAX}tvd!i!U< z|NFy#AHshl;lHckzpLQ?msLQZ>|M$)uOp98Xm;|W%piY2N*!3bBUC-dCP8_jwwdgK zoLnmx>9ymwV)Key;tM%TlK`67F*-*nQc4fkEpv+Yga9dS9}%d~2Yt6jT2e+yJSLRq zhB>a5XG@gE>u=LDXXb|`NvUz6JpASqZ9Ie>oP-~Qd3P~ioRm-fa}4w2(?z4P-v(D| zuca>zsF74x)x1wbI5co}Wx_BBb6j(xJryYr<)34+Tu&EG5Az#_1ZLzMs8>BAY2h}z zQ|d3fOJ+nObIQUjj2PdMd^z&~YJE00zl;!c`)?U0<@=;v?iZE*xchTLTBA{mJEq^;#Db6m<#9La7#A^v9kU_NzLrrWqkFcyGLR~ zrCub1iaPrz!_CLSe!e9gf9|Ke7(OU>9->hWhP^yCSdg%{Sf~5nbHZ)C<|uChKE7_| zGrDxO!i}P}M8@^X|NgmuJ%i9?9w9b8yR<^jjKaAMT%uSZc16r>kEHpdr)3^y*vVUI z$Xlt2ZW!rELWKR4ymFPq$3zU7JEiOrx(njE9q&#Y-WAS$L$`{N65FB6*M)TTrqg)m zGI;0saE8@k7CZvsB#oIEWX(I5ncH=jB3v|D#WRi|fn%L19HmaA0i@d+=3{ybtjH}I zjNd^(u6|3Ipj;B^SGK2$`Lg2ODt>P6YF{Qp1t&>0#=N1q3_fNjGnbjueGe*Btd`G7 z%2WDR>NW|rFmfr4*|Clf)<4KB_E3YOY)rYjNehtQf}vjx#|3d|af!GfwY_6Vtx-$a zm9!@$PqBF=Mcx3fSEB65>lOJK&EvWyNV#KU_Bup`q%3Qj2O+vb_HUTi5TjV3vFR!e z62>DmPNr>XQ~Oo9@Z-rn*@>kc8L#fmeq%J|rDL^TXX3D1sfXAmwIQVK(`Az9C)Jd! zwZRZ$9SbjkNmnJJHAk1nRvGjwjZ1wZ=8r%3+36d{z9b=sn2VA}1ccX9wJ9wocIR5H z@PP}m|hUXn^H1}Sb|jP z;Z66j1TWqh9(l7Fl2+|$GCINU4mJ%M_;ls5qM*`4ypJ~C>%-krg}QGknxh5AbsIWO z+OR^s9eq9N)(NvwkG{2l(LM|MJ1pNvi;ThXwZ8vPmm|L|WghRxLDqWtnz(`0=c1V) zY5Z#C6^nrP1B4^tB-KueQDe`(t9BXw3!WJVL-}%nTkT9C9of+WbsN3!?v5Iphf*ZJ z7q;qnvt=(@=k7R`K*B^260} zT|gE-FG_ZaBWU(Dw}318wd3-HZ?JiYng3z~KDW7r-aJMAc7%?AN&fTn5^dPHRnt^C zt|&RP7?w7tuIQ?JZbq~5>q`9$Oq<}<%eq5#M{RG=qor|gIxxX1?%qODQE_><6H5_& zQ&zuuU5Xoq#84qu)-~6#@@|dZXgb{3WcUA-V3!U%SdN#tZRlmwYW?Ptq#B;*sURD1 zL?~R(Zc4Z26I6QGuYs(y{vV2)4%a1yH9H%g$w>--moI2!h+!@%k zFV?Af-gIM>#Qc#OM;4nzv+4i4hhar*U2Er)sWXCi$Iq2EYRR;i0&;5WftQ@}YXDwin2zec0GN z92|20P+if(TQl1zFtOh*CLc^vmO0F|V2T+1xc8?c^vr^BNOaJ`UHQA73%xYjr&UO+ zf|Qq+_=G@Mue#OzjM#H+*y=#N*L(89!meaudj7QJeWVlIBw?x^F` zVIvmDqfw+MqgR(1(AycFdz9TdWGcl7A9brezb+`1_E|I`xcvi2VPZ99CiMlGN5aEK z`}y*OWkZY`iZIG#X#Y|DHkFY)iJ`!(6v~|$v|UIo*zmhgdb0tW$$|~EoW3@g-0495 z^GNvFrz5ZQmE6_B&Y*f-43DAP{R34+52bUuxswlf`dy8657lu4!d2-gjnjYO5AQD8 zh{mUw_>4zO%miVz?RrzU-s*fOHP4V2Qun4y?|p=n)Xc(-oDuC5Si^To(hFyPZ-;`D zFH5oYTr6>HEGPWxxl}n5^xe1#D^bCc5(;xUScdZ2p<$!LMn*Ldf)t^{uUZQbF~#?Qar z!boIWXm%&L7?X^WgieK0aN0sFt65wG2mBuL=|!zR@h~mG1YOhb)|?*@&de+cWW(YD zlS)^Q6%JfzQj46j2CLHlDO`id3CE&R(NnV&yrj-ra~mb!HG~mu>+q65*!m|H@|C}e zE8rs9kO{Z^=RERk*x<#NLfW;j++#)W9#`NO(gcTJy&&{|0TJ(EtV-fCxh{kt)0Ek2 z8#Z!l#JTDjd$hM=12V)m_kT6aO-{aA_*F7!!3e>AcVfkD1`T-~f<81D%@6NyO@ums2G}4>wUKL-Q$S$HB4eTwNeAIdcBq7g+A2-_r__(J7HG(9Ip5moUni$ z^p+B@eq`!9<(<-Se6Wf(v;P>LF>W}1k5mk)2G|u%IseuOR@ePEX>Lt;4y^Lu$VVDR zocUHP=Erq2X{A>^2aJe+oC#*j=V>3MbD~q-eSUpTrWHdIPNl)$z0zv%BvwK5F$zv3#Ik{9F2-ECAWT8toiGF! z8p7*J;V?WQuy%j$#xUMN!jLIQGz%kLvB>1Q`DCN%X+PRyyQVXw-pq9&JX!U0z$*8M zfnB?uM26= z%y+S?etaW-e6WGX-0O8e!l+BeBvVMdh=MugzpwJZsA22XSSkIvWaYHkHmym0sk}qH zRq0_t5P*2w+KnHjkY~Ts3^zvv3Edq5%U3ocC?$3Qf=lm7%*x~us@E+WITwnA z3-Q9{u~>ShWDe(i$#NZm_K&$%-J4!~h9%mBy6r*90mRdKFa&Bb$=UGtriW`4XjN9M zwZyC@a+$PDDRhO5x;Gjh_4U;u@77xlisGO)>*KmXujpjzm(WPB^f(?ZvA6^YtNA27 zWPk;?H=e}Q$Se}-FKkAu%_wY+Pc5T|Fm}GxGOgS2;$z8A7ED2H3>|-3s18$GQOJ9= zNX-Y(Dm7o#kd~2J!WPSI5_3Xcqe5Gd(wg3x`@P1m^&Zd`TfBZ-EET7L+r}@qCvFdV zM?qr=)pqQ@lOAaTWzA%oJQl@wNIW;CTK2zAZbf;QHU1Tas)q%S1|Nq6h$e7iDW7i5 zJ!!V0k<}s7;iLO=cdnT0d!OPmaGQ&jm^Q!3ZL3AR&)~nQfWzBE2{n#T&tZ$(XJm3}}6g#=8WeyI{yav|)zGB`lz9OKf z_uUG{UNEJBC*sXG+SrL=3D8QkuV$3(lAM{!$oLUvwA75k7PPF%vuz8#tFk8O`fJtY z7Im53`F@p0QIQ3(e$aVl<5qY_eb^nIdV7l$u78>rvZ83crR@D?L5T$V<{##m0nB|8 z*|L_}*k_IEWdABK7s(M2(Ki`2<+_2xtKRZ6X1riFj7ph4fX4qmo{D5#YFFiK<;~}IV^JU1ArbEiiI7<~Kaoj- zLzp$hji(6ty92`L0iGHWGr8_um1EN;b<)dP0~zg^^1|0Iqy*?Y@$G`dIQ#jOcBg9y~86Pw=A>31a;7Dtw|<1x*gB|vTD})pdZDc z>S3J@6N6a$IF$0f$3HsQ>+r-jXLWu)sT zxn*llX+CXg)KE;sKX;hMZ{wePq;Ic8@u~+)lbjga&VOPq8>uN z8ZZUxpD+bM!%3I4rPJfm57u>>l8;0S3|Uw|Di0*mYOi?7-5(TVAaTrU)S((%=5YKV zS$5Y=Zm@ihYP#iw3xcE;Fpz*LILyh*K`MTGYK4AX?;eS#yqtP1bVRa@o|TcyLDr4U z03~dNKS)1tSik#CyD@tni*u?)hFJu5?EGq*l5}fyHG3dHa;ako4Khw;Mu?*)AC{Qw zkJ5d2ljiv>GNVx!XB9whAcvyK;UjsJWMqw&ty&HG@1N9Zc-VOk#J=eq(m+A3j0|gh z{F(oliB~3;I+xpqg)UW!#PKOBE2!y*=0E2I0`h0>Y;AcS`4Bak^lhWfd=VZr$t*%% zi9*|7RngR{{>!P*Yigr-tGdja1B4*ZH;j7RKL9%5UOq(j{Ifz_LmKi;>D`bhUh*0!C4;}fRO`OHAw8^00Ii9galXp0+{2e~chm`_2k8%TEk6Ay8mCw$ z)kfrWbb}7}l%|J6g|>2wRiQ+_IbJj_=!BwZPmhlViGnJZ`UGeV2-}VY$OYUL=OS^c z)GmdN=$CnA#0@^k`oVXuHq650hc2doMP|GJ)wStWdcE3`#FThl=r!5YY;$2-WUgdY zHsnfPL4MPL$-A-=pMjc=YlFW!tm`g6S`s6Tr#%(waPx06Twed%KuzzzfrP)&82CC{ zQ-An5J^*jtQ!`_jhif?Onz}{m=`0xRV*z}#bhy<*uaXSC>CDfHeLM=TeM>!3BxjCWHjgs7`HR_S6;GemF~qX*;htx?Uc)TIIAL#Q=Gwlh z>GqqoF0S|whKWLkWc*~KCcY-StsKWfhf|xd6vA#bs*lms@8?=AI@lEncn!P2^(sB& z?u1kITc0N{nyt?t%`&071ZsYSEubBb8cNE$dB+)zocoUqrUEw`D{iG2KQE8So1ta+ zeJqr%S?us1idRgSf>W{n2PPWcYvHxN=?}~+XTA81f7_Psc25f$$|d!<9e&sz6rM73 zpAMQZQ85kR6WI(Zko*SNya9jQHODKjPQ|kUbgt&KH|1-FoP6FB`<1mSdc4BU&g^(Q zrJ|D~qybsbmnzJK@tp~#Xdk+5Sn|=J!q%pf&DVH0^ioikQ@ggtyvH^mj|**Fy=lqS(^ zriUEk=`_kfe`?#qSD}VnEAJ8KSeA*47Hr!8D?Z;oa+)LRiMng8TkxvUI8X|Vdah3& zEl5b1jLTE5i>*M*N!Q~>jGWTv1nSq`z){Bs zRmcM2Kdfn?bPAT4MYr+PlMfwpKm9u?r(ds*sLY9^v7I=4>WY7h(olT0ykDwyB9KX( z2Q&wE4?Eh}ozj>oID?bQHd={uUmi9cKUC@goS3+6nX^$Nvp z`0|uSzG#IK&Se+3K%=|Om5&T;y3fR4wc|k58L2n_ zdSxq6EbIc;dIR>`I2yKF@rHlM?8wRN&=851I~yjXLl5JT=f)Ac|RtL z#i6*_PX2Iwt#LDWbFBA9jiEzsQu(6%34Rbv)IjMYW$pxRIW_`46aB$m|Vy7 zS*E7n;cGu$UMi_lkNv~42wmp;exq3^?11xyP}uo7850SOeBT!qR7mPqFm0-DtJUe* zIPDO;RTHc(a~nI#gPIafa*;(sxJ$E}O?;=s1ZsrdN1bZb|Eb9-q)VxuW53PImI;)z_}$pa$17F#A(1A)hW|Ogb5Hg2BtG6_n+5 zfOIGaEPnZOj4mV~A4 zX|AMI`W%0VUma2b3`B2=>L}0W@+#90om?BaSnIo1q6oVl zm>{NQ0tkbii&9Hj&izVE{94BE!pIQw?#@Xpm>+UmZFCe)I6Xe7dNkb2s;Y3kdPWZ8 zke^;o!T88cVhR%{EO)S!GfwPaCpsGX#4*;TA%xWmT|JYkasMNY*j=mPp<2&HTMt=U zhl1Q>$KyDRb46b{aeCELDqXM-cQQBUiYvZ#%WWsb|EdTy?c5!3^J`@dNKVtBI0pA+ zyY)(EG`alcc0EY2X+~`s0V@Rt#o1R;o|(8}JN2&ah-r?qxZ;a>Q^XX8uRF$Oo=p0l zJKU&u+XV`2)uzvZ%k^XPMI^@6N$$V}f($kVS^Ch$_SY)aiCR*d#q%n zq?P|%7pvWPBpiE-<0ozC%LFZ$RNjj(_T1ZsXQ<}_3cB3LZI6&1ZyhhEia9~=mX!=X z(W1@54rU%#Mr7n^(D_dL+wFq9C=rMboYwaLj(k+2rdMm}{P7@9qOm}WUZ(y8~X&qS^H=INLG%5 zRrIe#G1qSnGP5Dmom*QSTw&+z`s(AbexKI$a@0O~so_t$3BItpZ|69{TCDW~YO}Xg za-Sw{009JO)OTTuQ3hU_FX4tS=?3wXn!b{Gj4k}>VboTCd7N~xx?PKF(fEGH@>Xl> zMd{+&syTA+f;1NL5}?O+!;QhhOIj@)Gr11E9HZOKX}(vtTGF!%wij$LJeiCYJm8{q zFKyiIUZE0**&MDo-K-S)%Jr|4za4J#nK*)%>zAq@43pW@pEVZw(C5-0;q7ngz< z%m;;oyV=Atd`fG%M|;_C4bf@4B^4b=>%O1ELHK;N*D!C6a{J!V@76SV6s`T(I`+{! zAFNHI{4b@v4sY^w*uvdR2iWa27OoB1Zv81KnDPv+#1|(}{18rt2>V?G$~_-h+^s*9 zPX+TQln>YRqc~JMd4zu}(v-)YYK0E*&aLU7v|%ebqXZoRHtalhG`(91_BP3paepAC zX{e%|(C|xqEp3y>#y8!BFyU%6C3eqX1MV=Cl7Ru9S+Xi_OE>lUl|2BZS z4LY#(zL+cBqvNXV8FQ{zI2*x0gS&n^lb&dov&iK2L%PiUhsb_qRvUoX9*-Bw_5_A3 zJr*6JI52n?pwE4~*?l|X-IVW4V>0?iqQn{5KiKR-6X?4-|6+*cUezg~(<dWY0-{4#Y3PV?2mwc3O(%b@exuH57c+A#ez>BCGORJ>Wri@j zR`iJ*Oofd7Alx{w**E7{1Q!=OH*GWI1h0ao)VtCcX7z4XDaI=u{t?)RW|L_PH?P{v9|E0D+rLweTtj-j@=KMKQ`>Sfqk(lo+-ar3K1<%-y?bbXjd=^#y5&5u zg7i(zK}O><^`}?*?`)GiZx4NK@+_Ao z{6bP>^;QR~UWxP+Z--nej_71B(vdg& zdicQ9dc~v^oLbxMyNU8O`ONgNk$N4^qT8WFjbE(l)73wPc$Q`;&_Lqw3sUp>&w+I! z@5qZUEpvrt-ouaUbi|vUtd+}tz!OuRs3BG0t_{jnkhtBq4`1e0a(@8ES%_ErD&BvG z?gInn`4c+sGSEis4Ue-p6({fmwm!J(S?)F{ZATu%me+a!UadLez3NSl9;R(DuvxQN z*`YHZ+jPqBl~nn-1~qaS9u5EQz4XTfaGnwjF);uS_ZEPON=F?SJ>`o79GH7wP%q)SO zQM&Eq^cA2K^J_zeMI}-KrH;yMEuOltvxRZhj*Zog>n=%!?4aO|hfxdY7i@UJhc>Ak z5O3U2JW!G1y7?_oLq;x$1pNp-cfb;{7umG0bNfGZt3r1|H9XAmM@QcITlBHot2!t> zSigstV}9v@64`GlZy73lXo}XVf4Aqg7tLR}GmYzp=`Yj0tQ%^>K+^a?qW8sv5IwEq*)(ris#+3}_-Lvy$0 zcEd>ly*aa{&T5WX@e!ST^@EoM=!?}hDYW~9&5%sO(W1PdcCNv$iu}Q|-A?&qgqJMw zJ`|iASul=_j}cYt_ZB}S4kH|m6OP~Fs})d1+5AoWvnQ_3Wawml%hw)_>ftY%JYKSg z#k{;Ibw~Qgi!)TQH=#B$KYoHat$FGn9-;kXj^o5{J~SP`mGMrwT|_r7C;NY&hDV{U z9u|20@}OdaB#+$V0mKtlI#WAd3g(Ms`MB3^vK$Z1CY&jQ)}73X*4(>!@^wmzI744w zezh*?2CPBO(fr7zu_=%`-kN~t`%hDYh+%z6mnxitGQ)Wn@95e1kWChTt}3MqeaD^d zrL_x2DY=S_-L!~gOD2E@wa0S!frBHp%-mIU*YsALuTDnWGZnU^b`GhX#0L4Doc#a9 z=!HI}wWkrXm(6_JqGp?am-{1D@#W|+tWsOgD6v^4$b<+%do_Spq5Dj99mnzS$O<2b zzpkr}5}6qFL!kjT7&dJoDh*hrynUv;M{Q__kRVIhvAR?~^Bn#HdpYUIUcNx7rWy)d zJh$ozyO^}oDBvqpzbh$;%$^2K)_eKVsjy4=x5nr*cOvC>KCV%l?cbj_X!uFvW`FjB z9AR0rbP}wEZZF>d#MClZDwqgc7Nj4oM0&@Dd|$6-TeK!;MzX!??Prn%>SjeG2drlM zVa|qc6E@u$xFz6|5mDr~?_Y=3Ml)2*A{H|OH6ErMTvx~nQ*eIQxSW?J&cRSvBoa;z zHT9og1DL`ddx@d&g0$RAB4QqwXxfV99bO#WIu^?Oa{fQGN2kfOA7*tkex*JCF8c{h$Fa=q!2}|+G+X{!s0tplF2I-d|2&R4Gbny=7xSss1` zy=#rz>#^s%dZ+{4nRWYrD?`9&3v5!B$aY4f9kFGrcv)oW0q-B`{=e_myzso5^$Uw! z%C0L}=@Xjx<*|aVUh;8TePsC=0gf*GBZw=OE-(B4ZT1ziAt%O1QwOki!o-M7#i8Q^ zn?Dtwe?}EynDyv_fzvx5ge@=<+?HC}?TiWJJaeJbOGZg>qVam(lFn_{F#xjV%lGd$ zmF$34Ua)>HPI|>rL;BwjQIytiE81*wPYo11&Aq9Jv;R?+NYx<<2K#o&cQAs^{Rcqf z+-0#eQGC;H)-M+r`<1{Lx*2kEINo|me)7%W$+BM4cGB8XPW%SyY4=r<-~ zcg0;$T6yZ%k(l=oc3IGJj^EALidnEq_a6D`GvSc$466UN?{^|{#sTvo9NkGHG5I~n z7*HYO0CJ_n5gjb!09j*#{%QxfFujpj=4`+5VVxY-uAS_KoJiDzTAD^6=88UeEmyO5 zI0Li`3Y?10gX$7}pfRksl~?6Mw2gHS9<30mmT$m@w{|IH{{bOpa|CN5AU zKpbLb)kHr_1sFw{gH+#FwM+$vP*Cym@zcLgj%QAsnz)YuwCDr08p`^T+`c(-rLf4h z2#z#F4m^R_5K94a7;0n#oHhPLw?f?NVuA|$*Ij@$`CuqnT!Cg^6Nuw@2v<&{0^4To zKM4$wG2%o+-h{8n!`celzHZoF{frIjXkM_QM-U|wJ!&j-4ERVJ;Hh%QdNY;Q`dx|} zoy2DBHSodE=v3ijt}W2DC$}$_KH9ok9B1BVzY1n1&<8iHCozL6tzCG(fbJl&o=3H> z0uyFEzr1%U84nVS-^2Q~q1CRa7ZP<3da4E5! z9|z{+O#bpNPHl&Pq)wJhnvm_pOi?pxVk7GVm{T#60lP)NjJc|-rNb`B@jU*&Ir!Xv8(jDQz$( zpb1q=(X+=pTJUbj?Bl^Om%o&^{CoU)F*X&?`Aq%^AO9<`%`KogDU^&tNa-*rxmmR=y&Wux9778TsI?gF3Ck?*h$W zUJOVOM9u_dWu#guA8(!x!mG8fIo;=0b}6Og5gtEYL0j5oa-03EV)Jm$w5_XsaA1cr@@3<3!i)4 zEJXD%Yi&Ak)1>D+=l8`it9bb22)M(c3te@<&n=Cll@D3ATkpM#{$M5$)-)@7H>_41 zfao>QUiHWwZ^fferdUwuPqSpSI!v3w^1xUVrRS)zZ2Za18nuY&tKSrFL*ZN2KRs?!Jd?zjeuR z##2@naq(Avzd!f>byh}v&@ZmO+L-!rF0Lm1kl`ZJVdF+f*dr^YR@db>ssdl*BxheO zbgNBu&u_M`a(6JdBv`Pwq}ynj!20bPe55Ft!Ni8FF+Y7~+we>rs^LT<6a+|s_lk8V zII|O7WPvT7GA>qO;`2$jUQ_wHqh1mV^tFOI*%aBEZl7mje~Ux8gRp5clNW9ZVC;A~ z6m_>=%@}COl7VFDIdeLKc8onVA20fB^Aa9rRLW((`u)MBbdC#S0i|934JsMHYu~4m zux-=*@P`%o*f2gIu6Z)mO@?!c2rXRBsvr+zv}}vLlVXRNXYk*Ap$EqFXr+eH4z2~J z7Q#AI4DM7+H>^=yd=+BJ?lWeQWR_2R^IAOc07*)(e9n1~CS32}2>rPg*dWGS{Yd`V zG25n}%3Vp>VWmrsS5+M)Afq55KG z2n?k@WGWwqv{b4FP_gv+cj)>{M~C06GyBS()IT^|!Vw2XNyGQJe()XJUtj6;sZUIw zy>uf3-)px^sJ*j58{$XnLIAz~`!xsLaES9TTM?q8FlOssvC#zRciv+jc4EhQ+IJ_m zA}GMUx`I(Il5F=8L#^Du8t{PhZelnB^VBt)Nf22 zJ-@eoK+_eSL@Vu*GCHw%9c@+Bv_DW*A{c1Z4kxM*2G05Sx^`C0PNWV&<1=IYxI7MK z$w`wq+sSKzGl!3U)c)W(S-Saep)YALG8sY)L&2sMp^cL@T;at)MoH&^Nz{_jF^ zo$a3Nn6ACFSvxK=T}`RwPq4K2W`M!nLxaoK;72w7gb_nOUbZK2@}yUH#I|2Ivg)3d zN{Ysc@XWa8*D3Yn9@zBc2Q2H?z<9@&nH66VWEh=?;#HhGjejBBbBwDyIb#pE^u4C7 z5FNto(das6;=Z0AI5=h@iK z3fB0sQODJel($-np&cp1TMxt*`t=QLVe3TR#g)t6v6m2pHyw=?Y+bCD=;x08@ujJA z#tEjoAwg#JN`*YuNc_0v>QQG1>%O^;>Z+ru`%;F)dj54UU*K`T27aumhf~ibAr7 z2Y|~Ruj=bqG4NzoEVK3W{ZN_`lgstwTA=zxiH~Ud=RajaL|PBzkNT8`RQ|^_qV&)xEuJe{^yTC%QkQQ_Eh_ zL^C6*SmNm=7=^8ARg-7CIXn0)`#2Z)EYXHm{j&{XP=4TsH;Qsn^>F3c02@_|Cm~m? zm~6C+P2~~6&#JX2&F{)n#W+5p+Z08a?nw_PnmxUa0;@)b4if#T5+ERnYIfC8-MD`m zMIeal6-?-*>nqxV7Nn?>SA9;kXAMXzmb>6D&S?0NWo}_tTJcW9qO9QIFK&5*+QTv1 zy*4^cFtvK^W2U0TmPu{O&5wPi{TFeCTKMC005EBJ18(mfQNitVNmkV@ekuur#mOJ< zKQU5P_C?&E06m8B$HiIQZAda>X~E6V7AigNV@u#0h8v(&2TE zN35ScCxGNy;Z#zaSIg_MsMWq1w3EXD=9>Vrm86jqe81XouM*6hn4VdT?&+RSmx7lb z^xaD;(Dohw9iNnAHNQRM zH|dH=Q2SFyYtBox6LojhJB0U}|8c6yy=M30n~)D}i5dS8bZa-YL_2P8}e-|!%#WpM!|c_o*w&r=O`BrZcctg+m$3#aU5I_ixE|Rp-x`YksQ7i z?&mDs_%nhPn(@TSI~{2h0d;)}_#mn_G*H~vw5_7&(hk<$Lekoke@w zBv#iYZBuxCqiUg@5SVb*UHP5=1pf?4`a{1_)zS>?JAAB?-Ce4#pYXj2ZE%u0L)}Kg<1{g>@uAu7*8d zzo(T*XFg5fF3_tr-HVn{+M=;`w0qtZ%O}!(L%pc@AtUMYsHJg)wnH4Bn2n>%ef|gL&n-z1{PGZvi!QC36unT7UUzo&SMrwe< zSB$_drIy{ zDn^5GiD|B$ypEACeZ%j2MpWlfJGp|ngC(7Q@{Z04lT~V~eW|Ke(fcFC8H=E&HSlb2 z&Y*A-xU6`%r6Mr}y%C$ax&JaI`*arkL5zG<>XLk=!#ZjdPqh2+$;~jT3kHt&1TdPw z@blENCtLSK<>VRFN6kWlp+2`(?WK>)Zb4Jyn)`hm64k}OS|;@a_G@_Ewdap-v59z) z^-U5%?>6FK+qjV*0P6ep8QF{4FMcX;8wI-5K1qu?q; z#)6`fUIHp}Q|F@OI?~3zNpO_>wqaIWW~PP}4Cn{%F_u2SD3W4e`_9X7r3UD^)`+QM zop=Q{(6ssI>#^({wqAn$erfu^emb53+nqPIaPL?$yZf4D(YXFF@=;XMzNIQg1ad)c z)d0;qu#+m{9enocpnZI_pM31Fc3^J4?7BmE>g0GF7*LYX>`|-wEftThyIv57 z1{k|k4O7L|FLB&&Tj^6W)!Pbi*^7MIc$O|S2SM;GrEiHubo=x^`{P22(7N6p@tSG% z_s#{8<}!xH2YZQcrd*8SMGVLc&2EK!$9%gF9vw9weKE*?q_Dd3o|=vc>$dJ2bP1NX zn)W#xoO!qBtsL)$EzGKRz1G057xnCLD25~W?a66o9504YQ8e_Het&)ild5NO9+`VJpC(kF0zN}uRDpZ)5*BiY#atif zi{&jUep6+XR5#ktbGD&983}gS+m_lc&X@sEwV25y%QFb;7q3r}-ueEZB369jvr&TZ zo~6>JD}*hM=R^Ig;j~Ep_K_}|V|%Mrc(s5`cywjCL5pz>-U?H*-wb=yckl|G!?O47vh$_z1PY%g@I@Xp zBC;8{2`5UL2V7WxQPLNc^O~YIi{>kT^l`y-D@u=^ceLawxhbQ;d65+&)ss7=or$)9ewNrnHZY8(!3J1qMgY*?DNjN7huh5cMPq}7^J=Mo37UQ zq9hrYFCcPxO$r|T2?MId5FL)I__iInwni^%p$nfazO4Al5Jos=^F90`7>kmAq1NIA zRRdivF&U-e(#|#ps3r*B!SsC`b@W(YY2)Q)b*-_eH+qo5gkk9Pi_Q}IXKuS|fJ~p? zbH5YB&SrRb6(es&x8?9+X^g?@Sm6gjj|WlE1iu6!9jH>|7bP83cr!(F)ehF{Ci4NpsHok5rTtATlCH+z4@J ziu`g`{pu)~p=)kWpwyq<8ltr`tQ13u&EVXV4bbn+ZEs&iRJjH{1B38}POsUp=F3!o#+D6NVQ5i6JXs>rs9(IbS}4b60J}SoYo!!w8nXYi za=fsJjL`*UR9oKid@GWfXc>dRz4kzVQ;T`pF;!F^?(uGzVlJMt@RLPI`~=Xv3e}1X z7JJN&pU>BM>k)0W`gLCci4J#9-}imcPmgk|CzKEXZ>3dPAUqHJh}FWQ0)OmE6Ry}3 zL<(_1pKcr2ioB#0x-ceEqXej9Jsb>HtnG4XT?D^jSDtC^hbSeu*9k7J^VI>qCLugL)kDw$s2yJAVf4zCtg?H67OJ6`&4R5 z`<*V25xfq5WytW`z0hZLuhye`K2Zkv_eYz)Z6B$!(K`-0#LP@j3dkX2n4I;M2{SgU z6B<4VN{o2l9J(Ort{77*5v`_W_7DxlS~(^_|EP!$UbDiQ`Jw|xD(Xh!;pRPg{K&Cv z=cIx8p0hT|8(CbrD095@0!@ko5asI(QHl(y=@vl zxDVvffyDPqEg^HPGt8ql@3LBm$jSg^Ccps_&3LgvMMrGTObn$^@tcEm%_Oj8Rl zhQgfh`k^94^RaOJW|7#4{@e^xqC3(s2uSK7i+3wBH2Kc-T(P z+BN{R&S>4*pB;~tdo(0KSF8>FV+ z^g41P`bX0Uy_tTBLF~8CbKAn_9N1*dfm7V9&bnp$Fm~Z!dCPuv7LPAxMFYvxr^=!Pa z25&*}ZJgP#eV5g?KNSE-u6U=s!cor*><15*uYY_CnzB}wSaLBg=q5MDMeA<;)V1G@ z*}ogRah~$Ky&55MsOwNvZEp?aO6I|2YGR+vtR5<*R~);pMC`U~5VzJxtdD7XLPA4~A$f$ZL7A_0AJr1^7O8~#J2hfmwTizw`Y zY^=Lh$>veL%XR9vSgF5yHRs$$dv~eL0MYlb<`2B9sl2*jH*!LgpoR`=(tpm$JpAAJ z1^6t#YB|bk`g^P~XeV#%70xWfR*Lkb3nmrf60e#|{(U~lS@fq$)d==YpW5auAmmiA z)XUKDu@zS$RoBNG)HDM-#4(sNvne%O6(8%U)Pd9uk*EOMV0D3ogeb$Sv4!eF4RWv2 z`+YgjJtV$FndJ}c_Lv~eqcuDEG~kdc?O_Ba*NKVDZ#2W;{c}R(SBWIfKYgKLX1Bh# z5IbOrjC?@iu~{vtcQsoV1e)jgjmT>QK@T4g{q_YfzI?_W&YZ{*>uGt#H>o1zi*9>g zX6<)L`0Y6qc-PLh0UeC(^e5c`;FUGVHT)^Hb?yP2$21bKXsS-opV(W;`q}OV6o1+n z1zx=Qokf*#u`%pa{*HA$P16+P*V6-3LvYw?Vbu3iYUezy@R*4x6oa ze9(d7RtQbjl4Cg0y5jRILB$qu%rIojSyt;!5EjaEH9|47SkK|>ttcRNzxE%91J~L7 zgqwoT5tXvu^>Z9S?!Dgcs53Wv?0HoGfEx4uYQEDEp&L8rWK?QMKK9mcqyAz!F1$Zr zy6R2Z97RUZ_E)|z{Pr@9o8JSuq9L5(IX0cbp!zQ}z(PD>lk#nKk@^vYIe7sZdMZ?$ z%yUr#Bmb9uj&Oqk!e%2<{^(~Y&F__>(r>0a*-SP-G4K)xo`q1{T{e~`U{*NDSRn3v z@MZND{S7pN(l}cwcs`HFk_w0%|=;wCxz(2?0;1j|k!~=Bh{p zwlnAzi`EtvorA6vtLK8vHp4726M50y21J8K$58On$H)%jl-l3;rkLdNKhzlWo8*R8 zJ%(r%%jZhBg_EiuZQ%a$uIET#S%$6p7a2@y+8AQft0~(U1Mq@(t%j4v#P6}|4g$EM zSG95!fPl{cq^s|Lt9|Hih6{;*ah)bhymh%{5^r5J+0f-~9P;}mM=ud1@IgaZb)8js(|~YjNDDCQ&RZFH|%q>|jb<8_vRj2g(j;16K8zs$WV!%!;%8 z!S)_IqTkfX;jY*f)XX=~Tdb*?9cX#7^MpuoqyWLY8?&eUd&?R)6X`0MFu|o&BZg-J zC%}75MulDWu;(5kAF)4J4*NsliHTCEW=4!Kgc_oa7Bg1#8fPX(zNc%>pZY)SePvXZ zYqzc-Dkz|WgeZbi(%nd?l(ckrmqSaA(_)($QJMw&d)?O+Fp_ls9aK+JhH2Hq!VnGGcQfX;g)!b-_)`W{Ve zT(FL<=P|viH~LB&#Z@(M3%G>kKm5WDDGDmA9Uy>M*by}j$_tw2BtE?7^6~of3Pv6R zH`Skgw8tOK%buJ&DO}}R9IppGJB6ht3eUz8v~1qrnQ3HaiN22p&$W>)OFyL}?bMaK z7`oKCB^I?SRLeT$AAbmpCeyke!)`M}B3+KlBySA)M$qM9ef*;#Wmx8CFBtHh7{cJG1q9t3&;$uiQme<)Ca+C5k!G1qPa?nHn%UQh5E0QOUUAXc z(k$ER>8jc?Q>-{Vj)vo%l3oOC?9iQp@^Jj!8H&WBih+BG5NL+8<^e<)%N}r^>*=`h z@d4Q8l}zoaT6pFI!g1?3p9n!+uE$a`lFlv+7^SUa?>BjpH;o19)n*3>Js|ipg8` z!dE|LfpKs$t|gZT4Z$O=B=5r(+`-zr!>y?dZD$959yI+-K*476TS*_cD>UH)!?XKd zki?xFzbJV%yr>bq(w!1`BMJ$K=76@9&^npc-}pl26qo;QtpHNe)aN6WN8XrMH=xol zwjK52RO2X$haK?ua--NyP@tO?Eh>8(HPH5v8ITfEWVKf(C}}>i6eb9>d>0~Vx?+^Z^fw>|cOaw? zvq6W-n*4Y6jD@AQug{7Rtt@hG-91CP%c+*Kac1Z2z~6B;V-lS_1oH7JM4Zs!7&v?mxGApc#UkNEUv^4? zm1mZ6yq%Mf;VoElQ*A``|UPADOHY{%-W50bjqb zdjopax#>k9$1Nuj9{O_goJRbOop|AOAw)$0-z*-K8*H zMgB!h98;^aa)*>GVTUkQrE)fZ$4L9fU(A9Wb)>9M(bVzf`jT7 z(2>Uq^4Rx!p&+v)*C8c6e`~vsG$Ne@0*ZWp`boy>4u%4ivup^@Dp}mX^o<$ajh(Ii z#+5D3i(3O{{*H{wwv0({$9(F>!kM8}??%t2(aP=7I`M~1C-3{jV^6^)KaKz#4&{in zu5Ere{34_9P69B&dQBV`UC`sG8Fvw1EQA5L*9szPgXU8_K#1?~lIVLd9F@i3I+6Pb zoSlLSK&g-r3afL7`Pz2#ull8fv81a9a_$9&2InAws+K7CbHI8MS=PO(nz@~#)V3c{~(e8IK8^^uAW>uM|8i;of3 zoz!dJXic~ID8}laNLBZ6x{T-mhwTv3RlO=fi1&Y2;3#Vuke8HoJv;=!Vx;bacc-EzUK|%>BMeC^)g7o| z!rsy**bJz5s-6@3UbPPiM&#MgNEe(36o|_a3W-bj zTA2QRc96l|QdT>;OCZC>$!MRp7I0+w&)4W z3y)7={o=wAG9YlzD@Vh8Wfso?G$8< z@ej7&Kf}VRR4w#Inz3iIqf7s}=)3IeDkp?wWkmGa zVi(%mAVV~xhPTg-5csP=*V?4{+5qP=GGGHFam@4Q;p_f#HU9N~gGezO*W!GHjW|fn zG7~WUF$HuKj~X0~w!$RW-1!E{WqL~|k|2aLYpG@)8E-H3S7uv-l@CgNWzQMaYg65fVFrxpQ&p?hmm%;N;Y=$mmd;;9PuWwwx7%UsQ9= z43i-LVRm6y7f5srAa$p8e0Pc@meu=vAWO|uTbWkxL&?5He53~w)8UKe2S!$7oJIP} zd;2AwgFrQzx>WI0C6LV0WD58)-9RO`-~nIG^qFqZ=nj9D)b@$F_$uP@)z(<#g_r!H zO3sUH%D;t3ezN=!Sqni?an{M3ORsHy9)m=Qk(99K`tP@nA*SiqX3ufXpKlVznIhH) zmRGYM8!q2f`_xZjv)#*x?OytXZ+FaCo8t`}*?731OFlH-3xxNcv;hJx`58B;Y(dnz zhG|lLD*T=)zQP4kHcSX`)p4N0msu2`{iZHZdi9zD=%tC(E!b?t29$}B+vP^7Dy`B$ zekCxZ;{ddoy+l+KZ&TLZahLysH*{KP%3*P%J67RQ+rn*7eBZl%IWGcbicl~zY=ez= z@l%R3@R_U z(yA;BLh5a*Zh^d}3oh+xoAC_w0gj{NgALcnI)q$k1As$qODxpv+EWOFjM>GFX=%^% z-ZH}0^($x(o_Ho-xy5s8Y)+hRqYFWNq^}e(e;M`>Su1TJz?efQIyCA8pQHT;I2P9H zH(0(DeQ~W&$$a$WcgIaMl@QZ(zGGtF+O;WyOMSgM1q-*+MDKjd<)2gI4osq-fX8p= zP$XUpHWpFrdJ|!OoG1@Nc&#qh zO4L38WM2|53BazXeKytk9Y6pRL>|z5{Oz~L@Udtw!8gwew2jfqJoiOg`4|It1 zw#c0KzAJJlbRqEyGrE;{AoG+BG-VxntV9rG8O4W>WBmrQfoCoKM&_3tp=2i6q{R@k zlx48ae0}O92DS-dEL1Ap3kmkgsGDEbrRkDPkQ)z|Bxx26itULTxm04SNcU~)t>1-X zxYbYdd|;i07SrcsiPG~pFZCTh5RorFfGylh)QTu_bk^(UrJisl#mYb9)SV(2LF)J^ z)AcXF2#LpDbuJH$5OlbVkDTwp<>#j(WI3eM_nE2UTZ^L9^=ci8BjmYm-ZQqo_7hkv zh5XP>O!$oY5D4PQf(K=YdY^b?hPPK}D;7%mf(JUz?y=xjEz{u2A_wZH%J49wxUxc2 zSPYcl#Hc3l(%#VdCf9a@OwcP7Wcktb=pY|}!O3tiW7ti((_>zq6Zzc@;fq0|C?Ve! zBM#^LYI8V?!O}Tw^di-|*ho^^9ejRjGVy8>E+lET5D3sX2FfUV+f_%|i>xmvk>=YF zkChgi59|WRw!H%VBL;@9INrx3`kw41gS4)I+1U*`&jh9iHknr9M}1dU6V0;FNwQhh zh}6F}7dTeV7@wm-O4V%#F=73t3~;gTv_aWQK$&*ac9k?9Sl}Om02oMfZW~3?!8XGm z@#zBih1n-M8VgKkQvi-@cVc)$KbIzC7R){J@k^n#9pYsj^7+*T&71|O7&#$jcA6^+ zrxF&eaPoQJW7B8D8zHXm}XxZna z`}Ot{b=1HywC3UvXNHO}weW4H6}2aJ;@wF0n64MZB_DFj<@I&labf*%;g8om)|B{I z8_(citwTPREp>DNH2Gnsx}|iv_;W#f0rv1kC*BBuCv%kx-|i+~M>N z<(8C9o|Zh>X~>UcQJ}bDdfsV6H*i5ih4AB3LU~f6AMGK_gY~eFOpA+Vpq_e&+%^k1 z9K&*PMLX2*p~OC)=^y8uk<0TDC@!}cYlb|;Q(`dD(CJSi(;Ep+KNis3X6{g!2=0hg z*K^AXtG;m?%kb^QL^VZF1?e^KA9Gm|40!%YKNJFgz~#lBAsK2{TU56}C$cXc=tV?K zaBpQOvgnRLaP^Cy$W8uY%YU+rEGP3rsj}FJkn>Y6?bZ%is*^1b9zuk1xnxa;SztAo zNxud;xceNJ6l2`e_*Sw4+0h#AI=ia#EH1YD0%l#Lu9_>cIpje&GIAi!$olM#lrXtNZ3H9Ryl;%rbD5bp4-M!yH0XE{d!!5|{0*9V~dMRapX0LJd zoA$!jR6l$UeL#)6ffJRmd;|xaV<0>4e9HFqaC^Y!Y0BX$LaQ+^nsPr!?BHn?>Tehh zmfa3wc?~J0qb&t@4Ikg_zs*>Y9Ia0oD?d7e@rvGO1x$ZZ>`a2N(=~`+$WG%^vN~I8 z6OCu#C&ZL8Y==f*N<#X~s}GwHyIEDw1rmE?71@B;i~g$1(i~uma&sT{(woh_6UD1d zSgwr1-v26@u==KuO|QQuQz@^Io`EmU{JLOtG@yq3W=U4++qGy6qTtTGNt7eb87b17 zLdY__2-2F$COD2BWo1cE7**2P-K4zkills(K||`v8kGcndY=tGCQEBCP=*WQ=k%QD zIIHV?gW3f|5iZm(;w4Y6Bk-OUmv*!lF~RMXyV$bd8G;a(kp~3SiB*T2oeAla$=-A4 z^w}6%5^Tz(=lIHnoXWkv4Za2o?Kt@k6eQiNXGR|uAJ3X4*p3*nzUu-vi;NG#CC^rb zaW3YwL@LG!$A|Gqk4rx)eDPSDsRy|!4Vh7n>~gR1&X6bHJiI|h4vzSz9glWK7eiF% zh2&ZusZqlBml#2Hd59lKu0*(?4a2}0zw#l#v1~|<6>fINE6fpKPC8UcMdXTJP!iYM zWVkf4r_~k*+%>Y9a^KiN#o5m@>H7v+MFd3wNzv0t-U2Etein_8--TGHSyBtI>aH7T zs9|!jz9^f^*_SErO-R1@MSc?PwJ13Il4Yz`7UZ8%>lM~*^3}RdIEb7tnD{7wlsVDb zQ27bAcrYrTZ6G z=<*4hy!oaDM1U7Vkk(lC-EvjDp(P31^xk75K%lq@G=eVUSb754C184GOkVrdU+NgX ztEWle9Lq22WktEqC zH@TT@JF54gjUfLVjSB4?d(;M3k-se`AzuxEA`x{ikod_wl^)(>m@GamR;`mi!v~RG zd(D^_27f4}d8c9t(Y)n@zpwR4XGJ{-#W*+2rz0OH2nV!V)5e()Wc45!ViB;Zqa}jCpW!}6a%M_lY%uTz1UT@`z47K>|*CKhd z3G3yvLA!hrN8Ls~u2Ux5<$9^Pb=1Jr#^mqLl~$p#KadNk(z zuGi;IDd`}MRsT!!g2tzw`maSl&H8dbd5xzXmA;&J;3C*}J*$3julFn;o~G^N+Rbd& z4RDjQxl%Ii@AUDk;{4h2Tq;JLF^A+kW@-=2KU%$JijSO_hOS```Mhc`&+1XTvbT!9 zmaR?P+z(0wcdW9kYR+qnF}zhh$$wrGBdN*~zf*Q(2Vqc}Jp1Wi_}KXsZvnHDltUhs>{LCS-4MZn;lA2t;FV?cItJUyCN6HEoI8-=!r908<4Q~l7NSo8y zU3%VXMf&@l)N!$NYrAti#pE3|A?-L@`wM9`8?}RowOEsn)G`ZSJE)CmH96Z8rFXm9 z)1+y;+jFGVy4#ER`FZF@i6h)1bmJ2fBQiRv9O-!7On!XL4hs4-_R1)-jYGnFEB4J? z{kN(9XQ<-o{_*;ZbF2BBdlvV&cG`q4SvKEqM4S^=Dwg33B$il%E(HUa=@riD zmaL3KNPm@3jvtYc$3cKDPvlwGb?oLQx4dPIb%}o;fh5PQwC5R+;?K5_QiAHH<(|iO zza$}E$Uq3qND}ES`z+OYNb88%2DX=il5?tRBS$D}m$_JME2}}g90#fRxGZnd%J<%2 zB0K2{4e8EIt^+5d$Q-zT1jk<~#eeaXlT&-d^0Mu04w+^1+R)esi*mT*Z6TncaBvd*Io_J@7OKr6$Oo?^6L3o)nNZSJCq|)K4^Xgd!CuLHAP`mRb{;TeLq1 zh8TmNTZNVfZSEij5S`MtdouvT+-1z~sHm`{FLJh@&2z6EiP*inrSC;q_2?6z4Bs_)A?R7IuM6`lcz8;ZqH8*Xq_A6VY) z&~1`3Dw-VwdQ?5X@!YhHMf#`M#HCJ~lWWiCdk|80Iq;CFj~d(QMq_Iml=P1iW)IEQ z-OIdQIFK+odv~1hbz} z)b(D`Tk4fs$>>tRbaV4|qoGgwYI-w{9*6sAfSNxkGbiHEY2q9W(MknL`a8DgZ;PjC z<)7u2%|hXwKsBO9r}j3lj4QG|bozEVw-P-M@603PdCMrZYjNN*l3P|<^w>}tzvDss zD&0`D1xXrXr)2DDeZk(jk*r^_RE%kzV#(_dFDPO?xOgCzKPPt`Qfmalr&+oQ-0pL^1?urv7D#2}Q?A&^$YS&p`JZQ}M6cEZ3$sX>C z#eFPz$JRP)w=7TrAlmsn?<&la+JPdD_3CGultpjd*UPTT=y%Cm?r%lOR*ibhbyV0*QjSzIK6p#jI-Fj8hqzAKj5O@*3SKKu$OKxjMO8^!q9b?)gv`KH zjt$}3q@&7}gKGxf6reRGHau->)C@YW0wFky>+{QqO)BPe(;&3w0QQpgI~9EyGG)}6 z8!t!Z*rtHTGP9&UlzUa%_x)X&M@mf(Q*x#vajJt-q-o>cC%P@fy=;}T99pZeso|2U z&+B+HVc!%~b08kd*~R8p3sn|D_awqAP}*Q#2iU~M_>{Z$+Lp#m`+>}&O`7133?3`9 z^}^oCY!3kN`OPU7MPX4VECl(iuc43m?w`VK+f0W4&~zjth<#*))2(LS;m_NDcOuyR zhit!-^*J7#=N9j{Y(3r-PFbWWY9Ay0Ia-A&EejpvVD4Aq4z}lW#XXt%TpTC+3lE>V zVV9I25;rWy5dC~(!RI!0piRB#pg$7aD|7ClbYq8YSRas>oeL;@=$us9B3b(Dv?lMJJo#O+-&Zeiz)TE}BMzoU! zR)X4MAZ}GINm$=YVBiU z-t0}XtCOdrt-uRNrs{4JB)$>01%mr0ZhJ*ig~Yw=^Z#!z0KR6aZ?(CfqS2C}BF8oS zP>OUTe3u&hs0T}c=*3~vx02GQObqDlIEABPX-?E^^$0GmIDYs{WL|KqUzR8CQWo!( zTU0nFtr)F7^y7HgHoWW zV%lzUJ$-p-E2=Mjn9I`pM+-&tM2Pn7NQ4rzE}*S#V12MGPOSO93z~c{73ZW1+5&{n zOx^iid5wPh*kmx#AkAlnuH8OG*7RQf`OerkPdre~=Ub%f?aVjUS7Tj@JsEEG1c$JA z-9Ncp>>T+mE9Aa7J?|^`E2gS`GbW*=*mrTHz9dfDvG(7!sMZXw3(q1pp*f`VeeXP? z*%m}L%&>ZZ-1KWe!ICB&n8`7}?yo{<@c_I{8P^;YtVV4&$I`Q;jr0s82z%76K8A7wWFOnCMfBWq*a5T8U zv7sb*8huMyQ6@f(#w4pzNiVp^y@VQ@Hn`kU>v9&2J7f?FPaCLXwcay9QTQ^f^bk_h>yjOEmi*DFOJFT#)&mXY zs@r1>DTw*YrceyHVl_W0F|D13etvto5UOI3W3UDaJ{mGJ8WYfmO<<&r-z-503PyRG z#b~c6RWHZ)z^X}K7HL_-Y&YD-Ey+a6}3Tl;L&?bO?^|4+%zX+a(zIz zvuC}@_?fx7MM1~&y_JFulFmjMFe1n*>{&B4kFdCS0ZAuYAc`Fnx= zz@1fhmk=~GeSnRP=_N0^QTY^aJET5kW*k5IW=kmHIJ3NoUTCyk)*FObN49av}dBZfw`Tq4=8UO_Tz52 zqfGtSp|FzwqU!_TcZ93p!0-Myj)kFY5XG=l0`4b;09 z7jJu_4*4+}xm@r0*$)&?j@KUuWG68ub79=cx!p4@>6i9Xh3~g_`7dsRzD2BuXGs}i z1}tuJ_L1RE;{5aq$n`l+GDy3>ma?aSFGc_Rt@jJKXPXd1U#(kYBS+}&pq9j2#S`vC zPnr}ee6Dp1MgQX0fAOXMy*1*CkMpC<>e%i1JGGUD$SM8H7%lgdbsY>EKV|snIdEZ} z`Ryh5%hi>_{_7oQzg!+};U`r}^@!z^_WR{;{?8HnzrMKd-1Sdizq;Swnv)td;1dds z)%ZPB{mZwa3KC5s!%YHTOG+6Tg=nvd2EBH|0%@_-{Ync>H+oqkHn#(|^Zw`1_?&#KFMAWqc<^`43hh zT--p#cde!&@!X?jnVb%DrV`6tuQ+LfKV1of6F8aez8_3lC2m}c=}i-gyFyQftD7BV z{!{4u$*KRa@qe|{0yLjGi}x3k`~_`}B?BI(vC1u{oGZLG^x~05i`u;xq<_3jo|x>l zT>38EB6~+W!~0Sf*|tw%A8j?dlTs7^@q3}8AG6jkr0m)HOY9hQ)SpuO?!;Jp?Y-=) zUoceu{<$G%KNSyy&RDHlqS@}lAZ>kjwPe8QmIWP$Q@>i0|M2Fbl2|K!220fRg7-+1 z|G^2p@KOA2J4!X*@*#=yS>^T%JoNill85q{ydNiV0>+UD0CeQ*HN??=Z{|wE-~0aWd67@!>2Vy^klI3i>}6oqlM-a+vmHoN=|pfUCRbK-VwLFI#7SvAg!`**|_i%06=F8YcM6 zB#ki!WzC+#^`e*m`R4Xrtbee-KFYm~G2QBQJk!UBf1vxeFJ^ta*W(%MKM3LPZhY!2 z+h6pOG*p?*;`4bjcr9pcaDDzfdCVUNFt(dmiCvnx;cVUBcONXf;`vj3z8;42=kZsx z<=;J6}CXJ#JGoF8-{4B!mgR;05&dERDUy9rq zbdtO(&TqvY)qWQ9GZYP$`SUe6ffXe7Hthbtr$YbR@F#i>mR>u|0ONoAf`1DiZ*$LH zthp7(h+D=ewqspakNI5cPh$@*rLT7sqvP_m{LgV|?@G@GJpBh>gwzm;nug~i*Z#pZ znNRunu_4i=fAZ|unjzxyHD9|q{tx!NiWr1khMNSZ|3R#L3TN%X(_4yVzejEU?NR;D zkGW4yVEU^nQse&lHhYUr#g>15lT(c%Go1SO{rO*R#Z7_-4;}8f-NJod?>%g=^eF%s zmRE6K68`zAxd4Qx$-}Ka-Cn)D0!VEtA+@Qvc2{3GD4Cgt8uyRiunhbC*AdTgo}WUD ziOF@NC7Aw=Cjk9WejxoHs_9?ETU;g#{VFJFu25#6X|s~(Dp)BL7sqM;JhbJ$cpPzO zRVMhU_~q?_(=F-y?{EG2UO9nz3MmUu5X=9AjKc3W>`^hdfv^AI5h*@~eRj%V?$RGW z3`)3@;5A5UjY@?prCAKi?*)S76E4PMd!IeX{-Q+xxPw zl2`PM9knadm6zWCq1pP2^(4i`{1_yj%t?kzrC9oVp6D+>A6Edburm!mu^ZcJD3NJ2*zGcHa#rWrs=WQw>+;n|1C-(motAY#Y zE(AVO-zP+W{&)=faNuHJqIrDyTbTUUPwxhtq#)6E|De`jTSDUAHi76riCY&Ta7d&Y z{DZoL)CpdS?~X(H^B?RBY&d)W|JeTLqxk=i?SBev|GoMCUp%&_HQzp9I{3EJ^4lBZ z*YUy#>$FynP1q@1<7XIxe;y)FU@^fFq(A-N%l9YWpaKGO=_wrIfAU&N1F6eP{FuP) zDXs->tp|&)UvesNwcbyGQNco1jNXdOB`{)gd378rjLu~pR7ekYgLX(aC`51r60wqf zj@`C^a5L`|T&_p^4V`)7E`Z>K7n#2327NzAIzO}!xhiYO%R%MNB)#jRDP`)(Sj&$^ zE3w=yr<2*eDtn{*BzSz4s02N}vatFBg?JpX*mX;CU9$sH12@cs(51SHcd4WiZRH3; z^aRj8@xG=YBeR;KsEC068%?xH^JhEFRo@Lfao7H=kqW zg0AIyX;z->dt{EvIJ^mA2{N;<8+iGK5~0_0X>*JB-GB}LYEhr-c7wWm(?Az^+)y|I zX**}y?zKLc(*@ItBmDbl4>u-+q0I@5#03X3=dG_13i05^(+oZ(rxwtwCA`4y)O&c% zS?E)AJ|_i?h0A0)LfrTxQxN6BRp%k4lk(Xjx}2$e(8 zR5o9`?KqGoux}xAW-U2E#urT;96zgp=!|lzC$Cu;Z(bbrEYz@^%Gu|MLtH|^+Y&?l zLT>0=sW_72P{p0==U4cYw>Z(Cw!p>EGDyy|E?$2II5)4{3}+id9C0|N9oopjUjSHf z=E*Rui#q-kiB6v^D9`eg?x*CWOWSR)#PSIaPoYj>Zqs|r(TAPJR#8YL89`khRR5`i zev2S?F$eK;fxX#{=aFqhXu@2%p=95B7FVVeYMCd0+E za$7g&nn7K|h;j*Rz&hB@S^y2|^h4IrXT)OBKs^?czhbu?l|O?aS1JO!Iy?_~EgXvh z88Uo?LGyI{fzR+{{B4_n3pLQoC+i(#rbHi02H)GLIszAATWpe!(5E}q6IP7ntz_0e z#J0EHcst4~zU6ORFQRm}N4GoO7oM2k0@jcGgy%3FVk{-Nc+w+fH_s!qv1fCpLC5o2 z1loC>iea3=C%+n`FQ0nJ@mk{0@4aWmyv%Sk6+pDo5=NGO^(7WefS4scsxuwxIiTQh zVbuG4`6?14mQM=qv~yjHCeG>G?rf{6V4sUPIMmwmj<@b_d$U6LR3iQ}+XYeTxJFJ1c}NYuyNIH69_Bl7dGo#m{2sRGkZf35cbwMLs{8VGdsIP{dS6xNMV#K^o)<^vIm~$++{Ll6ce2c zb{@Rh2s^kFQCLq0Rk3~+fOAQ<9EsJ`*t43gIE(NG5PKjAvgQc8Y?`3@uFA$k++Z%x z22ggH0Wtr){Z3cq(-T=@_m*Q?#pTj7FI$>MW((k;dN_N9EPDtJU_|lt{s%eI32+{G z>I~ApA+9=cAncn$#7d*K6k2l(_vGB>sh9#h}@Rd5$S;p3B`HW{YtU zxVKi&eFIMEPLf3bZY`M($@6RO77-`zN!=(o4z|3Es%A#jDG5rUG zYsSqIXm%ck@5Z2~ZpH1k>0KqPR^VpwPk^U4=Z*RPysta^$gb+2lun1+t7PyA> zcAl^JSJcrCe>pJ|=1*){*~b|XMxWh;BNeMb7zcz2cC?Wom*!4MMT|c}eZwwtN7r4M z*VK+gcoy9EeSE-(Vn_97M#N_S`a79e88TyjVr8YWDqK~clZ(B+4{!9sM;S_5gWT6+AiXpM*Dn!j?WTLVs$1CTQWi5O1raam z)T9gBV#!sTA>G$4k}*#D3g9?p^il`QtrUQ;>bXR-|B;1-aaqa)#NHSo{acGbl0^TOsRqTruv2Ju&+9s2BcJKkNR<68MMKT|}00cP-nE zb9=WG(L-{O0Bq%4i)j&mEIj`poK6pWNXCF~6vFiAfent=|Agr~7KD{|6Y<}F9&h~Yf+K0Ry^~>|sc8U06<*{jD=U2# z9i*`Qo|ZTiM5`3Ks6}AZson6TOXKjWC5dOki0QLs)lq;e@MTybVQe4PJH##QoHS#k zKUgx*uITC8BIlvs1I0uaZ*ij>INjX*gQIDv=1DMWN;s@JCx=F~ck5-_4gvJpQY-#o z@_3`}frh}Riz~ouGUoz1c?@EAE@^>(hECgxgbopZyzEAFjWl22$rDo`oGIQzDZ(PI z(A|V(2{*NAI;x@);c`9mVd;H~7+&@`P-YSqRSu*Iew4suLXx#h7%1gSGR)EN__YY8 zXcci(qy;ND^F7?fEbc~Fonx+0e8sdAg~;=&jznXgGlUYH9UR%AdiPg)^c<7wI;-l} zcPZwvmf3M#kYL(ue~)aXM90ceNLk{h@%zUvI7Z3vp1EGMG7FQdg0UznJ{5+3-xkZX zzreO_`9SXsa@*4;K4_+1UOBM#oGHm3UWm5n$HUqVHAkTG4_10G;t zarwx<#o`GSmmL9D#m2m~<n)BAzw(+KvVy8=(r}vHZOKWtB>nx>5l-@?2nbwMS1L;hCvZ6-+-s zx2i3w*NhYZ8v)AL+xWg3BAzu1&nin<@jih&jKao=j<{DhyxxnEncurp*+l+YI2k{9 zp{24j*rlugQI_^ShHOY++30JF^Lhu_cOWsl^4l11vANzCBFar*f-;)(?j?Lc_E&U|VP*vxPIgjOAMn)spm0g-!p3$&0mZlzP4NfZv zw$jS3Xxz-Plk&hU+I8nWG9O>TOz^&OfsnR~itVP@9WRWLjcjd*y|&vK^xDFkUn{#t zcHNp$&b(UNb^t|~YG zb~e!TITs!)l)=wqe0txnSFsGZ=sJ77%*7}pCN_!vVehrAdHX3M^WF!~)BY7pQX7Bk z8(rId>(a8ko?i^+ROi6m|-dj_EJj>Fh@_kOVxWsnrWDd zjd1;+VR?95?g4j$nV7&CXU?6)%PRq^Amq0CLUm=~@=CgF&4nd=47ADgoGjCYrKh4q zTVdi~MtN$F&|+u3-f!o40p&b%_ACCsKI9B`P^MeKwYSm)fU{mikl~A)l!D#QUpAW}+F5bApvt21J z1j=PP!+K-eix=7c`!jIX;AFN(%iN0PdW8kltxr&Km+X&JH*(*=@<8;{wAu!tW6y`h zT4AzC()&FqmnOt+j_YL&n}I36^wsMIvE2dn7nYncx7*#1aKeSLNe5AGbKp@hR0s}9 zUN4h{jdqPapolFefAFuy2U`%9#K45xo&IP$Jmc^&#ZAmz^#AC!IWQSk`O_N_`*A zYH$i8eWm^vV6w!D3F7loM6rFq*q=#^@JVkQ0FO4@4Vl&}MA!Nkwt$p>XkiLx(@)?* z%CVT}D38+i`w3=8(hHZ7DR^~dw`+iR+>NyqF^n7g>AK=YU%Q@j*1RcoqYMnq0|dBU z?}@3IiCG)A?+23q3pDZ7qhx!vP~`4QX9)n81Thr*jDlaYnf@}tmT0Q$1~*1ED-4O? z+MxvzAcccaDOsBMX2qjYpz_8cmM9O(p8NZEK~Oda?YCjZyET|_c#0FkR|4YrWL8|e zkZ+r?q;VVUMp3Oi=Rq{^9K=$pUC6v}e1WA@+Qpxs>k4Z0L=0!gOlI4kVG*-Jpfqt% z(8rT!|8U6+*vIUhOyxm{UO!!IF;0qL7D+}CC_Zgtp=FZ|vw4_rR?#F2Syj-r=Vo z#o=2d+YG*$0+l|b3ZtZ1C=j8_4P-F4s(Q0cQ>AWZnrGIDnQF|tKuImrp_*K_lC!

Phm@VUIIB><1=iU7dDf7bUfcpOf^PYK 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 QDFYCAy85}Sb4q9e06^m|Q~&?~ literal 0 HcmV?d00001 diff --git a/docs/my-website/sidebars.js b/docs/my-website/sidebars.js index 6dafb5478b..813fc75a6a 100644 --- a/docs/my-website/sidebars.js +++ b/docs/my-website/sidebars.js @@ -81,6 +81,7 @@ const sidebars = { "proxy/guardrails/lakera_ai", "proxy/guardrails/bedrock", "proxy/guardrails/pii_masking_v2", + "proxy/guardrails/secret_detection", "proxy/guardrails/custom_guardrail", "prompt_injection" ], diff --git a/enterprise/enterprise_hooks/secret_detection.py b/enterprise/enterprise_hooks/secret_detection.py index 2289858bd5..0574d3a05e 100644 --- a/enterprise/enterprise_hooks/secret_detection.py +++ b/enterprise/enterprise_hooks/secret_detection.py @@ -5,39 +5,24 @@ # +-------------------------------------------------------------+ # Thank you users! We ❤️ you! - Krrish & Ishaan -import sys, os +import sys +import os sys.path.insert( 0, os.path.abspath("../..") ) # Adds the parent directory to the system path -from typing import Optional, Literal, Union -import litellm, traceback, sys, uuid +from typing import Optional from litellm.caching import DualCache from litellm.proxy._types import UserAPIKeyAuth -from litellm.integrations.custom_logger import CustomLogger -from fastapi import HTTPException -from litellm._logging import verbose_proxy_logger -from litellm.utils import ( - ModelResponse, - EmbeddingResponse, - ImageResponse, - StreamingChoices, -) -from datetime import datetime -import aiohttp, asyncio from litellm._logging import verbose_proxy_logger import tempfile -from litellm._logging import verbose_proxy_logger - - -litellm.set_verbose = True +from litellm.integrations.custom_guardrail import CustomGuardrail GUARDRAIL_NAME = "hide_secrets" _custom_plugins_path = "file://" + os.path.join( os.path.dirname(os.path.abspath(__file__)), "secrets_plugins" ) -print("custom plugins path", _custom_plugins_path) _default_detect_secrets_config = { "plugins_used": [ {"name": "SoftlayerDetector"}, @@ -434,9 +419,10 @@ _default_detect_secrets_config = { } -class _ENTERPRISE_SecretDetection(CustomLogger): - def __init__(self): - pass +class _ENTERPRISE_SecretDetection(CustomGuardrail): + def __init__(self, detect_secrets_config: Optional[dict] = None, **kwargs): + self.user_defined_detect_secrets_config = detect_secrets_config + super().__init__(**kwargs) def scan_message_for_secrets(self, message_content: str): from detect_secrets import SecretsCollection @@ -447,7 +433,11 @@ class _ENTERPRISE_SecretDetection(CustomLogger): temp_file.close() secrets = SecretsCollection() - with transient_settings(_default_detect_secrets_config): + + detect_secrets_config = ( + self.user_defined_detect_secrets_config or _default_detect_secrets_config + ) + with transient_settings(detect_secrets_config): secrets.scan_file(temp_file.name) os.remove(temp_file.name) @@ -484,9 +474,12 @@ class _ENTERPRISE_SecretDetection(CustomLogger): from detect_secrets import SecretsCollection from detect_secrets.settings import default_settings + print("INSIDE SECRET DETECTION PRE-CALL HOOK!") + if await self.should_run_check(user_api_key_dict) is False: return + print("RUNNING CHECK!") if "messages" in data and isinstance(data["messages"], list): for message in data["messages"]: if "content" in message and isinstance(message["content"], str): @@ -503,6 +496,8 @@ class _ENTERPRISE_SecretDetection(CustomLogger): verbose_proxy_logger.warning( f"Detected and redacted secrets in message: {secret_types}" ) + else: + verbose_proxy_logger.debug("No secrets detected on input.") if "prompt" in data: if isinstance(data["prompt"], str): diff --git a/litellm/cost_calculator.py b/litellm/cost_calculator.py index 598de09be3..0a935a2901 100644 --- a/litellm/cost_calculator.py +++ b/litellm/cost_calculator.py @@ -2,7 +2,7 @@ ## File for 'response_cost' calculation in Logging import time import traceback -from typing import List, Literal, Optional, Tuple, Union +from typing import Any, List, Literal, Optional, Tuple, Union from pydantic import BaseModel @@ -100,7 +100,7 @@ def cost_per_token( "rerank", "arerank", ] = "completion", -) -> Tuple[float, float]: +) -> Tuple[float, float]: # type: ignore """ Calculates the cost per token for a given model, prompt tokens, and completion tokens. @@ -425,20 +425,24 @@ def get_model_params_and_category(model_name) -> str: return model_name -def get_replicate_completion_pricing(completion_response=None, total_time=0.0): +def get_replicate_completion_pricing(completion_response: dict, total_time=0.0): # see https://replicate.com/pricing # for all litellm currently supported LLMs, almost all requests go to a100_80gb a100_80gb_price_per_second_public = ( 0.001400 # assume all calls sent to A100 80GB for now ) if total_time == 0.0: # total time is in ms - start_time = completion_response["created"] + start_time = completion_response.get("created", time.time()) end_time = getattr(completion_response, "ended", time.time()) total_time = end_time - start_time return a100_80gb_price_per_second_public * total_time / 1000 +def has_hidden_params(obj: Any) -> bool: + return hasattr(obj, "_hidden_params") + + def _select_model_name_for_cost_calc( model: Optional[str], completion_response: Union[BaseModel, dict, str], @@ -463,12 +467,14 @@ def _select_model_name_for_cost_calc( elif return_model is None: return_model = completion_response.get("model", "") # type: ignore - if hasattr(completion_response, "_hidden_params"): + hidden_params = getattr(completion_response, "_hidden_params", None) + + if hidden_params is not None: if ( - completion_response._hidden_params.get("model", None) is not None - and len(completion_response._hidden_params["model"]) > 0 + hidden_params.get("model", None) is not None + and len(hidden_params["model"]) > 0 ): - return_model = completion_response._hidden_params.get("model", model) + return_model = hidden_params.get("model", model) return return_model @@ -558,7 +564,7 @@ def completion_cost( or isinstance(completion_response, dict) ): # tts returns a custom class - usage_obj: Optional[Union[dict, litellm.Usage]] = completion_response.get( + usage_obj: Optional[Union[dict, litellm.Usage]] = completion_response.get( # type: ignore "usage", {} ) if isinstance(usage_obj, BaseModel) and not isinstance( @@ -569,17 +575,17 @@ def completion_cost( "usage", litellm.Usage(**usage_obj.model_dump()), ) + if usage_obj is None: + _usage = {} + elif isinstance(usage_obj, BaseModel): + _usage = usage_obj.model_dump() + else: + _usage = usage_obj # get input/output tokens from completion_response - prompt_tokens = completion_response.get("usage", {}).get("prompt_tokens", 0) - completion_tokens = completion_response.get("usage", {}).get( - "completion_tokens", 0 - ) - cache_creation_input_tokens = completion_response.get("usage", {}).get( - "cache_creation_input_tokens", 0 - ) - cache_read_input_tokens = completion_response.get("usage", {}).get( - "cache_read_input_tokens", 0 - ) + prompt_tokens = _usage.get("prompt_tokens", 0) + completion_tokens = _usage.get("completion_tokens", 0) + cache_creation_input_tokens = _usage.get("cache_creation_input_tokens", 0) + cache_read_input_tokens = _usage.get("cache_read_input_tokens", 0) total_time = getattr(completion_response, "_response_ms", 0) verbose_logger.debug( @@ -588,24 +594,19 @@ def completion_cost( model = _select_model_name_for_cost_calc( model=model, completion_response=completion_response ) - if hasattr(completion_response, "_hidden_params"): - custom_llm_provider = completion_response._hidden_params.get( + hidden_params = getattr(completion_response, "_hidden_params", None) + if hidden_params is not None: + custom_llm_provider = hidden_params.get( "custom_llm_provider", custom_llm_provider or None ) - region_name = completion_response._hidden_params.get( - "region_name", region_name - ) - size = completion_response._hidden_params.get( - "optional_params", {} - ).get( + region_name = hidden_params.get("region_name", region_name) + size = hidden_params.get("optional_params", {}).get( "size", "1024-x-1024" ) # openai default - quality = completion_response._hidden_params.get( - "optional_params", {} - ).get( + quality = hidden_params.get("optional_params", {}).get( "quality", "standard" ) # openai default - n = completion_response._hidden_params.get("optional_params", {}).get( + n = hidden_params.get("optional_params", {}).get( "n", 1 ) # openai default else: @@ -643,6 +644,8 @@ def completion_cost( # Vertex Charges Flat $0.20 per image return 0.020 + if size is None: + size = "1024-x-1024" # openai default # fix size to match naming convention if "x" in size and "-x-" not in size: size = size.replace("x", "-x-") @@ -697,7 +700,7 @@ def completion_cost( model in litellm.replicate_models or "replicate" in model ) and model not in litellm.model_cost: # for unmapped replicate model, default to replicate's time tracking logic - return get_replicate_completion_pricing(completion_response, total_time) + return get_replicate_completion_pricing(completion_response, total_time) # type: ignore if model is None: raise ValueError( @@ -847,7 +850,9 @@ def rerank_cost( Returns - float or None: cost of response OR none if error. """ - _, custom_llm_provider, _, _ = litellm.get_llm_provider(model=model) + _, custom_llm_provider, _, _ = litellm.get_llm_provider( + model=model, custom_llm_provider=custom_llm_provider + ) try: if custom_llm_provider == "cohere": diff --git a/litellm/integrations/custom_batch_logger.py b/litellm/integrations/custom_batch_logger.py index 23c63e9519..aa7f0bba28 100644 --- a/litellm/integrations/custom_batch_logger.py +++ b/litellm/integrations/custom_batch_logger.py @@ -45,6 +45,9 @@ class CustomBatchLogger(CustomLogger): await self.flush_queue() async def flush_queue(self): + if self.flush_lock is None: + return + async with self.flush_lock: if self.log_queue: verbose_logger.debug( @@ -54,5 +57,5 @@ class CustomBatchLogger(CustomLogger): self.log_queue.clear() self.last_flush_time = time.time() - async def async_send_batch(self): + async def async_send_batch(self, *args, **kwargs): pass diff --git a/litellm/integrations/custom_guardrail.py b/litellm/integrations/custom_guardrail.py index 39c8f2b1e7..1782ca08ca 100644 --- a/litellm/integrations/custom_guardrail.py +++ b/litellm/integrations/custom_guardrail.py @@ -29,12 +29,13 @@ class CustomGuardrail(CustomLogger): ) if ( - self.guardrail_name not in requested_guardrails + self.event_hook + and self.guardrail_name not in requested_guardrails and event_type.value != "logging_only" ): return False - if self.event_hook != event_type.value: + if self.event_hook and self.event_hook != event_type.value: return False return True diff --git a/litellm/integrations/langsmith.py b/litellm/integrations/langsmith.py index 3c7280f882..62ee161174 100644 --- a/litellm/integrations/langsmith.py +++ b/litellm/integrations/langsmith.py @@ -8,7 +8,7 @@ import traceback import types import uuid from datetime import datetime, timezone -from typing import Any, List, Optional, Union +from typing import Any, Dict, List, Optional, TypedDict, Union import dotenv # type: ignore import httpx @@ -23,6 +23,7 @@ from litellm.llms.custom_httpx.http_handler import ( get_async_httpx_client, httpxSpecialProvider, ) +from litellm.types.utils import StandardLoggingPayload class LangsmithInputs(BaseModel): @@ -46,6 +47,12 @@ class LangsmithInputs(BaseModel): user_api_key_team_alias: Optional[str] = None +class LangsmithCredentialsObject(TypedDict): + LANGSMITH_API_KEY: str + LANGSMITH_PROJECT: str + LANGSMITH_BASE_URL: str + + def is_serializable(value): non_serializable_types = ( types.CoroutineType, @@ -57,15 +64,27 @@ def is_serializable(value): class LangsmithLogger(CustomBatchLogger): - def __init__(self, **kwargs): - self.langsmith_api_key = os.getenv("LANGSMITH_API_KEY") - self.langsmith_project = os.getenv("LANGSMITH_PROJECT", "litellm-completion") + def __init__( + self, + langsmith_api_key: Optional[str] = None, + langsmith_project: Optional[str] = None, + langsmith_base_url: Optional[str] = None, + **kwargs, + ): + self.default_credentials = self.get_credentials_from_env( + langsmith_api_key=langsmith_api_key, + langsmith_project=langsmith_project, + langsmith_base_url=langsmith_base_url, + ) + self.sampling_rate: float = ( + float(os.getenv("LANGSMITH_SAMPLING_RATE")) # type: ignore + if os.getenv("LANGSMITH_SAMPLING_RATE") is not None + and os.getenv("LANGSMITH_SAMPLING_RATE").strip().isdigit() # type: ignore + else 1.0 + ) self.langsmith_default_run_name = os.getenv( "LANGSMITH_DEFAULT_RUN_NAME", "LLMRun" ) - self.langsmith_base_url = os.getenv( - "LANGSMITH_BASE_URL", "https://api.smith.langchain.com" - ) self.async_httpx_client = get_async_httpx_client( llm_provider=httpxSpecialProvider.LoggingCallback ) @@ -78,126 +97,160 @@ class LangsmithLogger(CustomBatchLogger): self.flush_lock = asyncio.Lock() super().__init__(**kwargs, flush_lock=self.flush_lock) + def get_credentials_from_env( + self, + langsmith_api_key: Optional[str], + langsmith_project: Optional[str], + langsmith_base_url: Optional[str], + ) -> LangsmithCredentialsObject: + + _credentials_api_key = langsmith_api_key or os.getenv("LANGSMITH_API_KEY") + if _credentials_api_key is None: + raise Exception( + "Invalid Langsmith API Key given. _credentials_api_key=None." + ) + _credentials_project = ( + langsmith_project or os.getenv("LANGSMITH_PROJECT") or "litellm-completion" + ) + if _credentials_project is None: + raise Exception( + "Invalid Langsmith API Key given. _credentials_project=None." + ) + _credentials_base_url = ( + langsmith_base_url + or os.getenv("LANGSMITH_BASE_URL") + or "https://api.smith.langchain.com" + ) + if _credentials_base_url is None: + raise Exception( + "Invalid Langsmith API Key given. _credentials_base_url=None." + ) + + return LangsmithCredentialsObject( + LANGSMITH_API_KEY=_credentials_api_key, + LANGSMITH_BASE_URL=_credentials_base_url, + LANGSMITH_PROJECT=_credentials_project, + ) + def _prepare_log_data(self, kwargs, response_obj, start_time, end_time): - import datetime + import json from datetime import datetime as dt - from datetime import timezone - - metadata = kwargs.get("litellm_params", {}).get("metadata", {}) or {} - new_metadata = {} - for key, value in metadata.items(): - if ( - isinstance(value, list) - or isinstance(value, str) - or isinstance(value, int) - or isinstance(value, float) - ): - new_metadata[key] = value - elif isinstance(value, BaseModel): - new_metadata[key] = value.model_dump_json() - elif isinstance(value, dict): - for k, v in value.items(): - if isinstance(v, dt): - value[k] = v.isoformat() - new_metadata[key] = value - - metadata = new_metadata - - kwargs["user_api_key"] = metadata.get("user_api_key", None) - kwargs["user_api_key_user_id"] = metadata.get("user_api_key_user_id", None) - kwargs["user_api_key_team_alias"] = metadata.get( - "user_api_key_team_alias", None - ) - - project_name = metadata.get("project_name", self.langsmith_project) - run_name = metadata.get("run_name", self.langsmith_default_run_name) - run_id = metadata.get("id", None) - parent_run_id = metadata.get("parent_run_id", None) - trace_id = metadata.get("trace_id", None) - session_id = metadata.get("session_id", None) - dotted_order = metadata.get("dotted_order", None) - tags = metadata.get("tags", []) or [] - verbose_logger.debug( - f"Langsmith Logging - project_name: {project_name}, run_name {run_name}" - ) try: - start_time = kwargs["start_time"].astimezone(timezone.utc).isoformat() - end_time = kwargs["end_time"].astimezone(timezone.utc).isoformat() - except: - start_time = datetime.datetime.utcnow().isoformat() - end_time = datetime.datetime.utcnow().isoformat() + _litellm_params = kwargs.get("litellm_params", {}) or {} + metadata = _litellm_params.get("metadata", {}) or {} + new_metadata = {} + for key, value in metadata.items(): + if ( + isinstance(value, list) + or isinstance(value, str) + or isinstance(value, int) + or isinstance(value, float) + ): + new_metadata[key] = value + elif isinstance(value, BaseModel): + new_metadata[key] = value.model_dump_json() + elif isinstance(value, dict): + for k, v in value.items(): + if isinstance(v, dt): + value[k] = v.isoformat() + new_metadata[key] = value - # filter out kwargs to not include any dicts, langsmith throws an erros when trying to log kwargs - logged_kwargs = LangsmithInputs(**kwargs) - kwargs = logged_kwargs.model_dump() + metadata = new_metadata - new_kwargs = {} - for key in kwargs: - value = kwargs[key] - if key == "start_time" or key == "end_time" or value is None: - pass - elif key == "original_response" and not isinstance(value, str): - new_kwargs[key] = str(value) - elif type(value) == datetime.datetime: - new_kwargs[key] = value.isoformat() - elif type(value) != dict and is_serializable(value=value): - new_kwargs[key] = value - elif not is_serializable(value=value): - continue + kwargs["user_api_key"] = metadata.get("user_api_key", None) + kwargs["user_api_key_user_id"] = metadata.get("user_api_key_user_id", None) + kwargs["user_api_key_team_alias"] = metadata.get( + "user_api_key_team_alias", None + ) - if isinstance(response_obj, BaseModel): - try: - response_obj = response_obj.model_dump() - except: - response_obj = response_obj.dict() # type: ignore + project_name = metadata.get( + "project_name", self.default_credentials["LANGSMITH_PROJECT"] + ) + run_name = metadata.get("run_name", self.langsmith_default_run_name) + run_id = metadata.get("id", None) + parent_run_id = metadata.get("parent_run_id", None) + trace_id = metadata.get("trace_id", None) + session_id = metadata.get("session_id", None) + dotted_order = metadata.get("dotted_order", None) + tags = metadata.get("tags", []) or [] + verbose_logger.debug( + f"Langsmith Logging - project_name: {project_name}, run_name {run_name}" + ) - data = { - "name": run_name, - "run_type": "llm", # this should always be llm, since litellm always logs llm calls. Langsmith allow us to log "chain" - "inputs": new_kwargs, - "outputs": response_obj, - "session_name": project_name, - "start_time": start_time, - "end_time": end_time, - "tags": tags, - "extra": metadata, - } + # filter out kwargs to not include any dicts, langsmith throws an erros when trying to log kwargs + # logged_kwargs = LangsmithInputs(**kwargs) + # kwargs = logged_kwargs.model_dump() - if run_id: - data["id"] = run_id + # new_kwargs = {} + # Ensure everything in the payload is converted to str + payload: Optional[StandardLoggingPayload] = kwargs.get( + "standard_logging_object", None + ) - if parent_run_id: - data["parent_run_id"] = parent_run_id + if payload is None: + raise Exception("Error logging request payload. Payload=none.") - if trace_id: - data["trace_id"] = trace_id + new_kwargs = payload + metadata = payload[ + "metadata" + ] # ensure logged metadata is json serializable - if session_id: - data["session_id"] = session_id + data = { + "name": run_name, + "run_type": "llm", # this should always be llm, since litellm always logs llm calls. Langsmith allow us to log "chain" + "inputs": new_kwargs, + "outputs": new_kwargs["response"], + "session_name": project_name, + "start_time": new_kwargs["startTime"], + "end_time": new_kwargs["endTime"], + "tags": tags, + "extra": metadata, + } - if dotted_order: - data["dotted_order"] = dotted_order + if payload["error_str"] is not None and payload["status"] == "failure": + data["error"] = payload["error_str"] - if "id" not in data or data["id"] is None: - """ - for /batch langsmith requires id, trace_id and dotted_order passed as params - """ - run_id = uuid.uuid4() - data["id"] = str(run_id) - data["trace_id"] = str(run_id) - data["dotted_order"] = self.make_dot_order(run_id=run_id) + if run_id: + data["id"] = run_id - verbose_logger.debug("Langsmith Logging data on langsmith: %s", data) + if parent_run_id: + data["parent_run_id"] = parent_run_id - return data + if trace_id: + data["trace_id"] = trace_id + + if session_id: + data["session_id"] = session_id + + if dotted_order: + data["dotted_order"] = dotted_order + + if "id" not in data or data["id"] is None: + """ + for /batch langsmith requires id, trace_id and dotted_order passed as params + """ + run_id = str(uuid.uuid4()) + data["id"] = str(run_id) + data["trace_id"] = str(run_id) + data["dotted_order"] = self.make_dot_order(run_id=run_id) + + verbose_logger.debug("Langsmith Logging data on langsmith: %s", data) + + return data + except Exception: + raise def _send_batch(self): if not self.log_queue: return - url = f"{self.langsmith_base_url}/runs/batch" - headers = {"x-api-key": self.langsmith_api_key} + langsmith_api_key = self.default_credentials["LANGSMITH_API_KEY"] + langsmith_api_base = self.default_credentials["LANGSMITH_BASE_URL"] + + url = f"{langsmith_api_base}/runs/batch" + + headers = {"x-api-key": langsmith_api_key} try: response = requests.post( @@ -216,15 +269,15 @@ class LangsmithLogger(CustomBatchLogger): ) self.log_queue.clear() - except Exception as e: - verbose_logger.error(f"Langsmith Layer Error - {traceback.format_exc()}") + except Exception: + verbose_logger.exception("Langsmith Layer Error - Error sending batch.") def log_success_event(self, kwargs, response_obj, start_time, end_time): try: sampling_rate = ( - float(os.getenv("LANGSMITH_SAMPLING_RATE")) + float(os.getenv("LANGSMITH_SAMPLING_RATE")) # type: ignore if os.getenv("LANGSMITH_SAMPLING_RATE") is not None - and os.getenv("LANGSMITH_SAMPLING_RATE").strip().isdigit() + and os.getenv("LANGSMITH_SAMPLING_RATE").strip().isdigit() # type: ignore else 1.0 ) random_sample = random.random() @@ -249,17 +302,12 @@ class LangsmithLogger(CustomBatchLogger): if len(self.log_queue) >= self.batch_size: self._send_batch() - except: - verbose_logger.error(f"Langsmith Layer Error - {traceback.format_exc()}") + except Exception: + verbose_logger.exception("Langsmith Layer Error - log_success_event error") async def async_log_success_event(self, kwargs, response_obj, start_time, end_time): try: - sampling_rate = ( - float(os.getenv("LANGSMITH_SAMPLING_RATE")) - if os.getenv("LANGSMITH_SAMPLING_RATE") is not None - and os.getenv("LANGSMITH_SAMPLING_RATE").strip().isdigit() - else 1.0 - ) + sampling_rate = self.sampling_rate random_sample = random.random() if random_sample > sampling_rate: verbose_logger.info( @@ -282,8 +330,36 @@ class LangsmithLogger(CustomBatchLogger): ) if len(self.log_queue) >= self.batch_size: await self.flush_queue() - except: - verbose_logger.error(f"Langsmith Layer Error - {traceback.format_exc()}") + except Exception: + verbose_logger.exception( + "Langsmith Layer Error - error logging async success event." + ) + + async def async_log_failure_event(self, kwargs, response_obj, start_time, end_time): + sampling_rate = self.sampling_rate + random_sample = random.random() + if random_sample > sampling_rate: + verbose_logger.info( + "Skipping Langsmith logging. Sampling rate={}, random_sample={}".format( + sampling_rate, random_sample + ) + ) + return # Skip logging + verbose_logger.info("Langsmith Failure Event Logging!") + try: + data = self._prepare_log_data(kwargs, response_obj, start_time, end_time) + self.log_queue.append(data) + verbose_logger.debug( + "Langsmith logging: queue length %s, batch size %s", + len(self.log_queue), + self.batch_size, + ) + if len(self.log_queue) >= self.batch_size: + await self.flush_queue() + except Exception: + verbose_logger.exception( + "Langsmith Layer Error - error logging async failure event." + ) async def async_send_batch(self): """ @@ -295,13 +371,16 @@ class LangsmithLogger(CustomBatchLogger): Raises: Does not raise an exception, will only verbose_logger.exception() """ - import json - if not self.log_queue: return - url = f"{self.langsmith_base_url}/runs/batch" - headers = {"x-api-key": self.langsmith_api_key} + langsmith_api_base = self.default_credentials["LANGSMITH_BASE_URL"] + + url = f"{langsmith_api_base}/runs/batch" + + langsmith_api_key = self.default_credentials["LANGSMITH_API_KEY"] + + headers = {"x-api-key": langsmith_api_key} try: response = await self.async_httpx_client.post( @@ -332,10 +411,14 @@ class LangsmithLogger(CustomBatchLogger): def get_run_by_id(self, run_id): - url = f"{self.langsmith_base_url}/runs/{run_id}" + langsmith_api_key = self.default_credentials["LANGSMITH_API_KEY"] + + langsmith_api_base = self.default_credentials["LANGSMITH_BASE_URL"] + + url = f"{langsmith_api_base}/runs/{run_id}" response = requests.get( url=url, - headers={"x-api-key": self.langsmith_api_key}, + headers={"x-api-key": langsmith_api_key}, ) return response.json() diff --git a/litellm/litellm_core_utils/litellm_logging.py b/litellm/litellm_core_utils/litellm_logging.py index 3992614c8d..f979479417 100644 --- a/litellm/litellm_core_utils/litellm_logging.py +++ b/litellm/litellm_core_utils/litellm_logging.py @@ -43,6 +43,7 @@ from litellm.types.utils import ( StandardLoggingMetadata, StandardLoggingModelInformation, StandardLoggingPayload, + StandardLoggingPayloadStatus, StandardPassThroughResponseObject, TextCompletionResponse, TranscriptionResponse, @@ -668,6 +669,7 @@ class Logging: start_time=start_time, end_time=end_time, logging_obj=self, + status="success", ) ) elif isinstance(result, dict): # pass-through endpoints @@ -679,6 +681,7 @@ class Logging: start_time=start_time, end_time=end_time, logging_obj=self, + status="success", ) ) else: # streaming chunks + image gen. @@ -762,6 +765,7 @@ class Logging: start_time=start_time, end_time=end_time, logging_obj=self, + status="success", ) ) if self.dynamic_success_callbacks is not None and isinstance( @@ -1390,6 +1394,7 @@ class Logging: start_time=start_time, end_time=end_time, logging_obj=self, + status="success", ) ) if self.dynamic_async_success_callbacks is not None and isinstance( @@ -1645,6 +1650,20 @@ class Logging: self.model_call_details["litellm_params"].get("metadata", {}) or {} ) metadata.update(exception.headers) + + ## STANDARDIZED LOGGING PAYLOAD + + self.model_call_details["standard_logging_object"] = ( + get_standard_logging_object_payload( + kwargs=self.model_call_details, + init_response_obj={}, + start_time=start_time, + end_time=end_time, + logging_obj=self, + status="failure", + error_str=str(exception), + ) + ) return start_time, end_time async def special_failure_handlers(self, exception: Exception): @@ -2347,10 +2366,12 @@ def is_valid_sha256_hash(value: str) -> bool: def get_standard_logging_object_payload( kwargs: Optional[dict], - init_response_obj: Any, + init_response_obj: Union[Any, BaseModel, dict], start_time: dt_object, end_time: dt_object, logging_obj: Logging, + status: StandardLoggingPayloadStatus, + error_str: Optional[str] = None, ) -> Optional[StandardLoggingPayload]: try: if kwargs is None: @@ -2467,7 +2488,7 @@ def get_standard_logging_object_payload( custom_pricing = use_custom_pricing_for_model(litellm_params=litellm_params) model_cost_name = _select_model_name_for_cost_calc( model=None, - completion_response=init_response_obj, + completion_response=init_response_obj, # type: ignore base_model=base_model, custom_pricing=custom_pricing, ) @@ -2498,6 +2519,7 @@ def get_standard_logging_object_payload( id=str(id), call_type=call_type or "", cache_hit=cache_hit, + status=status, saved_cache_cost=saved_cache_cost, startTime=start_time_float, endTime=end_time_float, @@ -2517,11 +2539,12 @@ def get_standard_logging_object_payload( requester_ip_address=clean_metadata.get("requester_ip_address", None), messages=kwargs.get("messages"), response=( # type: ignore - response_obj if len(response_obj.keys()) > 0 else init_response_obj + response_obj if len(response_obj.keys()) > 0 else init_response_obj # type: ignore ), model_parameters=kwargs.get("optional_params", None), hidden_params=clean_hidden_params, model_map_information=model_cost_information, + error_str=error_str, ) verbose_logger.debug( diff --git a/litellm/llms/azure_ai/README.md b/litellm/llms/azure_ai/README.md new file mode 100644 index 0000000000..8c521519da --- /dev/null +++ b/litellm/llms/azure_ai/README.md @@ -0,0 +1 @@ +`/chat/completion` calls routed via `openai.py`. \ No newline at end of file diff --git a/litellm/llms/azure_ai/rerank/__init__.py b/litellm/llms/azure_ai/rerank/__init__.py new file mode 100644 index 0000000000..a25d34b1c4 --- /dev/null +++ b/litellm/llms/azure_ai/rerank/__init__.py @@ -0,0 +1 @@ +from .handler import AzureAIRerank diff --git a/litellm/llms/azure_ai/rerank/handler.py b/litellm/llms/azure_ai/rerank/handler.py new file mode 100644 index 0000000000..523448eecf --- /dev/null +++ b/litellm/llms/azure_ai/rerank/handler.py @@ -0,0 +1,52 @@ +from typing import Any, Dict, List, Optional, Union + +import httpx + +from litellm.litellm_core_utils.litellm_logging import Logging as LiteLLMLoggingObj +from litellm.llms.cohere.rerank import CohereRerank +from litellm.rerank_api.types import RerankResponse + + +class AzureAIRerank(CohereRerank): + def rerank( + self, + model: str, + api_key: str, + api_base: str, + query: str, + documents: List[Union[str, Dict[str, Any]]], + headers: Optional[dict], + litellm_logging_obj: LiteLLMLoggingObj, + top_n: Optional[int] = None, + rank_fields: Optional[List[str]] = None, + return_documents: Optional[bool] = True, + max_chunks_per_doc: Optional[int] = None, + _is_async: Optional[bool] = False, + ) -> RerankResponse: + + if headers is None: + headers = {"Authorization": "Bearer {}".format(api_key)} + else: + headers = {**headers, "Authorization": "Bearer {}".format(api_key)} + + # Assuming api_base is a string representing the base URL + api_base_url = httpx.URL(api_base) + + # Replace the path with '/v1/rerank' if it doesn't already end with it + if not api_base_url.path.endswith("/v1/rerank"): + api_base = str(api_base_url.copy_with(path="/v1/rerank")) + + return super().rerank( + model=model, + api_key=api_key, + api_base=api_base, + query=query, + documents=documents, + top_n=top_n, + rank_fields=rank_fields, + return_documents=return_documents, + max_chunks_per_doc=max_chunks_per_doc, + _is_async=_is_async, + headers=headers, + litellm_logging_obj=litellm_logging_obj, + ) diff --git a/litellm/llms/azure_ai/rerank/transformation.py b/litellm/llms/azure_ai/rerank/transformation.py new file mode 100644 index 0000000000..b5aad0ca21 --- /dev/null +++ b/litellm/llms/azure_ai/rerank/transformation.py @@ -0,0 +1,3 @@ +""" +Translate between Cohere's `/rerank` format and Azure AI's `/rerank` format. +""" diff --git a/litellm/llms/cohere/rerank.py b/litellm/llms/cohere/rerank.py index 64afcae4f3..069cf3968d 100644 --- a/litellm/llms/cohere/rerank.py +++ b/litellm/llms/cohere/rerank.py @@ -10,6 +10,7 @@ import httpx from pydantic import BaseModel import litellm +from litellm.litellm_core_utils.litellm_logging import Logging as LiteLLMLoggingObj from litellm.llms.base import BaseLLM from litellm.llms.custom_httpx.http_handler import ( _get_httpx_client, @@ -19,6 +20,23 @@ from litellm.rerank_api.types import RerankRequest, RerankResponse class CohereRerank(BaseLLM): + def validate_environment(self, api_key: str, headers: Optional[dict]) -> dict: + default_headers = { + "accept": "application/json", + "content-type": "application/json", + "Authorization": f"bearer {api_key}", + } + + if headers is None: + return default_headers + + # If 'Authorization' is provided in headers, it overrides the default. + if "Authorization" in headers: + default_headers["Authorization"] = headers["Authorization"] + + # Merge other headers, overriding any default ones except Authorization + return {**default_headers, **headers} + def rerank( self, model: str, @@ -26,12 +44,16 @@ class CohereRerank(BaseLLM): api_base: str, query: str, documents: List[Union[str, Dict[str, Any]]], + headers: Optional[dict], + litellm_logging_obj: LiteLLMLoggingObj, top_n: Optional[int] = None, rank_fields: Optional[List[str]] = None, return_documents: Optional[bool] = True, max_chunks_per_doc: Optional[int] = None, _is_async: Optional[bool] = False, # New parameter ) -> RerankResponse: + headers = self.validate_environment(api_key=api_key, headers=headers) + request_data = RerankRequest( model=model, query=query, @@ -45,16 +67,22 @@ class CohereRerank(BaseLLM): request_data_dict = request_data.dict(exclude_none=True) if _is_async: - return self.async_rerank(request_data_dict, api_key, api_base) # type: ignore # Call async method + return self.async_rerank(request_data_dict=request_data_dict, api_key=api_key, api_base=api_base, headers=headers) # type: ignore # Call async method + ## LOGGING + litellm_logging_obj.pre_call( + input=request_data_dict, + api_key=api_key, + additional_args={ + "complete_input_dict": request_data_dict, + "api_base": api_base, + "headers": headers, + }, + ) client = _get_httpx_client() response = client.post( api_base, - headers={ - "accept": "application/json", - "content-type": "application/json", - "Authorization": f"bearer {api_key}", - }, + headers=headers, json=request_data_dict, ) @@ -65,16 +93,13 @@ class CohereRerank(BaseLLM): request_data_dict: Dict[str, Any], api_key: str, api_base: str, + headers: dict, ) -> RerankResponse: client = get_async_httpx_client(llm_provider=litellm.LlmProviders.COHERE) response = await client.post( api_base, - headers={ - "accept": "application/json", - "content-type": "application/json", - "Authorization": f"bearer {api_key}", - }, + headers=headers, json=request_data_dict, ) diff --git a/litellm/proxy/_new_secret_config.yaml b/litellm/proxy/_new_secret_config.yaml index 3502a786b6..c039b94afa 100644 --- a/litellm/proxy/_new_secret_config.yaml +++ b/litellm/proxy/_new_secret_config.yaml @@ -20,30 +20,15 @@ model_list: litellm_params: model: o1-preview -litellm_settings: - drop_params: True - json_logs: True - store_audit_logs: True - log_raw_request_response: True - return_response_headers: True - num_retries: 5 - request_timeout: 200 - callbacks: ["custom_callbacks.proxy_handler_instance"] - guardrails: - - guardrail_name: "presidio-pre-guard" + - guardrail_name: "hide-secrets" litellm_params: - guardrail: presidio # supported values: "aporia", "bedrock", "lakera", "presidio" - mode: "logging_only" - mock_redacted_text: { - "text": "My name is , who are you? Say my name in your response", - "items": [ - { - "start": 11, - "end": 19, - "entity_type": "PERSON", - "text": "", - "operator": "replace", - } - ], - } \ No newline at end of file + guardrail: "hide-secrets" # supported values: "aporia", "lakera" + mode: "pre_call" + # detect_secrets_config: { + # "plugins_used": [ + # {"name": "SoftlayerDetector"}, + # {"name": "StripeDetector"}, + # {"name": "NpmDetector"} + # ] + # } \ No newline at end of file diff --git a/litellm/proxy/common_utils/admin_ui_utils.py b/litellm/proxy/common_utils/admin_ui_utils.py index 3845c78ce2..bd45fc627e 100644 --- a/litellm/proxy/common_utils/admin_ui_utils.py +++ b/litellm/proxy/common_utils/admin_ui_utils.py @@ -166,3 +166,76 @@ def missing_keys_form(missing_key_names: str): """ return missing_keys_html_form.format(missing_keys=missing_key_names) + + +def admin_ui_disabled(): + from fastapi.responses import HTMLResponse + + ui_disabled_html = """ + + + + + + + Admin UI Disabled + + +

+ + + + + """ + + return HTMLResponse( + content=ui_disabled_html, + status_code=200, + ) diff --git a/litellm/proxy/guardrails/init_guardrails.py b/litellm/proxy/guardrails/init_guardrails.py index c463009904..9c84431194 100644 --- a/litellm/proxy/guardrails/init_guardrails.py +++ b/litellm/proxy/guardrails/init_guardrails.py @@ -189,6 +189,18 @@ def init_guardrails_v2( litellm.callbacks.append(_success_callback) # type: ignore litellm.callbacks.append(_presidio_callback) # type: ignore + elif litellm_params["guardrail"] == "hide-secrets": + from enterprise.enterprise_hooks.secret_detection import ( + _ENTERPRISE_SecretDetection, + ) + + _secret_detection_object = _ENTERPRISE_SecretDetection( + detect_secrets_config=litellm_params.get("detect_secrets_config"), + event_hook=litellm_params["mode"], + guardrail_name=guardrail["guardrail_name"], + ) + + litellm.callbacks.append(_secret_detection_object) # type: ignore elif ( isinstance(litellm_params["guardrail"], str) and "." in litellm_params["guardrail"] diff --git a/litellm/proxy/proxy_config.yaml b/litellm/proxy/proxy_config.yaml index 7bd1c652f5..e0fb79b150 100644 --- a/litellm/proxy/proxy_config.yaml +++ b/litellm/proxy/proxy_config.yaml @@ -19,12 +19,8 @@ model_list: model: openai/429 api_key: fake-key api_base: https://exampleopenaiendpoint-production.up.railway.app + tags: ["fake"] general_settings: - master_key: sk-1234 -litellm_settings: - success_callback: ["datadog"] - service_callback: ["datadog"] - cache: True - + master_key: sk-1234 \ No newline at end of file diff --git a/litellm/proxy/proxy_server.py b/litellm/proxy/proxy_server.py index de15300712..20dab118bc 100644 --- a/litellm/proxy/proxy_server.py +++ b/litellm/proxy/proxy_server.py @@ -139,6 +139,7 @@ from litellm.proxy.auth.user_api_key_auth import user_api_key_auth ## Import All Misc routes here ## from litellm.proxy.caching_routes import router as caching_router from litellm.proxy.common_utils.admin_ui_utils import ( + admin_ui_disabled, html_form, show_missing_vars_in_env, ) @@ -250,7 +251,7 @@ from litellm.secret_managers.aws_secret_manager import ( load_aws_secret_manager, ) from litellm.secret_managers.google_kms import load_google_kms -from litellm.secret_managers.main import get_secret +from litellm.secret_managers.main import get_secret, str_to_bool from litellm.types.llms.anthropic import ( AnthropicMessagesRequest, AnthropicResponse, @@ -652,7 +653,7 @@ def load_from_azure_key_vault(use_azure_key_vault: bool = False): return try: - from azure.identity import ClientSecretCredential + from azure.identity import ClientSecretCredential, DefaultAzureCredential from azure.keyvault.secrets import SecretClient # Set your Azure Key Vault URI @@ -670,9 +671,10 @@ def load_from_azure_key_vault(use_azure_key_vault: bool = False): and tenant_id is not None ): # Initialize the ClientSecretCredential - credential = ClientSecretCredential( - client_id=client_id, client_secret=client_secret, tenant_id=tenant_id - ) + # credential = ClientSecretCredential( + # client_id=client_id, client_secret=client_secret, tenant_id=tenant_id + # ) + credential = DefaultAzureCredential() # Create the SecretClient using the credential client = SecretClient(vault_url=KVUri, credential=credential) @@ -7967,6 +7969,13 @@ async def google_login(request: Request): google_client_id = os.getenv("GOOGLE_CLIENT_ID", None) generic_client_id = os.getenv("GENERIC_CLIENT_ID", None) + ####### Check if UI is disabled ####### + _disable_ui_flag = os.getenv("DISABLE_ADMIN_UI") + if _disable_ui_flag is not None: + is_disabled = str_to_bool(value=_disable_ui_flag) + if is_disabled: + return admin_ui_disabled() + ####### Check if user is a Enterprise / Premium User ####### if ( microsoft_client_id is not None diff --git a/litellm/proxy/utils.py b/litellm/proxy/utils.py index f0ee7ea9f7..44ae71b15a 100644 --- a/litellm/proxy/utils.py +++ b/litellm/proxy/utils.py @@ -414,6 +414,7 @@ class ProxyLogging: is not True ): continue + response = await _callback.async_pre_call_hook( user_api_key_dict=user_api_key_dict, cache=self.call_details["user_api_key_cache"], @@ -468,7 +469,9 @@ class ProxyLogging: ################################################################ # V1 implementation - backwards compatibility - if callback.event_hook is None: + if callback.event_hook is None and hasattr( + callback, "moderation_check" + ): if callback.moderation_check == "pre_call": # type: ignore return else: @@ -975,12 +978,13 @@ class PrismaClient: ] required_view = "LiteLLM_VerificationTokenView" expected_views_str = ", ".join(f"'{view}'" for view in expected_views) + pg_schema = os.getenv("DATABASE_SCHEMA", "public") ret = await self.db.query_raw( f""" WITH existing_views AS ( SELECT viewname FROM pg_views - WHERE schemaname = 'public' AND viewname IN ( + WHERE schemaname = '{pg_schema}' AND viewname IN ( {expected_views_str} ) ) diff --git a/litellm/rerank_api/main.py b/litellm/rerank_api/main.py index 462208cfcd..d58e3c34fd 100644 --- a/litellm/rerank_api/main.py +++ b/litellm/rerank_api/main.py @@ -5,11 +5,13 @@ from typing import Any, Coroutine, Dict, List, Literal, Optional, Union import litellm from litellm._logging import verbose_logger +from litellm.litellm_core_utils.litellm_logging import Logging as LiteLLMLoggingObj +from litellm.llms.azure_ai.rerank import AzureAIRerank from litellm.llms.cohere.rerank import CohereRerank from litellm.llms.togetherai.rerank import TogetherAIRerank from litellm.secret_managers.main import get_secret from litellm.types.router import * -from litellm.utils import client, supports_httpx_timeout +from litellm.utils import client, exception_type, supports_httpx_timeout from .types import RerankRequest, RerankResponse @@ -17,6 +19,7 @@ from .types import RerankRequest, RerankResponse # Initialize any necessary instances or variables here cohere_rerank = CohereRerank() together_rerank = TogetherAIRerank() +azure_ai_rerank = AzureAIRerank() ################################################# @@ -70,7 +73,7 @@ def rerank( model: str, query: str, documents: List[Union[str, Dict[str, Any]]], - custom_llm_provider: Optional[Literal["cohere", "together_ai"]] = None, + custom_llm_provider: Optional[Literal["cohere", "together_ai", "azure_ai"]] = None, top_n: Optional[int] = None, rank_fields: Optional[List[str]] = None, return_documents: Optional[bool] = True, @@ -80,11 +83,18 @@ def rerank( """ Reranks a list of documents based on their relevance to the query """ + headers: Optional[dict] = kwargs.get("headers") # type: ignore + litellm_logging_obj: LiteLLMLoggingObj = kwargs.get("litellm_logging_obj") # type: ignore + litellm_call_id: Optional[str] = kwargs.get("litellm_call_id", None) + proxy_server_request = kwargs.get("proxy_server_request", None) + model_info = kwargs.get("model_info", None) + metadata = kwargs.get("metadata", {}) + user = kwargs.get("user", None) try: _is_async = kwargs.pop("arerank", False) is True optional_params = GenericLiteLLMParams(**kwargs) - model, _custom_llm_provider, dynamic_api_key, api_base = ( + model, _custom_llm_provider, dynamic_api_key, dynamic_api_base = ( litellm.get_llm_provider( model=model, custom_llm_provider=custom_llm_provider, @@ -93,31 +103,52 @@ def rerank( ) ) + litellm_logging_obj.update_environment_variables( + model=model, + user=user, + optional_params=optional_params.model_dump(), + litellm_params={ + "litellm_call_id": litellm_call_id, + "proxy_server_request": proxy_server_request, + "model_info": model_info, + "metadata": metadata, + "preset_cache_key": None, + "stream_response": {}, + }, + custom_llm_provider=_custom_llm_provider, + ) + # Implement rerank logic here based on the custom_llm_provider if _custom_llm_provider == "cohere": # Implement Cohere rerank logic - cohere_key = ( + api_key: Optional[str] = ( dynamic_api_key or optional_params.api_key or litellm.cohere_key - or get_secret("COHERE_API_KEY") - or get_secret("CO_API_KEY") + or get_secret("COHERE_API_KEY") # type: ignore + or get_secret("CO_API_KEY") # type: ignore or litellm.api_key ) - if cohere_key is None: + if api_key is None: raise ValueError( "Cohere API key is required, please set 'COHERE_API_KEY' in your environment" ) - api_base = ( - optional_params.api_base + api_base: Optional[str] = ( + dynamic_api_base + or optional_params.api_base or litellm.api_base - or get_secret("COHERE_API_BASE") + or get_secret("COHERE_API_BASE") # type: ignore or "https://api.cohere.com/v1/rerank" ) - headers: Dict = litellm.headers or {} + if api_base is None: + raise Exception( + "Invalid api base. api_base=None. Set in call or via `COHERE_API_BASE` env var." + ) + + headers = headers or litellm.headers or {} response = cohere_rerank.rerank( model=model, @@ -127,22 +158,72 @@ def rerank( rank_fields=rank_fields, return_documents=return_documents, max_chunks_per_doc=max_chunks_per_doc, - api_key=cohere_key, + api_key=api_key, api_base=api_base, _is_async=_is_async, + headers=headers, + litellm_logging_obj=litellm_logging_obj, + ) + elif _custom_llm_provider == "azure_ai": + api_base = ( + dynamic_api_base # for deepinfra/perplexity/anyscale/groq/friendliai we check in get_llm_provider and pass in the api base from there + or optional_params.api_base + or litellm.api_base + or get_secret("AZURE_AI_API_BASE") # type: ignore + ) + # set API KEY + api_key = ( + dynamic_api_key + or litellm.api_key # for deepinfra/perplexity/anyscale/friendliai we check in get_llm_provider and pass in the api key from there + or litellm.openai_key + or get_secret("AZURE_AI_API_KEY") # type: ignore + ) + + headers = headers or litellm.headers or {} + + if api_key is None: + raise ValueError( + "Azure AI API key is required, please set 'AZURE_AI_API_KEY' in your environment" + ) + + if api_base is None: + raise Exception( + "Azure AI API Base is required. api_base=None. Set in call or via `AZURE_AI_API_BASE` env var." + ) + + ## LOAD CONFIG - if set + config = litellm.OpenAIConfig.get_config() + for k, v in config.items(): + if ( + k not in optional_params + ): # completion(top_k=3) > openai_config(top_k=3) <- allows for dynamic variables to be passed in + optional_params[k] = v + + response = azure_ai_rerank.rerank( + model=model, + query=query, + documents=documents, + top_n=top_n, + rank_fields=rank_fields, + return_documents=return_documents, + max_chunks_per_doc=max_chunks_per_doc, + api_key=api_key, + api_base=api_base, + _is_async=_is_async, + headers=headers, + litellm_logging_obj=litellm_logging_obj, ) - pass elif _custom_llm_provider == "together_ai": # Implement Together AI rerank logic - together_key = ( + api_key = ( dynamic_api_key or optional_params.api_key or litellm.togetherai_api_key - or get_secret("TOGETHERAI_API_KEY") + or get_secret("TOGETHERAI_API_KEY") # type: ignore or litellm.api_key ) - if together_key is None: + if api_key is None: raise ValueError( "TogetherAI API key is required, please set 'TOGETHERAI_API_KEY' in your environment" ) @@ -155,7 +236,7 @@ def rerank( rank_fields=rank_fields, return_documents=return_documents, max_chunks_per_doc=max_chunks_per_doc, - api_key=together_key, + api_key=api_key, _is_async=_is_async, ) @@ -166,4 +247,6 @@ def rerank( return response except Exception as e: verbose_logger.error(f"Error in rerank: {str(e)}") - raise e + raise exception_type( + model=model, custom_llm_provider=custom_llm_provider, original_exception=e + ) diff --git a/litellm/router.py b/litellm/router.py index ec6159da42..2a3f583faa 100644 --- a/litellm/router.py +++ b/litellm/router.py @@ -1290,7 +1290,7 @@ class Router: raise e async def _aimage_generation(self, prompt: str, model: str, **kwargs): - model_name = "" + model_name = model try: verbose_router_logger.debug( f"Inside _image_generation()- model: {model}; kwargs: {kwargs}" diff --git a/litellm/tests/test_custom_callback_input.py b/litellm/tests/test_custom_callback_input.py index be377b78b6..e6d602e721 100644 --- a/litellm/tests/test_custom_callback_input.py +++ b/litellm/tests/test_custom_callback_input.py @@ -1351,6 +1351,37 @@ def test_logging_async_cache_hit_sync_call(): assert standard_logging_object["saved_cache_cost"] > 0 +def test_logging_standard_payload_failure_call(): + from litellm.types.utils import StandardLoggingPayload + + customHandler = CompletionCustomHandler() + litellm.callbacks = [customHandler] + + with patch.object( + customHandler, "log_failure_event", new=MagicMock() + ) as mock_client: + try: + resp = litellm.completion( + model="gpt-3.5-turbo", + messages=[{"role": "user", "content": "Hey, how's it going?"}], + mock_response="litellm.RateLimitError", + ) + except litellm.RateLimitError: + pass + + mock_client.assert_called_once() + + assert "standard_logging_object" in mock_client.call_args.kwargs["kwargs"] + assert ( + mock_client.call_args.kwargs["kwargs"]["standard_logging_object"] + is not None + ) + + standard_logging_object: StandardLoggingPayload = mock_client.call_args.kwargs[ + "kwargs" + ]["standard_logging_object"] + + def test_logging_key_masking_gemini(): customHandler = CompletionCustomHandler() litellm.callbacks = [customHandler] diff --git a/litellm/tests/test_guardrails_config.py b/litellm/tests/test_guardrails_config.py index a086c80815..bd68f71e3f 100644 --- a/litellm/tests/test_guardrails_config.py +++ b/litellm/tests/test_guardrails_config.py @@ -63,6 +63,7 @@ def test_guardrail_masking_logging_only(): assert response.choices[0].message.content == "Hi Peter!" # type: ignore + time.sleep(3) mock_call.assert_called_once() print(mock_call.call_args.kwargs["kwargs"]["messages"][0]["content"]) diff --git a/litellm/tests/test_rerank.py b/litellm/tests/test_rerank.py index 4d0fdfb344..c46f536a92 100644 --- a/litellm/tests/test_rerank.py +++ b/litellm/tests/test_rerank.py @@ -129,6 +129,47 @@ async def test_basic_rerank_together_ai(sync_mode): assert_response_shape(response, custom_llm_provider="together_ai") +@pytest.mark.asyncio() +@pytest.mark.parametrize("sync_mode", [True, False]) +async def test_basic_rerank_azure_ai(sync_mode): + import os + + litellm.set_verbose = True + + if sync_mode is True: + response = litellm.rerank( + model="azure_ai/Cohere-rerank-v3-multilingual-ko", + query="hello", + documents=["hello", "world"], + top_n=3, + api_key=os.getenv("AZURE_AI_COHERE_API_KEY"), + api_base=os.getenv("AZURE_AI_COHERE_API_BASE"), + ) + + print("re rank response: ", response) + + assert response.id is not None + assert response.results is not None + + assert_response_shape(response, custom_llm_provider="together_ai") + else: + response = await litellm.arerank( + model="azure_ai/Cohere-rerank-v3-multilingual-ko", + query="hello", + documents=["hello", "world"], + top_n=3, + api_key=os.getenv("AZURE_AI_COHERE_API_KEY"), + api_base=os.getenv("AZURE_AI_COHERE_API_BASE"), + ) + + print("async re rank response: ", response) + + assert response.id is not None + assert response.results is not None + + assert_response_shape(response, custom_llm_provider="together_ai") + + @pytest.mark.asyncio() async def test_rerank_custom_api_base(): mock_response = AsyncMock() diff --git a/litellm/types/guardrails.py b/litellm/types/guardrails.py index 57be6b0c42..4bf6064878 100644 --- a/litellm/types/guardrails.py +++ b/litellm/types/guardrails.py @@ -89,6 +89,9 @@ class LitellmParams(TypedDict): presidio_ad_hoc_recognizers: Optional[str] mock_redacted_text: Optional[dict] + # hide secrets params + detect_secrets_config: Optional[dict] + class Guardrail(TypedDict): guardrail_name: str diff --git a/litellm/types/utils.py b/litellm/types/utils.py index 6d5da5c680..d606ffeefe 100644 --- a/litellm/types/utils.py +++ b/litellm/types/utils.py @@ -1278,10 +1278,14 @@ class StandardLoggingModelInformation(TypedDict): model_map_value: Optional[ModelInfo] +StandardLoggingPayloadStatus = Literal["success", "failure"] + + class StandardLoggingPayload(TypedDict): id: str call_type: str response_cost: float + status: StandardLoggingPayloadStatus total_tokens: int prompt_tokens: int completion_tokens: int @@ -1302,6 +1306,7 @@ class StandardLoggingPayload(TypedDict): requester_ip_address: Optional[str] messages: Optional[Union[str, list, dict]] response: Optional[Union[str, list, dict]] + error_str: Optional[str] model_parameters: dict hidden_params: StandardLoggingHiddenParams diff --git a/pyrightconfig.json b/pyrightconfig.json index 051dcb9fc6..86a21c65e0 100644 --- a/pyrightconfig.json +++ b/pyrightconfig.json @@ -1,6 +1,6 @@ { "ignore": [], - "exclude": ["**/node_modules", "**/__pycache__", "litellm/tests", "litellm/main.py", "litellm/utils.py"], + "exclude": ["**/node_modules", "**/__pycache__", "litellm/tests", "litellm/main.py", "litellm/utils.py", "litellm/types/utils.py"], "reportMissingImports": false } \ No newline at end of file