Aller au contenu
Nibiru docsv0.9.2

Demandez à l'Oracle

Comment fonctionne l'assistant IA intégré au site — RAG sur les documents, servi par votre propre Ollama sur votre Ollama.

Stable Reading time ~ 3 min Edit on GitHub

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.

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

CalqueBackendModèle par défaut
Chat (génération de réponse)Ollama sur https://your-ollama-host.exampleqwen2.5-coder:14b
Embeddings (retrieval RAG)Ollama sur https://your-ollama-host.examplenomic-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.

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.
FichierObjectif
scripts/lib/providers.mjsAdaptateur partagé de conversation + intégration (Ollama / Anthropic / OpenAI).
scripts/build-oracle-index.mjsConstruit public/oracle-index.json au moment de la construction.
public/oracle-index.jsonL’index d’intégration engagé/produit à la construction.
src/pages/api/oracle.tsLe point final SSR auquel le widget de conversation POSTe. Il sert également une requête GET pour les diagnostics.
src/components/CosmicHeader.astroLe lanceur flottant + l’interface utilisateur de conversation.

Extrayez les deux modèles que l’Oracle utilise :

Fenêtre de terminal
curl https://your-ollama-host.example/api/pull -d '{"name":"qwen2.5-coder:14b"}'
curl https://your-ollama-host.example/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).

L’Oracle lit sa configuration à partir des variables d’environnement. Des valeurs par défaut sensibles sont intégrées.

Fenêtre de terminal
# Default mode (Ollama on your Ollama instance)
LLM_PROVIDER=ollama # default
OLLAMA_BASE_URL=https://your-ollama-host.example # 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

GET /api/oracle retourne la configuration actuelle (sans secrets) :

Fenêtre de terminal
curl https://nibiru-framework.com/api/oracle
{
"status": "ok",
"llm": { "provider": "ollama", "ollamaUrl": "https://your-ollama-host.example",
"model": "qwen2.5-coder:14b" },
"embed": { "provider": "ollama", "ollamaUrl": "https://your-ollama-host.example",
"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.

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

La feuille de route (voir Feuille de route de l’IA) consiste à affiner un LoRA sur l’exportation du Corpus d’entraînement 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.

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.