LIDA est une bibliothèque pour générer des visualisations de données et des infographies fulaires de données. LIDA est une grammaire agnostique (travaillera avec n'importe quelle bibliothèque de langage et de visualisation de programmation, par exemple, Matplotlib, SeaBorn, Altair, D3, etc.) et fonctionne avec plusieurs fournisseurs de modèles de langues (Openai, Azure Openai, Palm, Cohere, HuggingFace). Les détails sur les composants de Lida sont décrits dans le document ici et dans ce cahier de tutoriel. Voir la page du projet ici pour les mises à jour!.
Remarque sur l'exécution du code: pour créer des visualisations, lida génère et exécute du code. Assurez-vous que vous exécutez Lida dans un environnement sécurisé.
Lida traite les visualisations comme du code et fournit une API propre pour générer, exécuter, éditer, expliquer, évaluer et réparer le code de visualisation.
from lida import Manager , llm
lida = Manager ( text_gen = llm ( "openai" )) # palm, cohere ..
summary = lida . summarize ( "data/cars.csv" )
goals = lida . goals ( summary , n = 2 ) # exploratory data analysis
charts = lida . visualize ( summary = summary , goal = goals [ 0 ]) # exploratory data analysis
Configurez et vérifiez que votre environnement Python est python 3.10
ou supérieur (de préférence, utilisez conda). Installez la bibliothèque via PIP.
pip install -U lida
Lida dépend de llmx
et openai
. Si ces bibliothèques ont été installées précédemment, envisagez de les mettre à jour.
pip install -U llmx openai
Une fois les exigences satisfaites, configurez votre clé API. En savoir plus sur la configuration des clés pour d'autres fournisseurs LLM ici.
export OPENAI_API_KEY= < your key >
Alternativement, vous pouvez installer la bibliothèque dans Dev Model en clonage ce dépensier et en exécutant pip install -e .
dans la racine du référentiel.
LIDA est livré avec une interface utilisateur et une API Web en option que vous pouvez explorer en exécutant la commande suivante:
lida ui --port=8080 --docs
Accédez ensuite à http: // localhost: 8080 / dans votre navigateur. Pour afficher la spécification de l'API Web, ajoutez l'option --docs
à la commande CLI et accédez à http://localhost:8080/api/docs
dans votre navigateur.
Le moyen le plus rapide et recommandé de commencer après l'installation sera d'essayer l'interface utilisateur Web ci-dessus ou d'exécuter le cahier de tutoriel.
L'API Web Lida et l'interface utilisateur peuvent être configurées à l'aide de Docker et de la commande ci-dessous (assurez-vous que Docker a installé, et vous avez défini votre variable d'environnement OPENAI_API_KEY
).
docker compose up
Compte tenu d'un ensemble de données, générez un résumé compact des données.
from lida import Manager
lida = Manager ()
summary = lida . summarize ( "data/cars.json" ) # generate data summary
Générez un ensemble d'objectifs de visualisation compte tenu d'un résumé des données.
goals = lida . goals ( summary , n = 5 , persona = "ceo with aerodynamics background" ) # generate goals
Ajoutez un paramètre persona
pour générer des objectifs en fonction de ce personnage.
Générer, affiner, exécuter et filtrer le code de visualisation étant donné un objectif de résumé des données et de visualisation. Notez que Lida représente les visualisations comme code .
# generate charts (generate and execute visualization code)
charts = lida . visualize ( summary = summary , goal = goals [ 0 ], library = "matplotlib" ) # seaborn, ggplot ..
Compte tenu d'une visualisation, modifiez la visualisation en utilisant le langage naturel.
# modify chart using natural language
instructions = [ "convert this to a bar chart" , "change the color to red" , "change y axes label to Fuel Efficiency" , "translate the title to french" ]
edited_charts = lida . edit ( code = code , summary = summary , instructions = instructions , library = library , textgen_config = textgen_config )
Étant donné une visualisation, générez une explication en langage naturel du code de visualisation (accessibilité, transformations de données appliquées, code de visualisation)
# generate explanation for chart
explanation = lida . explain ( code = charts [ 0 ]. code , summary = summary )
Compte tenu d'une visualisation, évaluez pour trouver des instructions de réparation (qui peuvent être écrites ou générées par l'homme), réparez la visualisation.
evaluations = lida . evaluate ( code = code , goal = goals [ i ], library = library )
Compte tenu d'un ensemble de données, générez un ensemble de visualisations recommandées.
recommendations = lida . recommend ( code = code , summary = summary , n = 2 , textgen_config = textgen_config )
Étant donné une visualisation, générez une infographie data-fortful. Ces méthodes doivent être considérées comme expérimentales et utilisent des modèles de diffusion stables à partir de la bibliothèque Peacasso. You will need to run pip install lida[infographics]
to install the required dependencies.
infographics = lida . infographics ( visualization = charts [ 0 ]. raster , n = 3 , style_prompt = "line art" )
Lida utilise la bibliothèque LLMX comme interface pour la génération de texte. LLMX prend en charge plusieurs modèles locaux, y compris les modèles HuggingFace. Vous pouvez utiliser directement les modèles HuggingFace (en supposant que vous avez un GPU) ou vous connecter à un point de terminaison de modèle local compatible OpenAI, par exemple en utilisant l'excellente bibliothèque VLLM.
!p ip3 install - - upgrade llmx == 0.0 . 17 a0
# Restart the colab session
from lida import Manager
from llmx import llm
text_gen = llm ( provider = "hf" , model = "uukuguy/speechless-llama2-hermes-orca-platypus-13b" , device_map = "auto" )
lida = Manager ( text_gen = text_gen )
# now you can call lida methods as above e.g.
sumamry = lida . summarize ( "data/cars.csv" ) # ....
from lida import Manager , TextGenerationConfig , llm
model_name = "uukuguy/speechless-llama2-hermes-orca-platypus-13b"
model_details = [{ 'name' : model_name , 'max_tokens' : 2596 , 'model' : { 'provider' : 'openai' , 'parameters' : { 'model' : model_name }}}]
# assuming your vllm endpoint is running on localhost:8000
text_gen = llm ( provider = "openai" , api_base = "http://localhost:8000/v1" , api_key = "EMPTY" , models = model_details )
lida = Manager ( text_gen = text_gen )
Naturellement, certaines des limites ci-dessus pourraient être abordées par un RP très bien accueilli.
Un court article décrivant Lida (accepté à la conférence ACL 2023) est disponible ici.
@inproceedings { dibia2023lida ,
title = " {LIDA}: A Tool for Automatic Generation of Grammar-Agnostic Visualizations and Infographics using Large Language Models " ,
author = " Dibia, Victor " ,
booktitle = " Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (Volume 3: System Demonstrations) " ,
month = jul,
year = " 2023 " ,
address = " Toronto, Canada " ,
publisher = " Association for Computational Linguistics " ,
url = " https://aclanthology.org/2023.acl-demo.11 " ,
doi = " 10.18653/v1/2023.acl-demo.11 " ,
pages = " 113--126 " ,
}
LIDA s'appuie sur des informations dans la génération automatique de visualisation à partir d'un article antérieur - Data2Vis: Génération automatique de visualisations de données en utilisant la séquence pour séquence des réseaux de neurones récurrents.