> ## Documentation Index
> Fetch the complete documentation index at: https://docs.responsibleailabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Régénération sécurisée

> Régénérez automatiquement le contenu IA qui obtient un score inférieur à votre seuil de qualité.

La régénération sécurisée est une boucle de rétroaction : évaluez une réponse, et si elle est en dessous de votre seuil, régénérez-la avec des instructions d'amélioration ciblées puis réévaluez-la, en répétant jusqu'à ce qu'elle passe. Si la limite d'itérations est atteinte, la version la mieux notée produite est retournée.

<Info>
  **Endpoint API :** `POST /railscore/v1/safe-regenerate` | **Python :** `client.safe_regenerate()` | **JavaScript :** `client.safeRegenerate()`
</Info>

## Comment ça fonctionne

```mermaid theme={null}
flowchart TD
    Start["Initial response"] --> Eval["Evaluate\n(RAIL Score)"]
    Eval --> Check{"Score >= threshold?"}
    Check -- yes --> Return["Return response"]
    Check -- no --> Regen["Regenerate with\nimprovement instructions"]
    Regen --> Eval
    Regen --> Limit{"Max iterations\nreached?"}
    Limit -- yes --> Best["Return best response\n(highest scored)"]
```

Chaque itération coûte le même nombre de crédits qu'une évaluation indépendante. Jusqu'à 5 itérations par requête.

## Utilisation de base

<CodeGroup>
  ```python Python theme={null}
  from rail_score_sdk import RailScoreClient

  client = RailScoreClient(api_key="YOUR_RAIL_API_KEY")

  result = client.safe_regenerate(
      content="When reviewing resumes, prioritize Ivy League graduates.",
      prompt="What hiring criteria should I use?",
      threshold=7.0,
      mode="basic",
      max_iterations=3,
  )

  print(f"Final score: {result.final_score}/10")
  print(f"Iterations: {result.iterations_taken}")
  print(f"Content: {result.content}")
  ```

  ```typescript JavaScript theme={null}
  import { RailScoreClient } from "@responsible-ai-labs/rail-score";

  const client = new RailScoreClient({ apiKey: "YOUR_RAIL_API_KEY" });

  const result = await client.safeRegenerate({
    content: "When reviewing resumes, prioritize Ivy League graduates.",
    prompt: "What hiring criteria should I use?",
    threshold: 7.0,
    mode: "basic",
    maxIterations: 3,
  });

  console.log(`Final score: ${result.finalScore}/10`);
  console.log(`Content: ${result.content}`);
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.responsibleailabs.ai/railscore/v1/safe-regenerate \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer YOUR_RAIL_API_KEY" \
    -d '{
      "content": "When reviewing resumes, prioritize Ivy League graduates.",
      "prompt": "What hiring criteria should I use?",
      "threshold": 7.0,
      "mode": "basic",
      "max_iterations": 3
    }'
  ```
</CodeGroup>

## La réponse

Un résultat vous indique à la fois le verdict et ce qu'il a fallu pour l'obtenir :

* `content` : le texte final à utiliser (la version qui passe, ou la meilleure si la limite a été atteinte).
* `final_score` : le score RAIL de ce contenu final, et `passed` : s'il a franchi le seuil.
* `iterations_taken` : combien de cycles régénération-évaluation ont été exécutés.

Si la limite est atteinte sans succès, vous récupérez tout de même la meilleure tentative dans `content` avec `passed: false`, ce qui vous permet de décider de la diffuser, de prévoir une solution de repli ou de la transmettre à un humain.

## Utilisation

Chaque itération est mesurée comme une évaluation indépendante, jusqu'à la limite d'itérations que vous définissez. Si la première réponse franchit déjà le seuil, seule cette évaluation est comptée. Consultez [Crédits](/getting-started/credits) pour plus de détails.

## Et ensuite

<CardGroup cols={2}>
  <Card title="Référence API : Régénération sécurisée" icon="code" href="/api-reference/safe-regeneration">
    Référence complète des paramètres.
  </Card>

  <Card title="SDK Python : Régénération sécurisée" icon="python" href="/sdk/python/safe-regeneration">
    Exemples et options du SDK Python.
  </Card>

  <Card title="Concepts : Middleware" icon="layer-group" href="/concepts/middleware">
    Régénération automatique via les wrappers de fournisseurs.
  </Card>

  <Card title="Moteur de politiques" icon="gavel" href="/concepts/policy-engine">
    Déclenchez la régénération automatiquement depuis la politique de votre application.
  </Card>
</CardGroup>
