Skip to content
Open
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
650369c
added toxicity detection validators
rkritika1508 Apr 1, 2026
949647d
fixed import error
rkritika1508 Apr 1, 2026
da50537
removed redundant validators
rkritika1508 Apr 2, 2026
9ab64c7
Added NSFW text validator
rkritika1508 Apr 2, 2026
b64d0e9
fixed test
rkritika1508 Apr 2, 2026
57d97b2
Merge branch 'feat/toxicity-hub-validators' into feat/toxicity-huggin…
rkritika1508 Apr 2, 2026
09b6a05
fix: profanity free validator description
dennyabrain Apr 6, 2026
f4a11fa
doc: updated details of sentence parameter
dennyabrain Apr 7, 2026
f330f1b
fix: remove vscode files
dennyabrain Apr 7, 2026
51c9266
Added integration tests
rkritika1508 Apr 7, 2026
141e5fc
Merge branch 'main' into feat/toxicity-hub-validators
rkritika1508 Apr 7, 2026
c76f829
added integration tests
rkritika1508 Apr 7, 2026
baac9e4
fix: profanity free validator description
dennyabrain Apr 6, 2026
627fb4f
Added integration tests
rkritika1508 Apr 7, 2026
8b3da89
validator config: add name to config (#79)
nishika26 Apr 7, 2026
cc0bb14
added integration tests
rkritika1508 Apr 7, 2026
3037eb8
Merge branch 'feat/toxicity-hub-validators' into feat/toxicity-huggin…
rkritika1508 Apr 7, 2026
b69883d
added integration tests
rkritika1508 Apr 7, 2026
8f67176
updated readme
rkritika1508 Apr 7, 2026
affe72d
Added installation of huggingface model in dockerfile
rkritika1508 Apr 7, 2026
8b0a183
resolved comment
rkritika1508 Apr 7, 2026
14f6dc1
removed blank line
rkritika1508 Apr 7, 2026
74f8a82
updated policies for llama guard
rkritika1508 Apr 7, 2026
6676414
fixed tests
rkritika1508 Apr 7, 2026
0d15d0c
Merge branch 'feat/toxicity-hub-validators' into feat/toxicity-huggin…
rkritika1508 Apr 7, 2026
6443c1b
updated readme and fixed llama guard inference
rkritika1508 Apr 8, 2026
af933ef
fixed test
rkritika1508 Apr 8, 2026
9b6616a
Merge branch 'feat/toxicity-hub-validators' into feat/toxicity-huggin…
rkritika1508 Apr 9, 2026
9aca5f2
Merge branch 'main' into feat/toxicity-hub-validators
rkritika1508 Apr 10, 2026
664ded8
resolved comments
rkritika1508 Apr 10, 2026
0ce6ebb
Added evaluation readme (#82)
rkritika1508 Apr 10, 2026
ba27b80
resolved comments
rkritika1508 Apr 10, 2026
d7c5eba
resolved comments
rkritika1508 Apr 10, 2026
02fd043
fixed llama guard
rkritika1508 Apr 10, 2026
d9569ba
Merge branch 'feat/toxicity-hub-validators' into feat/toxicity-huggin…
rkritika1508 Apr 10, 2026
31af2f6
Toxicity Detection validators (#80)
rkritika1508 Apr 10, 2026
a061af8
Merge branch 'main' into feat/toxicity-huggingface-model
rkritika1508 Apr 10, 2026
88c1b56
removed unnecessary changes
rkritika1508 Apr 10, 2026
5b2fe3b
fix: update default nsfw_text model to michellejieli/NSFW_text_classi…
rkritika1508 Apr 10, 2026
fd3cddc
fix: use textdetox/xlmr-large-toxicity-classifier as default nsfw_tex…
rkritika1508 Apr 10, 2026
7264771
updated readme
rkritika1508 Apr 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion backend/app/api/API_USAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ Endpoint:
Optional filters:
- `ids=<uuid>&ids=<uuid>`
- `stage=input|output`
- `type=uli_slur_match|pii_remover|gender_assumption_bias|ban_list|llm_critic|topic_relevance`
- `type=uli_slur_match|pii_remover|gender_assumption_bias|ban_list|llm_critic|topic_relevance|llamaguard_7b|profanity_free|nsfw_text`

Example:

Expand Down Expand Up @@ -442,6 +442,9 @@ From `validators.json`:
- `ban_list`
- `llm_critic`
- `topic_relevance`
- `llamaguard_7b`
- `profanity_free`
- `nsfw_text`

Source of truth:
- `backend/app/core/validators/validators.json`
Expand Down
3 changes: 3 additions & 0 deletions backend/app/api/routes/guardrails.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,9 @@ def add_validator_logs(
for log in iteration.outputs.validator_logs:
result = log.validation_result

if result is None:
continue

if suppress_pass_logs and isinstance(result, PassResult):
continue

Expand Down
4 changes: 4 additions & 0 deletions backend/app/core/enum.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,7 @@ class ValidatorType(Enum):
GenderAssumptionBias = "gender_assumption_bias"
BanList = "ban_list"
TopicRelevance = "topic_relevance"
LLMCritic = "llm_critic"
LlamaGuard7B = "llamaguard_7b"
ProfanityFree = "profanity_free"
NSFWText = "nsfw_text"
177 changes: 170 additions & 7 deletions backend/app/core/validators/README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from typing import List, Literal, Optional

from guardrails.hub import LlamaGuard7B

from app.core.validators.config.base_validator_config import BaseValidatorConfig


class LlamaGuard7BSafetyValidatorConfig(BaseValidatorConfig):
type: Literal["llamaguard_7b"]
policies: Optional[List[str]] = None

def build(self):
return LlamaGuard7B(
policies=self.policies,
on_fail=self.resolve_on_fail(),
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
from typing import Literal, Optional

from guardrails.hub import NSFWText

from app.core.validators.config.base_validator_config import BaseValidatorConfig


class NSFWTextSafetyValidatorConfig(BaseValidatorConfig):
type: Literal["nsfw_text"]
threshold: float = 0.8
validation_method: str = "sentence"
device: Optional[str] = "cpu"
model_name: Optional[str] = "textdetox/xlmr-large-toxicity-classifier"

def build(self):
return NSFWText(
threshold=self.threshold,
validation_method=self.validation_method,
device=self.device,
model_name=self.model_name,
on_fail=self.resolve_on_fail(),
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from typing import Literal

from guardrails.hub import ProfanityFree

from app.core.validators.config.base_validator_config import BaseValidatorConfig


class ProfanityFreeSafetyValidatorConfig(BaseValidatorConfig):
type: Literal["profanity_free"]

def build(self):
return ProfanityFree(
on_fail=self.resolve_on_fail(),
)
15 changes: 15 additions & 0 deletions backend/app/core/validators/validators.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,21 @@
"type": "topic_relevance",
"version": "0.1.0",
"source": "local"
},
{
"type": "llamaguard_7b",
"version": "0.1.0",
"source": "hub://guardrails/llamaguard_7b"
},
{
"type": "profanity_free",
"version": "0.1.0",
"source": "hub://guardrails/profanity_free"
},
{
"type": "nsfw_text",
"version": "0.1.0",
"source": "hub://guardrails/nsfw_text"
}
]
}
12 changes: 12 additions & 0 deletions backend/app/schemas/guardrail_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,15 @@
from app.core.validators.config.topic_relevance_safety_validator_config import (
TopicRelevanceSafetyValidatorConfig,
)
from app.core.validators.config.llamaguard_7b_safety_validator_config import (
LlamaGuard7BSafetyValidatorConfig,
)
from app.core.validators.config.nsfw_text_safety_validator_config import (
NSFWTextSafetyValidatorConfig,
)
from app.core.validators.config.profanity_free_safety_validator_config import (
ProfanityFreeSafetyValidatorConfig,
)

ValidatorConfigItem = Annotated[
Union[
Expand All @@ -32,6 +41,9 @@
LexicalSlurSafetyValidatorConfig,
LLMCriticSafetyValidatorConfig,
PIIRemoverSafetyValidatorConfig,
LlamaGuard7BSafetyValidatorConfig,
NSFWTextSafetyValidatorConfig,
ProfanityFreeSafetyValidatorConfig,
TopicRelevanceSafetyValidatorConfig,
],
Field(discriminator="type"),
Expand Down
Loading