Qualsiasi modello sa generare SAS. Senza un modo per eseguirlo, nessuno sa se funziona. La Run API aperta di Jenner dà all'agente l'altra metà del ciclo: eseguire il programma, leggere output ed errori reali, correggerlo ed eseguirlo di nuovo — senza licenza SAS e senza installazioni locali.
L'accesso anonimo funziona senza alcuna chiave API.
Un assistente che scrive SAS e si ferma lì consegna qualcosa che sembra corretto. Se la macro si risolve, se il merge prende le variabili attese, se PROC MEANS restituisce 19 righe oppure 0: nulla di tutto questo è verificabile finché il programma non viene eseguito.
Storicamente, eseguirlo richiedeva una licenza SAS e un'installazione, cioè proprio ciò che un agente non ha. La Run API elimina questo vincolo: una sola chiamata HTTP esegue il codice e restituisce risultati strutturati su cui il modello può davvero ragionare.
Generare, verificare, eseguire, iterare: tutto leggibile da una macchina.
Il modello scrive SAS: un DATA step, una PROC, una macro. Non serve nulla di particolare: Jenner accetta la sintassi SAS standard, quindi il codice che un assistente sa già scrivere è il codice che viene eseguito.
Inviare lo script in POST a /v1/validate per un passaggio di solo parsing. La diagnostica torna senza eseguire nulla, così un agente può individuare un errore di sintassi prima di sprecarci un'esecuzione.
Inviare in POST a /v1/run lo script ed eventuali input CSV o Parquet. Jenner lo esegue in un container isolato e restituisce l'output del listing, il log NOTE/WARNING/ERROR, un codice di uscita e ogni dataset e file prodotto dal programma.
Il log e la diagnostica sono un riscontro strutturato, non uno screenshot. L'agente legge l'errore reale, corregge la riga reale ed esegue di nuovo, chiudendo il ciclo senza una persona nel mezzo.
Richieste reali all'API pubblica. Nessuna chiave, nessuna configurazione.
curl -X POST https://api.jenneranalytics.com/v1/quick \
--data-binary @analysis.sas The MEANS Procedure
Variable N Mean Std Dev
-----------------------------------------------
bmi 19 17.8420103 1.4625169
-----------------------------------------------In questo frammento manca un punto e virgola. Una chiamata di solo parsing individua il problema, così l'agente può correggerlo e proseguire.
data demo;
set sashelp.class /* <- missing semicolon */
bmi = weight / (height**2) * 703;
run;{
"valid": false,
"diagnostics": [
{ "severity": "error",
"message": "Unexpected token: Eq, expected Semi" }
]
}Un'esecuzione completa restituisce il listing, il log, un codice di uscita e ogni dataset prodotto dal programma, con il numero di righe: l'agente può verificare di aver ottenuto dati invece di presumerlo.
{
"run_id": "r_c8679761197f4f9d8a3bc021...",
"status": "ok",
"exit_code": 0,
"output": "...formatted listing tables...",
"log": "NOTE: PROC MEANS statement used.",
"datasets": [ { "name": "demo", "row_count": 19 } ],
"files": [],
"diagnostics": [],
"duration_ms": 412,
"jenner_version": "..."
}URL di base https://api.jenneranalytics.com/v1
| Endpoint | Scopo |
|---|---|
POST/v1/run | Esegue uno script con dati in ingresso facoltativi. Restituisce output, log, codice di uscita, dataset, file e diagnostica in JSON. |
POST/v1/run/stream | Come /v1/run, ma in streaming come Server-Sent Events, così il log arriva mentre il programma è ancora in esecuzione. |
POST/v1/quick | Comodità in una riga. Script grezzo in ingresso, listing in testo semplice in uscita: il modo più rapido per rispondere a “questo SAS funziona?” |
POST/v1/validate | Controllo della sintassi con solo parsing. Restituisce la diagnostica senza eseguire. Le macro non vengono espanse, quindi trattare gli errori legati alle macro come indicativi. |
GET/v1/run/{run_id} | Recupera un'esecuzione completata, i suoi file oppure l'anteprima o il download di un dataset. I risultati restano disponibili per un'ora e richiedono il token di accesso dell'esecuzione. |
Si parte senza chiave. Se ne aggiunge una quando serve più margine.
| Livello | Autenticazione | Limite di frequenza | Timeout |
|---|---|---|---|
| Anonimo | Nessuna chiave richiesta | 1.000 req/h per IP | 30 secondi |
| Free | Registrazione via email | 1.500 req/h | 60 secondi |
| Pro | Chiave API | 10.000 req/h | 5 minuti |
| Enterprise | Chiave API | Personalizzato | Personalizzato |
Lo stesso motore di esecuzione è alla base di tutti, quindi il codice convalidato da un agente tramite l'API si comporta allo stesso modo quando una persona lo apre.
Nessuna chiave per iniziare. Nessuna licenza SAS, mai.