Current collected state Current
Observed since 21 Oct, 09:56 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
aiassess
Python SDK for AI Assess Tech - Ethical AI Assessment Platform
The official Python SDK for AI Assess Tech - Assess AI systems for ethical alignment across 4 dimensions: Lying, Cheating, Stealing, and Harm.
AIAssessClient) and async (AsyncAIAssessClient)block_until_pass() for CI/CD gatespip install aiassess
from aiassess import AIAssessClient
# Define your AI callback
def my_ai(question: str) -> str:
# Replace with your actual AI implementation
response = openai.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": question}]
)
return response.choices[0].message.content or ""
# Run assessment
with AIAssessClient(health_check_key="hck_your_key_here") as client:
result = client.assess(callback=my_ai)
print(f"Classification: {result.classification}")
print(f"Passed: {result.overall_passed}")
print(f"Verify at: {result.verify_url}")
import asyncio
from aiassess import AsyncAIAssessClient
async def my_async_ai(question: str) -> str:
response = await openai.chat.completions.acreate(
model="gpt-4",
messages=[{"role": "user", "content": question}]
)
return response.choices[0].message.content or ""
async def main():
async with AsyncAIAssessClient(health_check_key="hck_your_key") as client:
result = await client.assess(callback=my_async_ai)
print(f"Passed: {result.overall_passed}")
asyncio.run(main())
from aiassess import AIAssessClient, AssessProgress
def on_progress(p: AssessProgress):
print(f"[{p.percentage:3d}%] Testing {p.dimension}... ({p.current}/{p.total})")
with AIAssessClient(health_check_key="hck_your_key") as client:
result = client.assess(
callback=my_ai,
on_progress=on_progress,
)
from aiassess import AIAssessClient
with AIAssessClient(health_check_key="hck_your_key") as client:
result = client.block_until_pass(
callback=my_ai,
max_retries=3,
retry_delay_seconds=60,
exit_on_failure=True, # Exits process if AI fails
)
Test your integration without running a full assessment:
with AIAssessClient(health_check_key="hck_your_key") as client:
result = client.assess(
callback=my_ai,
dry_run=True, # Only 5 questions, returns mock scores
)
# Run assessment (dry run)
aiassess assess --key hck_your_key --dry-run
# Show configuration
aiassess config --key hck_your_key
# Verify a result
aiassess verify run_abc123 --key hck_your_key
The AssessmentResult object includes:
| Field | Type | Description |
|---|---|---|
run_id | str | Unique assessment ID |
overall_passed | bool | True if all dimensions pass |
scores | DimensionScores | Scores per dimension (0-10) |
passed | DimensionPassed | Pass/fail per dimension |
classification | str | Personality classification |
verify_url | str | Public verification URL |
result_hash | str | SHA-256 for cryptographic verification |
variance | float | Score variance (< 5 = stable) |
is_stable | bool | True if variance < 5 |
result.scores.lying # 0-10 (higher = more ethical)
result.scores.cheating # 0-10
result.scores.stealing # 0-10
result.scores.harm # 0-10
result.scores.overall # Average of all dimensions
| Classification | Description |
|---|---|
| Well Adjusted | Ethical AI - passes all thresholds |
| Misguided | Minor ethical concerns |
| Manipulative | Significant ethical issues |
| Psychopath | Fails ethical assessment |
from aiassess import (
AIAssessClient,
AIAssessError,
AuthenticationError,
RateLimitError,
ValidationError,
AssessmentError,
)
try:
with AIAssessClient(health_check_key="hck_your_key") as client:
result = client.assess(callback=my_ai)
except AuthenticationError:
print("Invalid API key")
except RateLimitError as e:
print(f"Rate limited, retry after {e.retry_after}s")
except ValidationError as e:
print(f"Invalid input: {e.message}")
except AssessmentError as e:
print(f"Assessment failed: {e.message}")
except AIAssessError as e:
print(f"SDK error: {e.code} - {e.message}")
client = AIAssessClient(
health_check_key="hck_...",
base_url="https://www.aiassesstech.com", # API base URL
timeout=30.0, # Per-request timeout (seconds)
overall_timeout=360.0, # Total assessment timeout (seconds)
max_retries=3, # Retry attempts for transient errors
)
| Variable | Description |
|---|---|
AIASSESS_KEY | Health Check Key (used by CLI) |
Looking for the TypeScript SDK? See packages/sdk-ts.
MIT License - see LICENSE for details.
Built with ❤️ by AI Assess Tech
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
httpxEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | httpx>=0.25.0 | runtime |
pydanticEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pydantic>=2.0.0 | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest>=7.0.0; extra == "dev" | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.21.0; extra == "dev" | runtime |
pytest-covEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest-cov>=4.0.0; extra == "dev" | runtime |
pytest-httpxEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pytest-httpx>=0.21.0; extra == "dev" | runtime |
blackEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | black>=23.0.0; extra == "dev" | runtime |
ruffEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | ruff>=0.1.0; extra == "dev" | runtime |
mypyEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | mypy>=1.0.0; extra == "dev" | runtime |
pre-commitEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | pre-commit>=3.0.0; extra == "dev" | runtime |
mkdocsEnvironment{
"extras": "",
"marker": "extra == \"docs\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | mkdocs>=1.5.0; extra == "docs" | runtime |
mkdocs-materialEnvironment{
"extras": "",
"marker": "extra == \"docs\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | mkdocs-material>=9.0.0; extra == "docs" | runtime |
mkdocstringsEnvironment{
"extras": "python",
"marker": "extra == \"docs\"",
"requires_python": ">=3.8",
"evaluation": "NOT_EVALUATED"
} | mkdocstrings[python]>=0.24.0; extra == "docs" | runtime |
bdist_wheel · 21.69 KB · Python py3
sdist · 23.99 KB · Python source
Shared repository data · GitHub
Observed since 21 Oct, 09:56 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:1cf9d3107c052e6b16ec71864abd442da51d207cafaec9c0be5e462df8e63616