ChatGPT dans Jeedom?

Bonjour a tous,

Si vous suivez actualités de la tech, vous avez certainement entendu parler de l’IA ChatGPT. C’est très impressionnant ce qu’elle est capable d’apporter comme réponse à nos questions et même si quelques fois les réponses ne sont pas toujours correct. Les réponses ne sont pas totalement à coté de la plaque, elle comprend plutôt bien ce qu’on lui demande et ce qu’on attend d’elle. Ce qui n’est pas toujours le cas de l’Assistant Google…
Je sais également qu’elle est incapable de nous donner des informations en lui posant des questions liées à l’actualité car elle n’est pas connecté a internet mais sa grande base de donnée permet tout de même de répondre à pas mal de questions avec un dialogue qui se rapproche vraiment d’une conversation que l’on pourrait avoir avec un humain.

Du coup, je vais m’adresser au développeur de plugin. Pensez vous qu’il serait possible d’intégrer ChatGPT à jeedom? Faire une sorte de passerelle entre nos assistant google/alexa et ChatGPT.
L’API de chatGPT semble disponible au développeur: OpenAI API

Merci d’avance pour vos retours.

2 « J'aime »

il y a déjà un long sujet en rapport avec chatGPT :wink:

Ce matin j’ai fait un test sur ChatGPT. Après avoir créé mon compte, je lui ai donné un texte que Jeedom formate tous les matins au petit déjeuner. Il est ensuite lu par un Google Home. Le texte est un extrait fautes comprises car j’ai adapté le texte rapidos vers ChatGPT, j’ai même oublié d’enlever une commande (round 7) qu’il a corrigé.

Je vous en fichier joint « Textes ChatGPT.txt » le résultat du dialogue.
Textes ChatGPT.txt (17,1 Ko)

Je suis bluffé par le texte généré avec un bémol tout de même, certaines informations passent à la trappe. Mais ça serait super de générer un texte différent tous les matin à la manière de…
Le top pour moi c’est le présentateur qui fait des blagues : Mais bon, c’est l’occasion de sortir vos jolis parapluies et de jouer les Mary Poppins ! ou la température de la salle de bain est également de 19 degrés. Eh oui, ça ne chauffe pas beaucoup mais c’est déjà mieux que de se prendre une averse glacée sur la tête, non ? Je pense qu’il a fait un mélange entre la température de la pièce et la température de l’eau de la douche.
Bon, voilà, Il ne reste plus qu’à connecter Jeedom à l’API de ChatGPT. Injecter le texte généré par Jeedom vers ChatGPT, le récupérer puis le donne au Google Home, facile… :grin: Si une personne y est arrivée je suis preneur.

Pour les curieux voici le texte brut tiré du script Jeddom. J’utilise les plugins Météo France, Vigilance Météo, Google cast et PlayTTS. Certaines tournures sont adaptées pour que texte paraisse plus naturel à l’écoute, Google Home mettant sa sauce pour certains mots surtout les nombres.

message=« Bonjour, j’espère que vous avez bien dormi. On est le #sday# #day# #smonth#, il est formatTime(#time#). Actuellement la température extérieure est de round(#[DOMUS][Température][Extérieur]#) degrés avec un taux d’humidité de #[DOMUS][Hygrométrie][Extérieur]# pour cent. La température maximale aujourd’hui sera de round(#[Aucun][Météo][Météo du Jour - Aujourdhui - Température Maximum]#) degrés sous une condition d’#[Aucun][Météo][Météo du Jour - Aujourdhui - Description]#. La température du séjour est de str_replace(‹ . ›,’ virgule ‹ ,#[DOMUS][Température][Appartement]#) degrés avec un taux d’humidité de #[DOMUS][Hygrométrie][Appartement]# pour cent. La température de la salle de bain est de str_replace( ›.‹ , › virgule ',#[DOMUS][Température][Salle de bain]#)) degrés. Coté plage. #[CONTRÔLE][Home Blabla][Marée]#) avec un coefficient de #[CONTRÔLE][Marée][Indicateur Marée]# sous une condition de #[Aucun][Météo][Marine - Mer condition texte]#. En ce moment, la température de l’eau est de round(#[Aucun][Météo][Marine - Température eau]#) degrés avec des vagues de #[CONTRÔLE][Home Blabla][Hauteur vagues]#. L’indice uv sur la plage sera de #[Aucun][Météo][Météo du Jour - Aujourdhui - Indice UV]# ce jour. Enfin, avec un vent de #[Aucun][Météo][Météo du Jour - Aujourdhui - Vitesse du Vent]# kilomètrheures la température ressentie sera de round(#[Aucun][Météo][Météo du Jour - H+1 - Température Ressentie]#) degrés. Aujourd’hui La lunaison sera dans un état de #[Aucun][Météo][Ephéméride - Lune phase description]# et nous fêterons la #[Aucun][Météo][Ephéméride - Saint du jour]#. Voilà c’est tout pour ce matin, je vous souhaite une bonne et agréable journée. »

#[CONTRÔLE][Home Blabla][Marée]# est un autre script généré à chaque marée suivant les situations :

la marée est entrain de descendre. La basse mer sera à formatTime(#[CONTRÔLE][Marée][Basse Mer]#)
ou
la marée est entrain de monter. La pleine mer sera à formatTime(#[CONTRÔLE][Marée][Pleine Mer]#)

ou 10 minutes pendant un changement de marée :

c’est la pleine mer, la marée est entrain de descendre. Elle sera au plus bas à formatTime(#[CONTRÔLE][Marée][Basse Mer]#)
ou
c’est la basse mer, la marée est entrain de monter. Elle sera au plus haut à formatTime(#[CONTRÔLE][Marée][Pleine Mer]#)

et enfin #[CONTRÔLE][Home Blabla][Hauteur vagues]# pour gérer l’arrondi de la hauteur :

floor(#[Aucun][Météo][Marine - Vagues hauteur]#) mètres
ou
str_replace(‹ . ›,’ mètres ',#[Aucun][Météo][Marine - Vagues hauteur]#)0
Le zéro en final pour donner par exemple : trois mètres quarante

1 « J'aime »

J’adore les résultats produits par ChatGPT. C’est vraiment sympa.

tant de louange !
Il ronronne :grinning:

Suite à mon message, j’ai injecté manuellement les textes sur le Google Home et le résultat fut… décevant. Je n’avais pas pris en compte qu’un Google Home parle sans intonation. Un texte neutre passe très bien, un texte avec humeur c’est déprimant, surtout avec un message contenant des blagues. Mais j’aimerai générer chaque jour un texte un peu différent avec les mêmes infos. Quand j’aurai trouvé l’angle d’attaque, je donnerai des nouvelles et si l’api est gratuite pour quelques appels/jour, j’ai du mal à trouver des infos sur ce sujet.
Le lien vers open api de ChatGPT

… après réflexion, il faudra que je creuse si ChatGPT ne pourrai pas me coder un appel à son api pour Jeedom, ça serait amusant si ça fonctionne… reste plus qu’à trouver la bonne formulation de la demande.

1 « J'aime »

Le youtubeur MiCode a fournit un POC d’un truc assez puissant. Il faut trouver quelqu’un de motivé pour integrer cela a jeedom :

Ca gère les intonations, génère du texte, …

1 « J'aime »

Y aurait il des travaux sur cette axe sur jeedom?

Genre un plugin qui donne accès à chatGPT, et que l’on pourrais utiliser en commande texte ?
Ou bien plus encore?

D’ailleurs chatGPT ou autre (llama, Bard, etc …)

Via Alexa on peu lancer chatgpt, donc on peu lancer chatgpt depuis jeedom pour avoir une réponse.

Le problème c’est que l’intégration Alexa permet de récupérer les requêtes vocale passées, mais pas possible de récupérer les réponse d’Alexa, sinon ça aurait pu être une solution provisoire pour récupérer des infos sur Jeedom à partir de chatgpt pour conditionner des scénarios par les réponses.

Oui y’a un dev qui a démarré un plugin en février mais depuis, plus de news… @jexou

Pour moi, ça serait forcément un plugin payant dans le sens où il faudra s’abonner à ChatGpt pour l’utiliser, je ne crois pas qu’on puisse utiliser son api gratuitement. Est-ce que llama ou bard ont des api gratuites ?

Bonjour,

Tu peux faire fonctionner des modèles llama en local.

Il y a aussi openllama

1 « J'aime »

Hello,

J’ai trouvé le moyen de questionner chatgpt depuis Jeedom et aussi de remonter la réponse sur Jeedom.

Ce qui permet de demander une requête à Alexa et d’avoir la réponse de chatgpt par Alexa.

Ça permet aussi de remonter sur Jeedom une informations d’actualité par exemple, j’ai testé un scénario qui pose la question à chatgpt, « donne moi l’heure du coucher de soleil demain à (ma ville) - 30 minutes, en me donnant uniquement l’heure », la réponse de chatgpt remonté sur Jeedom est 20H06.

L’exemple n’est pas le meilleur car il n’y a pas besoins de chatgpt pour connaître l’heure du couché de soleil -30 minutes, on peux déjà avoir cette info en locale avec un Time_op, mais c’est pour donner une idée des d’utilisations possibles pour par exemples faire des conversion de formats complexes ou conditionner des scénarios par divers informations demandées à chatgpt, et en fonction de la réponse, si elle est = oui, différente de oui ou contient un mot précis, on exécute les actions du scénario.

Je fait encore quelques test et j’expliquerai la procédure en détails.

3 « J'aime »

Bonjour à tous !
mes excuses pour le retard, j’avais pas vu tous vos messages
Je vais me repencher sur ce projet qui a été malheureusement mis en standby pour le moment.

1 « J'aime »

Juste pour mettre mon grain de sel dans l’histoire, il y a mistral.ai qui vient de sortir et semble aussi hyper prometteur

1 « J'aime »

Hello, désolé, je n’avais pas partagé la procédure depuis mon dernier message, car en effet, même si cela fonctionne bien, il est nécessaire de passer par IFTTT, solution que je n’aime pas du tout car elle nécessite un abonnement mensuel pour l intégration de l’IA.
Mais si cela vous intéresse, voilà la procédure que j’ai utilisée : j’ai utilisé l’intégration Prompt AI sur IFTTT. Jeedom envoie une requête Webhook avec comme valeur la phrase à envoyer au bot IA, et à la réception de cette phrase, IFTTT envoie un Webhook sur Jeedom avec la valeur de la réponse du bot dans une commande info d’un virtuel

2 « J'aime »

Bonjour à tous,

Toujours pas de solution via l’API openai en direct?

2 « J'aime »

Je me repond, cela fonctionne avec un script PHP.
Voici la réponse à pourquoi la terre est ronde:
image

Hello, peux-tu nous en dire plus ? Peux-tu partager ton script et comment tu l’utilises ?
Merci beaucoup

Voici le script:

<?php
// Remplacez par votre clé API OpenAI
$apiKey = 'Votre clef API';

// Message à envoyer à ChatGPT
$prompt = "Comment vas tu aujourd'hui ?";

// URL de l'API OpenAI
$url = "https://api.openai.com/v1/chat/completions";

// Données à envoyer
$data = [
    "model" => "gpt-3.5-turbo",
    "messages" => [
        ["role" => "system", "content" => "Tu es un assistant pour la domotique Jeedom."],
        ["role" => "user", "content" => $prompt]
    ],
    "max_tokens" => 100,
    "temperature" => 0.7
];

// Configuration de la requête HTTP
$options = [
    "http" => [
        "header" => "Content-Type: application/json\r\n" .
                    "Authorization: Bearer " . $apiKey . "\r\n",
        "method"  => "POST",
        "content" => json_encode($data)
    ]
];

$context  = stream_context_create($options);

// Envoi de la requête
$response = file_get_contents($url, false, $context);

if ($response === FALSE) {
    echo "Erreur lors de la requête à l'API OpenAI.";
    exit;
}

// Traitement de la réponse
$responseData = json_decode($response, true);
echo $responseData['choices'][0]['message']['content'];
?>

Coût API 0.01 Dollar la requete.

1 « J'aime »

As tu la solution pour remplacer le message envoyer « $prompt » par une variable jeedom?