Предупреждение
Этот пакет является экспериментальным и находится на ранней стадии разработки. Будьте осторожны при использовании его в производстве.
Spehulak.jl — это пакет для наблюдения за GenAI, который помогает вам понять, что происходит внутри вашей модели GenAI. Он предоставляет набор инструментов для проверки и оценки трассировок, сохраненных с помощью PromptingTools.jl.
Добавьте его в свою среду просто с помощью:
using Pkg
Pkg . activate ( " . " )
Pkg . add ( " Spehulak " )
Затем запустите приложение с помощью
using Spehulak
launch () # starts an asynchronous server on 9001
Откройте браузер и перейдите по адресу http://localhost:9001
.
Spehulak может загружать любые сериализованные разговоры LLM или результаты RAG, сохраненные через PromptingTools.jl (т. е. файлы JSON).
Есть два варианта:
В качестве примера загрузите файл log/conversation...
в этот репозиторий.
Есть две страницы: 1) Браузер разговоров и 2) Средство просмотра RAG. Вы можете переключаться между ними, щелкая значки слева.
Браузер разговоров отображает все загруженные разговоры, расположенные вертикально, поэтому вы можете быстро просмотреть их следы и заметить странное поведение.
Средство просмотра RAG Viewer всегда отображает только один RAGResult
, но делает это с большим количеством деталей (например, разговор с пользователем, внутренние цепочки LLM, источники, контекст, ранжирование/встраивание кандидатов и т. д.).
Для облегчения навигации вы можете использовать стрелки в правом верхнем углу: «<» Перейти к предыдущему, «>» Перейти к следующему, а также значок кубика для случайного выбора. Вы можете использовать эти инструменты навигации как для браузера разговоров, так и для средства просмотра RAG.
В случае с браузером разговоров вы также можете фильтровать определенные ключевые слова (он использует occursin
»). Просто введите какое-нибудь ключевое слово и нажмите ENTER. Будут сохранены только разговоры, содержащие ключевое слово.
Кончик
При фильтрации разговоров сначала отфильтруйте с помощью Spehulak, чтобы уменьшить количество отображаемых разговоров, а затем используйте инструмент поиска браузера, чтобы выделить все вхождения нужного ключевого слова.
Что он может сделать? Просмотрите любые сериализованные разговоры LLM. Если вы использовали отслеживаемые сообщения, мы также отобразим все соответствующие метаданные (модель, шаблоны, версии шаблонов и т. д.).
Как автоматически сохранять/записывать мои разговоры по программе LLM? См. документацию PromptingTools.jl.
Или создайте несколько примеров игрушек.
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)
Вы должны увидеть несколько файлов, созданных в папке log/
— попробуйте открыть их с помощью Spehulak!
Как сохранить результаты RAG?
Сохранить RAGResult
для будущего анализа так же просто, как JSON3.write(path, result)
Полный пример:
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)
Теперь вы можете проверить его детали с помощью Spehulak!
Что такое Спегулак?
«Шпехулак» (произносится как «шпе-ху-лахк») представляет собой смесь слов «шпион» и «снеговик», заимствуя чешские слова «шпе» — шпион и «снэхулак» — снеговик. Это забавное название для платформы наблюдения, потому что она заключается в том, чтобы держать бдительный глаз, как шпион, в то время как роль снеговика играет роль хладнокровия под давлением, когда вы просеиваете кучу данных, плюс быть невидимым/на заднем плане, а не находиться на заднем плане. способ. Он идеально подходит для глубокого изучения внутренней работы ваших приложений LLM!
MultiCandidateChunks
). Этот проект был бы невозможен без потрясающего Stipple.jl из семейства Genie.jl!