> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Intégration de l'IA

> Configurez le chat IA, les suggestions de correction d'erreurs LaTeX, l'accès des utilisateurs, les quotas et les services de recherche facultatifs.

<Info>
  Cette fonctionnalité est fournie par [ayaka-notes/ayakaleaf-pro](https://github.com/ayaka-notes/overleaf-pro) et est disponible à partir de la v6.3.0. N'hésitez pas à nous faire part de vos retours si vous rencontrez des problèmes.
</Info>

## Assistant IA et assistant d'erreurs LaTeX

Ayakaleaf Pro intègre l'IA à l'éditeur de 2 manières.

* L'assistant IA peut utiliser les documents de votre projet et la sélection en cours comme contexte pour répondre à vos questions et vous proposer des modifications à examiner.
* L'assistant d'erreurs propose une correction ciblée lorsque vous sélectionnez une erreur de compilation LaTeX.

<Frame>
  <img src="https://mintcdn.com/ayakaleaf-pro/x9kfDjtWlyyhG_mR/images/on-premises/image-48.png?fit=max&auto=format&n=x9kfDjtWlyyhG_mR&q=85&s=107b27f8843a326269b5e3711ccf2616" alt="" width="2844" height="1710" data-path="images/on-premises/image-48.png" />
</Frame>

### Configuration du Toolkit

Ajoutez ce qui suit au fichier `config/variables.env` de votre déploiement Toolkit, en remplaçant l'URL, la clé et le modèle d'exemple par les valeurs fournies par votre fournisseur :

```dotenv theme={null}
AI_ENABLED=true
AI_BASE_URL=https://ai-gateway.example.com/v1
AI_API_KEY=REPLACE_WITH_YOUR_GATEWAY_API_KEY
AI_MODEL=YOUR_TEXT_MODEL_ID
```

Conservez les vraies clés d'API dans le fichier d'environnement de votre déploiement, hors du contrôle de version. Les valeurs ci-dessus sont des exemples, et non des identifiants fonctionnels.

<Info>
  La qualité des suggestions de l'IA dépend du modèle choisi. Si vous disposez déjà d'un abonnement Codex ou ChatGPT, vous pouvez le connecter via le point de terminaison compatible OpenAI de [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI).
</Info>

`AI_BASE_URL` est l'URL de base de l'API compatible OpenAI, incluant le préfixe de version du fournisseur si nécessaire. N'ajoutez pas `/chat/completions`, car nous l'ajoutons en interne. La passerelle et le modèle doivent prendre en charge les chat completions en streaming et les outils de type fonction. Les deux fonctionnalités envoient le contexte du document à cette passerelle ; le chat peut également envoyer les images téléversées lorsqu'un modèle capable de traiter les images est utilisé.

Le Toolkit transmet `config/variables.env` au conteneur de l'application. Conservez les noms de variables indiqués ici ; n'ajoutez pas de préfixe `OVERLEAF_`. Depuis le répertoire du Toolkit, recréez le conteneur de l'application après avoir modifié ces variables :

```sh theme={null}
bin/up -d
```

### Paramètres de la passerelle

| Variable | Valeur par défaut | Rôle |
| - | - | - |
| `AI_ENABLED` | `false` | Définissez exactement `true` pour activer le chat et les suggestions de correction pour l'instance. Si la variable n'est pas définie ou a une autre valeur, ils restent désactivés. Une configuration de passerelle fonctionnelle est également requise. |
| `AI_BASE_URL` | Aucune ; requise | URL de base de l'API compatible OpenAI. |
| `AI_API_KEY` | Aucune ; requise | Clé d'API de cette passerelle, utilisée par le serveur. |
| `AI_MODEL` | Aucune ; requise | Modèle de texte utilisé par la configuration de chat par défaut et par les suggestions de correction d'erreurs LaTeX. |
| `AI_IMAGE_MODEL` | Non définie | Modèle facultatif capable de traiter les images, sur la même passerelle et avec la même clé d'API. |
| `AI_MAX_STEPS` | `20` | Nombre maximal d'appels d'outils par message utilisateur dans le chat IA, continuations automatiques comprises. Utilisez un entier positif. |
| `AI_PROXY_URL` | Non définie | URL facultative d'un proxy HTTP pour les appels à la passerelle IA. Elle ne configure pas les clients de recherche web ou de documentation. |
| `AI_TOKEN_QUOTA` | `0` | Limite de jetons par utilisateur et par période, partagée entre le chat et les suggestions de correction. Non définie ou `0` signifie illimité ; utilisez un entier positif pour fixer une limite. |
| `AI_TOKEN_QUOTA_PERIOD` | `month` | `month` est réinitialisé le premier jour du mois à 00:00 UTC ; `week` est réinitialisé le lundi à 00:00 UTC. Toute autre valeur utilise `month`. |

Pour les téléversements d'images, définissez `AI_IMAGE_MODEL` sur un modèle qui accepte les images en entrée et prend en charge les outils utilisés par le chat. Toute requête de chat dont l'historique contient une image jointe utilise ce modèle, y compris les messages ultérieurs de cette conversation. Sans ce paramètre, les requêtes contenant des images utilisent le modèle de chat habituel, qui doit alors lui-même prendre en charge les images. Les suggestions de correction d'erreurs LaTeX continuent d'utiliser `AI_MODEL`.

Par exemple, pour activer un modèle d'images et une allocation IA hebdomadaire :

```dotenv theme={null}
AI_IMAGE_MODEL=YOUR_IMAGE_CAPABLE_MODEL_ID
AI_TOKEN_QUOTA=100000
AI_TOKEN_QUOTA_PERIOD=week
```

### Accès des utilisateurs et consentement

La disponibilité au niveau de l'instance et les permissions des utilisateurs sont distinctes. `AI_ENABLED` et la configuration de la passerelle contrôlent la disponibilité au niveau de l'instance. Un utilisateur connecté doit en outre satisfaire aux vérifications de compte existantes :

* `aiFeatures.enabled` ne doit pas valoir `false`. Ce champ de base de données existant contrôle à la fois le chat et les suggestions de correction d'erreurs LaTeX.
* La valeur effective de `features.aiUsageQuota` de l'utilisateur doit correspondre au niveau illimité configuré (`unlimited` par défaut), ou bien l'ancienne permission `features.aiErrorAssistant` doit être activée. Les fonctionnalités effectives incluent les éventuelles surcharges de fonctionnalités applicables au compte.

Cocher la case ne modifie pas à elle seule l'offre de l'utilisateur. Le champ `aiUsageQuota` est un niveau de permission, et non une allocation numérique de jetons. `AI_TOKEN_QUOTA` est une limite distincte appliquée de manière identique à chaque utilisateur autorisé ; le module actuel ne permet pas de définir une limite numérique individuelle par compte.

Dans la liste des utilisateurs de l'administration, sélectionnez un utilisateur et ouvrez **Update account info → AI features**. **Enable AI features** met à jour `aiFeatures.enabled` lors de l'enregistrement des modifications du compte. Le serveur vérifie les permissions actuelles à chaque nouvelle requête IA, y compris celles provenant d'un éditeur déjà ouvert. Actualisez l'éditeur pour mettre à jour les commandes visibles après un changement de permission.

### Consommation et réinitialisation

L'onglet AI features de l'administration affiche sur une même ligne la consommation (**Usage**), la limite (**Limit**) et le bouton de réinitialisation (**Reset**) pour la période en cours. La consommation est lue à l'ouverture de l'onglet ; elle n'est pas actualisée en continu. Rouvrez l'onglet une fois un chat ou une suggestion de correction terminé pour voir le décompte le plus récent. La réinitialisation prend effet immédiatement et efface uniquement le compteur de la période en cours de cet utilisateur, puis recharge la consommation affichée. Il n'est pas nécessaire d'enregistrer le reste du formulaire du compte.

<Frame>
  <img src="https://mintcdn.com/ayakaleaf-pro/x9kfDjtWlyyhG_mR/images/on-premises/img-2f5a5399.png?fit=max&auto=format&n=x9kfDjtWlyyhG_mR&q=85&s=3c52c12aa1551cda22f218ec2dfda63b" alt="" width="563" data-path="images/on-premises/img-2f5a5399.png" />
</Frame>

La consommation du chat et des suggestions de correction partage un même compteur Redis, mis à jour à partir du nombre total de jetons indiqué par le fournisseur du modèle une fois la requête terminée. Ce total inclut les jetons d'entrée et de sortie de toutes les étapes du modèle. L'entrée peut comprendre l'historique de la conversation, le contexte du document et les résultats des outils ; une question de suivi peut donc consommer plus de jetons que le nouveau message seul. La consommation est enregistrée même lorsque la limite est **Unlimited**. Les requêtes sans total de jetons indiqué n'incrémentent pas le compteur ; le module ne peut pas reconstituer une consommation passée non enregistrée.

Les vérifications de quota ont lieu avant le streaming. Une requête, ou plusieurs requêtes simultanées, peuvent dépasser l'allocation restante avant que les requêtes suivantes ne soient bloquées. Il s'agit donc d'une allocation de consommation plutôt que d'un plafond de dépenses strict auprès du fournisseur. Si la lecture du quota échoue, la requête est autorisée et l'échec est journalisé.

Les deux fonctionnalités utilisent `AI_TOKEN_QUOTA` ; les suggestions de correction n'ont pas de limite distincte en nombre de requêtes. La réinitialisation du compteur ne modifie ni les permissions, ni le consentement, ni la limite configurée, ni la facturation propre au fournisseur. Les compteurs utilisent des clés de période en UTC et expirent au bout de 40 jours ; conserver les données Redis permet de préserver la consommation en cours lors des redémarrages de l'application.

### Services de recherche facultatifs

La recherche web utilise une API compatible Tavily. Elle est disponible dès qu'une clé d'API de recherche est configurée. Ces paramètres sont indépendants de la passerelle IA :

| Variable | Valeur par défaut | Rôle |
| - | - | - |
| `TAVILY_API_KEY` | Non définie | Clé d'API de recherche. Prioritaire sur `WEB_SEARCH_API_KEY`. |
| `WEB_SEARCH_API_KEY` | Non définie | Autre nom possible pour la clé d'API de recherche. |
| `WEB_SEARCH_URL` | `https://api.tavily.com/search` | Point de terminaison de recherche ; les points de terminaison personnalisés doivent accepter le format de requête et de réponse de Tavily. |
| `WEB_SEARCH_MAX_RESULTS` | `5` | Nombre de résultats demandés par recherche ; utilisez un entier positif pris en charge par le service. |
| `WEB_SEARCH_DEPTH` | `basic` | Profondeur de recherche, généralement `basic` ou `advanced`. |
| `WEB_SEARCH_PROVIDER` | `tavily` | L'implémentation actuelle ne prend en charge que le protocole compatible Tavily ; modifier cette valeur ne sélectionne pas un autre adaptateur. |
| `DOCS_MCP_URL` | `https://docs.overleaf.com/~gitbook/mcp` | Point de terminaison de recherche dans la documentation. Définissez une chaîne vide pour désactiver la recherche dans la documentation. |

Par exemple :

```dotenv theme={null}
TAVILY_API_KEY=REPLACE_WITH_YOUR_SEARCH_API_KEY
WEB_SEARCH_MAX_RESULTS=5
WEB_SEARCH_DEPTH=basic
DOCS_MCP_URL=https://docs.overleaf.com/~gitbook/mcp
```

La recherche dans la documentation appelle l'outil `searchDocumentation` du point de terminaison GitBook MCP configuré et accepte les réponses JSON ou SSE. Il s'agit d'un client MCP destiné à la recherche dans la documentation ; ces modules n'exposent pas les fichiers des projets en tant que serveur MCP et ne fournissent pas de registre de serveurs MCP à usage général.

Les requêtes de recherche sont envoyées au service de recherche configuré. Les résultats peuvent ensuite être inclus dans les requêtes envoyées à la passerelle IA. Le menu **Tools** du chat permet aux utilisateurs d'activer ou de désactiver **Web** et **Documentation** pour leurs requêtes ; un outil doit également être configuré sur le serveur pour être disponible pour le modèle.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.