All files / src/services ai.js

0% Statements 0/9
0% Branches 0/4
0% Functions 0/1
0% Lines 0/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43                                                                                     
/**
 * Service IA — Dispatcher multi-provider.
 *
 * Route les requêtes chat vers le bon provider (Anthropic, OpenAI, Mistral).
 *
 * @module services/ai
 */
 
const claudeService = require('./claude');
const openaiService = require('./openai');
 
/**
 * Chat avec le provider IA spécifié.
 * Interface unifiée pour tous les providers.
 *
 * @param {Object} params
 * @param {string} params.provider — 'anthropic', 'openai', ou 'mistral'
 * @param {string} params.userId
 * @param {string} params.serverId
 * @param {string} params.apiKey
 * @param {string} params.model
 * @param {Array} params.messages
 * @param {string} [params.context]
 * @param {boolean} [params.allowTools=true] — false pour desactiver les outils (plan free)
 * @param {Function} [params.onPendingAction]
 * @returns {Promise<{ reply: string, messages: Array }>}
 */
async function chat(params) {
  const { provider } = params;
 
  if (provider === 'anthropic') {
    return claudeService.chat(params);
  }
 
  if (['openai', 'mistral', 'google', 'deepseek', 'xai'].includes(provider)) {
    return openaiService.chat(params);
  }
 
  throw new Error(`Provider IA non supporté : ${provider}`);
}
 
module.exports = { chat };