> ## 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.

# Python : Sessions

> RAILSession - suivre les scores RAIL à travers une conversation multi-tour.

<Info>
  **Concept :** [Moteur de politique](/concepts/policy-engine) | **API :** [API d'évaluation](/api-reference/evaluation)
</Info>

`RAILSession` suit chaque tour d'une conversation, calcule des statistiques agrégées et peut appliquer des politiques au niveau de la session qui se déclenchent lorsque la qualité globale dérive, et pas seulement sur des tours individuels.

<CodeGroup>
  ```python Basic session theme={null}
  from rail_score_sdk import RailScoreClient, RAILSession

  client = RailScoreClient(api_key="YOUR_RAIL_API_KEY")
  session = RAILSession(client=client)

  for response in conversation_responses:
      outcome = session.record(content=response, mode="basic")
      print(f"Turn score: {outcome.score}")
      print(f"Session avg: {session.average_score}")

  print(f"Session summary: {session.summary}")
  ```

  ```python With turn + session policies theme={null}
  from rail_score_sdk import RailScoreClient, RAILSession, Policy, Rule

  client = RailScoreClient(api_key="YOUR_RAIL_API_KEY")

  turn_policy = Policy(rules=[
      Rule(dimension="safety", threshold=5.0, action="block"),
  ])

  session_policy = Policy(rules=[
      Rule(dimension="safety", threshold=7.0, action="flag", aggregate="avg"),
  ])

  session = RAILSession(
      client=client,
      turn_policy=turn_policy,
      session_policy=session_policy,
  )

  for user_message in conversation:
      response = await llm(user_message)
      outcome = session.record(content=response, mode="basic")

      if outcome.turn_blocked:
          send_fallback()
      elif outcome.session_flagged:
          notify_reviewer(session.session_id)
      else:
          send(response)
  ```
</CodeGroup>

## Propriétés de la session

| Propriété               | Type    | Description                            |
| ----------------------- | ------- | -------------------------------------- |
| `session.session_id`    | `str`   | Identifiant unique de la session       |
| `session.turn_count`    | `int`   | Nombre de tours enregistrés            |
| `session.average_score` | `float` | Score RAIL moyen sur tous les tours    |
| `session.min_score`     | `float` | Plus bas score de tour dans la session |
| `session.summary`       | `dict`  | Statistiques agrégées par dimension    |
