iToverDose/Software· 5 JULI 2026 · 04:04

NodeLLM 1.17: MCP-Sampling, parallele Tool-Ausführung & ORM-Steuerung

Die neue Version NodeLLM 1.17 führt bahnbrechende Features ein: MCP-Sampling ermöglicht LLM-Inferenz auf Serverseite, parallele Tool-Ausführung beschleunigt Workflows und die ORM-Integration bietet präzise Tool-Kontrolle. Mehr zu den Neuerungen und der Nutzung.

DEV Community4 min0 Kommentare

NodeLLM hat sich seit seiner Einführung als leistungsstarkes Framework für die Integration von Sprachmodellen in Node.js-Anwendungen etabliert. Mit der jüngsten Version 1.17 setzt das Team nun auf drei zentrale Verbesserungen: MCP-Sampling für serverseitige Inferenz, optimierte parallele Tool-Ausführung und eine durchgängige Steuerung der Tool-Nutzung in der ORM-Integration. Diese Neuerungen adressieren langjährige Pain Points in der Entwicklung agentischer Systeme und erweitern die Möglichkeiten der Framework-Nutzung deutlich.

MCP-Sampling: Spracheigene Inferenz für Server

Die traditionelle MCP-Architektur (Model Context Protocol) folgt einem klaren Muster: Clients fragen Server nach Tools oder Ressourcen, die dann vom Server bereitgestellt werden. NodeLLM 1.17 kehrt diesen Prozess um und führt MCP-Sampling ein. Dabei kann der Server selbst eine LLM-Inferenz beim Client anfordern – etwa für Aufgaben wie Textzusammenfassungen, Klassifizierungen oder das Entwerfen von Antworten. Dies spart nicht nur API-Aufrufe, sondern eliminiert auch die Notwendigkeit separater API-Schlüssel oder Provider-Integrationen auf Serverseite.

Die Implementierung erfolgt über die neue Funktion createLLMSamplingHandler, die eine Verbindung zwischen dem Server und einem konfigurierten LLM herstellt. Das folgende Beispiel zeigt die Einrichtung mit einem OpenAI-Modell:

import { createLLM } from "@node-llm/core";
import { MCP, createLLMSamplingHandler } from "@node-llm/mcp";

const llm = createLLM({ provider: "openai" });

const mcp = await MCP.connect(
  { command: "node", args: ["./sampling-server.mjs"] },
  { sampling: createLLMSamplingHandler(llm, "gpt-4o-mini") }
);

const tools = await mcp.discoverTools();

Der Server gibt Tools erst dann frei, wenn der Client während des Handshake-Prozesses explizit Sampling-Unterstützung signalisiert. Für Entwickler, die mehr Kontrolle benötigen, steht eine benutzerdefinierte Handler-Funktion zur Verfügung. Diese erhält die Rohdaten der Anfrage (sampling/createMessage) und kann flexibel entscheiden, wie die Inferenz beantwortet wird – etwa durch Routing nach Modellvorgaben oder das Einbinden eigener Sicherheitsmechanismen.

Parallele Tool-Ausführung: Effizienzsteigerung durch Parallelisierung

Bisher führte NodeLLM Tool-Aufrufe sequenziell aus, selbst wenn mehrere unabhängige Aktionen angefordert wurden. Dies war zwar sicher, führte jedoch zu unnötigen Wartezeiten – etwa bei drei gleichzeitigen Wetterabfragen für verschiedene Städte. Mit der neuen Option toolConcurrency können Entwickler nun parallele Ausführungen aktivieren:

const chat = llm.chat("gpt-4o-mini")
  .withTool(WeatherTool)
  .withToolConcurrency(true);

await chat.ask("Wie ist das Wetter in Tokio, London und New York?");

Die Funktion steht sowohl für Standard-Chats als auch für Streaming- und Agent-Modi zur Verfügung. Agentische Systeme profitieren dabei von reduzierten Latenzzeiten, ohne dass Änderungen an der Tool-Definition erforderlich sind. Dies beschleunigt Workflows erheblich, insbesondere in Szenarien mit vielen unabhängigen Tool-Aufrufen.

Konsistente Callback-Verwaltung: Kein Überschreiben mehr

Ein häufiges Problem in älteren Versionen war das stille Überschreiben von Callbacks, wenn mehrere Handler für denselben Ereignistyp registriert wurden. NodeLLM 1.17 ändert dieses Verhalten und ermöglicht nun das Stapeln von Callbacks. Jeder registrierte Handler wird in der Reihenfolge seiner Registrierung ausgeführt – unabhängig davon, ob es sich um Logging, UI-Aktualisierungen oder Sicherheitsprüfungen handelt.

chat
  .onEndMessage((msg) => audit.log(msg))
  .onEndMessage(() => ui.refresh())
  .beforeRequest(redactPII)
  .beforeRequest(logOutboundPrompt);

Diese Änderung ist besonders für modulare Anwendungen relevant, in denen verschiedene Komponenten eigene Callbacks registrieren. Bestehende Implementierungen mit einem einzigen Handler bleiben unverändert kompatibel.

ORM-Integration 0.8.0: Tool-Kontrolle in Datenbankanwendungen

Die ORM-Integration von NodeLLM erhält mit Version 0.8.0 eine vollständige Synchronisation mit den Kernfunktionen des Frameworks. Entwickler können nun Tool-Execution-Modi direkt über die ORM steuern, ohne auf die Low-Level-API des Kerns zurückgreifen zu müssen. Dies ist besonders für Anwendungen relevant, die auf Prisma oder andere ORMs setzen.

import { createChat } from "@node-llm/orm/prisma";
import { ToolExecutionMode } from "@node-llm/core";

const chat = await createChat(prisma, { model: "gpt-4o" })
  .withToolExecution(ToolExecutionMode.CONFIRM)
  .onConfirmToolCall(async (call) => await askUserToApprove(call))
  .onToolCallError((call, error) => ({ error: error.message }))
  .withToolChoice("get_weather")
  .withToolConcurrency(true);

Der ToolExecutionMode bietet drei Optionen:

  • auto (Standard): Tools werden automatisch ausgeführt
  • confirm: Jeder Tool-Aufruf erfordert eine Benutzerbestätigung
  • dry-run: Tools werden nicht ausgeführt, ideal für Testzwecke

Zusätzlich ermöglicht die ORM-Integration die Persistenz aller Tool-Aktionen, sodass Anwendungen vollständige Transparenz über durchgeführte Operationen erhalten. Die Integration mit Prisma stellt sicher, dass alle Daten konsistent in der Datenbank abgelegt werden.

Monitoring-Erweiterungen: Präzisere Token-Verwaltung

Die Monitoring-Pakete @node-llm/monitor und @node-llm/monitor-otel erhalten in ihren aktuellen Versionen 0.4.2 und 0.1.1 erweiterte Funktionen zur Token-Verwaltung. Neben den klassischen Prompt- und Completion-Tokens werden nun auch Cache-, Reasoning- und Bild-Tokens erfasst. Dies ermöglicht eine detailliertere Kostenkontrolle und Ressourcenplanung, insbesondere in Szenarien mit Prompt-Caching oder multimodalen Modellen.

interface ExtractedTokenUsage {
  prompt: number;
  completion: number;
  cached: number;
  cacheCreation: number;
  reasoning: number;
  image: number;
}

Die Daten werden unabhängig von der Herkunft normalisiert, sodass Entwickler konsistente Metriken für verschiedene Anbieter erhalten. Dies ist besonders nützlich, da Anbieter wie OpenAI oder die Vercel AI SDK unterschiedliche Bezeichnungen für ähnliche Token-Typen verwenden.

Nächste Schritte für Entwickler

Die neue Version NodeLLM 1.17 bringt erhebliche Fortschritte für die Entwicklung agentischer Systeme und die Integration von Sprachmodellen in bestehende Anwendungen. MCP-Sampling ermöglicht serverseitige Inferenz, parallele Tool-Ausführung beschleunigt Workflows und die ORM-Integration bietet präzise Kontrolle über Tool-Aktionen. Entwickler sollten die neuen Funktionen nutzen, um effizientere und skalierbarere Lösungen zu implementieren. Die vollständige Liste der Änderungen ist im Commit-Verlauf und den Release Notes auf GitHub dokumentiert.

KI-Zusammenfassung

NodeLLM 1.17, MCP tabanlı LLM'lerde istemci-sunucu akışını tersine çeviren örnekleme desteği sunuyor. Paralel araç çalıştırma, ORM iyileştirmeleri ve callback yönetimiyle geliştirici deneyimini nasıl yükselttiğini keşfedin.

Kommentare

00
KOMMENTAR SCHREIBEN
ID #MAGCYG

0 / 1200 ZEICHEN

Menschen-Check

5 + 2 = ?

Erscheint nach redaktioneller Prüfung

Moderation · Spam-Schutz aktiv

Noch keine Kommentare. Sei der erste.