Warnung
Dieses Paket ist experimentell und befindet sich in einem frühen Entwicklungsstadium. Seien Sie vorsichtig, wenn Sie es in der Produktion verwenden.
Spehulak.jl ist ein Paket für GenAI-Beobachtbarkeit – es hilft Ihnen zu verstehen, was in Ihrem GenAI-Modell passiert. Es stellt eine Reihe von Tools zur Untersuchung und Auswertung der über PromptingTools.jl gespeicherten Traces bereit.
Fügen Sie es Ihrer Umgebung einfach hinzu mit:
using Pkg
Pkg . activate ( " . " )
Pkg . add ( " Spehulak " )
Starten Sie dann die App mit
using Spehulak
launch () # starts an asynchronous server on 9001
Öffnen Sie den Browser und navigieren Sie zu http://localhost:9001
.
Spehulak kann alle über PromptingTools.jl gespeicherten serialisierten LLM-Konversationen oder RAG-Ergebnisse laden (d. h. JSON-Dateien).
Es gibt zwei Möglichkeiten:
Laden Sie als Beispiel die Datei log/conversation...
in dieses Repo.
Es gibt zwei Seiten: 1) Konversationsbrowser und 2) RAG Viewer. Sie können zwischen ihnen wechseln, indem Sie auf die Symbole auf der linken Seite klicken.
Der Konversationsbrowser zeigt alle geladenen Konversationen vertikal gestapelt an, sodass Sie die Spuren schnell durchsuchen und seltsame Verhaltensweisen bemerken können.
RAG Viewer zeigt immer nur ein einzelnes RAGResult
an, tut dies jedoch mit vielen Details (z. B. Benutzerkonversation, LLM-Ketten unter der Haube, Quellen, Kontext, Rangfolge/Einbettung von Kandidaten usw.).
Um Ihnen die Navigation zu erleichtern, können Sie die Pfeile in der oberen rechten Ecke verwenden: „<“ Gehe zum vorherigen, „>“ Gehe zum nächsten und ein Würfelsymbol für eine zufällige Auswahl. Sie können diese Navigationstools sowohl für den Conversation Browser als auch für den RAG Viewer verwenden.
Im Fall des Konversationsbrowsers können Sie auch nach bestimmten Schlüsselwörtern filtern (dadurch occursin
Vorkommnisse unter der Haube genutzt). Geben Sie einfach ein Schlüsselwort ein und drücken Sie die EINGABETASTE. Es werden nur die Konversationen beibehalten, die das Schlüsselwort enthalten.
Tipp
Wenn Sie Konversationen filtern, filtern Sie zunächst mit Spehulak, um die Anzahl der angezeigten Konversationen zu reduzieren, und verwenden Sie dann das Suchtool im Browser, um alle Vorkommen des gewünschten Schlüsselworts hervorzuheben.
Was kann es tun? Durchsuchen Sie alle serialisierten LLM-Konversationen. Wenn Sie nachverfolgte Nachrichten verwendet haben, zeigen wir auch alle relevanten Metadaten an (Modell, Vorlagen, Vorlagenversionen usw.).
Wie kann ich meine LLM-Gespräche automatisch speichern/protokollieren? Siehe PromptingTools.jl-Dokumente
Oder generieren Sie ein paar Spielzeugbeispiele
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)
Sie sollten einige im Ordner log/
erstellte Dateien sehen – versuchen Sie, sie mit Spehulak zu öffnen!
Wie speichere ich meine RAG-Ergebnisse?
Das Speichern von RAGResult
für zukünftige Analysen ist so einfach wie JSON3.write(path, result)
Vollständiges Beispiel:
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)
Jetzt können Sie die Details mit Spehulak überprüfen!
Was ist Spehulak?
„Špehulak“ (ausgesprochen „shpeh-hoo-lahk“) ist eine Mischung aus „Spion“ und „Schneemann“ und basiert auf den tschechischen Wörtern „špeh“ für Spion und „sněhulák“ für Schneemann. Es ist ein lustiger Name für eine Observability-Plattform, weil es darum geht, ein wachsames Auge zu haben, wie ein Spion, während die Rolle des Schneemanns darin besteht, unter Druck cool zu bleiben, während man Unmengen von Daten durchforstet, und gleichzeitig unsichtbar/im Hintergrund zu sein, nicht im Hintergrund zu sein Weg. Es ist perfekt, um tief in die Funktionsweise Ihrer LLM-Apps einzutauchen!
MultiCandidateChunks
) Dieses Projekt wäre ohne das erstaunliche Stipple.jl aus der Genie.jl-Familie nicht möglich!