Für Entwickler

Gebaut, um aus Code gesteuert zu werden.

Ein Python-SDK mit einer einzigen Pflichtabhängigkeit, eine CLI für Jobs, Sweeps, Evaluierungen und Nachweise, ein OTLP-Endpunkt für Ihre vorhandene Instrumentierung, ein MCP-Server für KI-Assistenten und eine REST-API für alles Übrige.

Zugänge

  • Python-SDK

    pip install euvyra: Experiment-Tracking, Tracing, Evaluierungen, Prompts, Datensätze und Sweeps. Ab Python 3.9; httpx ist die einzige Pflichtabhängigkeit.

  • CLI

    Jobs, Sweeps und Agenten, Evaluierungs-Gates für CI, Offline-Prüfung von Nachweisen, Importe aus W&B und MLflow und Synchronisierung von Offline-Runs.

  • OpenTelemetry

    OTLP/HTTP als Protobuf oder JSON. GenAI-Konventionen und OpenInference-Attribute werden auf Span-Arten, Modelle, Tokens und Inhalte abgebildet.

  • OpenAI-kompatibles Gateway

    Chat, Completions und Embeddings für freigegebene Releases unter /v1, dazu das Messages-Format von Anthropic. Bestehende Clients ändern ihre Basis-URL.

  • MCP-Server

    Claude, ChatGPT, Cursor, VS Code und andere Clients melden sich per OAuth an und arbeiten als die Person, die sie verbunden hat.

  • REST-API und Webhooks

    Rund 200 Operationen mit OpenAPI-Referenz unter /api/docs in jeder Installation und signierte Webhooks für Runs, Evaluierungen, Releases, Vorfälle und Endpunkte.

Python-SDK

Legen Sie euvyra.init() um die Trainingsschleife, und das SDK zeichnet Konfiguration, Metriken, Git-Stand, Systemlast und die Modelldatei auf, gebündelt in einem Hintergrund-Thread. Mit @euvyra.observe verfolgen Sie Agenten und Pipelines, synchron wie asynchron.

Evaluierungen lassen Ihr Modell oder Ihren Agenten lokal auf jedem Testfall laufen und überlassen die Bewertung dem Server. Jede Zahl, von der ein Release-Gate abhängt, stammt so aus demselben Evaluator-Code. result.raise_for_gate() lässt den Build scheitern.

Callbacks für Hugging Face Transformers, PyTorch Lightning, Keras 3, XGBoost, LightGBM und scikit-learn sind gegen die echten Bibliotheken getestet. OpenAI-kompatible Clients, auch vLLM und Mistral, verfolgen Sie mit einem einzigen Aufruf von instrument().

import euvyra

euvyra.configure(project="support-bot", environment="production")

@euvyra.observe(kind="retrieval")
def retrieve(query): ...

@euvyra.observe(name="support-agent", kind="agent")
def answer(question):
    docs = retrieve(question)
    with euvyra.generation("chat", model="eu-large-2", input=docs) as g:
        text = call_model(docs)
        g.update(output=text, usage={"input_tokens": 812, "output_tokens": 95})
    return text

CLI

Der Befehl euvyra kommt mit dem SDK. Er speichert Host und API-Schlüssel in einer Konfigurationsdatei, die nur Sie lesen können, oder liest EUVYRA_HOST und EUVYRA_API_KEY.

euvyra eval run bewertet eine Datei mit vorberechneten Ausgaben gegen eine Testsuite und endet mit einem Fehlercode, wenn das Gate scheitert. Mehr braucht eine CI-Pipeline nicht, um einen Merge zu blockieren. Im Repository liegt ein Beispiel für GitHub Actions.

euvyra launch --wait zeigt das Log des Jobs live und endet mit dessen Ergebnis. In Skripten verhält sich ein Trainingsjob damit wie ein lokaler Befehl.

pip install euvyra
euvyra login --host https://euvyra.example.eu --api-key euv_...

euvyra launch --project medical-ai --image registry.example.eu/ml/train:1.4 \
  --gpus 1 --nodes 2 --wait -- python train.py
euvyra sweep create sweep.yaml --project medical-ai
euvyra agent swp_... --count 10 -- python train.py
euvyra eval run --project support-bot --suite support-regression --outputs outputs.jsonl
euvyra evidence verify package.zip --public-key installation.pem
euvyra import wandb acme/chest-xray --project medical-ai
euvyra import mlflow ./mlruns --project medical-ai
euvyra sync

OpenTelemetry, ganz ohne SDK

Dienste, die bereits OpenTelemetry senden, richten ihren Exporter auf /api/otlp/v1/traces und schicken einen Projekt-API-Schlüssel als Bearer-Token. Der Server wendet die Datenschutzrichtlinie des Projekts an, bepreist Tokens nach Ihrer Preisliste und fasst Spans zu Traces zusammen, genau wie bei Spans aus dem SDK.

Ein Schlüssel für die ganze Organisation nennt das Projekt im Header x-euvyra-project.

export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://euvyra.example.eu/api/otlp/v1/traces
export OTEL_EXPORTER_OTLP_TRACES_HEADERS=Authorization=Bearer%20euv_...

KI-Assistenten per MCP

Der MCP-Endpunkt ist die Adresse der Konsole mit /mcp dahinter. Die Anmeldung öffnet eine Zustimmungsseite, die den Client nennt und nach Lese- oder Lese-und-Schreibzugriff fragt. Die Verbindung lässt sich jederzeit beenden.

48 Werkzeuge decken Orientierung, Experimente, Compute, Cloud, Inferenz, LLM-Anwendungen und Governance ab; drei allgemeine Werkzeuge erreichen den Rest der API. Freigaben, Einstufung von Vorfällen, Löschungen, Rechteänderungen und alles, was Geld kostet, werden abgelehnt und an einen Menschen zurückgegeben.

Clients, die nur Befehle starten können, nutzen stattdessen euvyra mcp mit einem API-Schlüssel.

claude mcp add --transport http euvyra https://euvyra.example.eu/mcp

# Cursor, VS Code und andere Clients:
# {"mcpServers": {"euvyra": {"url": "https://euvyra.example.eu/mcp"}}}

Selbst betreiben

Docker Compose startet PostgreSQL, S3-kompatiblen Speicher, die API, den Worker und die Konsole. Die Demodaten füllen eine Organisation mit realistischen Runs, Traces, Evaluierungen, Releases, Freigaben und einem Vorfall.

# zuerst die Secrets eintragen
cp deploy/.env.example deploy/.env
docker compose -f deploy/docker-compose.yml up -d --build
docker compose -f deploy/docker-compose.yml exec api euvyra-server seed-demo

Melden Sie sich als demo@euvyra.local an. Für Kubernetes installieren Sie deploy/helm/euvyra mit einem bestehenden Secret; die Betriebsanleitung im Repository nennt jede Einstellung.