NEWS
Test Adapter AI Toolbox v0.0.7 GitHub/Latest
-
Aktuelle Test Version 0.0.7 Veröffentlichungsdatum 27.12.2024 Github Link https://github.com/ToGe3688/ioBroker.ai-toolbox Hallo zusammen,
ich möchte euch den neuen ioBroker AI Toolbox Adapter vorstellen, den ich kürzlich entwickelt habe. Der Adapter bringt KI-Modelle in eure ioBroker Smart-Home-Umgebung.
Was macht der Adapter?
Der AI Toolbox Adapter ermöglicht die Integration von KI-Modellen (Large Language Models, LLMs) in ioBroker. Damit könnt ihr maßgeschneiderte Tools erstellen, die spezifische Aufgaben automatisieren oder auch als intelligente Chatbots dienen. Die wichtigsten Features sind:
- Unterstützung für verschiedene KI-Anbieter, darunter OpenAI, Anthropic, OpenRouter, Perplexity und lokale / selbst gehostete Modelle wie LocalAI oder LM Studio.
- Erstellung individueller Tools mit flexiblen Einstellungen wie System-Prompts, Beispielnachrichten, Nachrichtenverläufen und Kreativitätsparametern.
- Direkte Kommunikation mit euren Tools und den Modellen über Datenpunkte oder via sendTo über Scripte im Javascript Adapter
- Token- und Nutzungsstatistiken zur Optimierung und Kostenkontrolle.
- Vision / Image Fähigkeiten für Tools. Bilder analysieren und nach eigener Vorgabe auswerten lassen.
Beispiele für die Anwendung
- Chatbots: Eigene Assistenten die sich wie ein Chatbot verhalten und zur Kommunikation genutzt werden können.
- Wetter-Bot: Personalisierte Wetterberichte basierend auf euren Sensordaten die ihr via ioBroker zur Verfügung stellt.
- Musik-Assistent: Musikempfehlungen passend zur Stimmung oder zum Wetter für Smartspeaker z.B. Alexa
- Lichtsteuerung: Automatische RGB-Beleuchtungsvorschläge je nach Musikrichtung. Hier können JSON Daten zur weiteren Verwendung in Scripten erzeugt werden.
- Individuelle Begrüßungen: Erzeuge individuelle Begrüßungen basierend auf den zur Verfügung gestellten Daten. Die Begrüßungen können gekoppelt mit der Anwesenheit z.B. über Alexa ausgegeben werden.
- Bild Analyse: Bildmaterial nach eigenen Vorgaben auswerten lassen
Wie funktioniert’s?
Nach der Installation könnt ihr eure Tools direkt im Admin Interface anlegen und konfigurieren. Mit einem Klick stehen Datenpunkte für Anfragen (
text_request
) und Antworten (text_response
) bereit. Beachtet dabei eure Tools so präzise wie möglich zu formulieren um gute Ergebnisse zu erhalten. Die Beispielanfragen und -antworten helfen hierbei das Model zu formen um konsistente Ausgaben zu erhalten. Auch die Integration in Skripte ist möglich, z. B.:Mit Tools interagieren
sendTo('ai-toolbox.0', 'tool_request', { tool: 'simple-chatbot', text: 'Hallo, wie geht’s?', }, (result) => { console.log(result); // Antwort vom Tool als Textstring });
Direkt mit Modellen interagieren
sendTo('ai-toolbox.0', 'model_request', { 'model': 'MODEL-NAME', 'system_prompt': 'System prompt for your request' 'temperature': 'Temperature setting for your request' 'max_tokens': 'Max number of tokens to generate' 'text': 'The message for the tool to respond to', }, async (result) => { console.info(result.text); // Text response of the model console.info(result.model); // Used model for request console.info(result.tokens_input); // Used input tokens console.info(result.tokens_output); // Used output tokens console.info(result.error); // Error, populated if request fails console.info(result.request_data); // JSON object with request data console.info(result.response_data); // JSON object with raw response of the API call });
Feedback gesucht!
Ich freue mich über euer Feedback, sei es zu den Funktionen, der Benutzerfreundlichkeit oder Ideen für neue Anwendungsfälle. Auch Bug-Reports und Verbesserungsvorschläge sind willkommen! Da es mein erster Adapter für ioBroker ist bitte ich um Nachsicht falls ich Dinge nicht korrekt umgesetzt habe.
Den Adapter findet ihr auf Github unter https://github.com/ToGe3688/ioBroker.ai-toolbox
Eine detaillierte Anleitung und ein Quick-Start Guide ist im Readme enthalten.
Danke schon jetzt für eure Rückmeldungen!
Viele Grüße!
-
Habe gerade über git installiert und mit einem openrouter Account getestet.
Die Tools sind sehr praktisch für verschiedene Szenarien, eine sehr gute Idee.
Die Tools klappen und auch das direkte interagieren.Auch wenn der Adapter noch ganz am Anfang ist eine Frage ^^.
Ist auch eine Integration zur Bildanalyse geplant?
Ähnlich wie hier
https://community.home-assistant.io/t/llm-vision-let-home-assistant-see/729241
Hab es auch hier schonmal angesprochen und mit curl erste Ergebnisse:
https://forum.iobroker.net/topic/78608/bilder-mittels-llm-analysieren/5Edit
Die gpt Modelle klappen bei mir alle nicht.
Als Fehler kommtCannot read properties of undefined (reading 'bot_name')
Egal ob in einem Tool oder direkt über den DP des Modells.
-
Mega!
Habe es ganz kurz schon erfolgreich mit einer LocalAI-Instanz und "llama-3.2-3b-instruct:q8_0" getestet. Der "Simple Chat-Bot" klappt auf jeden Fall schon
In dem Adapter steckt extrem viel Potential. Danke für die ausführliche Doku und den Start!
-
Spontan fällt mir direkt ein kleiner Verbesserungsvorschlag ein:
Könnte man nicht die verfügbaren Modelle via API auslesen und zur Auswahl bereitstellen?Dann könnte man ihnen im Adapter auch z.B. Alias-Namen verpassen und es etwas übersichtlicher gestalten.
-
@ToGe88 Werden die Beispielfragen/-antworten eigentlich auch an das LLM weitergegeben?
-
Du hast jeweils den DP request.body.
Der sieht Zb so aus. Ich denke, das ist alles was übermittelt wird.{"model":"meta-llama/llama-3.2-3b-instruct:free","max_tokens":2000,"temperature":0.6,"messages":[{"role":"user","content":"Wie viel ist 5+5?"}]}
-
@david-g Ahh, ok. Dann ist das vermutlich eher als Gedankenstütze für den Anwender gedacht.
Im Code auf Github sieht es jedoch so aus, als würde das irgendwie doch mit übergeben...
Mich würde brennend interessieren, welche Modelle (für selbst gehostete LLMs) ihr so verwendet. Bisher habe ich mit "llama3-sauerkraut" schon gute Erfahrungen gemacht. Die Wortwahl hakt jedoch noch ein wenig.
-
Danke für das Feedback!
Ich habe gerade nochmal ein neues Release auf GitHub gepusht. Der Fehler mit OpenAI ist nun behoben und Requests sollten sauber laufen.
Neues Feature:
- Vision / Image Fähigkeiten: Es ist nun möglich Tools zu erstellen welche Bilder analysieren können @David-G
@oxident Ja da ist durchaus Optimierungspotential bei der Usability Ich hatte die Idee mit dem Auslesen verworfen weil die APIs teilweise auch Modelle zurück liefern welche nicht für den Adapter geeignet sind. (z.B. Audio-Modelle etc.)
Bei der Beispielfrage / Antwort gab es einen Bug in der ersten Version. Diese werden nun an den Anfang der Nachrichten gesetzt und immer mit übergeben um das Modell in die gewünschte Ausgabeform zu lenken falls der System Prompt nicht ausreicht.
-
@toge88 Super, danke, dass Du dranbleibst!
Verstehe Dein Argument mit den Modellen auch sehr gut...Ich frage mich, ob der Adapter mittelfristig nicht sogar optional die Datenpunkte anderer Adapter mit übergeben könnte. Wäre doch toll, wenn die KI die "irgendwie" verstehen könnte.
Beim HomeAssistant geht man doch, glaube ich, derzeit auch diesen Weg.
-
In Version 0.0.7 gibt es nun auch die Möglichkeit lokale Pfade zu Bildern anzugeben (siehe Readme auf Github). Dies ermöglicht es z.B. direkt Bildanfragen vom Telegram Adapter von KI Tools verarbeiten bzw analysieren zu lassen.
@oxident Ich habe da noch einen zweiten Adapter in Entwicklung welcher eher in die Richtung geht als vollumfänglicher Assistent in ioBroker zu funktionieren. Den werde ich die Tage auch mal auf Github stellen zum testen.
-
@toge88 sagte in Test Adapter AI Toolbox v0.0.7 GitHub/Latest:
In Version 0.0.7 gibt es nun auch die Möglichkeit lokale Pfade zu Bildern anzugeben (siehe Readme auf Github). Dies ermöglicht es z.B. direkt Bildanfragen vom Telegram Adapter von KI Tools verarbeiten bzw analysieren zu lassen.
Klappt auch wunderbar um snapshots von der Überwachungskamera auszuwerten. Liegt ein Paket vor der Tür, steht ein Auto in der Einfahrt etc. Man kann den Bot ja so definieren, dass er bei Bedarf ein true oder false ausgibt.
-
@toge88 Sehr genial. Dann startet das neue Jahr definitiv spannend!
-
Ich habe mal eine kleine Offtopic Frage.
Evtl hast du da ja schon mal was zu gelesen.Weißt du, warum die Ergebnisse der Api zur Bildanalyse VIEL schlechter sind als über die Website bzw App direkt? Mit den Tokens die man einstellt hat es nichts zu tun.
Ich habe gelesen, dass bei der Api die Auflösung vom Bild angepasst wird vor der Analyse. Aber das macht der "normale" weg ja vermutlich auch.... -
@david-g Ich habe noch nicht wirklich viel mit der Bilderkennung ausprobiert daher fehlen mir da ein wenig die Vergleichswerte. Ist das Verhalten denn bei allen Modellen gleich?
Der Adapter wandelt das Bild lediglich in einen Base64 String um und übergibt es an die jeweiligen Anbieter Schnittstelle, wenn es da eine Reduzierung der Auflösung gibt müsste das auf Anbieterseite passieren.
Ein Ansatz wäre vielleicht dem Modell einen gewissen "Freiraum" zum denken zu geben bei seiner Antwort. Damit konnte ich für Textausgaben zumindest die Qualität deutlich steigern. Ich löse dass so das ich das Werkzeug im Adapter Json ausgeben lasse und als erstes Attribut "reasoning" festlege. In diesen soll das Modell dann seinen Prozess schreiben wie es zu seinem Ergebnis gekommen ist. Bei der weiteren Verarbeitung verwerfe ich diesen Inhalt dann einfach und nutze nur die für mich relevanten Daten weiter.
Könnte sein dass es bei der Bildverarbeitung auch klappt.
-
@toge88
Habe hier glaube was gefunden.
https://www.ai-for-devs.com/blog/gpt-vision-learn-how-to-use-gpt-4-to-understand-imagesUnter "Improving Image Fidelity: Low and High Resolution Image Understanding" steht ein wenig.
Das Modell entscheidet scheinbar selber, wenn man keine Qualität der Verarbeitung angibt.
Vermutlich ist er bei der Api was konservativer.Wenn ich in meine frage mit schreibe, dass das Bild in einer hohen Qualität verarbeiten soll ist das Ergebnis schon besser.
ML sehen, ob man das in den Einstellungen vom bot mitgegeben bekommt. -
Habe gerade mal einen Test versucht mit Perplexity/LLama huge und dem simple-chatbot Tool. Die Eingabe der Anfrage über ai-toolbox.0.Tools.simple-chatbot.text_request funktioniert zwar, aber über ai-toolbox.0.Tools.simple-chatbot.text_response kommt nichts zurück. Im Datenpunkt ai-toolbox.0.Tools.simple-chatbot.response.raw steht dennoch eine passende JSON Antwort und auch im Debug Log ist die Antwort enthalten. Die Anfrage über request/response beim Datenmodell selbst funktioniert dagegen anscheinend wie beabsichtigt.
Mache ich da noch etwas falsch oder sollte man hier die raw Response einfach selbst zerlegen?
-
@mick70 Das könnte ein Bug sein, da ich selber keinen Perplexity API Zugang habe wäre es super wenn du mal das Debug Log einer Anfrage schicken könntest!
Edit: Der Inhalt von raw response wäre auch hilfreich
-
@david-g Das klingt tatsächlich so als ob man das am besten über den Prompt bzw die Anfrage lösen sollte. Es gibt ja laut deinem Link den Parameter in der API um die höhere Qualität zu erzwingen, ich glaube es wäre aber nicht zielführend das für jede Anfrage an OpenAI zu setzen. Kannst du das Verhalten über den Prompt denn konsistent steuern?
-
ein wahrlich interessantes projekt - leider fehlt mir die weitsicht, wenn es um anwendungen geht - daher die hoffnung, ihr werdet projekte oder tests in einem evlt. eignenen thread vorstellen