Un assistant IA sur vos chiffres
« Combien Habitations Les Saules nous doit-il, et depuis quand ? » « Nos ventes de peinture sont-elles en hausse sur l'an dernier ? » Ces questions arrivent toute la journée, et la réponse est toujours dans Acomba, à trois rapports et une exportation Excel de distance. Un assistant qui comprend la question, va chercher les bons chiffres et répond en une phrase ferait gagner des heures chaque semaine.Dans cette recette, nous allons construire cet assistant avec Claude : il reçoit une question en français, choisit les routes d'ExoConnect à interroger, lit les données d'Acomba et répond avec les montants exacts. Il ne fait que lire : il ne peut rien modifier dans Acomba.Ce que vous allez apprendredonner à un modèle d'IA un outil de lecture sur ExoConnect ;
limiter ce qu'il peut lire (routes permises, clé en lecture seule) ;
lui décrire les routes utiles pour qu'il choisisse les bonnes ;
faire tourner la boucle question → appels → réponse.
une clé ExoConnect en lecture seule, créée pour l'assistant seulement ;
une clé API Anthropic (ANTHROPIC_API_KEY) et la bibliothèque anthropic (pip install anthropic requests) ;
les modules Acomba dont vous voulez parler (Clients, Fournisseurs, Facturation…).
Avant d'écrire le code, voyons la boucle. Le modèle ne voit jamais Acomba directement : il demande une lecture, votre script la fait avec votre clé, vérifie que la route est permise et lui rend la réponse. Le modèle peut enchaîner plusieurs lectures (trouver le code d'un client, puis ses factures ouvertes) avant de répondre.
Étape 1 : l'outil de lecture#
Commençons par la seule capacité de l'assistant : lire une route. Le script refuse tout chemin hors des préfixes permis (ni paie, ni configuration du système) et le signale au modèle comme une erreur (is_error) ; il tronque aussi les réponses trop longues. Avec une clé en lecture seule, même une erreur de programmation ne pourrait rien écrire.
Étape 2 : le catalogue des routes#
Le modèle choisit mieux quand il sait ce que chaque route contient. Le catalogue, placé dans les consignes, décrit en une ligne une quinzaine de routes de synthèse : ce que les clients doivent (/api/receivables/to-collect), les factures ouvertes d'un client (/api/customers/{code}/unpaid-invoices), les ventes d'une période (/api/sales/summary), la marge (/api/products/analytics), la trésorerie (/api/cashflow/forecast)… Ce sont des routes qui calculent déjà les totaux : le modèle n'a pas à additionner des milliers de factures.
Le script complet#
Assemblons l'assistant : consignes et catalogue, outil de lecture, boucle d'appels (au plus 10 lectures par question).Exemple (les lignes → sont les lectures faites par l'assistant) :$ python assistant.py "Combien Habitations Les Saules nous doit-il, et depuis quand ?"
→ /api/customers/search?query=Saules
→ /api/customers/2077/unpaid-invoices?limit=50
Habitations Les Saules (client 2077) nous doit **387 564,43 $** au 12 octobre 2026.
- Factures ouvertes : 56, pour 387 996,17 $, moins 2 crédits non appliqués de 431,74 $.
- Tout ce montant est en retard. Rien n'est encore dans les délais.
- Depuis quand : la plus ancienne facture impayée date du **1er avril 2026** (n° 18174, 2 414,48 $). Elle était due le **1er mai 2026** et a donc **164 jours de retard**. Le retard moyen pondéré est de 91,3 jours.
- Répartition par ancienneté du retard :
- 61 à 90 jours : 185 282,83 $
- plus de 90 jours : 202 281,60 $
- moins de 60 jours : 0 $
Bon à savoir#
Clé en lecture seule, toujours. La liste de routes permises protège contre les erreurs du script ; la clé en lecture seule protège contre tout le reste. Une clé à part pour l'assistant se révoque sans toucher vos autres intégrations.
Pas de paie : les routes /api/payroll/ sont exclues ; les données personnelles des employés n'ont pas à passer par un modèle d'IA.
Les données lues sont envoyées à Anthropic pour produire la réponse. Vérifiez que c'est conforme à votre politique de confidentialité avant d'ouvrir l'assistant à vos employés.
Refus et réponses tronquées : le script vérifie stop_reason avant de lire la réponse. Si le modèle décline une question (refusal), fallbacks: "default" la fait reprendre par un autre modèle, côté Anthropic ; si la réponse reste vide ou est coupée (max_tokens), le script le dit au lieu d'afficher une réponse partielle.
Montants exacts : les consignes demandent de citer les montants lus, jamais estimés. Pour un chiffre qui engage (paie, taxes), vérifiez dans Acomba.
Coût : chaque question coûte quelques lectures et un ou deux appels au modèle ; les routes de synthèse gardent les réponses courtes.
Et voilà#
Vous avez un assistant qui répond en français à vos questions sur Acomba, avec les chiffres exacts, sans pouvoir rien modifier. Ajoutez-y d'autres routes de synthèse selon les questions de votre équipe. Modified at 2026-10-12 12:28:30