10 Punkte von xguru 2025-04-10 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Das Red-Hat-Node.js-Team experimentiert mit Möglichkeiten zur Integration von LLMs in Node.js und TypeScript/JavaScript
  • Dabei werden verschiedene Frameworks verglichen, mit besonderem Fokus auf Tool-/Function-Calling und das Verhalten von Agenten
  • Analysiert werden die Funktionen des kürzlich veröffentlichten Llama Stack und die Möglichkeiten seiner Integration in Node.js

Einrichtung und Ausführung von Llama Stack

  • Llama Stack ist ein modulares Framework, das verschiedene Implementierungen bereitstellt und auf die Standardisierung von APIs abzielt
  • Bei Verwendung eines auf Ollama basierenden Containers ist die Ausführung am einfachsten
  • Beispiel für die Serverkonfiguration anhand eines Startskripts:
    • Modell: meta-llama/Llama-3.1-8B-Instruct
    • Port: 8321
    • Ollama-Server-IP: 10.1.2.38
  • Das Modell muss in Ollama vorab gestartet werden; außerdem ist mindestens eine Nutzung pro Tag nötig, um Keepalive aufrechtzuerhalten
  • Über den Dokumentations-Endpunkt (/docs) lassen sich API-Schemata einsehen und interaktive Tests ausführen

Erstes Node.js-Anwendungsbeispiel

  • Die Bibliothek llama-stack-client-typescript wird für die Kommunikation mit Llama Stack verwendet
  • Es werden zwei Tools definiert:
    • favorite_color_tool: liefert Farbinformationen basierend auf Stadt/Land
    • favorite_hockey_tool: liefert Informationen zu Eishockeyteams basierend auf Stadt/Land
  • Der Ablauf der Tool-Aufrufe wird anhand eines Frageszenarios getestet
  • Anfängliches Problem: Wenn dem Tool notwendige Informationen fehlen, wird keine klare Rückfrage ausgegeben
  • Lösung: Durch Einfügen des Wortes "assistant" in die Antwortnachricht wird der Ablauf natürlicher

Art der Verarbeitung von Tool-Aufrufen in Llama Stack

  • Bei Verwendung der API chatCompletion() müssen Tool-Aufrufe direkt verarbeitet werden
  • Mit der Funktion handleResponse() werden Tool-Anfragen erkannt und die Ergebnisse erneut als Nachricht übergeben
  • tool_choice ist standardmäßig auf "auto" gesetzt, zeigt aber eine starke Tendenz, vorhandene Tools zu verwenden
  • Es wurde beobachtet, dass selbst bei Fragen ohne Bezug zu den Tools der Versuch eines Tool-Einsatzes aufgegeben und der Fall als „keine Antwort möglich“ behandelt wird

Experiment zur Integration von MCP und Llama Stack

  • Über MCP (Model Context Protocol) können Tools auf externen Servern gehostet und mit verschiedenen Frameworks geteilt werden
  • Der MCP-Server bridgt über Supergateway einen stdio-basierten Server in Form von SSE
  • Nach der Registrierung des MCP-Servers können MCP-Tools mit der Llama-Stack-Agent-API automatisch aufgerufen werden
  • Die Agent-API übernimmt dabei:
    • automatische Verwaltung von Status und Nachrichten
    • interne Ausführung des Tool-Calling-Ablaufs durch das Framework
  • Allerdings lassen sich die Logs der Tool-Aufrufe nicht direkt einsehen; sichtbar ist nur die endgültige Antwort

Nutzung von MCP für den Zugriff auf lokale Umgebungen

  • Ein MCP-Server kann lokal per stdio ausgeführt und mit Llama Stack verbunden werden
  • Dafür wird Code benötigt, der die Tool-Definitions-JSON des MCP-Servers in ein mit Llama Stack kompatibles Format umwandelt
  • Über mcpClient.callTool() können Tool-Ergebnisse innerhalb des LLM-Antwortflusses zurückgegeben werden
  • Dadurch lassen sich Zugriffsszenarien auf lokale App-Umgebungen statt auf zentralisierte Server umsetzen

Fazit

  • In einer Node.js-Umgebung wird die Integration von LLMs und Tool-Calling mit Llama Stack praktisch erprobt
  • Es werden verschiedene Ansätze gezeigt: lokale Tools, Remote-MCP und lokales MCP
  • Besonders für JavaScript-/TypeScript-Entwickler werden praxisnahe Codebeispiele und Abläufe geboten
  • Damit dient der Leitfaden als nützlicher Einstiegspunkt für Entwickler, die LLMs künftig in Node.js integrieren möchten

Weiteres Material

Noch keine Kommentare.

Noch keine Kommentare.