---
title: "Demandez à l'Oracle"
description: "Comment fonctionne l'assistant IA intégré au site — RAG sur les documents, servi par votre propre Ollama sur neuronetz.ai."
---

Le bouton jaune dans le coin de chaque page est l'**Oracle Nibiru** — un assistant IA basé sur cette documentation même. Posez-lui des questions sur le routage, les modules, la CLI, la couche Smarty, le sens de `pageAction()`. Il cite ses sources.

## Ce qui le propulse

Par défaut, l'Oracle fonctionne entièrement sur **votre propre infrastructure** :

| Calque | Backend | Modèle par défaut |
|---|---|---|
| Chat (génération de réponse) | Ollama sur `https://api.neuronetz.ai` | `qwen2.5-coder:14b` |
| Embeddings (retrieval RAG) | Ollama sur `https://api.neuronetz.ai` | `nomic-embed-text` |

Aucune clé d'API payante. Aucune donnée ne quitte votre réseau. Le cluster Ollama à 5 GPU que vous exécutez déjà gère la charge.

Si vous préférez utiliser un fournisseur payant — Claude pour les conversations, OpenAI pour les embeddings — définissez `LLM_PROVIDER=anthropic` et/ou `EMBED_PROVIDER=openai` ainsi que les clés d'API correspondantes. Les chemins de code sont identiques.

## Comment ça fonctionne
```mermaid
flowchart LR
  A[User question] --> B[Embed via Ollama<br/>nomic-embed-text]
  B --> C[Cosine search<br/>against pre-computed<br/>doc-chunk index]
  C --> D[Top-K chunks]
  D --> E[Ollama chat<br/>qwen2.5-coder:14b<br/>system + retrieved context]
  E --> F[Answer + source list]
  F --> G[Render in chat UI]
```
1. **À l'heure de la construction**, le site de documentation parcourt chaque page Markdown, la découpe en morceaux d'environ 600 jetons aux frontières H2/H3, intègre chaque morceau avec `nomic-embed-text`, et écrit le résultat dans `public/oracle-index.json`. Aucune base de données n'est nécessaire.
2. **À l'heure de la requête**, la question de l'utilisateur est intégrée de la même manière, les morceaux les plus proches sont récupérés par similitude cosinus, et ils sont assemblés dans une invite système pour le modèle de conversation.
3. **Le modèle de conversation répond** dans la langue de l'utilisateur, en citant les morceaux source par URL.

## Fichiers

| Fichier | Objectif |
|---|---|
| `scripts/lib/providers.mjs` | Adaptateur partagé de conversation + intégration (Ollama / Anthropic / OpenAI). |
| `scripts/build-oracle-index.mjs` | Construit `public/oracle-index.json` au moment de la construction. |
| `public/oracle-index.json` | L'index d'intégration engagé/produit à la construction. |
| `src/pages/api/oracle.ts` | Le point final SSR auquel le widget de conversation POSTe. Il sert également une requête GET pour les diagnostics. |
| `src/components/CosmicHeader.astro` | Le lanceur flottant + l'interface utilisateur de conversation. |

## Configuration unique sur neuronetz.ai

Extrayez les deux modèles que l'Oracle utilise :
```bash
curl https://api.neuronetz.ai/api/pull -d '{"name":"qwen2.5-coder:14b"}'
curl https://api.neuronetz.ai/api/pull -d '{"name":"nomic-embed-text"}'
```
`qwen2.5-coder:14b` est déjà installé (vérifié en direct). `nomic-embed-text` est la pièce manquante ; sans elle, l'Oracle fonctionne en mode conversationnel uniquement (sans RAG).

## Configuration

L'Oracle lit sa configuration à partir des variables d'environnement. Des valeurs par défaut sensibles sont intégrées.
```bash
# Default mode (Ollama on neuronetz.ai)
LLM_PROVIDER=ollama                                 # default
OLLAMA_BASE_URL=https://api.neuronetz.ai            # default
OLLAMA_CHAT_MODEL=qwen2.5-coder:14b                 # default
OLLAMA_EMBED_MODEL=nomic-embed-text                 # default

# Optional fallbacks
LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...
ANTHROPIC_MODEL=claude-haiku-4-5-20251001

EMBED_PROVIDER=openai
OPENAI_API_KEY=sk-...
OPENAI_EMBED_MODEL=text-embedding-3-small

# Behaviour
ORACLE_TOP_K=6
ORACLE_MAX_TOKENS=800
```
## Point d'accès des diagnostics

`GET /api/oracle` retourne la configuration actuelle (sans secrets) :
```bash
curl https://nibiru-framework.com/api/oracle
{
  "status": "ok",
  "llm":   { "provider": "ollama", "ollamaUrl": "https://api.neuronetz.ai",
             "model": "qwen2.5-coder:14b" },
  "embed": { "provider": "ollama", "ollamaUrl": "https://api.neuronetz.ai",
             "model": "nomic-embed-text" },
  "index": { "present": true, "chunks": 177,
             "provider": "ollama", "model": "nomic-embed-text" }
}
```
Pratique pour vérifier qu'un conteneur fraîchement déployé utilise le backend que vous attendiez.

## Confidentialité

- Les questions et l'historique de conversation sont envoyés à votre serveur Ollama. Ils ne sont **pas** stockés par le site de documentation ou par Anthropic/OpenAI dans la configuration Ollama par défaut.
- La clé OpenAI (si elle est utilisée) est invoquée uniquement pour les embeddings.
- Aucune analyse ni aucun cookie n'est défini par le widget Oracle lui-même.

## Pourquoi un modèle formé avec Nibiru ?

La feuille de route (voir [Feuille de route de l'IA](/en/ai/roadmap/)) consiste à affiner un LoRA sur l'exportation du [Corpus d'entraînement](/en/ai/corpus/) afin que le modèle de conversation lui-même soit natif Nibiru. Une fois cela prêt, le `OLLAMA_CHAT_MODEL` de l'Oracle passe au modèle affiné et la promesse système se simplifie. Même code, réponses plus intelligentes.

## Essayez-le

Ouvrez l'Oracle (la planète ambrée en bas à droite) et essayez l'un de ces éléments :

- *Comment créer un nouveau module ?*
- *Quelle est la fonction de `pageAction` ?*
- *Montrez-moi comment gérer un point de terminaison JSON.*
- *Wie schreibe ich eine Migration?* (Le français fonctionne aussi bien.)
- *Expliquez le flux d'authentification.*
