DrugMan9o/agent-skills

Saisissez un ensemble de paramètres de procédé de cristallisation (ou demandez directement une optimisation) pour obtenir le front de Pareto complet respectant des contraintes multiples (rendement ≥60 %, pureté ≥99 %, taille de particule D50 ∈ [10,50] μm, facteur de similarité de dissolution f2 ≥50) ainsi que les indicateurs de qualité prédits, avec une comparaison quantitative par rapport à la littérature de référence.

Qu'est-ce que agent-skills ?

Cette compétence d'agent est conçue pour l'optimisation multi-objectifs des procédés de cristallisation pharmaceutique, notamment pour des substances comme l'amoxicilline. Elle transforme une demande d'optimisation de procédé (un ensemble de paramètres ou une section à optimiser) en un jeu complet de solutions Pareto-optimales, vérifiées par rapport à des contraintes industrielles et réglementaires (rendement, pureté, taille de particule, similarité de dissolution f2). Son cœur est un modèle de cinétique déterministe interprétable (jumeau numérique) qui mappe 6 variables de procédé (température, vitesse de refroidissement, sursaturation initiale, taux d'ensemencement, vitesse d'agitation, temps de maturation) vers 4 indicateurs de qualité. La compétence orchestre un pipeline multi-agents : un agent « Littérature » ancre les modèles aux données publiées, un « Modélisateur Cinétique » résout l'équation de bilan de population (PBE) par la méthode des moments, un « Optimiseur » exécute NSGA-II pour générer le front de Pareto, un agent « Risque/Réglementaire » vérifie la conformité aux CQA, et un « Réviseur » indépendant valide l'ensemble. Elle supporte des modes d'exécution variés : évaluation d'un point de fonctionnement unique, optimisation multi-objectifs complète, analyse de sensibilité (température, pH, vitesse de refroidissement), génération de graphiques de dissolution, ou explication détaillée du processus d'optimisation. L'agent communique avec le noyau de calcul via une interface CLI en JSON, ce qui la rend intégrable dans des environnements comme Claude Code, Cursor ou Codex. Les résultats incluent le front de Pareto, un point de genou, les extrêmes, les rapports des agents, l'analyse de robustesse et une validation par processus gaussien et optimisation bayésienne.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/DrunkMan9o/agent-skills/tree/HEAD/skills/pharma-crystallization-optimization

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Optimisation multi-objectifs du procédé de cristallisation pharmaceutique

Utilisation

Faire passer un besoin d'optimisation d'un procédé de cristallisation, d'« un ensemble de paramètres / une section à optimiser » à « l'obtention d'un jeu complet de solutions de procédé optimales, reproductibles et quantitativement comparées aux données de la littérature ».

Le cœur est un modèle cinétique déterministe interprétable (jumeau numérique) qui mappe 6 variables de procédé vers 4 indicateurs de qualité (rendement / pureté / taille de particule D50 / facteur de similarité de dissolution f2). Cette compétence orchestre le processus : identification du besoin → appel au noyau de calcul → interprétation du front de Pareto → sortie des conclusions comparatives avant/après optimisation.

Méthode centrale (noyau cinétique interprétable)

ModuleImplémentationAncrage dans la littérature
Courbe de solubilitéVan't Hoff : C*(T)=4.48·exp[8.3/R·(1/293−1/T)]Niveau A : Biowaiver Monograph 2017 (20°C 4.48 mg/mL)
Vitesse de nucléationB = kb·max(σ−0.3,0)⁴ + kb2·G·μ2·f_mixing(agitation)Théorie classique primaire + couplage croissance secondaire ; seuil S=4.5 (Tian Binbin 2015)
Vitesse de croissanceG = kg·σ^m, m=1.9955 (croissance par dislocation spirale BCF)Niveau A : Tian Binbin et al., Chemical Engineering 2015 (données expérimentales)
Équation de bilan de population (PBE)Méthode des moments, récurrence μ0…μ4, bilan de matière entièrement couplé concentration-momentsNiveau B : Randolph & Larson, méthode des moments

Méthode d'optimisation (multi-objectifs + multi-agents)

  • Sortie principale : Front de Pareto complet NSGA-II à 4 objectifs (80 solutions non-dominées + point genou + extrêmes max-f₂/max-rendement), objectifs = rendement↑ / pureté↑ / f2↑ / taille de particule ciblée 30μm↑.
  • Auxiliaire : Processus gaussien (GP, noyau RBF + bruit blanc, hyperparamètres appris par vraisemblance marginale logarithmique LML) + optimisation bayésienne (EI de type EGO), utilisé comme point de référence scalar pour la validation croisée.
  • Pipeline à cinq agents : Littérature (gardien de l'ancrage à la littérature) → Modélisateur cinétique (solveur PBE + autocontrôle du bilan de matière) → Optimiseur (front de Pareto) → Risque/Réglementaire (critères réglementaires + CQA) → Réviseur (révision indépendante, verdict PASS/FAIL).
  • Analyse de sensibilité : Détermination de la robustesse sous perturbations de température ±1°C / pH ±0,1 / vitesse de refroidissement ±10%.

Conditions de déclenchement (quand charger cette compétence)

Charger cette compétence si l'un des scénarios suivants se présente :

  • L'utilisateur donne des paramètres de procédé de cristallisation et demande une évaluation des indicateurs de qualité ou de la conformité.
  • L'utilisateur demande d'« optimiser / rechercher / trouver l'optimum » des paramètres de procédé pour une section de cristallisation.
  • L'utilisateur mentionne des objectifs de qualité tels que rendement / pureté / taille de particule D50 / f2 de dissolution et fait référence à la cristallisation.
  • L'utilisateur demande une évaluation de la similarité de dissolution (f2) entre un médicament générique et un médicament de référence.
  • L'utilisateur fournit une courbe de dissolution de référence ou une ligne de base issue de la littérature et demande une comparaison.

Mots-clés déclencheurs : optimisation de procédé de cristallisation, recherche de paramètres de cristallisation, optimisation multi-objectifs de procédé, cristallisation de génériques, fenêtre de taille de particule, f2 de dissolution, courbe de refroidissement, stratégie d'ensemencement, contrôle de sursaturation, cristallisation de l'amoxicilline, front de Pareto, bilan de population.

Format d'entrée et de sortie

Entrée

Une fois la compétence chargée par l'IA dans la session, le noyau de calcul est piloté en exécutant scripts/crystallization.py (entrée standard au format JSON). Protocole d'entrée CLI :

{
  "mode": "evaluate | optimize | sensitivity | agents | dissolution_plot | explain",
  "params": {                       // Obligatoire pour le mode evaluate, 6 variables de procédé
    "T_cryst_C": 15,                // Température de cristallisation °C, [5, 25]
    "r_cool_C_per_min": 0.2,        // Vitesse de refroidissement °C/min, [0.05, 1.0]
    "S0": 1.8,                      // Sursaturation initiale (sans dimension), [1.2, 2.5]
    "seed_wt_pct": 2,               // Quantité d'ensemencement % en masse, [0, 5.0]
    "stir_rpm": 300,                // Vitesse d'agitation tr/min, [100, 600]
    "hold_t_min": 120               // Temps de maturation min, [30, 240]
  },
  "seed": 42                        // Optionnel pour les modes optimize/agents, graine aléatoire (par défaut 42, déterministe et reproductible)
}

Sortie

Le noyau de calcul émet sur stdout une ligne JSON. Exemple avec mode=optimize, champs essentiels :

{
  "params": {"T_cryst_C": 5.9, "r_cool_C_per_min": 0.11, "S0": 1.9, "seed_wt_pct": 4.58, "stir_rpm": 586, "hold_t_min": 238},
  "metrics": {"yield_pct": 67.75, "purity_pct": 99.44, "D50_um": 44.26, "D90_um": 116.0, "f2": 79.13},
  "score": 174.88,
  "pareto": {"n_pareto": 80, "knee_point": {...}, "extremes": {"max_f2": {...}, "max_yield": {...}}, "pareto_front": [...]},
  "agents": {"literature": {...}, "kinetics": {...}, "optimizer": {...}, "risk_regulatory": {...}, "reviewer": {"verdict": "PASS", ...}},
  "sensitivity": {"robustness": {"conclusion": "Robuste : f2 reste ≥50 sous perturbations des trois facteurs", ...}},
  "surrogate_cv": {"r2_mean": 0.74, ...},
  "bo_trace": [...],
  "cqa_coverage": {...}
}

L'IA interprète les résultats JSON en conclusions compréhensibles pour l'humain, selon le format de la section « Interprétation des résultats » de ce document.

Étapes d'exécution (flux de travail standard)

Exécuter dans l'ordre, le résultat de chaque étape déterminant l'étape suivante :

  1. Identifier le besoin : Confirmer l'API et la section cibles ; déterminer si l'utilisateur souhaite « évaluer un seul jeu de paramètres » ou « rechercher les paramètres optimaux ».
  2. Déterminer la référence : Lire la ligne de base du procédé classique de la littérature (ou fournie par l'utilisateur) ; la ligne de base par défaut pour l'amoxicilline se trouve dans references/tuning-guide.md.
  3. Optimisation multi-objectifs (optimize) : Appeler mode=optimize, la sortie principale est le front de Pareto complet (NSGA-II, 80 solutions non-dominées).
  4. Évaluation des résultats (evaluate) : Pour la ou les solutions candidates, appeler mode=evaluate et vérifier checks.all_satisfied ainsi que les grandeurs du processus PBE.
  5. Révision indépendante : L'agent Réviseur vérifie de manière indépendante la non-dominance, la faisabilité du front et fournit un verdict PASS/FAIL.
  6. Afficher les conclusions : Donner le front de Pareto + le point genou/extrêmes + la comparaison avant/après pour les quatre indicateurs + les conclusions de l'analyse de sensibilité + une déclaration des limites.

Dépendances

TypeDépendanceDescription
ExécutionPython 3 (l'un de python3 / python / py doit être disponible)Exécution du noyau de calcul
Bibliothèque numériqueNumPy 2.5.4Calculs vectorisés pour le processus gaussien et NSGA-II (pip install numpy==2.5.4)
Fichier centralscripts/crystallization.pyNoyau cinétique interprétable (PBE) + optimisation multi-objectifs + pipeline 5 agents, seul exécutable logique de cette compétence
Documentation de référencereferences/install-and-usage.mdInstructions d'installation, d'enregistrement et exemples d'utilisation
Documentation de référencereferences/tuning-guide.mdSignification physique, plages de valeurs et impact de tous les paramètres réglables
Ressources externesAucuneAutonome, ne nécessite pas de connexion réseau ni d'appel d'API externe

Appel du noyau de calcul (CLI)

# evaluate : Évaluer un seul jeu de paramètres
echo '{"mode":"evaluate","params":{...}}' | python scripts/crystallization.py

# optimize : Sortie du front de Pareto complet (principal) + points de référence GP-BO
echo '{"mode":"optimize","seed":42}' | python scripts/crystallization.py

# sensitivity : Analyse de sensibilité (T±1°C/pH±0.1/refroidissement±10%)
echo '{"mode":"sensitivity","params":{...}}' | python scripts/crystallization.py

# explain : Explication complète de ce que l'optimisation a fait (carte du modèle / espace de recherche / poids / contraintes, totalement transparent)
echo '{"mode":"explain"}' | python scripts/crystallization.py

Interprétation des résultats

  • pareto.n_pareto → Nombre de solutions non-dominées sur le front de Pareto ; knee_point est la solution de compromis dont la distance au point idéal est minimale.
  • metrics.f2 >= 50 → La courbe de dissolution est « similaire » à celle du produit de référence (critère de pont de bioéquivalence FDA/CDE) ; f2 < 50 est considéré comme non similaire.
  • agents.reviewer.verdict = PASS → La non-dominance, la faisabilité et la comparaison à la référence du front sont toutes approuvées par la révision indépendante.
  • sensitivity.robustness.f2_stays_above_50 → Indique si f2 reste ≥50 sous perturbations (robustesse opérationnelle).
  • bo_trace → 64 évaluations individuelles tracées (paramètres/score/source/hyperparamètres GP/EI), le processus d'optimisation est entièrement vérifiable.

Déclaration des limites

La sortie de cette compétence est un outil de recherche et de pré-sélection de procédé, basé sur un noyau cinétique interprétable (non un substitut aux expériences GMP). Les conclusions finales de bioéquivalence doivent être étayées par des expériences réelles et des données de dossier réglementaire. Définition du rendement : Dans ce modèle, le rendement est calculé sur la base d'un bilan de matière (solide précipité / solide en solution), ce qui diffère du « rendement global » de la littérature. Voir references/tuning-guide.md pour plus de détails.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés