smlflg's picture
Initial public upload from Projekte/PromptBoost (part 5)
638c806 verified
Raw History Blame Contribute Delete
1.5 kB
"""Public no-new-facts guard helpers."""
from __future__ import annotations
from typing import Any
ALLOWED_REWRITE_TERMS = {
"acceptance",
"adapter",
"app",
"boost",
"boosted",
"calling",
"compiler",
"entry",
"expose",
"focused",
"local",
"paid",
"persist",
"prompt",
"promptboost",
"runs",
"services",
"storage",
"using",
"without",
}
def check_no_new_facts(
original: str | None = None,
candidate: str | None = None,
raw_prompt: str | None = None,
boosted_prompt: str | None = None,
source: str | None = None,
output: str | None = None,
**_: Any,
) -> dict[str, Any]:
from promptboost.pipeline import evaluate_no_new_facts
before = original or raw_prompt or source or ""
after = candidate or boosted_prompt or output or ""
result = evaluate_no_new_facts(before, after, {"compat": {"allowed_terms": sorted(ALLOWED_REWRITE_TERMS)}})
data = result.model_dump()
data["ok"] = result.passed
data["new_facts"] = result.suspected_new_facts
data["violations"] = result.suspected_new_facts
return data
def ensure_no_new_facts(*args: Any, **kwargs: Any) -> dict[str, Any]:
return check_no_new_facts(*args, **kwargs)
def validate_no_new_facts(*args: Any, **kwargs: Any) -> dict[str, Any]:
return check_no_new_facts(*args, **kwargs)
def guard_no_new_facts(*args: Any, **kwargs: Any) -> dict[str, Any]:
return check_no_new_facts(*args, **kwargs)