Exécution d'Agent
Exemples d'agents utilisant Orka JS.
Apprenez à créer et exécuter des agents IA avec des tools, des politiques et un raisonnement multi-étapes.


1. Définition des Tools
import { createOrka } from 'orkajs/core';import { OpenAIAdapter } from 'orkajs/adapters/openai';import { MemoryVectorAdapter } from 'orkajs/memory';import { Tool } from 'orkajs/types'; // Définir des toolsconst getOrderTool: Tool = { name: 'get_order', description: 'Récupère les informations d'une commande par son ID', parameters: [ { name: 'orderId', type: 'string', description: 'L'ID de la commande', required: true }, ], async execute(input) { const orderId = input.orderId as string; // Simulation d'un appel API const orders: Record<string, { status: string; total: string; date: string }> = { 'ORD-001': { status: 'Livré', total: '59.99€', date: '2025-02-10' }, 'ORD-002': { status: 'En transit', total: '129.00€', date: '2025-02-15' }, 'ORD-003': { status: 'En préparation', total: '34.50€', date: '2025-02-17' }, }; const order = orders[orderId]; if (!order) { return { output: 'Commande ' + orderId + ' non trouvée.' }; } return { output: 'Commande ' + orderId + ': statut=' + order.status + ', total=' + order.total + ', date=' + order.date }; },}; const refundTool: Tool = { name: 'request_refund', description: 'Demande un remboursement pour une commande', parameters: [ { name: 'orderId', type: 'string', description: 'L'ID de la commande', required: true }, { name: 'reason', type: 'string', description: 'Raison du remboursement', required: true }, ], async execute(input) { const orderId = input.orderId as string; const reason = input.reason as string; return { output: 'Remboursement demandé pour ' + orderId + '. Raison: ' + reason + '. Traitement sous 5 jours ouvrés. Référence: REF-' + Date.now() }; },}; const searchFaqTool: Tool = { name: 'search_faq', description: 'Recherche dans la FAQ pour trouver des réponses', parameters: [ { name: 'query', type: 'string', description: 'La question à rechercher', required: true }, ], async execute(input) { const query = (input.query as string).toLowerCase(); const faq: Record<string, string> = { 'remboursement': 'Les remboursements sont traités sous 5 jours ouvrés.', 'livraison': 'La livraison standard prend 3-5 jours. Express: 24h.', 'retour': 'Vous avez 30 jours pour retourner un article.', }; for (const [key, answer] of Object.entries(faq)) { if (query.includes(key)) { return { output: answer }; } } return { output: 'Aucune réponse trouvée dans la FAQ.' }; },};2. Création & Appel de l'Agent
async function main() { const orka = createOrka({ llm: new OpenAIAdapter({ apiKey: process.env.OPENAI_API_KEY! }), vectorDB: new MemoryVectorAdapter(), }); // Créer un agent avec tools et policy const supportAgent = orka.agent({ goal: 'Aider les clients avec leurs commandes et questions', tools: [getOrderTool, refundTool, searchFaqTool], policy: { maxSteps: 5, noHallucination: true, rules: [ 'Toujours vérifier la commande avant de proposer un remboursement', 'Être professionnel et empathique', 'Ne jamais inventer d'informations', ], }, temperature: 0.3, }); console.log('🤖 Agent: Support Client'); // Scénario 1: Vérifier une commande console.log('--- Scénario 1: Statut de commande ---'); const result1 = await supportAgent.run('Quel est le statut de ma commande ORD-002 ?'); console.log('Réponse: ' + result1.output); // console.log('Steps: ' + result1.steps.length + ', Tools: ' + result1.toolsUsed.join(', ') + ''); // Scénario 2: Question FAQ console.log('--- Scénario 2: Question FAQ ---'); const result2 = await supportAgent.run('Quel est le délai de livraison ?'); console.log('Réponse: ' + result2.output); // console.log('Steps: ' + result2.steps.length + ', Tools: ' + result2.toolsUsed.join(', ') + '');} main().catch(console.error);