Alerte de stock bas par IA avec suggestions de réapprovisionnement
Un agent lit l'inventaire et huit semaines de ventes, signale les références qui vont bientôt manquer et suggère quoi recommander.
- Connexion en lecture seule
- Planifié
- Callback
- Plafond de budget
Regardez une vraie exécution
Une vraie exécution du 7 oct. 2026, rejouée. Modèle : openai/gpt-6-luna.
{
"threshold_days": 14
}- En file d'attentebudget de $0.03 réservé
- MicroVMmicroVM ready
- MicroVMworker started · shell off · web off
- Connexionops GET /inventory
- Résultat
ops GET → 200 - MicroVMmicroVM destroyed
- Réussie2 appels au modèle, 4,167 jetonsSortie enregistrée (en anglais)
SKU Stock Daily rate (units/day) Days of cover Reorder quantity TEE-BLK-M 64 5.86 10.9 230 CAP-NVY-01 9 1.29 7.0 70 NTBK-A5-01 0 3.54 0.0 0 Human look:
- NTBK-A5-01: Sales fell from 26 to 14 in the latest week while stock is 0; the data doesn’t establish the cause.
- BAG-CNV-01: Sales declined across the last four weeks (8, 6, 5, 4) despite stock of 250.
- Worker détruit$0.004414 facturé, $0.025586 libéré
Lancez-le vous-même
Ouvrez l'exemple dans le playground avec toute la requête déjà remplie. Il s'exécute sur votre propre compte, dans le budget indiqué, sur les mêmes systèmes d'exemple en lecture seule.
Budget pour cet exemple : $0.03
Fonctionnement
Il lit le stock, les commandes ouvertes, les délais d'approvisionnement et les ventes hebdomadaires depuis une API d'inventaire en lecture seule, puis applique la règle que vous lui donnez. La réponse est un court tableau exploitable par un acheteur, avec les chiffres affichés pour pouvoir les vérifier.
Ce que l'agent peut et ne peut pas faire
Les permissions font partie de la requête. Tout ce qui n'est pas listé ici n'est pas disponible pour l'exécution.
| Paramètre | Autorisé |
|---|---|
| Connexions | ops : GET uniquement, sur ephemer.al/api/samples/ops-api |
| Web | Désactivé |
| Shell | Désactivé |
| Fichiers | Aucune |
| Rétention zéro des données | Désactivée : l'historique est conservé 30 jours |
| Budget | $0.03, un plafond strict |
| Délai | 60 secondes |
Les identifiants n'entrent jamais dans la machine : un broker les ajoute à chaque appel et impose les méthodes ci-dessus.
Le code
Voici la requête exacte envoyée par l'exemple. Définissez EPHEMERAL_API_KEY avec une clé de membre de votre organisation.
curl -X POST $EPHEMERAL_URL/v1/runs \
-H "Authorization: Bearer $EPHEMERAL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d @request.jsonCorps complet de la requête workflow.json
Le même corps, avec les fichiers en ligne.
{
"prompt": "Read GET /inventory on the ops connection. For each SKU, daily_rate is the average of the last 4 values of weekly_sales divided by 7, and days_of_cover is stock divided by daily_rate (treat a daily_rate of 0 as unlimited cover). Flag every SKU whose days_of_cover is below input.threshold_days. For each flagged SKU suggest a reorder quantity: daily_rate times (lead_time_days plus 28), minus stock, minus on_order, rounded up to the next 10, and never below 0 (when stock plus on_order already covers it, the reorder quantity is 0). Reply in Markdown: a table with SKU, stock, daily_rate, days_of_cover and reorder quantity, then one line per SKU that deserves a human look (for example a sales dip caused by a stockout). Use only what the data returns and never guess; if a call fails or a field is missing, say so.",
"connections": {
"ops": {
"type": "http",
"url": "https://ephemer.al/api/samples/ops-api",
"auth": {
"type": "bearer",
"token": "sample_read_key"
},
"allowed_methods": [
"GET"
],
"instructions": "GET /inventory returns as_of, the week start dates, and items with sku, name, stock, on_order, lead_time_days, unit_cost_usd and weekly_sales (units per week, oldest first, the last entry is the most recent week)."
}
},
"shell": false,
"timeout_seconds": 60
}Cet exemple s'exécute selon un calendrier : 0 8 * * 1-5 dans le fuseau Europe/Berlin. Une planification lance un workflow enregistré : enregistrez d'abord la requête comme workflow, puis créez la planification.