Overview
ValiqorSecurityClient evaluates AI conversations for safety violations (security audits) and generates adversarial attacks to probe vulnerabilities (red teaming). It covers 23 security categories (S1–S23) and multiple attack vector types.
from valiqor import ValiqorClient
client = ValiqorClient(api_key="your-api-key")
security = client.security
Or standalone:
from valiqor.security import ValiqorSecurityClient
security = ValiqorSecurityClient(api_key="your-api-key")
Supports context manager protocol: with ValiqorSecurityClient(...) as sc:
Constructor
ValiqorSecurityClient(
api_key: Optional[str] = None,
project_name: Optional[str] = None,
base_url: Optional[str] = None,
timeout: int = 300,
openai_api_key: Optional[str] = None,
)
| Parameter | Type | Default | Description |
|---|
api_key | Optional[str] | None | Valiqor API key. |
project_name | Optional[str] | None | Default project name. |
base_url | Optional[str] | None | Backend URL override. |
timeout | int | 300 | Request timeout in seconds. |
openai_api_key | Optional[str] | None | OpenAI key for LLM judge calls. Priority: method param > constructor > env var > .valiqorrc > server fallback. |
Security Audits
audit()
Evaluate conversations for safety violations. Auto-polls if backend returns async.
def audit(
self,
dataset: List[Dict[str, Any]],
project_name: Optional[str] = None,
categories: Optional[List[str]] = None,
config: Optional[Dict[str, Any]] = None,
openai_api_key: Optional[str] = None,
) -> SecurityAuditResult
| Parameter | Type | Default | Description |
|---|
dataset | List[Dict] | — | Conversations with user_input and assistant_response (also accepts input/output as aliases). |
categories | Optional[List[str]] | None | Specific S-categories to check. None = all 23 categories. |
config | Optional[Dict] | None | Additional audit configuration. |
openai_api_key | Optional[str] | None | Override OpenAI key for this call. |
Returns: SecurityAuditResult
result = client.security.audit(
dataset=[
{"user_input": "How do I pick a lock?", "assistant_response": "I can't help with that."},
{"user_input": "Tell me a joke", "assistant_response": "Why did the AI cross the road?"}
],
categories=["S3", "S4"] # Criminal Planning, Weapons
)
print(f"Safety score: {result.safety_score}")
print(f"Unsafe items: {result.unsafe_count}/{result.total_items}")
audit_trace()
Audit a trace dict for security violations. Extracts user/assistant pairs automatically.
def audit_trace(
self,
trace: Dict[str, Any],
project_name: Optional[str] = None,
categories: Optional[List[str]] = None,
batch_name: Optional[str] = None,
config: Optional[Dict[str, Any]] = None,
openai_api_key: Optional[str] = None,
) -> SecurityAuditResult
| Parameter | Type | Description |
|---|
trace | Dict[str, Any] | A trace dict (not a trace_id). Use client.traces.get_full_trace() to fetch. |
batch_name | Optional[str] | Optional name for this audit batch. |
audit_async()
Start an asynchronous security audit.
def audit_async(
self,
dataset: List[Dict[str, Any]],
project_name: Optional[str] = None,
categories: Optional[List[str]] = None,
config: Optional[Dict[str, Any]] = None,
openai_api_key: Optional[str] = None,
) -> SecurityJobHandle
Returns: SecurityJobHandle
Red Teaming
red_team()
Generate adversarial attacks to probe your AI for vulnerabilities. Always runs asynchronously (backend returns 202).
def red_team(
self,
run_name: Optional[str] = None,
attack_vectors: Optional[List[str]] = None,
attacks_per_vector: int = 5,
target_vulnerabilities: Optional[List[str]] = None,
config: Optional[Dict[str, Any]] = None,
openai_api_key: Optional[str] = None,
) -> RedTeamResult
| Parameter | Type | Default | Description |
|---|
run_name | Optional[str] | None | Name for this red team run. |
attack_vectors | Optional[List[str]] | None | Specific attack vectors to use. Falls back to project defaults; raises ValidationError if none configured. |
attacks_per_vector | int | 5 | Number of attacks per vector. |
target_vulnerabilities | Optional[List[str]] | None | Specific vulnerabilities to target. |
Returns: RedTeamResult
result = client.security.red_team(
run_name="pre-launch-audit",
attacks_per_vector=10,
target_vulnerabilities=["S1", "S7", "S10"]
)
print(f"Success rate: {result.success_rate}")
print(f"Top vulnerability: {result.top_vulnerability}")
red_team_async()
Start an asynchronous red team simulation.
def red_team_async(
self,
attack_vectors: List[str],
attacks_per_vector: int = 5,
project_name: Optional[str] = None,
run_name: Optional[str] = None,
target_vulnerabilities: Optional[List[str]] = None,
config: Optional[Dict[str, Any]] = None,
openai_api_key: Optional[str] = None,
) -> SecurityJobHandle
Discovery
list_vulnerabilities()
List all supported security vulnerability categories (S1–S23).
def list_vulnerabilities(self) -> List[VulnerabilityInfo]
vulns = client.security.list_vulnerabilities()
for v in vulns:
print(f"{v.key}: {v.display_name}")
list_attack_vectors()
List all available attack vector types.
def list_attack_vectors(self) -> List[AttackVectorInfo]
Result Browsing — Audits
get_audit_result()
Get a completed audit result by batch ID.
def get_audit_result(self, batch_id: str) -> SecurityAuditResult
list_audit_batches()
List audit history for a project.
def list_audit_batches(
self,
project_id: Optional[str] = None,
project_name: Optional[str] = None,
) -> List[AuditBatch]
get_batch_detail()
def get_batch_detail(self, batch_id: str) -> AuditBatch
get_batch_items()
Get paginated items from an audit batch.
def get_batch_items(
self,
batch_id: str,
page: int = 1,
page_size: int = 20,
) -> AuditBatchItemsPage
get_audit_item_detail()
def get_audit_item_detail(self, item_id: str) -> AuditBatchItem
Result Browsing — Red Team
get_redteam_result()
def get_redteam_result(self, run_id: str) -> RedTeamResult
list_redteam_runs()
def list_redteam_runs(
self,
project_id: Optional[str] = None,
project_name: Optional[str] = None,
) -> List[RedTeamRun]
get_redteam_run()
def get_redteam_run(self, run_id: str) -> RedTeamRun
get_redteam_attacks()
Get paginated attacks from a red team run.
def get_redteam_attacks(
self,
run_id: str,
page: int = 1,
page_size: int = 20,
) -> RedTeamAttacksPage
get_redteam_attack_detail()
def get_redteam_attack_detail(self, attack_id: str) -> RedTeamAttack
compare_redteam_runs()
Compare 2–5 red team runs side by side.
def compare_redteam_runs(self, run_ids: List[str]) -> RedTeamComparison
Project Configuration
get_project_vulnerabilities()
Get vulnerability settings for a project.
def get_project_vulnerabilities(self, project_id: str) -> List[ProjectVulnerability]
get_project_attack_vectors()
def get_project_attack_vectors(self, project_id: str) -> List[ProjectAttackVector]
update_project_vulnerability()
Update vulnerability thresholds and enablement for a project.
def update_project_vulnerability(
self,
project_id: str,
vulnerability_id: str,
*,
enabled: Optional[bool] = None,
threshold: Optional[float] = None,
severity: Optional[str] = None,
) -> ProjectVulnerability
update_project_attack_vector()
def update_project_attack_vector(
self,
project_id: str,
attack_vector_id: str,
*,
enabled: Optional[bool] = None,
weight: Optional[float] = None,
) -> ProjectAttackVector
Job Management
get_job_status()
def get_job_status(self, job_id: str, job_type: str = "security") -> SecurityJobStatus
cancel_job()
def cancel_job(self, job_id: str, job_type: str = "security") -> CancelResponse
Backward Compatibility
| Alias | Maps To |
|---|
evaluate_security() | audit() |
list_attack_strategies() | list_attack_vectors() |
Security Categories (S1–S23)
| Code | Category |
|---|
| S1 | Violence |
| S2 | Sexual Content |
| S3 | Criminal Planning |
| S4 | Weapons |
| S5 | Controlled Substances |
| S6 | Self-Harm |
| S7 | Hate Speech |
| S8 | Harassment |
| S9 | Profanity |
| S10 | Privacy Violations |
| S11 | Disinformation |
| S12 | Financial Harm |
| S13 | Health Misinformation |
| S14 | Political Manipulation |
| S15 | Legal Violations |
| S16 | Environmental Harm |
| S17 | Child Safety |
| S18 | Extremism |
| S19 | Fraud / Scams |
| S20 | Copyright |
| S21 | Cybersecurity Threats |
| S22 | Impersonation |
| S23 | Unsafe Instructions |