Skip to main content
Avec POST /api/v1/milian/ask ou l’outil MCP ask_milian, Milian répond aux questions, analyse les données autorisées et recommande les prochaines étapes. Il ne modifie pas les ressources de l’espace de travail.

Autorisation et crédits

Avant chaque question, informez l’utilisateur que Milian consomme des crédits supplémentaires et obtenez son autorisation explicite. Définissez confirmed sur true uniquement après cet accord. La connexion d’un client ou l’autorisation d’accès ne vaut pas accord pour de futures questions payantes. L’utilisation est facturée à l’espace de travail actif aux mêmes tarifs que Milian dans le tableau de bord. Les crédits disponibles sont vérifiés avant la génération. La réponse indique les crédits réellement débités ; le travail effectué peut être facturé même si une étape ultérieure échoue. Chaque question suivante ou nouvelle tentative est payante : ne relancez pas automatiquement.

Accès et requête

Utilisez une clé API d’espace de travail ou un jeton OAuth avec milian:write et les autorisations de lecture nécessaires, comme calls:read. Pour OAuth, sélectionnez Milian et les groupes de données à analyser. Milian est facultatif et n’est inclus ni dans les sept groupes par défaut ni dans le profil public Assistant History. Les rôles Viewer et Billing ne peuvent pas lancer de questions payantes. Les questions sont indépendantes et ne sont pas ajoutées à l’historique du tableau de bord. Incluez le contexte nécessaire.
Envoyez ce corps avec une authentification Bearer au point de terminaison ci-dessus, après autorisation. Sous data, la réponse contient la référence id, answer, les credits réellement débités, status et billing_complete. Vérifiez ces deux indicateurs. Un crédit insuffisant avant le démarrage renvoie HTTP 402, une autorisation manquante HTTP 400 et des droits insuffisants HTTP 403. Voir Outils et portées MCP.

Chat vocal (bêta)

Créez la même connexion avec la CLI : famulor create-milian-voice-session --approve-credit-usage --context '{"locale":"fr"}'. Transmettez l’URL et les protocoles à votre client vocal. La CLI crée la session ; le client connecté fournit l’audio, le contexte de la page ou les images de l’écran selon le protocole ci-dessous. Démarrez une session avec POST /api/v1/milian/voice-sessions ou create_milian_voice_session. Activez les fonctionnalités bêta et utilisez un accès utilisateur avec milian:write et un rôle autorisé à modifier l’espace de travail. Les outils conservent les portées et groupes OAuth de cet accès. Chaque session ouvre une nouvelle conversation, sans charger les souvenirs privés ni les anciens chats du tableau de bord. Expliquez que la voix et l’analyse d’écran utilisent des crédits supplémentaires, puis obtenez l’accord explicite pour cette session avant d’envoyer {"approve_credit_usage":true,"context":{"locale":"fr"}}. Chaque nouvelle session ou tentative exige un nouvel accord. Cet accord n’autorise pas les achats, publications, suppressions ou communications externes. Connectez-vous dans le délai expires_in avec new WebSocket(data.url, data.protocols). La connexion est à usage unique ; protégez les protocoles comme des identifiants temporaires. Les navigateurs utilisent la même origine que l’URL ; les clients natifs peuvent omettre l’en-tête Origin. Après ready, envoyez {"type":"audio","audio":"BASE64"} en PCM16 mono little-endian à 16 kHz. L’audio reçu est à 24 kHz. Videz la lecture sur interrupt. Texte : {"type":"text","text":"Aide-moi avec ce réglage"}. Envoyez {"type":"ping"} toutes les dix secondes. Lorsque vous coupez ou mettez en pause le microphone, envoyez une fois {"type":"audio-pause"} pour terminer le segment audio courant. Le texte reste disponible ; reprenez en envoyant de nouveaux blocs audio. Après sélection explicite de l’écran, envoyez au maximum une capture JPEG toutes les douze secondes, de moins de 240 000 caractères : {"type":"screen","image":"data:image/jpeg;base64,…"}. Envoyez la première capture environ une seconde après la validation, afin que la fenêtre de sélection du navigateur n’y figure pas. Avant que Milian consulte l’écran, la connexion émet {"type":"screen-request"} : répondez immédiatement par une capture actuelle. Sans réponse sous deux secondes, Milian utilise la dernière capture. La capture est analysée séparément lorsque la conversation nécessite le contexte visuel ; une mise à jour ne déclenche pas un nouveau tour utilisateur. À la fin du partage, envoyez {"type":"screen-stop"} et arrêtez la capture pour supprimer l’image courante. L’audio brut et les captures ne sont pas enregistrés comme pièces jointes. Pour le contexte facultatif de la page, un client peut envoyer après ready {"type":"page-context","text":"Texte et commandes visibles"}, limité à 12 000 caractères. Informez l’utilisateur, proposez une pause et excluez secrets, valeurs des formulaires et contenu masqué. Actualisez après la navigation ou les changements visibles et au moins toutes les dix secondes ; le contexte expire après trente secondes. Envoyez {"type":"page-context-stop"} lors d’une pause, du masquage de l’onglet ou de la sortie de l’espace de travail. Les mises à jour restent passives jusqu’à ce que Milian consulte la page. Après validation du partage d’écran, envoyez {"type":"screen-start"} pour supprimer le contexte avant la première image. Les mises à jour de la page sont ignorées pendant le partage. Après screen-stop, envoyez un nouveau contexte pour reprendre ; l’ancien texte n’est jamais restauré automatiquement. Traitez transcript, message, screen-status, screen-request, usage avec les crédits facturés, error et ended. Terminez avec {"type":"stop"}, arrêtez les médias et attendez brièvement l’utilisation finale. Une déconnexion ou la limite de session arrête aussi le traitement. max_seconds indique la limite de l’offre ; une fermeture légèrement anticipée permet l’enregistrement final. Une seule session vocale est possible à la fois par espace de travail.