mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-27 01:22:18 +00:00
Rebrands the legacy Javelin guardrail integration as Highflame, with
the integration rewired to call Highflame Shield's POST /v1/guard
endpoint (the canonical guardrails API in the current platform) instead
of the defunct Javelin-era /v1/guardrails/apply path.
Rebrand:
- litellm/proxy/guardrails/guardrail_hooks/javelin/ → highflame/
- litellm/types/proxy/guardrails/guardrail_hooks/javelin.py →
highflame.py (TypedDicts: HighflameGuardRequest,
HighflameGuardResponse, per-guard assessment shapes preserved as the
public contract).
- tests/guardrails_tests/test_javelin_guardrails.py →
test_highflame_guardrails.py
- docs/my-website/docs/proxy/guardrails/highflame.md (new)
- litellm/types/guardrails.py: SupportedGuardrailIntegrations.HIGHFLAME
+ HighflameGuardrailConfigModel registered.
- ui/litellm-dashboard/src/components/guardrails/guardrail_info_helpers.tsx:
Highflame UI entry (logo + name).
- Logo assets renamed javelin.png → highflame.png in two locations.
Shield /v1/guard rewrite (the actual functional change vs the old plugin):
- Single endpoint: f"{api_base}/v1/guard" (no per-guard path, no
api_version path segment — Shield is unversioned at the path level;
api_version preserved as a public config field for backward compat).
- Request body: Shield's GuardEvent shape — {content, content_type:
"prompt", action: "process_prompt", mode: "enforce", early_exit:
true}, with optional session_id from request metadata.
- Headers: existing x-highflame-apikey + new X-Product: guardrails
(selects the Cedar policy namespace). X-Account-ID / X-Project-ID
forwarded from metadata when available. x-highflame-application
forwarded when configured.
- Response: Shield's {decision, reason, audit_id, request_id, ...}
synthesized into HighflameGuardResponse {assessments: [...]} so
downstream LiteLLM code typed against the existing per-guard
TypedDicts (HighflamePromptInjectionAssessment, HighflameTrustSafetyAssessment,
etc.) keeps working unchanged. Per-guard shapes get neutral defaults
plus request_reject + reject_prompt from Shield's deny reason.
- 5xx from Shield → passthrough (allow + warn) per firehog's
pattern in highflame-firehog/src/client/shield.rs:202-238. 4xx → log
error with body, passthrough so a misconfigured guardrail doesn't
fail-closed the LiteLLM proxy.
Public surface preserved: HighflameGuardrail class signature, all
TypedDicts in litellm.types.proxy.guardrails.guardrail_hooks.highflame,
guardrail_name config values (trustsafety, promptinjectiondetection,
lang_detector, dlp_gcp, highflame_guard), hook integration points.
Existing user configs continue to work — only the backend wire shape
changes.
Tests in tests/guardrails_tests/test_highflame_guardrails.py mock
Shield's /v1/guard backend across the deny/allow/multi-guard/metadata
scenarios. 10/10 passing.
|
||
|---|---|---|
| .. | ||
| agent_tests | ||
| audio_tests | ||
| basic_proxy_startup_tests | ||
| batches_tests | ||
| benchmarks | ||
| code_coverage_tests | ||
| documentation_tests | ||
| enterprise | ||
| guardrails_tests | ||
| image_gen_tests | ||
| litellm | ||
| litellm-proxy-extras | ||
| litellm_core_utils | ||
| litellm_utils_tests | ||
| llm_responses_api_testing | ||
| llm_translation | ||
| load_tests | ||
| local_testing | ||
| logging_callback_tests | ||
| mcp_tests | ||
| multi_instance_e2e_tests | ||
| ocr_tests | ||
| old_proxy_tests/tests | ||
| openai_endpoints_tests | ||
| otel_tests | ||
| pass_through_tests | ||
| pass_through_unit_tests | ||
| proxy_admin_ui_tests | ||
| proxy_e2e_anthropic_messages_tests | ||
| proxy_security_tests | ||
| proxy_unit_tests | ||
| router_unit_tests | ||
| scim_tests | ||
| search_tests | ||
| spend_tracking_tests | ||
| store_model_in_db_tests | ||
| test_litellm | ||
| unified_google_tests | ||
| vector_store_tests | ||
| windows_tests | ||
| __init__.py | ||
| _flush_vcr_cache.py | ||
| _vcr_conftest_common.py | ||
| _vcr_redis_persister.py | ||
| eval_swe_bench.py | ||
| gettysburg.wav | ||
| large_text.py | ||
| openai_batch_completions.jsonl | ||
| README.MD | ||
| test_budget_management.py | ||
| test_callbacks_on_proxy.py | ||
| test_config.py | ||
| test_debug_warning.py | ||
| test_default_encoding_non_root.py | ||
| test_end_users.py | ||
| test_entrypoint.py | ||
| test_fallbacks.py | ||
| test_gpt5_azure_temperature_support.py | ||
| test_health.py | ||
| test_keys.py | ||
| test_litellm_proxy_responses_config.py | ||
| test_logging.conf | ||
| test_models.py | ||
| test_new_vector_store_endpoints.py | ||
| test_openai_endpoints.py | ||
| test_organizations.py | ||
| test_otel_thread_leak.py | ||
| test_passthrough_endpoints.py | ||
| test_presidio_latency.py | ||
| test_proxy_server_non_root.py | ||
| test_ratelimit.py | ||
| test_resource_cleanup.py | ||
| test_service_logger_otel.py | ||
| test_spend_logs.py | ||
| test_team.py | ||
| test_team_logging.py | ||
| test_team_members.py | ||
| test_users.py | ||
In total litellm runs 1000+ tests
[02/20/2025] Update:
To make it easier to contribute and map what behavior is tested,
we've started mapping the litellm directory in tests/test_litellm
This folder can only run mock tests.