Integrationen
API
Authentifizieren, einen Durchlauf starten und Ergebnisse über die HTTP-API lesen.
Mit der Skynet-HTTP-API können Skripte und Werkzeuge dasselbe tun wie die Web-App: Durchläufe starten, sie beobachten und die Ergebnisse lesen. Diese Seite zeigt, wie Sie Anfragen authentifizieren, wo die vollständige Referenz liegt, und ein vollständiges Beispiel.
Basis-URL
Senden Sie jede Anfrage an:
https://api.skynetml.comAuthentifizierung
Die API verwendet API-Tokens.
- Öffnen Sie in Skynet Einstellungen und dann den Tab API.
- Klicken Sie auf Token generieren.
- Kopieren Sie das Token sofort. Skynet zeigt das vollständige Token nur einmal.
Senden Sie das Token im Header Authorization jeder Anfrage:
Authorization: Bearer skyd_...- Tokens beginnen mit
skyd_. - Jeder Nutzer hat höchstens ein gültiges Token. Ein neues Token macht das alte Token ungültig.
- Klicken Sie auf Token widerrufen, um ein Token ungültig zu machen.
Interaktive Referenz
Die vollständige Referenz finden Sie unter api.skynetml.com/scalar. Sie listet jeden öffentlichen Endpunkt mit seinen Feldern und Antworten auf. Von dieser Seite aus können Sie Testanfragen senden.
Die Referenz liest das OpenAPI-Dokument unter https://api.skynetml.com/openapi.public.json. Mit dieser Datei können Sie einen Client in Ihrer Programmiersprache generieren.
Wichtige Endpunkte
| Methode und Pfad | Was er tut |
|---|---|
GET /models | Listet die Modelle auf, die Sie verwenden können. |
GET /optimizers | Listet die Optimierer auf, die zu einer Konfiguration passen. |
GET /blackbox/engines | Listet die nativen Engines auf und ob jede verfügbar ist. |
POST /optimize | Startet einen Durchlauf für einen Prompt, Code, Text oder ein DSPy-Programm. |
POST /blackbox/run | Startet einen Durchlauf auf einem GitHub-Repository. |
GET /optimizations | Listet Ihre Durchläufe auf. |
GET /optimizations/{optimization_id} | Gibt einen Durchlauf zurück: Status, Fortschritt, Logs und Ergebnis. |
GET /optimizations/{optimization_id}/artifact | Gibt die beste Version zurück, die der Durchlauf gefunden hat. |
POST /optimizations/{optimization_id}/cancel | Stoppt einen Durchlauf. |
POST /serve/{optimization_id} | Führt die beste Version mit einer neuen Eingabe aus. |
GET /health | Zeigt, ob der Dienst läuft. |
Einen Durchlauf starten
POST /optimize nimmt dieselbe Konfiguration an wie der Einreichungsassistent. Dieses Beispiel verbessert einen Prompt, der Support-Nachrichten Labels zuordnet.
curl https://api.skynetml.com/optimize \
-H "Authorization: Bearer $SKYNET_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: support-labels-001" \
-d @run.json{
"name": "Support labels",
"task": {
"objective": "Sort each support message into billing, bug or other.",
"artifact": {
"kind": "prompt",
"starting_version": "Label this support message as billing, bug or other."
}
},
"data": {
"mode": "pairs",
"cases": [
{ "input": { "message": "I was charged twice." }, "expected": { "label": "billing" } },
{ "input": { "message": "The export button does nothing." }, "expected": { "label": "bug" } },
{
"input": { "message": "Do you have a Hebrew interface?" },
"expected": { "label": "other" }
}
]
},
"optimizer": { "choice": "auto", "budget": { "max_scorer_runs": 200 } },
"models": {
"task_model": { "name": "<model from GET /models>" },
"reflection_model": { "name": "<model from GET /models>" }
},
"workspace": {
"run_code": "from skynet import llm\n\ndef run(artifact, input):\n return llm(artifact, input=input[\"message\"])\n",
"metric_code": "def score(input, output, expected=None):\n ok = str(output).strip().lower() == expected[\"label\"]\n return (1.0 if ok else 0.0), {\"feedback\": \"Correct.\" if ok else \"Wrong label.\"}\n"
},
"max_cost_cents": 500
}Wichtige Felder:
task.artifact.kindistprompt,code,textoderdspy_program.data.modeistpairs(Eingaben mit erwarteten Ausgaben) odersingle(genau ein Fall).optimizer.choiceistautooder ein Optimierername ausGET /optimizers.max_cost_centsist das Ausgabenlimit für diesen Durchlauf, in US-Cent.is_privateist standardmäßigfalse. Setzen Sie es auftrue, um den Durchlauf privat zu halten.
Die Regeln für run_code und metric_code lesen Sie unter Metriken und Scorer.
Antworten
| Status | Bedeutung |
|---|---|
201 | Skynet hat den Durchlauf in die Warteschlange gestellt. Der Body enthält optimization_id und status. |
202 | Die Konfigurationsprüfung läuft noch. Warten Sie die Sekunden aus dem Header Retry-After ab. Senden Sie dann denselben Body mit demselben Idempotency-Key. |
402 | Ihr Guthaben ist zu niedrig. |
409 | Sie haben ein Kontingent erreicht, oder die Konfigurationsprüfung ist veraltet. |
422 | Die Anfrage oder der Workspace-Code passt nicht zum Optimierer. |
Einen Durchlauf beobachten
Fragen Sie den Durchlauf ab, bis sein Status endgültig ist:
curl https://api.skynetml.com/optimizations/$RUN_ID \
-H "Authorization: Bearer $SKYNET_TOKEN"Das Feld status hat einen dieser Werte:
| Status | Endgültig |
|---|---|
pending, validating, running | Nein |
paused | Nein |
success | Ja |
failed, cancelled, stopped | Ja |
Fragen Sie alle 10 bis 30 Sekunden ab. Ein Durchlauf kann Minuten bis Stunden dauern.
Die API-Referenz listet jedes Feld der Durchlaufantwort auf.
Das Ergebnis verwenden
Lautet der Status success, rufen Sie die beste Version ab:
curl https://api.skynetml.com/optimizations/$RUN_ID/artifact \
-H "Authorization: Bearer $SKYNET_TOKEN"Um die beste Version mit einer neuen Eingabe auszuführen, senden Sie POST /serve/{optimization_id}. Was jeder Score bedeutet, lesen Sie unter Ergebnisse lesen.
Limits
Die API verwendet dieselben Kontingente, Ratenlimits und dieselbe Abrechnung wie die Web-App. Lesen Sie Limits und Abrechnung.