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

# Templating

> Volubile permet d'utiliser des variables contextuelles pour rendre les prompts adaptables et pertinents lors des conversations. Cette méthode transforme les prompts statiques en instructions intelligentes, réagissant aux particularités de chaque échange, grâce à l'utilisation du templating Jinja.

## Principes fondamentaux de Jinja

### Structure de base

Jinja fonctionne en combinant du texte statique avec des éléments dynamiques délimités par des syntaxes spécifiques :

| Délimiteur  | Fonction                  | Exemple                                                  |
| ----------- | ------------------------- | -------------------------------------------------------- |
| `{{ ... }}` | Insertion de variables    | `Bonjour {{ client.nom }}`                               |
| `{% ... %}` | Instructions logiques     | `{% if heure > 18 %}Bonsoir{% else %}Bonjour{% endif %}` |
| `{# ... #}` | Commentaires (non rendus) | `{# Ce texte n'apparaît pas dans le prompt final #}`     |

### Types de variables

Les variables peuvent contenir différents types de données :

```jinja theme={null}
{# Variables simples #}
{{ nom_client }}         {# Chaîne de caractères #}
{{ age_client }}         {# Nombre #}
{{ est_premium }}        {# Booléen #}

{# Variables structurées #}
{{ client.adresse.ville }}        {# Accès à des propriétés imbriquées #}
{{ client['adresse']['ville'] }}  {# Accès à des propriétés imbriquées #}
{{ produits[0].nom }}             {# Accès à des éléments de liste #}
```

### Conditions (if/elif/else)

Les conditions permettent d'adapter le prompt selon différents contextes :

```jinja theme={null}
{% if system.phone is defined %}
   Vous me confirmez que votre numéro est bien le {{ system.phone }} ?
{% else %}
   Pouvez-vous me donner votre numéro ?
{% endif %}
```

<Tip> Utilisez des conditions imbriquées pour gérer des scénarios complexes, mais maintenez une structure lisible pour
faciliter la maintenance. </Tip>

## Ressources complémentaires

<Card title="Documentation Jinja" icon="text" href="https://jinja.palletsprojects.com/en/stable/" horizontal>
  Pour une documentation complète sur la syntaxe Jinja, référez-vous à la documentation.
</Card>
