Projekt

Osmia AI: KI-gestützte Datenanreicherung für die Kommandozeile

2026-04-09
Osmia AI: KI-gestützte Datenanreicherung für die Kommandozeile

Als Spin-off eines anderen Projekts habe ich Osmia AI entwickelt – ein schlankes CLI-Tool, das unvollständige Datensätze via Websuche und Large Language Models (LLMs) automatisch anreichert.

Das Problem

In der Praxis steht man oft vor unvollständigen Datensätzen: Einem Produktkatalog fehlen Spezifikationen, einer Kontaktliste die Unternehmensinformationen oder einem Datensatz die passenden Meta-Tags. Um diese Daten mit Hilfe von KI und dem Web anzureichern, wird oft gleich ein riesiges Rad neu erfunden: Man baut komplexe Skripte, richtet Datenbanken ein und verbringt Stunden mit dem Handling von API-Limits.

Die Lösung

Osmia AI löst dieses Problem durch konsequenten Fokus auf die Unix-Philosophie: File-In ➔ File-Out.

Es ist ein rein stateless CLI-Tool, das rohes JSON entgegennimmt, die Daten anhand eines strukturierten Prompts per Web-Suche und LLM-Extraktion anreichert und das Ergebnis direkt wieder ausspuckt. Ganz ohne Datenbank, ohne Backend, ohne Overhead.

Hauptfeatures

  • Unix Pipes: Native Unterstützung für stdin und stdout. Das Tool lässt sich nahtlos in bestehende Bash-Pipelines integrieren.
  • Stateless: Reine Datentransformation. Es gibt keinen persistenten State, der verwaltet werden muss.
  • Developer Experience (DX): Ein interaktiver Wizard (npx osmia-ai init) hilft beim Erstellen der YAML-Konfiguration inklusive Templating für Such-Prompts.
  • Smart Skip: Bereits angereicherte Felder in großen Datensätzen können intelligent übersprungen werden ( --skip-if-exists).

Code Beispiel

Statt für jede Datenquelle neuen Code zu schreiben, definiert man lediglich eine config.yaml und nutzt die CLI:

# Simpel über Unix Pipes
cat input.json | npx osmia-ai --config config.yaml > enriched.json
 
# Oder mit parallelen Workern und Skip-Logik für bereits bestehende Felder
npx osmia-ai -c config.yaml -i data.json -o enriched.json -s category,specs --workers 5

Das Setup für neue Datensätze ist dank des Wizards extrem schnell erledigt:

npx osmia-ai init

Architektur & Technik

Während ich bei Laravel Ingest auf das PHP-Ökosystem gesetzt habe, wurde Osmia AI komplett in TypeScript (Node.js) entwickelt.

  1. Fokus auf I/O-Performance: Für ein CLI-Tool, das hunderte asynchrone HTTP-Requests (Search Provider + LLM Endpunkte) absendet, ist die non-blocking Architektur von Node.js prädestiniert.
  2. Speichereffizienz: Durch den konsequenten Einsatz von JSONL-Streaming und der Pipe-Architektur bleibt der Speicherbedarf auch bei riesigen Datensätzen minimal.
  3. Sicheres Batch-Processing: Das Tool bricht den Schreibvorgang ab, falls ein Datensatz fehlschlägt. So werden keine unvollständigen Dateien generiert, wenn ein Batch-Job unbeaufsichtigt läuft.

Use Cases

Ob als eigenständiges Tool oder als "Transform"-Schritt vor dem Import in eine Datenbank – Osmia AI spielt seine Stärken in diversen Bereichen aus:

  • E-Commerce: Rohe Produktlisten vollautomatisch mit technischen Spezifikationen und SEO-Beschreibungen aus dem Web anreichern.
  • Research: Forschungsdatensätze mit aktuellen Meta-Daten aus dem Netz ergänzen.
  • Content Management: Automatische Generierung von Zusammenfassungen, Kategorisierungen und Tags für unstrukturierte Texte.
  • Lead Generation: Kontakt- oder Firmenlisten mit fehlenden Informationen komplettieren.

Auf GitHub ansehen