@if (errorMessage) {
{{ errorMessage }}
} @if (successMessage) {
{{ successMessage }}
} @if (settings) {

Moteur IA

Choix du fournisseur de modele de langage utilise par le chat et la generation de pages.

} @if (settings && settings.llm_provider === 'ollama') {

Configuration Ollama

@if (ollamaModels.length === 0) {

Aucun modele detecte. Verifie que Ollama tourne et que l'URL est correcte.

}
} @if (settings && settings.llm_provider === 'onemin') {

Configuration 1min.ai

@if (settings.onemin_api_key_set) { }
} @if (settings && settings.llm_provider === 'openrouter') {

Configuration OpenRouter

@if (settings.openrouter_api_key_set) { }

Liste chargee automatiquement depuis OpenRouter. Pour rester gratuit : un modele marque · gratuit ou le routeur openrouter/free (choisit un modele gratuit tout seul). Pour les imports, prefere un gratuit a grand contexte (valeur « ctx »).

} @if (settings && settings.llm_provider === 'mistral') {

Configuration Mistral

@if (settings.mistral_api_key_set) { }

Cle gratuite sur console.mistral.ai (tier « Experiment », sans CB). Pour les imports, prefere mistral-large-latest (128k contexte, fidele et bon en francais) ou mistral-small-latest (plus rapide).

} @if (settings && settings.llm_provider === 'gemini') {

Configuration Gemini

@if (settings.gemini_api_key_set) { }

Cle gratuite sur aistudio.google.com (sans CB). Ideal pour les imports : gemini-2.0-flash a un contexte ~1M → un livre entier tient en 1-2 appels (plus de morceaux perdus). Pense a monter la taille des morceaux d'import pour en profiter.

} @if (settings) {

Embeddings (Atelier RAG)

Modèle utilisé pour indexer les sources PDF des ateliers et y faire de la recherche. C'est un modèle séparé du modèle de chat ci-dessus.

@if (settings.embedding_provider === 'ollama') {

Recommandé : nomic-embed-text (léger). Gratuit et illimité (local).

}

Plus haut = l'IA voit plus de passages par question (mieux pour les questions larges « liste les… »), mais prompt plus long. Défaut 8. Avec un modèle gros-contexte (Gemini), tu peux monter à 50-150 pour une couverture quasi « document entier ». Pour les questions exhaustives, préfère le bouton « Analyse approfondie » de l'atelier.

@if (settings.embedding_provider === 'mistral') {
@if (settings.mistral_api_key_set) { }

C'est la même clé que pour le chat Mistral (une seule clé partagée). Soumis au rate limit du tier gratuit.

}
} @if (settings && settings.llm_provider === 'ollama') {

Fenetre de contexte

@if (settings.llm_provider === 'ollama') {
@if (ollamaModelMaxContext > 0) {

Le modele {{ settings.llm_model }} accepte jusqu'a {{ ollamaModelMaxContext | number }} tokens. Plus la valeur est elevee, plus l'IA peut tenir d'historique et de contexte — au prix de VRAM et de latence.

} @if (ollamaModelMaxContext === 0) {

Impossible de determiner la fenetre max du modele (Ollama injoignable ou modele inconnu). Slider borne a {{ CTX_FALLBACK_MAX | number }} par securite.

}
}
} @if (settings) {

Import de PDF

Lors de l'import d'un PDF (regles ou campagne), le texte est decoupe en morceaux de cette taille avant d'etre analyse par l'IA. Plus gros = moins de morceaux, donc plus rapide et moins de fragmentation/doublons — mais le morceau doit tenir dans la fenetre du modele.
Repere : ~10 000 pour Ollama (16k de contexte) ; jusqu'a ~100 000 pour un modele a grand contexte (ex : GPT-5 mini, 400k) afin de traiter un livre entier en une seule passe. Attention : un gros morceau = generation plus longue (voir le timeout ci-dessous).

Delai max d'attente d'une reponse du modele. Si un import lourd echoue avec « delai depasse » (timeout), augmentez cette valeur (ex : 600) ou reduisez la taille des morceaux ci-dessus. Defaut : 300 s.

} @if (settings) {
}