Mankinds SDK
Le SDK expose l'API publique /api/v1: déclarer un système IA, connecter une cible, générer ou importer un dataset, lancer des évaluations, appliquer un quality gate CI, puis récupérer scorecards, findings, remediations et evidence packs.
Il n'expose pas les routes d'administration Mankinds, les routes internes webapp, OAuth interactif, Copilot, ontology internals, users, roles ou settings d'organisation.
Installation
pip install mankinds-sdk>=2.0.0
Quickstart SDK
import os
from mankinds_sdk import MankindsClient
client = MankindsClient(api_key=os.environ["MANKINDS_API_KEY"])
system = client.systems.create({
"name": "Assistant Support",
"description": "Assistant support client pour les questions de facturation et de compte.",
})
connection = client.connections.create(system["id"], {
"name": "API de préproduction",
"config": {
"connector_type": "custom_api",
"url": "https://api.example.com/chat",
"method": "POST",
"body": {"message": "{{input}}"},
"input_path": "message",
"output_path": "reply",
},
})
Les opérations longues retournent un job. Le polling passe par client.jobs.wait(...).
job = client.datasets.generate(system["id"], {"scenarioCount": 20})
dataset = client.jobs.wait(job["id"])
client.datasets.validate(system["id"])
Le lancement est asynchrone. L'attente est explicite.
run = client.evaluations.run({
"systemId": system["id"],
"profile": "required",
"connectionId": connection["id"],
})
evaluation = client.evaluations.wait(run["evaluation_id"])
print(evaluation.get("summary", {}).get("overall_score"))
CI Quality Gate
Les agents permettent de bloquer une CI. Configurez un gate, déclenchez un run CI, puis attendez le résultat. Si le gate échoue, le SDK v2 lève une erreur typée GateFailedError.
agents = client.agents.list({"systemId": system["id"]})
agent = agents[0]
client.gates.update(agent["id"], {
"overall_score_min": 0.85,
"max_failed_criteria": 0,
})
run = client.agents.run(agent["id"], {
"triggerSource": "ci",
"metadata": {
"commit_sha": os.environ.get("GITHUB_SHA"),
"pr_number": os.environ.get("PR_NUMBER"),
},
})
client.agents.wait_for_gate(agent["id"], run["id"])
Namespaces
| Namespace | Rôle |
|---|---|
client.whoami() | Inspecter l'organisation et l'acteur authentifié. |
client.systems | Créer, lister, lire, mettre à jour et supprimer les systèmes IA. |
client.connections | Créer des connexions cible, les tester et définir la connexion par défaut. |
client.datasets | Générer, importer, lire, mettre à jour et valider les datasets. Python utilise import_. |
client.testPlans / client.test_plans | Générer et lire les test plans système. |
client.evaluations | Lancer, lister, lire, annuler et attendre explicitement les évaluations. |
client.jobs | Polling des jobs asynchrones. |
client.agents | Lister les agents, déclencher des runs CI et attendre les gates. |
client.gates | Lire et mettre à jour les quality gates. |
client.evidence | Récupérer les evidence packs machine-readable. |
client.findings | Lister les findings confirmés. |
client.remediation | Lister les actions de remédiation. |
Modèle asynchrone
La génération dataset, la génération test plan et les opérations longues retournent un JobRef.
job = client.test_plans.generate(
system["id"],
{"nbTests": 5},
)
result = client.jobs.wait(job["id"], timeout_ms=15 * 60 * 1000, interval_ms=5000)
Scopes
Les clés API sont scopées. L'organisation est dérivée de la clé; n'envoyez jamais organizationId.
Lors de la création d'une clé dans l'app, choisissez un usage :
| Usage | Autorise |
|---|---|
| Accès CI | Lancer un run d'agent et lire son résultat. |
| Accès SDK | Utiliser toutes les opérations publiques du SDK pour l'organisation. |
L'app n'expose pas de sélection de scopes personnalisés. Des scopes bruts peuvent encore apparaître sur les clés legacy ou les clés créées via des APIs bas niveau.
Référence REST
La référence REST publique est décrite par la spec OpenAPI /mankinds.yaml. Elle ne contient que les routes /api/v1.