Ask & Generate
Utilisez orka.ask() pour le Q&A le RAG etorka.generate() pour lagénération LLM directe.
Méthodes d'Importation
Import Standard
import { createOrka, OpenAIAdapter, MemoryVectorAdapter } from 'orkajs';Import Optimisé
Recommandéimport { createOrka } from '@orka-js/core';import { OpenAIAdapter } from '@orka-js/openai';import { MemoryVectorAdapter } from '@orka-js/memory';Active le tree-shaking pour minimiser la taille du bundle en production.
# orka.ask()
La méthode principale pour le question-réponse. Quand une base de connaissances est spécifiée, Orka AI effectue automatiquement du RAG (Retrieval-Augmented Generation). C'est la méthode la plus puissante pour construire des systèmes de Q&A.
// Utilisation basique avec le RAGconst result = await orka.ask({ question: 'Comment réinitialiser mon mot de passe?', knowledge: 'support-docs', // Nom de votre base de connaissances}); console.log(result.answer); // Pour réinitialiser votre mot de passe, allez dans Paramètres > Sécurité... // Utilisation avancée avec toutes les optionsconst result = await orka.ask({ question: 'Comment réinitialiser mon mot de passe?', knowledge: 'support-docs', systemPrompt: 'Vous êtes un agent de support helpful. Soyez concis et amical.', topK: 5, // Nombre de morceaux de contexte à récupérer minScore: 0.7, // Score de similarité minimum pour les morceaux temperature: 0.7, // Créativité du LLM (0-1) maxTokens: 1024, // Longueur maximale de la réponse includeContext: true, // Retourner les morceaux récupérés dans le résultat}); console.log(result.answer); // La réponse généréeconsole.log(result.context); // Tableau des morceaux récupérésconsole.log(result.latencyMs); // Temps d'exécution totalconsole.log(result.usage.totalTokens); // Tokens consommésParamètres
questionLa requête principale. OrkaJS l'utilise pour trouver le contexte et générer la réponse.
knowledgeBase de connaissances cible. Si omis, le LLM répond uniquement avec ses données internes.
topKContrôle la densité du RAG. Détermine combien de chunks sémantiques sont injectés dans le prompt.
minScoreSeuil de similarité. Les chunks avec un score inférieur seront ignorés pour éviter les hallucinations.
systemPromptRemplace l'identité par défaut de l'agent. Utile pour imposer un persona ou un format spécifique.
temperatureDes valeurs hautes rendent la réponse plus aléatoire, des valeurs basses la rendent plus déterministe.
includeContextFlag de débogage. Si activé, les chunks sources utilisés sont retournés dans l'objet de réponse.
Valeur de Retour
interface AskResult { answer: string; // La réponse générée context?: ChunkResult[]; // Morceaux récupérés (si includeContext: true) latencyMs: number; // Temps d'exécution total en millisecondes usage: { promptTokens: number; // Tokens dans la requête completionTokens: number; // Tokens dans la réponse totalTokens: number; // Total de tokens consommés };}# orka.generate()
Génération LLM directe sans RAG. Utilisez pour des tâches créatives, transformations de texte, résumé, ou toute tâche qui ne nécessite pas de connaissances externes.
// Génération simpleconst response = await orka.generate('Write a haiku about TypeScript');console.log(response); // "Types flow like water..." (string) // Avec optionsconst response = await orka.generate('Résumez cet article: [article text]', { temperature: 0.3, // Plus bas pour une sortie plus déterministe maxTokens: 200, // Limite la longueur de la réponse systemPrompt: 'Vous êtes un résumé professionnel. Soyez concis.',}); // Écriture créativeconst story = await orka.generate('Écris une courte histoire sur un robot', { temperature: 0.9, // Plus haut pour plus de créativité maxTokens: 1000, systemPrompt: 'Vous êtes un écrivain de fiction créatif.',}); // Génération de codeconst code = await orka.generate('Écris une fonction TypeScript pour trier un tableau', { temperature: 0.2, // Bas pour du code précis systemPrompt: 'Vous êtes un expert développeur TypeScript. Retournez uniquement du code.',});Paramètres
promptL'instruction principale. C'est le texte central que le LLM va traiter.
temperatureContrôle l'aléatoire. Utilisez 0 pour la logique pure et 0.8+ pour les tâches créatives.
maxTokensLimite stricte de longueur de réponse. Évite les générations infinies et contrôle les coûts.
systemPromptInstructions initiales définissant le persona, le ton et les contraintes de l'assistant.
# orka.embed()
Générez des embeddings vectoriels pour du texte. Les embeddings sont des vecteurs de haute dimension qui capturent le sens sémantique. Utilisez pour des comparaisons de similarité personnalisées, du clustering, ou construire vos propres systèmes de récupération.
// Single text embeddingconst [embedding] = await orka.embed('Bonjour le monde');console.log(embedding.length); // e.g., 1536 (dépend du modèle)console.log(embedding[0]); // e.g., 0.0234 (première dimension) // Multiple texts (batched for efficiency)const embeddings = await orka.embed([ 'Comment réinitialiser mon mot de passe?', 'J'ai oublié mes identifiants de connexion', 'Quel est le temps aujourd'hui?',]); // Compare similarity (cosine similarity)function cosineSimilarity(a: number[], b: number[]): number { const dot = a.reduce((sum, val, i) => sum + val * b[i], 0); const magA = Math.sqrt(a.reduce((sum, val) => sum + val * val, 0)); const magB = Math.sqrt(b.reduce((sum, val) => sum + val * val, 0)); return dot / (magA * magB);} const sim1 = cosineSimilarity(embeddings[0], embeddings[1]); // ~0.85 (similar)const sim2 = cosineSimilarity(embeddings[0], embeddings[2]); // ~0.45 (different)Utilisez orka.embed() quand vous avez besoin d'embeddings bruts pour une logique personnalisée. Pour le RAG standard, utilisez orka.knowledge.create() et orka.ask() — ils gèrent les embeddings automatiquement.
Exemple Complet
import { createOrka } from '@orka-js/core';import { OpenAIAdapter } from '@orka-js/openai';import { MemoryVectorAdapter } from '@orka-js/memory'; const orka = createOrka({ llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }), vectorDB: new MemoryVectorAdapter(),}); // 1. Créer une base de connaissancesawait orka.knowledge.create({ name: 'product-docs', source: [ 'Notre produit supporte le mode sombre. Allez dans Paramètres > Apparence pour l'activer.', 'Pour réinitialiser votre mot de passe, cliquez sur "Mot de passe oublié" sur la page de connexion.', 'Les utilisateurs premium ont accès à des appels API illimités et un support prioritaire.', ],}); // 2. Poser des questions le RAGconst result = await orka.ask({ question: 'Comment activer le mode sombre?', knowledge: 'product-docs', topK: 3, includeContext: true,}); console.log('Answer:', result.answer);// "To enable dark mode, go to Settings > Appearance." console.log('Sources:', result.context?.map(c => c.content.slice(0, 50)));// ["Our product supports dark mode. Go to Settings > ..."] // 3. Génération directe (pas de RAG)const summary = await orka.generate( 'Résume: ' + result.answer, { temperature: 0.3, maxTokens: 50 }); // 4. Obtenir des embeddings pour une logique personnaliséeconst [queryEmbed] = await orka.embed('paramètres du mode sombre');console.log('Dimensions de l'embedding:', queryEmbed.length);Tableau de Comparaison
| Méthode | Usage Principal | Retour |
|---|---|---|
orka.ask() | Q&A basé sur connaissances (RAG)INTELLIGENT | { answer, usage } |
orka.generate() | Complétion & TransformationCRÉATIF | string |
orka.embed() | Vecteurs & Similarité sémantiqueCORE | number[][] |
Imports Tree-shakeable
// Import depuis le package principalimport { createOrka } from '@orka-js/core'; // Import des adaptateurs séparémentimport { OpenAIAdapter } from '@orka-js/openai';import { MemoryVectorAdapter } from '@orka-js/memory';