Configuration
Configurez Orka JS par défaut, adaptateurs, mémoire, observabilité etgestion de prompts.
Configuration Complète
Voici un exemple complet montrant toutes les options de configuration disponibles :
Méthodes d'Importation
Import Standard
import { createOrka, OpenAIAdapter, PineconeAdapter } from 'orkajs';Import Optimisé
Recommandéimport { createOrka } from '@orka-js/core';import { OpenAIAdapter, PineconeAdapter } from '@orka-js/openai';// Or //import { PineconeAdapter } from '@orka-js/pinecone';Active le tree-shaking pour minimiser la taille du bundle en production.
import { createOrka, OpenAIAdapter, PineconeAdapter } from 'orkajs'; const orka = createOrka({ // Requis: Fournisseur LLM: llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY!, model: 'gpt-4o-mini', embeddingModel: 'text-embedding-3-small', }), // Requis: Base de données vectorielle: vectorDB: new PineconeAdapter({ apiKey: process.env.PINECONE_API_KEY!, indexHost: 'https://your-index.svc.pinecone.io', }), // Optionnel: Paramètres par défaut defaults: { chunkSize: 1000, chunkOverlap: 200, topK: 5, temperature: 0.7, maxTokens: 1024, }, // Optionnel: Configuration de la mémoire memory: { maxMessages: 50, strategy: 'sliding_window', }, // Optionnel: Observabilité observability: { logLevel: 'info', hooks: [{ onTraceEnd: (trace) => console.log(`Done: ${trace.totalLatencyMs}ms`), }], },});1. Fournisseur LLM (Requis)
L'adaptateur LLM gère la génération de texte et les embeddings. Orka JS supporte plusieurs fournisseurs :
OpenAI
GPT-4o, GPT-4o-mini, o1
import { OpenAIAdapter } from 'orkajs'; llm: new OpenAIAdapter({ model: 'gpt-4o-mini',embeddingModel: 'text-embedding-3-small',})Anthropic
Claude 3.5 Sonnet, Opus
import { AnthropicAdapter } from 'orkajs'; llm: new AnthropicAdapter({ model: 'claude-3-5-sonnet-latest',})Mistral AI
Mistral Large, Pixtral
import { MistralAdapter } from 'orkajs'; llm: new MistralAdapter({ model: 'mistral-large-latest',})OllamaLocal
Llama 3.2, Mistral, Gemma
import { OllamaAdapter } from 'orkajs'; llm: new OllamaAdapter({ baseURL: 'http://localhost:11434',model: 'llama3.2',})2. Base de Données Vectorielle (Requise)
La base de données vectorielle stocke les embeddings de documents pour la recherche sémantique. Choisissez en fonction de vos besoins de déploiement :
MemoryVectorAdapter
Idéal pour : Développement, tests, prototypage
import { MemoryVectorAdapter } from 'orkajs'; vectorDB: new MemoryVectorAdapter()⚠️ Les données sont perdues au redémarrage
PineconeAdapter
Idéal pour : Production, cloud-native, scalable
import { PineconeAdapter } from 'orkajs'; vectorDB: new PineconeAdapter({ apiKey: process.env.PINECONE_API_KEY!, indexHost: 'https://your-index.svc.pinecone.io',})QdrantAdapter
Idéal pour : Auto-hébergé, on-premise, Docker
import { QdrantAdapter } from 'orkajs'; vectorDB: new QdrantAdapter({ url: 'http://localhost:6333', apiKey: process.env.QDRANT_API_KEY,})ChromaAdapter
Idéal pour : Développement local, usage embarqué
import { ChromaAdapter } from 'orkajs'; vectorDB: new ChromaAdapter({ url: 'http://localhost:8000',})3. Paramètres par Défaut (Optionnel)
Définissez les valeurs par défaut pour le découpage, la récupération et la génération. Elles peuvent être surchargées par appel.
4. Configuration de la Mémoire (Optionnel)
Configurez la mémoire conversationnelle pour maintenir le contexte à travers plusieurs interactions. La stratégie sliding_window conserve les messages les plus récents.
5. Observabilité (Optionnel)
Surveillez votre application avec la journalisation et les hooks de trace. Utilisez les hooks pour intégrer des outils de monitoring externes comme DataDog, New Relic ou des analytics personnalisés.
Référence de Configuration
| Propriété | Type | Défaut | Description |
|---|---|---|---|
chunkSize | number | 1000 | Caractères par chunk |
chunkOverlap | number | 200 | Chevauchement entre chunks |
topK | number | 5 | Résultats pour requêtes RAG |
temperature | number | 0.7 | Créativité LLM (0 à 1) |
maxTokens | number | 1024 | Tokens max par réponse |
💡 Astuce
Toutes les valeurs par défaut peuvent être surchargées par appel. Par exemple, orka.ask({ topK: 10 }) surcharge le topK par défaut pour cette requête spécifique.