- 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.