Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Bilder mittels LLM ChatGPT Vision ananalysieren

NEWS

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    11
    1
    423

  • Neuer ioBroker-Blog online: MonatsrĂŒckblick MĂ€rz/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.9k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    11
    1
    817

Bilder mittels LLM ChatGPT Vision ananalysieren

Geplant Angeheftet Gesperrt Verschoben Blockly
17 BeitrÀge 5 Kommentatoren 3.1k Aufrufe 9 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • OliverIOO OliverIO

    @david-g

    1
    Wenn du es in den prompt reinschreibst dann kannst du ihn auch auf deutsch antworten lassen

    2
    Die Differenz ist wohl die Mehrwertsteuer

    3
    Ja Bild muss base64 kodiert werden. Beispiel ist ja mit enthalten.. Die Code Beispiele sind zwar alle in Python, können aber auch alle in Java Skript umgesetzt werden.
    so Übersetzung dann einfach wieder ChatGpt verwenden

    fĂŒr eher was lokales kannst du mal hier schauen
    Das ist eine der bekanntesten Bibliotheken fĂŒr Face and object recognition.
    Das funktioniert auch nur mit CPU und muss nicht unbedingt gleich eine Höllen-Grafikkarte
    mit verfĂŒgbar sein.
    https://github.com/opencv/opencv

    David G.D Online
    David G.D Online
    David G.
    schrieb am zuletzt editiert von David G.
    #7

    @oliverio

    Dann schaue ich am Wochenende mal, ob ich das in JS bekomme (mit ChatGPT, ich selber bin da eher unbeholfen...).

    Sonst melde ich mich nochmal.
    Falls jemand mit testen möchte, kann ich auch (persönlich dieser Person) zum testen den Api key geben.

    Kann mir ja hinterher einen neuen erstellen.

    Ich werde versuchen es in eine Blockly Funktion zu bekommen, in der ich das Bild als Pfad und die Frage ĂŒbergeben kann.

    Zeigt eure Lovelace-Visualisierung klick
    (Auch ideal um sich Anregungen zu holen)

    Meine Tabellen fĂŒr eure Visualisierung klick

    1 Antwort Letzte Antwort
    0
    • OliverIOO OliverIO

      @david-g

      1
      Wenn du es in den prompt reinschreibst dann kannst du ihn auch auf deutsch antworten lassen

      2
      Die Differenz ist wohl die Mehrwertsteuer

      3
      Ja Bild muss base64 kodiert werden. Beispiel ist ja mit enthalten.. Die Code Beispiele sind zwar alle in Python, können aber auch alle in Java Skript umgesetzt werden.
      so Übersetzung dann einfach wieder ChatGpt verwenden

      fĂŒr eher was lokales kannst du mal hier schauen
      Das ist eine der bekanntesten Bibliotheken fĂŒr Face and object recognition.
      Das funktioniert auch nur mit CPU und muss nicht unbedingt gleich eine Höllen-Grafikkarte
      mit verfĂŒgbar sein.
      https://github.com/opencv/opencv

      David G.D Online
      David G.D Online
      David G.
      schrieb am zuletzt editiert von David G.
      #8

      @oliverio

      Habe schonmal einen Anfang:

      7c0ac640-4ce1-4e4d-aabe-336f995fbab4-image.png

      Die Funktion:

      const fs = require('fs');
      const OpenAI = require('openai');
      
      // Variablen fĂŒr API-Key, Bildpfad und Frage
      const API_KEY = api;
      const IMAGE_PATH = bildpfad;
      const QUESTION = frage;
      
      // OpenAI-Client initialisieren
      const client = new OpenAI({
        apiKey: API_KEY, // Verwende die Variable fĂŒr den API-SchlĂŒssel
      });
      
      // Funktion zum Kodieren des Bildes in Base64
      function encodeImage(imagePath) {
        const imageBuffer = fs.readFileSync(imagePath);
        return imageBuffer.toString('base64');
      }
      
      // Base64-String des Bildes erstellen
      const base64Image = encodeImage(IMAGE_PATH); // Verwende die Variable fĂŒr den Bildpfad
      
      // Anfrage an OpenAI senden
      async function analyzeImage() {
        try {
          const response = await client.chat.completions.create({
            model: 'gpt-4o-mini',
            messages: [
              {
                role: 'user',
                content: [
                  {
                    type: 'text',
                    text: QUESTION, // Verwende die Variable fĂŒr die Frage
                  },
                  {
                    type: 'image_url',
                    image_url: {
                      url: `data:image/jpeg;base64,${base64Image}`,
                    },
                  },
                ],
              },
            ],
          });
      
          console.log(response.choices[0]);
        } catch (error) {
          console.error('Error:', error);
        }
      }
      
      
      // Funktion ausfĂŒhren
      analyzeImage();
      return(response.choices[0]);
      

      Allerdings wird der Log noch zugemĂŒllt, eine Antwort kommt aber:

      javascript.0	13:12:13.916	error	script.js.Eigene_Scripte.aitestbl: ReferenceError: response is not defined
      javascript.0	13:12:13.916	error	at etwas_tun (script.js.Eigene_Scripte.aitestbl:61:5)
      javascript.0	13:12:13.916	error	at script.js.Eigene_Scripte.aitestbl:66:21
      javascript.0	13:12:13.916	error	at script.js.Eigene_Scripte.aitestbl:73:3
      javascript.0	13:12:15.880	info	script.js.Eigene_Scripte.aitestbl: { index: 0, message: { role: 'assistant', content: 'Anhand der Bildzeitstempel ist es Tag. Es ist 13:29 Uhr, was auf den Nachmittag hinweist.', refusal: null }, logprobs: null, finish_reason: 'stop' }
      

      Nun zu meinen Fragen.

      • Wie bekomme ich die Fehler weg?
      • Bekomme ich im JS aus der Antwort den contenet extrahiert?
      • Kann ich den Konenet dann in das result schreiben lassen?

      EDIT
      habe glaube alles hinbekommen:

      const fs = require('fs');
      const OpenAI = require('openai');
      
      // Variablen fĂŒr API-Key, Bildpfad und Frage
      const API_KEY = api;
      const IMAGE_PATH = bildpfad;
      const QUESTION = frage;
      
      // OpenAI-Client initialisieren
      const client = new OpenAI({
        apiKey: API_KEY, // Verwende die Variable fĂŒr den API-SchlĂŒssel
      });
      
      // Funktion zum Kodieren des Bildes in Base64
      function encodeImage(imagePath) {
        const imageBuffer = fs.readFileSync(imagePath);
        return imageBuffer.toString('base64');
      }
      
      // Base64-String des Bildes erstellen
      const base64Image = encodeImage(IMAGE_PATH); // Verwende die Variable fĂŒr den Bildpfad
      
      // Anfrage an OpenAI senden
      async function analyzeImage() {
        try {
          const response = await client.chat.completions.create({
            model: 'gpt-4o-mini',
            messages: [
              {
                role: 'user',
                content: [
                  {
                    type: 'text',
                    text: QUESTION, // Verwende die Variable fĂŒr die Frage
                  },
                  {
                    type: 'image_url',
                    image_url: {
                      url: `data:image/jpeg;base64,${base64Image}`,
                    },
                  },
                ],
              },
            ],
          });
      
          // Nur den content aus der Antwort zurĂŒckgeben
          return response.choices[0].message.content;
        } catch (error) {
          console.error('Error:', error);
        }
      }
      
      // Funktion ausfĂŒhren
      analyzeImage().then((result) => {
        console.log(result);
      });
      
      

      Zeigt eure Lovelace-Visualisierung klick
      (Auch ideal um sich Anregungen zu holen)

      Meine Tabellen fĂŒr eure Visualisierung klick

      OliverIOO 1 Antwort Letzte Antwort
      0
      • David G.D David G.

        @oliverio

        Habe schonmal einen Anfang:

        7c0ac640-4ce1-4e4d-aabe-336f995fbab4-image.png

        Die Funktion:

        const fs = require('fs');
        const OpenAI = require('openai');
        
        // Variablen fĂŒr API-Key, Bildpfad und Frage
        const API_KEY = api;
        const IMAGE_PATH = bildpfad;
        const QUESTION = frage;
        
        // OpenAI-Client initialisieren
        const client = new OpenAI({
          apiKey: API_KEY, // Verwende die Variable fĂŒr den API-SchlĂŒssel
        });
        
        // Funktion zum Kodieren des Bildes in Base64
        function encodeImage(imagePath) {
          const imageBuffer = fs.readFileSync(imagePath);
          return imageBuffer.toString('base64');
        }
        
        // Base64-String des Bildes erstellen
        const base64Image = encodeImage(IMAGE_PATH); // Verwende die Variable fĂŒr den Bildpfad
        
        // Anfrage an OpenAI senden
        async function analyzeImage() {
          try {
            const response = await client.chat.completions.create({
              model: 'gpt-4o-mini',
              messages: [
                {
                  role: 'user',
                  content: [
                    {
                      type: 'text',
                      text: QUESTION, // Verwende die Variable fĂŒr die Frage
                    },
                    {
                      type: 'image_url',
                      image_url: {
                        url: `data:image/jpeg;base64,${base64Image}`,
                      },
                    },
                  ],
                },
              ],
            });
        
            console.log(response.choices[0]);
          } catch (error) {
            console.error('Error:', error);
          }
        }
        
        
        // Funktion ausfĂŒhren
        analyzeImage();
        return(response.choices[0]);
        

        Allerdings wird der Log noch zugemĂŒllt, eine Antwort kommt aber:

        javascript.0	13:12:13.916	error	script.js.Eigene_Scripte.aitestbl: ReferenceError: response is not defined
        javascript.0	13:12:13.916	error	at etwas_tun (script.js.Eigene_Scripte.aitestbl:61:5)
        javascript.0	13:12:13.916	error	at script.js.Eigene_Scripte.aitestbl:66:21
        javascript.0	13:12:13.916	error	at script.js.Eigene_Scripte.aitestbl:73:3
        javascript.0	13:12:15.880	info	script.js.Eigene_Scripte.aitestbl: { index: 0, message: { role: 'assistant', content: 'Anhand der Bildzeitstempel ist es Tag. Es ist 13:29 Uhr, was auf den Nachmittag hinweist.', refusal: null }, logprobs: null, finish_reason: 'stop' }
        

        Nun zu meinen Fragen.

        • Wie bekomme ich die Fehler weg?
        • Bekomme ich im JS aus der Antwort den contenet extrahiert?
        • Kann ich den Konenet dann in das result schreiben lassen?

        EDIT
        habe glaube alles hinbekommen:

        const fs = require('fs');
        const OpenAI = require('openai');
        
        // Variablen fĂŒr API-Key, Bildpfad und Frage
        const API_KEY = api;
        const IMAGE_PATH = bildpfad;
        const QUESTION = frage;
        
        // OpenAI-Client initialisieren
        const client = new OpenAI({
          apiKey: API_KEY, // Verwende die Variable fĂŒr den API-SchlĂŒssel
        });
        
        // Funktion zum Kodieren des Bildes in Base64
        function encodeImage(imagePath) {
          const imageBuffer = fs.readFileSync(imagePath);
          return imageBuffer.toString('base64');
        }
        
        // Base64-String des Bildes erstellen
        const base64Image = encodeImage(IMAGE_PATH); // Verwende die Variable fĂŒr den Bildpfad
        
        // Anfrage an OpenAI senden
        async function analyzeImage() {
          try {
            const response = await client.chat.completions.create({
              model: 'gpt-4o-mini',
              messages: [
                {
                  role: 'user',
                  content: [
                    {
                      type: 'text',
                      text: QUESTION, // Verwende die Variable fĂŒr die Frage
                    },
                    {
                      type: 'image_url',
                      image_url: {
                        url: `data:image/jpeg;base64,${base64Image}`,
                      },
                    },
                  ],
                },
              ],
            });
        
            // Nur den content aus der Antwort zurĂŒckgeben
            return response.choices[0].message.content;
          } catch (error) {
            console.error('Error:', error);
          }
        }
        
        // Funktion ausfĂŒhren
        analyzeImage().then((result) => {
          console.log(result);
        });
        
        
        OliverIOO Offline
        OliverIOO Offline
        OliverIO
        schrieb am zuletzt editiert von OliverIO
        #9

        @david-g sagte in Bilder mittels LLM analysieren:

        analyzeImage();

        ja das geht auch, es hÀtte gereicht:

        let result=await analyzeImage();
        console.log(result);
        

        hinzuschreiben.
        analyzeImage ist eine asynchrone Funktion.
        daher gibt sie eigentlich nur ein promise-objekt zurĂŒck, welches irgendwann in der Zukunft aufgelöst wird.

        mit await wartet dann javascript darauf bis das aufgelöst wird und gibt das ergebnis dann weiter falls da was zugewiesen ist
        ohne await geht es gleich weiter auch wenn die funktion noch nicht abgearbeitet wurde.

        Meine Adapter und Widgets
        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
        Links im Profil

        David G.D 1 Antwort Letzte Antwort
        0
        • OliverIOO OliverIO

          @david-g sagte in Bilder mittels LLM analysieren:

          analyzeImage();

          ja das geht auch, es hÀtte gereicht:

          let result=await analyzeImage();
          console.log(result);
          

          hinzuschreiben.
          analyzeImage ist eine asynchrone Funktion.
          daher gibt sie eigentlich nur ein promise-objekt zurĂŒck, welches irgendwann in der Zukunft aufgelöst wird.

          mit await wartet dann javascript darauf bis das aufgelöst wird und gibt das ergebnis dann weiter falls da was zugewiesen ist
          ohne await geht es gleich weiter auch wenn die funktion noch nicht abgearbeitet wurde.

          David G.D Online
          David G.D Online
          David G.
          schrieb am zuletzt editiert von David G.
          #10

          @oliverio

          Hier mein fertiges Blockly fĂŒr interessierte:

          833ca05b-bebd-4765-a4a3-f476e7b0a1a5-image.png

          <xml xmlns="https://developers.google.com/blockly/xml">
           <variables>
             <variable id="#^~=}RQE~[:hE?sXCoB$">Bildpfad</variable>
             <variable id="o2iepdh*h(;FbS4Z=9{J">api_key</variable>
             <variable id="Uh*o[9LxAdT1B2TiZdAr">Frage</variable>
           </variables>
           <block type="procedures_defcustomreturn" id="k1J9z=^XFMFehGb%0.og" x="-663" y="-688">
             <mutation statements="false">
               <arg name="Bildpfad" varid="#^~=}RQE~[:hE?sXCoB$"></arg>
               <arg name="api_key" varid="o2iepdh*h(;FbS4Z=9{J"></arg>
               <arg name="Frage" varid="Uh*o[9LxAdT1B2TiZdAr"></arg>
             </mutation>
             <field name="NAME">Bild_Analysieren</field>
             <field name="SCRIPT">Y29uc3QgZnMgPSByZXF1aXJlKCdmcycpOw0KY29uc3QgT3BlbkFJID0gcmVxdWlyZSgnb3BlbmFpJyk7DQoNCi8vIFZhcmlhYmxlbiBmw7xyIEFQSS1LZXksIEJpbGRwZmFkIHVuZCBGcmFnZQ0KY29uc3QgQVBJX0tFWSA9IGFwaV9rZXk7DQpjb25zdCBJTUFHRV9QQVRIID0gQmlsZHBmYWQ7DQpjb25zdCBRVUVTVElPTiA9IEZyYWdlOw0KDQovLyBPcGVuQUktQ2xpZW50IGluaXRpYWxpc2llcmVuDQpjb25zdCBjbGllbnQgPSBuZXcgT3BlbkFJKHsNCiAgYXBpS2V5OiBBUElfS0VZLCAvLyBWZXJ3ZW5kZSBkaWUgVmFyaWFibGUgZsO8ciBkZW4gQVBJLVNjaGzDvHNzZWwNCn0pOw0KDQovLyBGdW5rdGlvbiB6dW0gS29kaWVyZW4gZGVzIEJpbGRlcyBpbiBCYXNlNjQNCmZ1bmN0aW9uIGVuY29kZUltYWdlKGltYWdlUGF0aCkgew0KICBjb25zdCBpbWFnZUJ1ZmZlciA9IGZzLnJlYWRGaWxlU3luYyhpbWFnZVBhdGgpOw0KICByZXR1cm4gaW1hZ2VCdWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpOw0KfQ0KDQovLyBCYXNlNjQtU3RyaW5nIGRlcyBCaWxkZXMgZXJzdGVsbGVuDQpjb25zdCBiYXNlNjRJbWFnZSA9IGVuY29kZUltYWdlKElNQUdFX1BBVEgpOyAvLyBWZXJ3ZW5kZSBkaWUgVmFyaWFibGUgZsO8ciBkZW4gQmlsZHBmYWQNCg0KLy8gQW5mcmFnZSBhbiBPcGVuQUkgc2VuZGVuDQphc3luYyBmdW5jdGlvbiBhbmFseXplSW1hZ2UoKSB7DQogIHRyeSB7DQogICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuY2hhdC5jb21wbGV0aW9ucy5jcmVhdGUoew0KICAgICAgbW9kZWw6ICdncHQtNG8tbWluaScsDQogICAgICBtZXNzYWdlczogWw0KICAgICAgICB7DQogICAgICAgICAgcm9sZTogJ3VzZXInLA0KICAgICAgICAgIGNvbnRlbnQ6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLA0KICAgICAgICAgICAgICB0ZXh0OiBRVUVTVElPTiwgLy8gVmVyd2VuZGUgZGllIFZhcmlhYmxlIGbDvHIgZGllIEZyYWdlDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICB0eXBlOiAnaW1hZ2VfdXJsJywNCiAgICAgICAgICAgICAgaW1hZ2VfdXJsOiB7DQogICAgICAgICAgICAgICAgdXJsOiBgZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwke2Jhc2U2NEltYWdlfWAsDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICB9LA0KICAgICAgICAgIF0sDQogICAgICAgIH0sDQogICAgICBdLA0KICAgIH0pOw0KDQogICAgLy8gTnVyIGRlbiBjb250ZW50IGF1cyBkZXIgQW50d29ydCB6dXLDvGNrZ2ViZW4NCiAgICByZXR1cm4gcmVzcG9uc2UuY2hvaWNlc1swXS5tZXNzYWdlLmNvbnRlbnQ7DQogIH0gY2F0Y2ggKGVycm9yKSB7DQogICAgY29uc29sZS5lcnJvcignRXJyb3I6JywgZXJyb3IpOw0KICB9DQp9DQoNCi8vIEZ1bmt0aW9uIGF1c2bDvGhyZW4NCmFuYWx5emVJbWFnZSgpLnRoZW4oKHJlc3VsdCkgPT4gew0KICBjb25zb2xlLmxvZyhyZXN1bHQpOw0KfSk7DQo=</field>
             <comment pinned="false" h="80" w="160">Beschreibe diese Funktion 
</comment>
           </block>
           <block type="http_get" id="%@DtL{e5a7xB/z4QWJJD" x="-662" y="-637">
             <field name="TIMEOUT">2000</field>
             <field name="UNIT">ms</field>
             <field name="TYPE">arraybuffer</field>
             <value name="URL">
               <shadow type="text" id="KylM(z%z`LA/%XK_x^*D">
                 <field name="TEXT">http://192.168.99.93/cgi-bin/api.cgi?cmd=Snap&amp;channel=0&amp;user=admin&amp;password=abcd</field>
               </shadow>
             </value>
             <statement name="STATEMENT">
               <block type="debug" id="d:IY2pT_WNG/EqsBccvX">
                 <field name="Severity">info</field>
                 <value name="TEXT">
                   <shadow type="text" id="+Kg)Y%9AYp}{tY^/Vv|_">
                     <field name="TEXT">test</field>
                   </shadow>
                   <block type="procedures_callcustomreturn" id="Th(%,~XXrnkE8m#b)/9D">
                     <mutation name="Bild_Analysieren">
                       <arg name="Bildpfad"></arg>
                       <arg name="api_key"></arg>
                       <arg name="Frage"></arg>
                     </mutation>
                     <value name="ARG0">
                       <block type="http_response_tofile" id="w[MNq!R0Lr|-N$Go+E@L">
                         <value name="FILENAME">
                           <shadow type="text" id="#5YFt*N{B7dOcv]kFRP$">
                             <field name="TEXT">eingang.jpg</field>
                           </shadow>
                         </value>
                       </block>
                     </value>
                     <value name="ARG1">
                       <block type="text" id="qD1A7?Y)DhcB{4-ff0T=">
                         <field name="TEXT">xyz</field>
                       </block>
                     </value>
                     <value name="ARG2">
                       <block type="text" id="DjqZIXmZJ[JX-JqvE=/4">
                         <field name="TEXT">Was ist das fĂŒr ein Foto?</field>
                       </block>
                     </value>
                   </block>
                 </value>
               </block>
             </statement>
           </block>
          </xml>
          

          const fs = require('fs');
          const OpenAI = require('openai');
          
          // Variablen fĂŒr API-Key, Bildpfad und Frage
          const API_KEY = api_key;
          const IMAGE_PATH = Bildpfad;
          const QUESTION = Frage;
          
          // OpenAI-Client initialisieren
          const client = new OpenAI({
           apiKey: API_KEY, // Verwende die Variable fĂŒr den API-SchlĂŒssel
          });
          
          // Funktion zum Kodieren des Bildes in Base64
          function encodeImage(imagePath) {
           const imageBuffer = fs.readFileSync(imagePath);
           return imageBuffer.toString('base64');
          }
          
          // Base64-String des Bildes erstellen
          const base64Image = encodeImage(IMAGE_PATH); // Verwende die Variable fĂŒr den Bildpfad
          
          // Anfrage an OpenAI senden
          async function analyzeImage() {
           try {
             const response = await client.chat.completions.create({
               model: 'gpt-4o-mini',
               messages: [
                 {
                   role: 'user',
                   content: [
                     {
                       type: 'text',
                       text: QUESTION, // Verwende die Variable fĂŒr die Frage
                     },
                     {
                       type: 'image_url',
                       image_url: {
                         url: `data:image/jpeg;base64,${base64Image}`,
                       },
                     },
                   ],
                 },
               ],
             });
          
             // Nur den content aus der Antwort zurĂŒckgeben
             return response.choices[0].message.content;
           } catch (error) {
             console.error('Error:', error);
           }
          }
          
          // Funktion ausfĂŒhren
          analyzeImage().then((result) => {
           console.log(result);
          });
          
          

          In der Javascriptinstant noch folgende 2 Module hinzufĂŒgen.
          c9090244-d9a4-41f9-b896-680411412654-image.png

          javascript.0	14:07:17.248	info	Start JavaScript script.js.Eigene_Scripte.Tests.Foto_KI_Test (Blockly)
          javascript.0	14:07:17.269	info	script.js.Eigene_Scripte.Tests.Foto_KI_Test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
          javascript.0	14:07:17.837	info	script.js.Eigene_Scripte.Tests.Foto_KI_Test: undefined
          javascript.0	14:07:21.943	info	script.js.Eigene_Scripte.Tests.Foto_KI_Test: Das Foto zeigt eine Straßenansicht, aufgenommen aus einem Fenster. Man sieht mehrere HĂ€user, eine kurvenreiche Straße und einige BĂ€ume im Hintergrund. Der Himmel ist bewölkt und es scheint, als wĂ€re es tagsĂŒber. Die Sicht ist etwas trĂŒb, wahrscheinlich aufgrund von Wetterbedingungen oder Schmutz auf dem Fenster.
          

          @OliverIO
          Eine Idee wo das undefined her kommt?

          Zeigt eure Lovelace-Visualisierung klick
          (Auch ideal um sich Anregungen zu holen)

          Meine Tabellen fĂŒr eure Visualisierung klick

          OliverIOO 1 Antwort Letzte Antwort
          0
          • David G.D David G.

            @oliverio

            Hier mein fertiges Blockly fĂŒr interessierte:

            833ca05b-bebd-4765-a4a3-f476e7b0a1a5-image.png

            <xml xmlns="https://developers.google.com/blockly/xml">
             <variables>
               <variable id="#^~=}RQE~[:hE?sXCoB$">Bildpfad</variable>
               <variable id="o2iepdh*h(;FbS4Z=9{J">api_key</variable>
               <variable id="Uh*o[9LxAdT1B2TiZdAr">Frage</variable>
             </variables>
             <block type="procedures_defcustomreturn" id="k1J9z=^XFMFehGb%0.og" x="-663" y="-688">
               <mutation statements="false">
                 <arg name="Bildpfad" varid="#^~=}RQE~[:hE?sXCoB$"></arg>
                 <arg name="api_key" varid="o2iepdh*h(;FbS4Z=9{J"></arg>
                 <arg name="Frage" varid="Uh*o[9LxAdT1B2TiZdAr"></arg>
               </mutation>
               <field name="NAME">Bild_Analysieren</field>
               <field name="SCRIPT">Y29uc3QgZnMgPSByZXF1aXJlKCdmcycpOw0KY29uc3QgT3BlbkFJID0gcmVxdWlyZSgnb3BlbmFpJyk7DQoNCi8vIFZhcmlhYmxlbiBmw7xyIEFQSS1LZXksIEJpbGRwZmFkIHVuZCBGcmFnZQ0KY29uc3QgQVBJX0tFWSA9IGFwaV9rZXk7DQpjb25zdCBJTUFHRV9QQVRIID0gQmlsZHBmYWQ7DQpjb25zdCBRVUVTVElPTiA9IEZyYWdlOw0KDQovLyBPcGVuQUktQ2xpZW50IGluaXRpYWxpc2llcmVuDQpjb25zdCBjbGllbnQgPSBuZXcgT3BlbkFJKHsNCiAgYXBpS2V5OiBBUElfS0VZLCAvLyBWZXJ3ZW5kZSBkaWUgVmFyaWFibGUgZsO8ciBkZW4gQVBJLVNjaGzDvHNzZWwNCn0pOw0KDQovLyBGdW5rdGlvbiB6dW0gS29kaWVyZW4gZGVzIEJpbGRlcyBpbiBCYXNlNjQNCmZ1bmN0aW9uIGVuY29kZUltYWdlKGltYWdlUGF0aCkgew0KICBjb25zdCBpbWFnZUJ1ZmZlciA9IGZzLnJlYWRGaWxlU3luYyhpbWFnZVBhdGgpOw0KICByZXR1cm4gaW1hZ2VCdWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpOw0KfQ0KDQovLyBCYXNlNjQtU3RyaW5nIGRlcyBCaWxkZXMgZXJzdGVsbGVuDQpjb25zdCBiYXNlNjRJbWFnZSA9IGVuY29kZUltYWdlKElNQUdFX1BBVEgpOyAvLyBWZXJ3ZW5kZSBkaWUgVmFyaWFibGUgZsO8ciBkZW4gQmlsZHBmYWQNCg0KLy8gQW5mcmFnZSBhbiBPcGVuQUkgc2VuZGVuDQphc3luYyBmdW5jdGlvbiBhbmFseXplSW1hZ2UoKSB7DQogIHRyeSB7DQogICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuY2hhdC5jb21wbGV0aW9ucy5jcmVhdGUoew0KICAgICAgbW9kZWw6ICdncHQtNG8tbWluaScsDQogICAgICBtZXNzYWdlczogWw0KICAgICAgICB7DQogICAgICAgICAgcm9sZTogJ3VzZXInLA0KICAgICAgICAgIGNvbnRlbnQ6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLA0KICAgICAgICAgICAgICB0ZXh0OiBRVUVTVElPTiwgLy8gVmVyd2VuZGUgZGllIFZhcmlhYmxlIGbDvHIgZGllIEZyYWdlDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICB0eXBlOiAnaW1hZ2VfdXJsJywNCiAgICAgICAgICAgICAgaW1hZ2VfdXJsOiB7DQogICAgICAgICAgICAgICAgdXJsOiBgZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwke2Jhc2U2NEltYWdlfWAsDQogICAgICAgICAgICAgIH0sDQogICAgICAgICAgICB9LA0KICAgICAgICAgIF0sDQogICAgICAgIH0sDQogICAgICBdLA0KICAgIH0pOw0KDQogICAgLy8gTnVyIGRlbiBjb250ZW50IGF1cyBkZXIgQW50d29ydCB6dXLDvGNrZ2ViZW4NCiAgICByZXR1cm4gcmVzcG9uc2UuY2hvaWNlc1swXS5tZXNzYWdlLmNvbnRlbnQ7DQogIH0gY2F0Y2ggKGVycm9yKSB7DQogICAgY29uc29sZS5lcnJvcignRXJyb3I6JywgZXJyb3IpOw0KICB9DQp9DQoNCi8vIEZ1bmt0aW9uIGF1c2bDvGhyZW4NCmFuYWx5emVJbWFnZSgpLnRoZW4oKHJlc3VsdCkgPT4gew0KICBjb25zb2xlLmxvZyhyZXN1bHQpOw0KfSk7DQo=</field>
               <comment pinned="false" h="80" w="160">Beschreibe diese Funktion 
</comment>
             </block>
             <block type="http_get" id="%@DtL{e5a7xB/z4QWJJD" x="-662" y="-637">
               <field name="TIMEOUT">2000</field>
               <field name="UNIT">ms</field>
               <field name="TYPE">arraybuffer</field>
               <value name="URL">
                 <shadow type="text" id="KylM(z%z`LA/%XK_x^*D">
                   <field name="TEXT">http://192.168.99.93/cgi-bin/api.cgi?cmd=Snap&amp;channel=0&amp;user=admin&amp;password=abcd</field>
                 </shadow>
               </value>
               <statement name="STATEMENT">
                 <block type="debug" id="d:IY2pT_WNG/EqsBccvX">
                   <field name="Severity">info</field>
                   <value name="TEXT">
                     <shadow type="text" id="+Kg)Y%9AYp}{tY^/Vv|_">
                       <field name="TEXT">test</field>
                     </shadow>
                     <block type="procedures_callcustomreturn" id="Th(%,~XXrnkE8m#b)/9D">
                       <mutation name="Bild_Analysieren">
                         <arg name="Bildpfad"></arg>
                         <arg name="api_key"></arg>
                         <arg name="Frage"></arg>
                       </mutation>
                       <value name="ARG0">
                         <block type="http_response_tofile" id="w[MNq!R0Lr|-N$Go+E@L">
                           <value name="FILENAME">
                             <shadow type="text" id="#5YFt*N{B7dOcv]kFRP$">
                               <field name="TEXT">eingang.jpg</field>
                             </shadow>
                           </value>
                         </block>
                       </value>
                       <value name="ARG1">
                         <block type="text" id="qD1A7?Y)DhcB{4-ff0T=">
                           <field name="TEXT">xyz</field>
                         </block>
                       </value>
                       <value name="ARG2">
                         <block type="text" id="DjqZIXmZJ[JX-JqvE=/4">
                           <field name="TEXT">Was ist das fĂŒr ein Foto?</field>
                         </block>
                       </value>
                     </block>
                   </value>
                 </block>
               </statement>
             </block>
            </xml>
            

            const fs = require('fs');
            const OpenAI = require('openai');
            
            // Variablen fĂŒr API-Key, Bildpfad und Frage
            const API_KEY = api_key;
            const IMAGE_PATH = Bildpfad;
            const QUESTION = Frage;
            
            // OpenAI-Client initialisieren
            const client = new OpenAI({
             apiKey: API_KEY, // Verwende die Variable fĂŒr den API-SchlĂŒssel
            });
            
            // Funktion zum Kodieren des Bildes in Base64
            function encodeImage(imagePath) {
             const imageBuffer = fs.readFileSync(imagePath);
             return imageBuffer.toString('base64');
            }
            
            // Base64-String des Bildes erstellen
            const base64Image = encodeImage(IMAGE_PATH); // Verwende die Variable fĂŒr den Bildpfad
            
            // Anfrage an OpenAI senden
            async function analyzeImage() {
             try {
               const response = await client.chat.completions.create({
                 model: 'gpt-4o-mini',
                 messages: [
                   {
                     role: 'user',
                     content: [
                       {
                         type: 'text',
                         text: QUESTION, // Verwende die Variable fĂŒr die Frage
                       },
                       {
                         type: 'image_url',
                         image_url: {
                           url: `data:image/jpeg;base64,${base64Image}`,
                         },
                       },
                     ],
                   },
                 ],
               });
            
               // Nur den content aus der Antwort zurĂŒckgeben
               return response.choices[0].message.content;
             } catch (error) {
               console.error('Error:', error);
             }
            }
            
            // Funktion ausfĂŒhren
            analyzeImage().then((result) => {
             console.log(result);
            });
            
            

            In der Javascriptinstant noch folgende 2 Module hinzufĂŒgen.
            c9090244-d9a4-41f9-b896-680411412654-image.png

            javascript.0	14:07:17.248	info	Start JavaScript script.js.Eigene_Scripte.Tests.Foto_KI_Test (Blockly)
            javascript.0	14:07:17.269	info	script.js.Eigene_Scripte.Tests.Foto_KI_Test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
            javascript.0	14:07:17.837	info	script.js.Eigene_Scripte.Tests.Foto_KI_Test: undefined
            javascript.0	14:07:21.943	info	script.js.Eigene_Scripte.Tests.Foto_KI_Test: Das Foto zeigt eine Straßenansicht, aufgenommen aus einem Fenster. Man sieht mehrere HĂ€user, eine kurvenreiche Straße und einige BĂ€ume im Hintergrund. Der Himmel ist bewölkt und es scheint, als wĂ€re es tagsĂŒber. Die Sicht ist etwas trĂŒb, wahrscheinlich aufgrund von Wetterbedingungen oder Schmutz auf dem Fenster.
            

            @OliverIO
            Eine Idee wo das undefined her kommt?

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von
            #11

            @david-g sagte in Bilder mittels LLM analysieren:

            Eine Idee wo das undefined her kommt?

            es sieht nach einer console.log Ausgabe aus.
            ErgÀnze mal deinen Lösungspost nochmal mit dem kompletten Javascript was im funktionsblock enthalten ist

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            David G.D 1 Antwort Letzte Antwort
            0
            • OliverIOO OliverIO

              @david-g sagte in Bilder mittels LLM analysieren:

              Eine Idee wo das undefined her kommt?

              es sieht nach einer console.log Ausgabe aus.
              ErgÀnze mal deinen Lösungspost nochmal mit dem kompletten Javascript was im funktionsblock enthalten ist

              David G.D Online
              David G.D Online
              David G.
              schrieb am zuletzt editiert von David G.
              #12

              @oliverio

              Done

              Edit
              Noch einen Fehler gefunden.
              Die Antwort kommt garnicht aus meinem Debug aus Blockly, sondern aus dem Script direkt.
              Das undefined ist der Debug im Blockly.

              Wie gebe ich die Antwort in das result bzw den return fĂŒr den JS-Baustein? Evtl kann @paul53 mir das grad sagen. Du hast irgendwann mal gesagt, dass du blockly nicht nutzt ^^.

              Zeigt eure Lovelace-Visualisierung klick
              (Auch ideal um sich Anregungen zu holen)

              Meine Tabellen fĂŒr eure Visualisierung klick

              paul53P 1 Antwort Letzte Antwort
              0
              • David G.D David G.

                @oliverio

                Done

                Edit
                Noch einen Fehler gefunden.
                Die Antwort kommt garnicht aus meinem Debug aus Blockly, sondern aus dem Script direkt.
                Das undefined ist der Debug im Blockly.

                Wie gebe ich die Antwort in das result bzw den return fĂŒr den JS-Baustein? Evtl kann @paul53 mir das grad sagen. Du hast irgendwann mal gesagt, dass du blockly nicht nutzt ^^.

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von paul53
                #13

                @david-g sagte: Das undefined ist der Debug im Blockly.

                Man kann aus einer Callback-Funktion kein Ergebnis an das Hauptprogramm ĂŒbergeben. Das Hauptprogramm ist beendet, bevor die Callback-Funktion ausgefĂŒhrt wird.

                Übrigens ist das Modul "fs" Bestandteil von Node.js und muss nicht installiert werden.

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                David G.D 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @david-g sagte: Das undefined ist der Debug im Blockly.

                  Man kann aus einer Callback-Funktion kein Ergebnis an das Hauptprogramm ĂŒbergeben. Das Hauptprogramm ist beendet, bevor die Callback-Funktion ausgefĂŒhrt wird.

                  Übrigens ist das Modul "fs" Bestandteil von Node.js und muss nicht installiert werden.

                  David G.D Online
                  David G.D Online
                  David G.
                  schrieb am zuletzt editiert von
                  #14

                  @paul53

                  Das ist ja "doof".

                  Bleibt also nur ein normales JS?

                  Zeigt eure Lovelace-Visualisierung klick
                  (Auch ideal um sich Anregungen zu holen)

                  Meine Tabellen fĂŒr eure Visualisierung klick

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • David G.D David G.

                    @paul53

                    Das ist ja "doof".

                    Bleibt also nur ein normales JS?

                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #15

                    @david-g sagte: Bleibt also nur ein normales JS?

                    Du kannst das Ergebnis in einen eigenen Datenpunkt schreiben und diesen dann auswerten.

                    analyzeImage().then((result) => {
                      console.log(result);
                      setState('0_userdata.0.OpenAI.Antwort', result, true);
                    });
                    

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: Asus PN 42 / N100 / 8 GB / 500 GB

                    David G.D 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @david-g sagte: Bleibt also nur ein normales JS?

                      Du kannst das Ergebnis in einen eigenen Datenpunkt schreiben und diesen dann auswerten.

                      analyzeImage().then((result) => {
                        console.log(result);
                        setState('0_userdata.0.OpenAI.Antwort', result, true);
                      });
                      
                      David G.D Online
                      David G.D Online
                      David G.
                      schrieb am zuletzt editiert von David G.
                      #16

                      @paul53
                      Okay, das ist ein gehbarer Workarround.
                      Wenn ich nicht schön anzuschauen đŸ€Ł

                      Edit
                      Hab noch keinen wirklichen Einsatzzweck, aber eine Art Chatbot zum testen klappt schonmal ^^.

                      Screenshot_20241214_190702_Chrome.jpg

                      Screenshot_20241214_190706_Telegram.jpg

                      Zeigt eure Lovelace-Visualisierung klick
                      (Auch ideal um sich Anregungen zu holen)

                      Meine Tabellen fĂŒr eure Visualisierung klick

                      1 Antwort Letzte Antwort
                      1
                      • David G.D David G.

                        LÖSUNG MEINER FRAGE VON UNTEN IN DIESEM BEITRAG

                        Hallo,

                        ich möchte hier gerne meine Lösung (danke an alle hier im Thread die geholfen haben) zum Analysieren von Bildern mittels ioBroker vorstellen.

                        Die Bilder werden mittels GPT Vision analysiert.

                        Dazu benötigt man nur folgende kleine Funktion in Blockly:

                        1e5476c2-0f36-4121-aae4-f25fcdc688cc-image.png

                        <block xmlns="https://developers.google.com/blockly/xml" type="procedures_defcustomnoreturn" id="jsyp;7{c1^]s%u;Qm.[B" x="313" y="-662">
                         <mutation statements="false">
                           <arg name="Bildpfad" varid="#^~=}RQE~[:hE?sXCoB$"></arg>
                           <arg name="api_key" varid="o2iepdh*h(;FbS4Z=9{J"></arg>
                           <arg name="Frage" varid="Uh*o[9LxAdT1B2TiZdAr"></arg>
                           <arg name="DP_Antwort" varid="$xhtlk=y!MtLBX7u:Zew"></arg>
                         </mutation>
                         <field name="NAME">Bildanalyse</field>
                         <field name="SCRIPT">Y29uc3QgZnMgPSByZXF1aXJlKCdmcycpOw0KY29uc3QgT3BlbkFJID0gcmVxdWlyZSgnb3BlbmFpJyk7DQogDQovLyBWYXJpYWJsZW4gZsO8ciBBUEktS2V5LCBCaWxkcGZhZCB1bmQgRnJhZ2UNCmNvbnN0IEFQSV9LRVkgPSBhcGlfa2V5Ow0KY29uc3QgSU1BR0VfUEFUSCA9IEJpbGRwZmFkOw0KY29uc3QgUVVFU1RJT04gPSBGcmFnZTsNCmNvbnN0IERQID0gRFBfQW50d29ydCANCiANCi8vIE9wZW5BSS1DbGllbnQgaW5pdGlhbGlzaWVyZW4NCmNvbnN0IGNsaWVudCA9IG5ldyBPcGVuQUkoew0KIGFwaUtleTogQVBJX0tFWSwgLy8gVmVyd2VuZGUgZGllIFZhcmlhYmxlIGbDvHIgZGVuIEFQSS1TY2hsw7xzc2VsDQp9KTsNCiANCi8vIEZ1bmt0aW9uIHp1bSBLb2RpZXJlbiBkZXMgQmlsZGVzIGluIEJhc2U2NA0KZnVuY3Rpb24gZW5jb2RlSW1hZ2UoaW1hZ2VQYXRoKSB7DQogY29uc3QgaW1hZ2VCdWZmZXIgPSBmcy5yZWFkRmlsZVN5bmMoaW1hZ2VQYXRoKTsNCiByZXR1cm4gaW1hZ2VCdWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpOw0KfQ0KIA0KLy8gQmFzZTY0LVN0cmluZyBkZXMgQmlsZGVzIGVyc3RlbGxlbg0KY29uc3QgYmFzZTY0SW1hZ2UgPSBlbmNvZGVJbWFnZShJTUFHRV9QQVRIKTsgLy8gVmVyd2VuZGUgZGllIFZhcmlhYmxlIGbDvHIgZGVuIEJpbGRwZmFkDQogDQovLyBBbmZyYWdlIGFuIE9wZW5BSSBzZW5kZW4NCmFzeW5jIGZ1bmN0aW9uIGFuYWx5emVJbWFnZSgpIHsNCiB0cnkgew0KICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuY2hhdC5jb21wbGV0aW9ucy5jcmVhdGUoew0KICAgICBtb2RlbDogJ2dwdC00bycsDQogICAgIG1lc3NhZ2VzOiBbDQogICAgICAgew0KICAgICAgICAgcm9sZTogJ3VzZXInLA0KICAgICAgICAgY29udGVudDogWw0KICAgICAgICAgICB7DQogICAgICAgICAgICAgdHlwZTogJ3RleHQnLA0KICAgICAgICAgICAgIHRleHQ6IFFVRVNUSU9OLCAvLyBWZXJ3ZW5kZSBkaWUgVmFyaWFibGUgZsO8ciBkaWUgRnJhZ2UNCiAgICAgICAgICAgfSwNCiAgICAgICAgICAgew0KICAgICAgICAgICAgIHR5cGU6ICdpbWFnZV91cmwnLA0KICAgICAgICAgICAgIGltYWdlX3VybDogew0KICAgICAgICAgICAgICAgdXJsOiBgZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwke2Jhc2U2NEltYWdlfWAsDQogICAgICAgICAgICAgfSwNCiAgICAgICAgICAgfSwNCiAgICAgICAgIF0sDQogICAgICAgfSwNCiAgICAgXSwNCiAgICAgIm1heF90b2tlbnMiOiA1MDAwDQogICB9KTsNCiANCiAgIC8vIE51ciBkZW4gY29udGVudCBhdXMgZGVyIEFudHdvcnQgenVyw7xja2dlYmVuDQogICByZXR1cm4gcmVzcG9uc2UuY2hvaWNlc1swXS5tZXNzYWdlLmNvbnRlbnQ7DQogfSBjYXRjaCAoZXJyb3IpIHsNCiAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOicsIGVycm9yKTsNCiB9DQp9DQogDQovLyBGdW5rdGlvbiBhdXNmw7xocmVuDQphbmFseXplSW1hZ2UoKS50aGVuKChyZXN1bHQpID0+IHsNCg0KIHNldFN0YXRlKERQLCByZXN1bHQsIHRydWUpOw0KIA0KfSk7DQogDQo=</field>
                         <comment pinned="false" h="80" w="160">Beschreibe diese Funktion 
</comment>
                        </block>
                        

                        • Unter Bildpfad muss der Pfad zum Bild angegeben werden was analysiert werden soll
                        • Unter api_key euer openAI Api Key.
                        • Unter Frage die Frage zum Bild
                        • Unter DP_Antwort ein DP in den die Antwort geschrieben werden soll.

                        Damit das Blockly funktioniert mĂŒssen in den Settings vom Javascript-Adapter diese 2 Module hinzugefĂŒgt werden.

                        In der Javascriptinstanz noch folgende 2 Module hinzufĂŒgen.
                        c9090244-d9a4-41f9-b896-680411412654-image.png

                        Man könnte zB so Bilder seiner Überwachungskamera Analysieren:
                        3eb6fb1c-9f72-4e90-bb20-0856bf220684-image.png

                        Zum testen hab ich auch einen kleinen "Bot" fĂŒr Telegram geschrieben.
                        Das sieht dann so aus:
                        Screenshot_20241214_190706_Telegram.jpg
                        _ _
                        Hallo,

                        ich weiß nicht so ganz, ob ich hier im Bereich richtig bin.
                        Meine Frage ist sehr allgemein.....
                        Falls es möglich ist, dann vermutlich mit JS.....

                        Ich habe folgendes fĂŒr HA gesehen und finde es ziemlich cool:
                        https://community.home-assistant.io/t/llm-vision-let-home-assistant-see/729241

                        Man kann Bilder nach OpenAI etc hochladen und analysieren lassen.

                        Bekommt man sowas als Script umgesetzt?
                        Lokales Bild hochladen, Frage mitgeben und dann eine Antwort bekommen?

                        Zu einer Api von OpenAI finde ich nichts....

                        NegaleinN Offline
                        NegaleinN Offline
                        Negalein
                        schrieb am zuletzt editiert von
                        #17

                        @david-g sagte in Bilder mittels LLM ChatGPT Vision ananalysieren:

                        Die Bilder werden mittels GPT Vision analysiert.

                        Hallo David!

                        Hab dein Blockly hier in der Sammlung aufgenommen. :)

                        ° Node.js & System Update ---> sudo apt update, iob stop, sudo apt full-upgrade
                        ° Node.js Fixer ---> iob nodejs-update
                        ° Fixer ---> iob fix

                        1 Antwort Letzte Antwort
                        2

                        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                        Hast du es satt, bei jedem Besuch durch die gleichen BeitrĂ€ge zu scrollen? Wenn du dich fĂŒr ein Konto anmeldest, kommst du immer genau dorthin zurĂŒck, wo du zuvor warst, und kannst dich ĂŒber neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und BeitrĂ€ge positiv bewerten, um anderen Community-Mitgliedern deine WertschĂ€tzung zu zeigen.

                        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                        Registrieren Anmelden
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        464

                        Online

                        32.9k

                        Benutzer

                        83.0k

                        Themen

                        1.3m

                        BeitrÀge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe