Concentration + LLM

Excellent. J’étais passé à côté de cette création :smile:

Dans le Web3, l’utilisateur est au centre de son système d’information…
Je pense que cette interface serait plus “efficace” que Cesium pour dynamiser notre Expérience Utilisateur.

Dommage que je ne sache pas reprendre ton code… Tu aurai un peu de temps pour m’aider à le faire?

Vu le temps depuis lequel tu tournes autour du code sans jamais t’y mettre, je doute que la solution puisse venir de moi. Je pense qu’avec un peu de courage et de concentration tu pourras t’affranchir du bash crado et développer des “vrais” outils plus aboutis que des PoC. Mais il faut aussi que tu mettes à jour ton OS parce que c’est pas facile d’avoir un environnement de développement fonctionnel avec des vieilles versions des paquets et des libc obsolètes.

+ LLM tu peux tout faire Fred !


Je te partage un script (écris par un Claude 3 bien sûr…) que j’utilise pour partager du code facilement à n’importe quel LLM quelque soit sont interface:

#!/bin/bash

usage() {
  echo "Usage: $0 -d <directory> -i <include_pattern1> [-i <include_pattern2> ...] [-e <exclude_pattern1> [-e <exclude_pattern2> ...]]"
  exit 1
}

# Initialize variables
search_directory=""
include_patterns=()
exclude_patterns=()

# Process options
while getopts "d:i:e:" opt; do
  case $opt in
    d) search_directory=$OPTARG ;;
    i) include_patterns+=("$OPTARG") ;;
    e) exclude_patterns+=("$OPTARG") ;;
    *) usage ;;
  esac
done

# Check if the search directory and at least one include pattern are defined
if [[ -z "$search_directory" || ${#include_patterns[@]} -eq 0 ]]; then
  echo "Search directory and/or include pattern(s) missing."
  usage
fi

# Build the find command with include and exclude patterns
find_command=(find "$search_directory" "(" -false)
for pattern in "${include_patterns[@]}"; do
  find_command+=(-o -name "$pattern")
done
find_command+=(")")
for pattern in "${exclude_patterns[@]}"; do
  find_command+=("!" -path "$pattern")
done

# Execute the find command and process each file
"${find_command[@]}" -exec awk 'FNR==1{print "\n//filename: " FILENAME}{print}' {} + | xclip -selection clipboard

Chez moi j’en ai fait un alias cpcode.
Ca permet de copier dans ton presse papier tout le code d’un répertoire et ses sous répertoires, mais en sélectionnant uniquement les extensions que tu veux et en excluant les dossier que tu veux, et surtout avec en en-tête le chemin relatif vers le fichier, exemple:

cpcode -d src -i "*.graphql" -e "src/app/network/*"

copie le contenu de tous les fichier .graphql du dossier src, sauf les fichiers du dossier src/app/network

Perplexity + Claude 3 permettent de lui faire gober la quantité que tu veux de texte sans limite, il sera juste moins précis si y’en a beaucoup trop, mais ta vraiment de la marge, avec la bonne première question il va pointer le code adéquate grace à ce trick.

Comment pensez-vous que j’ai pu forker ce plugin Discourse en une soirée par exemple ?
https://forum.monnaie-libre.fr/t/comment-annoncer-un-evenement-rencontre/29676/19?u=poka

Avec ça je suis certain qu’en posant les bonnes questions tu pourras modifier comme tu veux n’importe quel code, quelque soit sont langage.
Faut juste un peu de persévérance parfois, ne pas hésiter à redémarrer une conversation de zero quand la discutions s’enfonce trop profond (facile avec ce script cpcode).


Ah oui mais surtout, install et utilise VSCODE et ARRETE de CODER avec VIM !! (ce que j’ai fait aussi, pendant, beaucoup trop longtemps…)

2 Likes

Ben oué !! Merci chatGPT :wink: Tu as accès à quels modèles toi ?

t’as déjà répondu :wink:

je sais “bash = creole”
parce que je ne suis pas codeur… je cherche à trouver une interface simple au “web3” avec des algorithmes centrés sur les clefs utilisateurs qui enregistrent les états informationnels de leurs spheres N1 et N2. Il y 'a un changement de perspective et une expérience utilisateur pas simple à trouver.

1 Like

Autre exemple d’usage:

cpcode -d . -i "*.js" -i "*.hbs" -e "assets/javascripts/discourse/components/*" -e "assets/javascripts/discourse/adapters/*"

Copie tous les fichier .js et .hbs du répertoire courant, sauf dans les dossiers et sous dossier de assets/javascripts/discourse/components et assets/javascripts/discourse/adapters

je commence par
git clone https://git.42l.fr/HugoTrentesaux/DataJune.jl.git

où ça se trouve ?

moi je suis à chatGPT3.5
ou ollama run mistral

En fait la plus grosse barrière au début je dirais, quand tu ne connais pas l’environnement de code, c’est d’abords de faire tourner l’outil en mode dev en local sur ta machine correctement.
Pour ça le README doit normalement l’expliquer en détail, puis un LLM à la rescousse en cas de pépin.

Normalement tous les languages moderne dispose de fonctionnalité de hot reloading en mode dev, ce qui permet de l’app se réactualiser l’app automatiquement à chaque changement que tu fais dans le code, en live. Extrêmement pratique.
Pour le web se servir de la console JS du navigateur pour voir les erreurs, que tu peux balancer au LLM aussi avec la stack d’erreur, of course.
Les autres devs vont pleurer du sang en lisant ce cours de dev.

Une fois que ça c’est fait, tu peux commencer à chercher à modifier le code, mais pas avant.

https://www.perplexity.ai

Mais faut payer 20€/mois pour pouvoir sélectionner n’improte quel model en paramètre, dont Claude 3 Opus et gpt4.
Donc ça remplace facilement l’abo gpt4 et tous les autres.

Sinon test avec mistral en local oui via ollama, mais bon t’aura pas du tout les même résultat.
A moins d’utiliser mixtral 8x22B ou llama3 70b instruct ou +, mais là il te faut une carte graphique hors d’atteinte pour nous simples mortels.

Ça c’est le code de datajune, mais pour ce qui est de la wotmap, tout est contenu dans https://git.42l.fr/HugoTrentesaux/wotmap, pas besoin de passer par DataJune (sauf pour avoir des données plus à jour).

Tu as raison.
C’est un peu trop le bordel ma PRETTY_NAME=“Linux Mint 20.2”
j’hésite entre Debian ou Arch…
quelle ditrib tu utilises ?

Perso Manjaro (Arch) mais je te recommande de rester sur un Debian, ça sera plus familier pour toi.

Arch si tu aimes passer plus de temps à réparer des problèmes de dépendances qu’à faire autre chose, et avoir des paquets à jour.

Debian si tu aimes que ça marche, supportes d’avoir 3 ans de retard sur toutes les releases, ou dois compiler des distribuables.

J’étais sous Arch, je suis repassé sous Debian. (y compris sur mon RPi, remplacé le Raspbian 32bits par un Debian stable 64bits) Mon laptop qui est encore sous Arch a accumulé tellement de retard de mises à jour que je ne suis pas arrivé à les faire.

Et si tu es aventureux, tu peux demander à @ManUtopiK s’il est heureux avec NixOS sur sa machine de dev :slight_smile:

J’étais sur Mint (Cinnamon), je suis passé sur Manjaro (gnome) en étant perverti par Hugo. Ca fait 3 ou 4 mois, je m’y suis fait j’aime beaucoup. Parfois moins de doc que pour Debian, mais globalement on trouve tout en AUR.

Sinon je ton conseil Mint plutôt que Debian brut. Tu aura moins de soucis de driver de périphérique et tout ce qu’il faut pour desktop. Les avantages d’Ubuntu sans la merdasse de package à la con qu’ils te fourgues.

Je suis donc un taré d’avoir arch, + blackarch, + parabola, avec tdm et dwm le plus souvent.
your-freedom de parabola vire les paquets non libres…

Bon des fois je supprime des trucs à cause des soucis de dépendances, parfois je fais du Siglevel=never à cause des soucis de signature, je devrai faire plus de Pacman -Qdt pour voir ce qu’il faudrait virer… et plus me pencher sur les méthodes propres les mises à jour des fichiers de config… mais je suis à jour!!

Arch a l’air sympa, mais on est dans le “bleeding edge”.
Je crois que je vais rester sous “Linux Mint” pour mon desktop et Debian pour le “headless”.


Finalement, j’ai lancé un session multi LLM code hacking “worldwotmap”
sur Master (!3) · Merge requests · Pascal Engélibert / WorldWotMap · GitLab

Ca donne une nouvelle version permet un affichage en rayon ou polygone de sa toile de confiance. Affiche pour la clef sélectionnée la liste des clefs “membres” de la toile primaire N1, et les suivantes N2, … avec le lien contact via Cesium.

On y voit également les “clefs pilier” de la blockchain “UPlanet

WWM2

Pratique pour contacter les Junistes du coin, ou découvrir de nouveaux amis dans son cercle N2.

Accessible sur IPFS
https://ipfs.copylaradio.com/ipfs/QmcddaaKpUGi2yNRov5okyEGMaA82oDQMhkcEPqQPtdhUb

avec un breadcrump des profils cliqués
/ipfs/QmRzJmDwFrnAocFbnjQ6iW9cEeLSekQDQpjn98cKy4Ud7e

Reste à

  • charger mapdata.json en IPNS
  • mapper les données issues des transactions…
  • ajouter l’import de ses cookies pour savoir à quels services web2 on est connecté :wink:
1 Like

Bien joué la worldwotmap dans IPFS ^^
Pour le mapdata.json, je recommanderais de le mettre directement dans le même dossier que la wotmap. Et donc quand ces données sont mises à jour, publier automatiquement une nouvelle version du dossier sur IPFS. Le IPNS doit pointer vers la racine du dossier. Par contre, on peut se laisser la possibilité d’afficher une notification de mise à jour dans l’application comme je le fais sur https://bafybeieyrxz6ybxg7ocev3hews77wuqhhp6pdyonm2bvhhzfuvafkw4wwq.ipfs.pagu.re/. L’idée est la suivant :

  • si tu épingles le dossier ipfs, au moins tu as une version des données avec laquelle jouer (alors que si on compte sur IPNS, il se peut qu’on ne trouve pas les données)
  • ça ne pose pas de problème de “réuploader” toute l’application à chaque fois puisque de toute façon il s’agit des mêmes blocs ipfs
  • ça permet quand même à l’app de faire une redirection (automatique ou manuelle, au choix) vers une version plus récente d’elle même avec des données à jour

Je n’ai pas encore mis ça en place pour https://wotmap-coinduf-eu.ipns.pagu.re/, mais tu remarqueras que le dnslink pointe vers un ipfs, et pas un ipns.

Il y a plusieurs façon de faire, IPNS → IPFS → IPNS
pour garder la séparation entre code de l’application et data, j’aurai tendance à publier l’application sur IPFS avec un appel dans son code aux data sur IPNS. Ca permet de choisir sa version de “code” et le laisser se faire forker.

A terme l’approche mapdata.json global à une toile G* est impossible à tenir.
Il vaut mieux recalculer chaque soir wallet.mapdata.json pour personnaliser l’application de chaque “user” (“player” web3).

Pour cette version “WWM3”, avec login, le user devra scanner son “ID” (public ou privé) qui donne le choix de la clef racine (maître ou dérivées) pour laquelle il veut visualiser les “toiles transactionnelle” (N1/N2).

Dans cette UX, le processus “genmap” et “genweb” se déclenche à la demande par API. Puis l’application est chargée en “ipfs du jour” (“chaînée” avec un lien vers l’ancienne version ou non)

WWM2
carte + exploration

  • Breadcrumb historique des clefs sélectionnées,
  • RESET et centrage à la position du navigateur
  • Amélioration de l’affichage “mobile”
  • mise en ligne sur carte.g1sms.fr

https://carte.g1sms.fr/#

2 Likes

Pas mal ce breadcrumb !

1 Like