Avertissement
Ce package est expérimental et en début de développement. Soyez prudent si vous l'utilisez en production.
Spehulak.jl est un package pour l'observabilité GenAI - vous aidant à comprendre ce qui se passe dans votre modèle GenAI. Il fournit un ensemble d'outils pour inspecter et évaluer les traces enregistrées via PromptingTools.jl.
Ajoutez-le à votre environnement simplement avec :
using Pkg
Pkg . activate ( " . " )
Pkg . add ( " Spehulak " )
Ensuite, démarrez l'application avec
using Spehulak
launch () # starts an asynchronous server on 9001
Ouvrez le navigateur et accédez à http://localhost:9001
.
Spehulak peut charger toutes les conversations LLM sérialisées ou les résultats RAG enregistrés via PromptingTools.jl (c'est-à-dire les fichiers JSON).
Il existe deux options :
A titre d'exemple, chargez le fichier log/conversation...
dans ce dépôt.
Il y a deux pages : 1) Navigateur de conversation et 2) Visionneuse RAG. Vous pouvez basculer entre eux en cliquant sur les icônes sur le côté gauche.
Conversation Browser affiche toutes les conversations chargées empilées verticalement, afin que vous puissiez parcourir rapidement les traces et remarquer des comportements étranges.
RAG Viewer affiche toujours un seul RAGResult
mais le fait avec une grande quantité de détails (par exemple, conversation de l'utilisateur, chaînes LLM sous le capot, sources, contexte, classement/intégration des candidats, etc.).
Pour vous aider dans la navigation, vous pouvez utiliser les flèches dans le coin supérieur droit : '<' Aller au précédent, '>' Aller au suivant et une icône de dé pour une sélection aléatoire. Vous pouvez utiliser ces outils de navigation pour le navigateur de conversation et le visualiseur RAG.
Dans le cas de Conversation Browser, vous pouvez également filtrer des mots-clés spécifiques (cela exploite occursin
sous le capot). Tapez simplement un mot-clé et appuyez sur ENTRÉE. Il conservera uniquement les conversations contenant le mot-clé.
Conseil
Lors du filtrage des conversations, filtrez d'abord avec Spehulak pour réduire le nombre de conversations affichées, puis utilisez l'outil de recherche du navigateur pour mettre en évidence toutes les occurrences du mot-clé souhaité.
Que peut-il faire ? Parcourez toutes les conversations LLM sérialisées. Si vous avez utilisé des messages tracés, nous afficherons également toutes les métadonnées pertinentes (modèle, modèles, versions de modèles, etc.).
Comment enregistrer/enregistrer automatiquement mes conversations LLM ? Voir la documentation PromptingTools.jl
Ou générez quelques exemples de jouets
using PromptingTools
using PromptingTools : TracerSchema, SaverSchema, OpenAISchema, pprint
schema = OpenAISchema () |> TracerSchema |> SaverSchema
# Let's create a multi-turn conversation
conversation = aigenerate (schema, :JuliaExpertAsk ; ask = " Write a function to convert vector of strings into pig latin " , model = " gpt4o " , return_all = true )
pprint (conversation)
# Let's create one more turn -- notice that we provide the past conversation as a kwarg
conversation = aigenerate (schema, " That's too complicated. Please simplify it. Think step by step first " ; conversation, model = " gpt4o " , return_all = true )
pprint (conversation)
Vous devriez voir quelques fichiers créés dans le dossier log/
- essayez de les ouvrir avec Spehulak !
Comment sauvegarder mes résultats RAG ?
Enregistrer RAGResult
pour des analyses futures est aussi simple que JSON3.write(path, result)
Exemple complet :
using PromptingTools
using PromptingTools : pprint
using PromptingTools . Experimental . RAGTools
# to access unexported functionality
const RT = PromptingTools . Experimental . RAGTools
sentences = [
" Search for the latest advancements in quantum computing using Julia language. " ,
" How to implement machine learning algorithms in Julia with examples. " ,
" Looking for performance comparison between Julia, Python, and R for data analysis. " ,
" Find Julia language tutorials focusing on high-performance scientific computing. " ,
" Search for the top Julia language packages for data visualization and their documentation. " ,
" How to set up a Julia development environment on Windows 10. " ,
" Discover the best practices for parallel computing in Julia. " ,
" Search for case studies of large-scale data processing using Julia. " ,
" Find comprehensive resources for mastering metaprogramming in Julia. " ,
" Looking for articles on the advantages of using Julia for statistical modeling. " ,
" How to contribute to the Julia open-source community: A step-by-step guide. " ,
" Find the comparison of numerical accuracy between Julia and MATLAB. " ,
" Looking for the latest Julia language updates and their impact on AI research. " ,
" How to efficiently handle big data with Julia: Techniques and libraries. " ,
" Discover how Julia integrates with other programming languages and tools. " ,
" Search for Julia-based frameworks for developing web applications. " ,
" Find tutorials on creating interactive dashboards with Julia. " ,
" How to use Julia for natural language processing and text analysis. " ,
" Discover the role of Julia in the future of computational finance and econometrics. "
]
sources = map (i -> " Doc $i " , 1 : length (sentences))
# # Build the index
index = RT . build_index (sentences; chunker_kwargs = (; sources))
# # Generate an answer
question = " What are the best practices for parallel computing in Julia? "
result = airag (index; question, return_all = true )
# You can preview the RAGResult with pretty-printing
pprint (result)
# Save the RAGResult
mkpath ( " log " )
JSON3 . write ( " log/rag_result_20240615.json " , result)
Maintenant, vous pouvez inspecter ses détails avec Spehulak !
C'est quoi Spehulak ?
"Špehulak" (prononcé "shpeh-hoo-lahk") mélange "espion" et "bonhomme de neige", riffant les mots tchèques "špeh" pour espion et "sněhulák" pour bonhomme de neige. C'est un nom amusant pour une plate-forme d'observabilité, car il s'agit avant tout de garder un œil vigilant, comme un espion, tandis que le rôle du bonhomme de neige consiste à rester cool sous la pression pendant que vous parcourez des tas de données, en plus d'être invisible/en arrière-plan, de ne pas être dans le chemin. C'est parfait pour plonger en profondeur dans le fonctionnement interne de vos applications LLM !
MultiCandidateChunks
) Ce projet ne serait pas possible sans l'incroyable Stipple.jl de la famille Genie.jl !