• chevron_right

      Sprite Fusion – Un éditeur de niveaux 2D pour vos jeux, utilisable directement dans le navigateur

      news.movim.eu / Korben · Thursday, 21 March - 08:00 · 2 minutes

    Mes amis, laissez-moi aujourd’hui vous parler de Sprite Fusion , un outil gratuit de conception de niveaux 2D qui vous permet de créer de magnifiques cartes de tuiles (les fameuses « tiles ») directement dans votre navigateur.

    Grâce à cet éditeur vous allez pouvoir concevoir rapidement des niveaux pour vos propres jeux.

    Pour commencer, il est très facile de charger vos ensembles de tuiles avec un simple glisser-déposer ou un copier-coller. Ensuite, avec l’éditeur de cartes de tuiles, vous pouvez créer vos niveaux en utilisant des sélections de tuiles uniques ou multiples.

    Alors, qu’est-ce qu’une carte de tuiles, exactement ?

    Et bien c’est une carte 2D composée de petites images répétées pour créer une carte. Les cartes de tuiles sont utilisées dans de nombreux types de jeux, comme des jeux de plateforme ou encore des RPG.

    Avec Sprite Fusion, il est possible d’exporter directement votre carte en tant que Tilemap Unity native ou en tant que scène TileMap Godot. De plus, Sprite Fusion inclut un système automatique de tuiles facile à utiliser dès le départ pour une conception rapide du terrain. Vous n’avez pas besoin de code personnalisé, il vous suffit d’exporter votre carte de tuiles en tant que package Unity ou scène Godot et de la faire glisser et déposer dans votre moteur !

    Pour ceux qui souhaitent partager leurs projets avec d’autres, Sprite Fusion permet également d’exporter vos projets au format JSON compact, facilitant ainsi le partage. Avec des exemples tels que Hazmat Pixel Art – Niveau 1, Mining Odyssey, Spritesheet Dashers et Tiled Map Retro Simulator, vous pouvez voir l’étendue des possibilités offertes par cet outil.

    L’utilisation de cet éditeur est totalement gratuite et ne nécessite aucune création de compte. Il fonctionne avec les principaux navigateurs et vous pouvez l’utiliser sans aucune limitation pour un usage personnel ou commercial. Et si vous avez des questions, n’hésitez pas à les poser sur leur serveur Discord .

    Spite Fusion prend également en charge les collisions, vous permettant de définir n’importe quelle couche en tant que collisionneur pour utiliser les collisions dans votre jeu. De plus, il propose une fonctionnalité d’auto-tiling, qui vous permet de placer automatiquement des tuiles en fonction de leurs voisines, facilitant ainsi la conception rapide de cartes de terrain.

    A vous de tester maintenant !

    Merci à Lorenper

    • chevron_right

      LLM4Decompile – Quand l’IA se met à décompiler du binaire

      news.movim.eu / Korben · Saturday, 16 March - 01:15 · 2 minutes

    Imaginez un monde merveilleux où les secrets enfermés dans les binaires compilés ne seraient plus inaccessibles aux simples mortels que nous sommes…

    C’est exactement ce que LLM4Decompile , le premier LLM (Large Language Model) open-source dédié à la décompilation, promet de réaliser. Fruit d’un travail de recherche innovant mené par une équipe de chercheurs passionnés, ce modèle révolutionnaire ouvre de nouvelles perspectives dans le domaine du reverse engineering.

    Jusqu’à présent, la décompilation, c’est-à-dire le processus qui consiste à retrouver le code source à partir d’un exécutable compilé, restait un défi de taille. Les outils existants peinaient à produire un code lisible et compréhensible par les humains, ce qui est logique puisqu’il y a une grosse perte d’informations lors de la compilation. Mais ça, c’était avant l’arrivée de LLM4Decompile !

    Entraîné sur un énorme dataset de 4 milliards de tokens de code C et d’assembleur x86, ce modèle de langage surpuissant a appris à décoder les secrets des binaires. Grâce à son architecture basée sur les Transformers et ses milliards de paramètres, il est donc capable de capturer les patterns et la sémantique du code à un niveau inédit.

    Mais les chercheurs ne se sont pas arrêtés là. Ils ont aussi développé le premier benchmark standardisé pour la décompilation baptisé Decompile-Eval . Basé sur des problèmes de programmation réels, il permet d’évaluer la capacité des modèles à regénérer un code recompilable et ré-exécutable. Exit les métriques de similarité de tokens, place à des critères solides et pertinents ! LLM4Decompile parvient à recompiler 90% des binaires décompilés (oui oui, je me suis pas trompé) !

    Mieux encore, 21% du code re-généré réussit tous les tests unitaires, démontrant une préservation de la logique du programme. C’est 50% de plus que GPT-4, pourtant considéré comme l’état de l’art.

    Cerise sur le gâteau, LLM4Decompile est entièrement open-source. Les modèles pré-entraînés de 1,3 à 33 milliards de paramètres sont disponibles sur Hugging Face, prêts à être utilisés et améliorés par la communauté. Le code, les données d’entraînement et le benchmark sont aussi accessibles sur GitHub.

    Bien sûr, LLM4Decompile n’est qu’un premier pas vers la décompilation par l’IA. Il reste limité au langage C et à l’assembleur x86, et ne gère pour l’instant que des fonctions isolées. Mais les perspectives sont immenses ! On peut imaginer étendre son champ d’action à d’autres langages et architectures, voire carrément l’utiliser pour transpiler automatiquement du code entre différents langages.

    Les applications potentielles sont nombreuses : reverse engineering de logiciels legacy (ça veut dire obsolète mais encore utilisé.. .argh !), analyse de malware, portage de vieux jeux vidéos, etc. Même les vieux binaires qui sentent la naphtaline n’auront bientôt plus de secrets pour nous !

    • chevron_right

      Touitomamout – Pour synchroniser Twitter avec BlueSky et Mastodon

      news.movim.eu / Korben · Tuesday, 5 March - 08:00 · 1 minute

    Je ne sais pas si vous trainez sur Twitter, depuis qu’Elon en a pris la (mauvaise) direction, mais en ce qui me concerne, j’étais là avant lui, et je serai là après lui. Donc je reste sur Twitter malgré sa faune parfois un peu glauque.

    Mais ça ne m’empêche pas d’être également présent sur Bluesky et Mastodon , même si je ne les utilise pas vraiment. J’essaye quand même d’y partager mes articles. D’ailleurs, pour Bluesky, je me suis fait une moulinette en python , qui me permet d’y automatiser le post de mes articles de blog avec l’aide de ChatGPT pour que ce soit encore plus naturel.

    Mais si vous ne voulez pas trop vous prendre la tête, y’a Louis Grasset qui a mis en ligne Touitomamout (Jeu de mots ^^ : Tweet To Mammouth). Il s’agit d’un outil qui peut s’installer sur votre machine / serveur / docker et qui permet de faire du cross-post depuis Twitter vers Mastodon et / ou Bluesky. En plus des messages textes, des images, des vidéos ou encore des gifs animés, l’outil permet même si vous le désirez de synchroniser l’entièreté de votre profil (nom, avatar, bannière, description).

    Pour le faire tourner dans Docker, c’est easy. Il vous suffit de créer un docker-compose.yml et de mettre ça dedans :

    version: '3.9'
    
    services:
      touitomamout:
        container_name: "touitomamout"
        image: louisgrasset/touitomamout:latest  # Or "ghcr.io/louisgrasset/touitomamout:latest"
        restart: unless-stopped
        environment:
          - ENV_FILE=/data/.env
          - STORAGE_DIR=/data
        volumes:
          - ./data:/data

    Puis de lancer la commande suivante :

    docker-compose up -d

    Et voilà de beaux comptes de réseaux sociaux bien synchronisés. Bravo Louis !

    • chevron_right

      Kalker – La calculatrice scientifique de votre terminal

      news.movim.eu / Korben · Friday, 1 March - 08:00 · 1 minute

    Quand j’étais plus jeune, on me répétait souvent : « Mais tu dois être tellement fort en maths vu ce que tu sais faire avec un ordinateur « .

    Mais non, aucun rapport les anciens. Je suis mauvais en maths, c’est un fait ! Mais ça ne doit pas m’empêcher aujourd’hui de vous parler de Kalker, une calculatrice scientifique qui s’utilise dans le terminal, et qui supporte la syntaxe mathématique et la possibilité d’utiliser des variables et des fonctions de votre choix ainsi que la différentiation, l’intégration et les nombres complexes.

    Avec Kalker , vous pourrez jongler avec les opérateurs les plus basiques + , - , * , / , aux opérateurs plus spécialisés comme ! pour les factorielles ou % pour les pourcentages. Vous pouvez également manipuler des groupes avec des parenthèses () , des crochets [] , mais aussi utiliser des fonctions de plafond ⌈ceil⌉ et de plancher ⌊floor⌋ . Sans oublier les vecteurs (x, y, z, ...) et des matrices [x, y, z; a, b, c; ...] ? La plupart de ces trucs sont du chinois pour moi, mais si vous kiffez ça, ça va vous permettre de manipuler ces structures avec la même facilité que si vous manipuliez de simples nombres sur votre calculatrice Windows.

    Car oui, c’est dispo sous Windows, mais également sous Linux et macOS. Et bien sûr en ligne, car vous pouvez tester ça directement depuis votre navigateur en cliquant ici .

    L’intérêt de Kalker c’est qu’il peut s’adapter à vos besoins spécifiques. Vous pouvez définir vos propres fonctions et variables, pour par exemple stocker une formule compliquée dans une fonction personnalisée et l’utiliser aussi simplement que f(x) .

    Maintenant je m’arrête là pour ne pas vous dire plus de bêtises, mais sachez que si vous voulez l’installer, c’est par ici que ça se passe.

    Et dans le même style, mais avec le support des unités plus physiques (vitesse, monnaie, fréquence, voltage…etc. y’en a pour tous les goûts), il y a également Numbat que vous pouvez découvrir ici.

    • chevron_right

      Nava – La lib Python pour jouer du son dans votre code

      news.movim.eu / Korben · Sunday, 25 February - 08:00 · 1 minute

    J’aime bien faire un peu de Python de temps en temps et il m’arrive parfois de vouloir jouer un son dans mes scripts pour signaler qu’un traitement est fini ou tout simplement mettre un peu de fun. Jusqu’à présent j’utilisais des libs comme Pygame, Playsound ou encore Pydub mais ces trucs-là ne sont pas forcément bien supportés par tous les OS, ou nécessitent des dépendances comme FFMpeg.

    Toutefois, une lib baptisée Nava vient de faire son apparition et c’est la simplicité même. Elle fonctionne sur tous les OS (Linux, macOS, Windows), et n’utilise aucune dépendance ou logiciel tiers. Vous pouvez lui faire lire du WAV et du MP3 et la lecture se lance immédiatement.

    Pour l’installer, rien de plus simple :

    pip install nava

    Et ensuite, il suffit de l’appeler dans votre code et de lui indiquer le morceau à jouer.

    from nava import play
    play("son.mp3")

    Vous pouvez même lancer une lecture en asynchrone pour ne pas bloquer votre script. Dans l’exemple ci-dessous, on lance un time sleep qui peut donc couper la lecture du son au bout de 4 secondes et qui comme vous le voyez, n’est pas bloqué puisque nava est lancé en mode asynchrone avec le paramètre async_mode=True :

    import time
    from nava import play, stop
    sound_id = play("son.wav", async_mode=True)
    time.sleep(4)
    stop(sound_id)

    Voilà, j’espère que ça vous sera utile 🙂

    • chevron_right

      Wallace – L’analyseur CSS qui vous juge et vous conseille

      news.movim.eu / Korben · Friday, 23 February - 08:00 · 1 minute

    Écrire de la CSS, c’est comme frotter ses doigts sur une râpe à fromage. C’est délicat.

    Et quand notre feuille de style est finie, on est content de nous, on s’ouvre une bière et on se dit qu’on a vraiment fait du bon boulot et que finalement, y’avait pas besoin de payer cet intégrateur freelance.

    GRAVE ERREUR ! Car en soumettant votre site à l’analyse de Wallace , vous verrez toutes les boulettes que vous avez commises dans votre CSS. En effet, Wallace est ce genre de petit outil en ligne bien pratique qui à partir d’une simple URL de site web, analyse en profondeur l’ensemble de votre feuille de style pour vous fournir des stats d’abord, mais également des critiques (constructives, rassure-vous) sur la qualité de votre code.

    Vous pouvez même cliquer sur les éléments mis en avant par Wallace et celui-ci vous les montrera directement dans votre CSS.

    Ainsi, en suivant ses recommandations, vous saurez ce qu’il vous reste à faire pour optimiser encore un peu plus votre CSS et la faire ressembler à une oeuvre d’art plutôt qu’à la version papier de France Souar.

    Comme ça, vous pourrez même tenter d’améliorer les notes de maintenabilité, de complexité et de performances qu’il vous donne. Voici celles de mon site, sans n’avoir rien changé. Paaaas maaaal. :

    Voilà, c’est un excellent outil d’analyse de CSS qui non seulement permet d’augmenter les performances de chargement de votre site, mais surtout vous aider à alléger la complexité de celle-ci pour en faciliter la maintenance. Et pour les plus fifous qui aiment passer par le terminal ou automatiser ce genre d’analyse, il existe même un projet Wallace en ligne de commande ici .

    Merci à Maitre Tofu pour l’info !

    • chevron_right

      Magika, le détecteur de fichiers ultra-rapide de Google

      news.movim.eu / Korben · Saturday, 17 February - 11:26 · 4 minutes

    La dernière nouveauté dans le domaine de l’IA c’est la détection des types de fichiers. Hé ouais ! Google a récemment ouvert les sources de Magika , un système d’identification de types de fichiers basé sur l’IA, qui a pour but de nous aider (enfin, nos outils) à détecter avec précision les types de fichiers binaires et textuels.

    Depuis longtemps maintenant, les systèmes Linux sont équipés de libmagic et de l’utilitaire file , qui ont servi de norme de facto pour l’identification des types de fichiers, et ce pendant plus de 50 ans !!

    Les navigateurs web, les éditeurs de code et d’innombrables autres logiciels s’appuient sur la détection des types de fichiers pour décider comment afficher correctement un fichier. Par exemple, les IDE modernes utilisent la détection des types de fichiers pour choisir le schéma de coloration syntaxique à utiliser lorsque le développeur commence à taper dans un nouveau fichier.

    La détection précise des types de fichiers est un problème difficile, car chaque format de fichier a une structure différente, ou pas de structure du tout. Et c’est encore plus dur pour les formats textuels et les langages de programmation, car ils ont des constructions très similaires. Jusqu’à présent, libmagic et la plupart des autres logiciels d’identification des types de fichiers s’appuyaient sur une collection plutôt artisanale (hmm hmm) d’heuristiques et de règles personnalisées pour détecter chaque format de fichier.

    Cette approche manuelle étant à la fois longue et sujette aux erreurs, ce n’est pas forcément l’idéal notamment pour les applications de sécurité où la création d’une détection fiable est particulièrement difficile, car les attaquants tentent constamment de tromper la détection avec des payloads maison 🙂

    Pour résoudre ce problème et fournir une détection rapide et précise des types de fichiers, Google a donc développé Magika, un nouveau détecteur de types de fichiers basé sur l’IA.

    Sous le capot, Magika utilise un modèle de deep learning personnalisé et hautement optimisé conçu et formé à l’aide de Keras qui ne pèse environ 1 Mo. Magika utilise aussi Onnx comme moteur d’inférence pour garantir que les fichiers soient identifiés en quelques millisecondes, presque aussi rapidement qu’un outil non basé sur l’IA, même sur un CPU.

    En termes de performances, Magika, grâce à son modèle d’IA et son grand ensemble de données d’apprentissage, est capable de surpasser d’autres outils existants d’environ 20 % lorsqu’il est évalué sur un benchmark de 1 million de fichiers englobant plus de 100 types de fichiers. En décomposant par type de fichier, comme indiqué dans le tableau ci-dessous, on observe des gains de performance encore plus importants sur les fichiers textuels, notamment les fichiers de code et les fichiers de configuration avec lesquels d’autres outils peuvent avoir des difficultés.

    Magika est utilisé en interne chez Google à grande échelle pour aider à améliorer la sécurité des utilisateurs de leurs services notamment pour l’acheminement des fichiers au sein de Gmail, Drive ou encore Safe Browsing vers des scanners de sécurité et des filtres de contenu.

    En examinant une moyenne hebdomadaire de centaines de milliards de fichiers, Google a constaté que Magika améliorait la précision de l’identification des types de fichiers de 50 % par rapport à leur système précédent basé sur de simples règles. Cette augmentation de la précision leur a permis d’analyser 11 % de fichiers en plus avec leurs scanners de documents malveillants spécialisés en IA et ils ont ainsi pu réduire le nombre de fichiers non identifiés à 3 %.

    La prochaine intégration de Magika se fera dans VirusTotal et viendra ainsi compléter la fonctionnalité Code Insight existante de la plateforme, qui utilise l’IA générative de Google pour analyser et détecter les codes malveillants. Magika agira alors comme un pré-filtre avant que les fichiers ne soient analysés par Code Insight , améliorant ainsi l’efficacité et la précision de la plateforme. Cette intégration, en raison de la nature collaborative de VirusTotal, contribue directement à l’écosystème cyber, et ça c’est plutôt une bonne nouvelle pour tout le monde.

    En ouvrant les sources de Magika , l’objectif de Google est d’aider d’autres éditeurs de logiciels à améliorer leur précision d’identification des fichiers et d’offrir aux chercheurs une méthode fiable pour identifier les types de fichiers à très grande échelle. Le code et le modèle de Magika sont disponibles gratuitement sur Github sous la licence Apache2.

    Si vous êtes intéressé, vous pouvez essayer la démo web de Magika .

    Magika peut également être rapidement installé en tant qu’utilitaire autonome et bibliothèque python via le gestionnaire de paquets pypi en tapant simplement :

    pip install magika

    Et pas besoin de GPU !

    Pour en savoir plus sur la façon de l’utiliser, je vous invite à vous rendre sur la documentation de Magika .

    Merci à Letsar pour l’info !

    • chevron_right

      LiteLLM – Pour discuter avec toutes les API LLM en utilisant la syntaxe OpenAI

      news.movim.eu / Korben · Wednesday, 14 February - 08:00 · 2 minutes

    Si vous codez en Python autour d’API de LLM comme celle d’OpenAI, d’Anthropic ou encore de Huggingface…etc., je vous présente LiteLLM qui risque de vous faire gagner pas mal de temps.

    Il s’agit d’une lib Python capable d’interagir avec tout un tas d’API en utilisant le format de celle d’OpenAI. Elle fournit une interface simple et uniformisée pour appeler ces modèles , ce qui va vous faciliter leur utilisation pour des choses comme de la génération de texte, de la traduction ou encore du chat…

    Pour l’installer, rien de plus simple :

    pip install litellm

    Ensuite, y’a plus qu’à créer un objet LiteLLM dans votre code, en lui fournissant l’ID et le nom du modèle à utiliser. Par exemple pour vous connecter à OpenAI, le code sera le suivant :

    from litellm import completion
    import os
    
    ## set ENV variables
    os.environ["OPENAI_API_KEY"] = "your-api-key"
    
    response = completion(
      model="gpt-3.5-turbo", 
      messages=[{ "content": "Hello, how are you?","role": "user"}]
    )

    Pour Claude 2, ça sera ça :

    from litellm import completion
    import os
    
    ## set ENV variables
    os.environ["ANTHROPIC_API_KEY"] = "your-api-key"
    
    response = completion(
      model="claude-2", 
      messages=[{ "content": "Hello, how are you?","role": "user"}]
    )

    Pour utiliser Ollama , ça donnerait également ça :

    from litellm import completion
    
    response = completion(
                model="ollama/llama2", 
                messages = [{ "content": "Hello, how are you?","role": "user"}], 
                api_base="http://localhost:11434"
    )

    Donc pas grand-chose qui change.

    Vous l’aurez donc compris, LiteLLM permet de pondre un seul et unique code, mais pour discuter avec tous les fournisseurs d’IA du moment (et les logiciels libres existants)

    Y’a la possibilité d’avoir du stream sur les réponses (c’est à dire, le texte qui s’affiche au fur et à mesure), de la gestion des exceptions, du log, sans oublier du calcul de coût et l’usage que vous pouvez avoir de ces API afin de ne pas éclater votre compte en banque.

    LiteLLM intègre également un proxy OpenAI pour rediriger vos requêtes vers le modèle de votre choix. Pour l’installer :

    pip install 'litellm[proxy]'

    Lancez ensuite le proxy avec le modèle de votre choix :

    litellm --model huggingface/bigcode/starcoder

    Et lui passer vos requêtes dans le code python directement :

    import openai # openai v1.0.0+
    client = openai.OpenAI(api_key="anything",base_url="http://0.0.0.0:8000") # set proxy to base_url
    # request sent to model set on litellm proxy, `litellm --model`
    response = client.chat.completions.create(model="gpt-3.5-turbo", messages = [
        {
            "role": "user",
            "content": "this is a test request, write a short poem"
        }
    ])
    
    print(response)

    Si LiteLLM vous intéresse, vous trouverez toutes les infos sur la page Github ainsi que les endpoints ici .

    • chevron_right

      EvaDB – Mettez de l’IA dans vos requêtes SQL

      news.movim.eu / Korben · Sunday, 4 February - 08:00 · 3 minutes

    Mes chers amis, l’IA est partouuuut, dans nos villes, dans nos campagnes, et elle vient voler le travail des gens qui s’opposent à elle.

    Alors plutôt que de vous battre inutilement contre l’inéluctable, autant l’apprivoiser et la faire bosser pour vous, car ce n’est qu’un outil débile de plus dont chacun peut tirer des bénéfices.

    Même les codeurs… La preuve avec EvaDB, une base de données ouverte qui permet aux développeurs de logiciels de créer des applications IA en quelques lignes de code grâce à son API SQL très puissante . Et pas besoin d’avoir de compétences spécifiques en IA pour l’utiliser !

    EvaDB se présente comme une solution clé en main pour simplifier le développement d’applications IA, en prenant en charge à la fois la gestion des données structurées et non structurées. L’outil offre une facilité de connexion à toutes les sources de données existantes telles que PostgreSQL ou vos buckets S3, ainsi qu’une utilisation optimisée des CPU/GPU et la personnalisation des modèles IA (fine tuning) récupérés chez Hugging Face, OpenAI ou encore YOLO.

    Cela signifie concrètement que vous allez pouvoir ajouter des fonctionnalités d’IA à vos applications en utilisant simplement des fonctions intégrées dans les requêtes. Vous pouvez choisir parmi différents modèles pré-entraînés ou créer vos propres modèles personnalisés.

    Petit exemple de requête :

    SELECT name, country, email, programming_languages, social_media, GPT4(prompt,topics_of_interest)
    FROM gpt4all_StargazerInsights;

    Et le prompt fourni :

    --- Prompt to GPT-4
    You are given 10 rows of input, each row is separated by two new line characters.
    Categorize the topics listed in each row into one or more of the following 3 technical areas - Machine Learning, Databases, and Web development. If the topics listed are not related to any of these 3 areas, output a single N/A. Do not miss any input row. Do not add any additional text or numbers to your output.
    The output rows must be separated by two new line characters. Each input row must generate exactly one output row. For example, the input row [Recommendation systems, Deep neural networks, Postgres] must generate only the output row [Machine Learning, Databases].
    The input row [enterpreneurship, startups, venture capital] must generate the output row N/A.

    Voici quelques cas d’utilisation possibles : analyse de sentiments , réponse aux questions posées en vidéo avec ChatGPT , résumé de texte à partir de documents PDF , analyse de flux de trafic , analyse d’émotions dans les vidéos ou encore recherche d’images similaires .

    Ainsi, EvaDB permet de cibler 99% des problèmes d’IA qui sont souvent répétitifs et peuvent être automatisés avec un simple appel de fonction dans une requête SQL.

    Obtenir une transcription d’une vidéo stockée dans une table à l’aide d’un modèle de reconnaissance vocale pour pouvoir ensuite poser des questions sur la transcription extraite à l’aide de ChatGPT, c’est typiquement le genre de truc que permet de faire EvaDB :

    CREATE TABLE text_summary AS
        SELECT SpeechRecognizer(audio) FROM ukraine_video;
    SELECT ChatGPT('Is this video summary related to Ukraine russia war', text)
        FROM text_summary;

    Si votre curiosité est piquée et que vous voulez en savoir plus sur ce projet, tout est ici sur Github .

    Bref, ne laissez pas passer l’occasion d’explorer cet outil open source qui vous ouvrira bien des portes.