Aller au contenu principal

Mankinds SDK

Choisissez votre langage :

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​

Initialiser
import os
from mankinds_sdk import MankindsClient

client = MankindsClient(api_key=os.environ["MANKINDS_API_KEY"])
Créer un système et une connexion
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",
},
})
Générer ou importer un dataset

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"])
Lancer une évaluation

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​

NamespaceRôle
client.whoami()Inspecter l'organisation et l'acteur authentifié.
client.systemsCréer, lister, lire, mettre à jour et supprimer les systèmes IA.
client.connectionsCréer des connexions cible, les tester et définir la connexion par défaut.
client.datasetsGénérer, importer, lire, mettre à jour et valider les datasets. Python utilise import_.
client.testPlans / client.test_plansGénérer et lire les test plans système.
client.evaluationsLancer, lister, lire, annuler et attendre explicitement les évaluations.
client.jobsPolling des jobs asynchrones.
client.agentsLister les agents, déclencher des runs CI et attendre les gates.
client.gatesLire et mettre à jour les quality gates.
client.evidenceRécupérer les evidence packs machine-readable.
client.findingsLister les findings confirmés.
client.remediationLister 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 :

UsageAutorise
Accès CILancer un run d'agent et lire son résultat.
Accès SDKUtiliser 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.