OrkaJS
Orka.JS

Agent Execution

Examples of agents using Orka JS.

Learn how to create and run AI agents with tools, policies, and multi-step reasoning :

AgentsAgents

1. Tool Definition

import { createOrka } from 'orkajs/core';
import { OpenAIAdapter } from 'orkajs/adapters/openai';
import { MemoryVectorAdapter } from 'orkajs/memory';
import { Tool } from 'orkajs/types';
 
 
// Définir des tools
const 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. Agent Creation & Call

 
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);