ChatGPT, Funfact erstellen lassen

Ich nutze OpenAI (ChatGPT), um täglich einen Fun Fact zu generieren, den ich dann über Alexa ausgeben lasse. Obwohl ich eine Formulierung verwende, die ChatGPT anweist, jedes Mal einen neuen Fakt zu erstellen, wiederholt sich der Fun Fact fast täglich. Zwar wird er jedes Mal anders formuliert, aber inhaltlich ist es meist derselbe Fakt.
Wie kann ich das ändern?

Was schlägt ChatGPT vor, um den Dienst zu verbessern :wink:?

1 „Gefällt mir“

Das habe ich auch festgestellt.

Ich würde gern meine Variante hier reinstellen (der Anstoß und einiges an Code ist hier aus dem Forum) aber ich finde das nicht mehr. Irgendwie sah das beim damaligen Erstellen anders aus.

Habe ich natürlich auch bereits getestet (mit ChatGPT und Copilot). Jedoch formulieren die “nur” den Prompt um. Bisher habe ich es nicht geschaft, der KI zu erklären, dass es wohl am Seed der Integration liegt. Deswegen frage ich die Community, wer das auch schon hatte.

Dann mache ich mich auf die Suche. Wenn es deine Zeit zulässt, suche bitte mit.

Gefunden, natürlich bei den Automationen. Nur halt schlecht weggruppert.

alias: KI Fakt des Tages
description: ""
triggers:
  - trigger: time_pattern
    minutes: "5"
conditions: []
actions:
  - action: conversation.process
    metadata: {}
    data:
      agent_id: conversation.google_generative_ai
      text: >-
        Erstelle ein Zitat von einer realen Person egal welche Muttersprache sie
        hat. Beziehe auch Konfuzius mit ein. Maximal 30 Worte, inklusive Angabe
        von wem es stammt. Gib die Antwort in deutsch aus. Erfinde nichts und
        halluziniere nicht.
      conversation_id: AI-Fakt
    response_variable: antwort
  - action: input_text.set_value
    metadata: {}
    data:
      value: "{{ antwort.response.speech.plain.speech }}"
    target:
      entity_id: input_text.fakt_des_tages
mode: single

Das ist der Code, den ich aus Schnippseln hier im Forum zusammen gestellt habe. Wenn ich mich recht Entsinne, habe ich noch eine ID(?) irgendwo hinterlegt um Dopplungen zu reduzieren. Was aber nicht auf dauer hilf. Und wo ich das eingetragen haben, fällt mir gerade nicht ein.

Danke dir. Der Prompt ist ähnlich von den, den ich habe. Aber evtl. Arbeitet Google AI etwas anders als ChatGPT.

Der Originalthread lässt sich glaube ich hier finden. Allerdings habe ich lange Zeit dasselbe Problem gehabt. Irgendwann kopiert die KI sich immer wieder selbst und man bekommt ähnliche Antworten. Da ich aber schon damals die Neon Abreisskalender “Unnützes Wissen” geliebt habe, bin ich dran geblieben und habe mit der KI eine Lösung entwickelt. Es gibt bestimmt andere und auch einfachere Wege, dieser funktioniert allerdings bei mir. Leider ist er aber auch etwas etwas komplexer:

  1. Zuerst brauchst du eine txt Datei in deinem Verzeichnis in dem jedes Ergebnis der KI gespeichert wird. Bei mir heisst das Dokument ki_fakt_historie.txt. Meine hat jetzt grade 1700 Einträge und es kommen jeden Tag welche dazu

  2. Um diese Datei zu befüllen brauchst du in deiner Config Yaml ein Shell Command. Meines sieht so aus. Achtung “ki_fakt_historie.txt” musst du mit deinem Dokumentennamen asutauschen

shell_command:
  append_fact: "/bin/bash -c '/bin/echo \"{{ fact }}\" >> /config/ki_fakt_historie.txt && /bin/sync'"
  1. Dieses Shell Command wird über eine Automation aufgerufen, die jeden neuen Fakt in diese Datei speichert. Meine sieht so aus
alias: KI Fakt speichern
description: ""
triggers:
  - event_type: ki_fakt_generiert
    trigger: event
actions:
  - data_template:
      fact: "{{ trigger.event.data.fakt }}"
    action: shell_command.append_fact

Der Trigger ki_fakt generiert wird von der Automation erzeugt, die den eigentlichen Fakt generiert (prompted). So weiß diese Automation, dass etwas neues vorliegt, was gespeichert werden soll. Das bringt mich auf:

  1. jetzt kommt die eigentliche Automation, die den Fakt generiert. Meine tut das jede Stunde tagsüber mit einem Prompt der nach “Hier sind die letzten bekannten Fakten: …” die Attribute eines Sensors ausliest, den wir unter Punkt 5 erstellen. Außerdem speichern wir den neuen Fakt in einem Text Eingabe Helfer, den du auch anlegen musst. Bei mir hat dieser die ID input_text.fun_facts. Dieser Helfer schreibt den neuesten Fakt in die event_data des Events ki_fakt_generiert (siehe Punkt 3)
alias: KI Fakt des Tages Historie
triggers:
  - minutes: "5"
    trigger: time_pattern
conditions:
  - condition: sun
    before: sunset
    after: sunrise
actions:
  - metadata: {}
    data:
      agent_id: conversation.google_generative_ai
      text: >-
        Hier sind die letzten bekannten Fakten: {{
        state_attr('sensor.ki_fakt_historie', 'fakten_liste') }} Nenne einen
        neuen überraschenden Fakt, der in dieser Liste noch nicht vorkommt.
        Achte darauf, immer ein anderes Themengebiet zu wählen. Nutze eine
        breite Palette an wissenschaftlichen, historischen, technischen,
        biologischen und kulturellen Fakten. Erfinde nichts und verwende nur
        geprüfte Fakten.
      conversation_id: KI Fact
    response_variable: antwort
    action: conversation.process
  - delay:
      seconds: 10
  - data:
      value: "{{ antwort.response.speech.plain.speech }}"
    target:
      entity_id: input_text.fun_facts
    action: input_text.set_value
  - event: ki_fakt_generiert
    event_data:
      fakt: "{{ states('input_text.fun_facts') }}"
mode: single

  1. Zu guter Letzt kommt jetzt der Sensor der die letzten Einträge deines Textdokuments als Sensor bereitstellt. Es ist ein Command Line Sensor und muss in die Config Yaml. Bei mir sieht er so aus
command_line:
  # Dieser Sensor stellt die letzten 30 Einträge aus der Datei KI Fakt Historie als Sensor bereit. -n 30 definiert die Anzahl der bereitgestellten KI Fakten
  - sensor:
      name: KI Fakt Historie
      command: "echo '{\"fakten_liste\": \"'$(tail -n 30 /config/ki_fakt_historie.txt | tr '\\n' ' ' | sed 's/,$//')'\"}'"
      scan_interval: 60
      value_template: "{{ now().timestamp() | int }}"
      json_attributes:
        - fakten_liste

unter -n 30 im command kannst du die Anzahl der Einträge definieren. Mit 30 habe ich ganz gute Erfahrungen gemacht.

Das wars! Diese Lösung funktioniert bei mir stabil und wiederholt sich nicht. Wenn es aber mal doch vorkommt (die KI verrennt sich ja manchmal) lösche einfach die letzten 30 Einträge aus deiner Textdatei.

Mein Dank nochmal an @johannes1984 für die ursprüngliche Idee, hat mir schon viele Aha-Erlebnisse bereitet (wenn die Fakten denn alle stimmen :grinning: )

1 „Gefällt mir“