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.