Advertencia
Este paquete es experimental y se encuentra en una etapa temprana de su desarrollo. Tenga cuidado si lo utiliza en producción.
Spehulak.jl es un paquete para la observabilidad de GenAI, que le ayuda a comprender lo que sucede dentro de su modelo GenAI. Proporciona un conjunto de herramientas para inspeccionar y evaluar los rastros guardados a través de PromptingTools.jl.
Agréguelo a su entorno simplemente con:
using Pkg
Pkg . activate ( " . " )
Pkg . add ( " Spehulak " )
Luego, inicie la aplicación con
using Spehulak
launch () # starts an asynchronous server on 9001
Abra el navegador y navegue hasta http://localhost:9001
.
Spehulak puede cargar cualquier conversación LLM serializada o resultados RAG guardados a través de PromptingTools.jl (es decir, archivos JSON).
Hay dos opciones:
Como ejemplo, cargue el archivo log/conversation...
en este repositorio.
Hay dos páginas: 1) Navegador de conversaciones y 2) Visor RAG. Puede cambiar entre ellos haciendo clic en los iconos del lado izquierdo.
El Explorador de conversaciones muestra todas las conversaciones cargadas apiladas verticalmente, para que puedas explorar rápidamente los rastros y notar comportamientos extraños.
RAG Viewer siempre muestra solo un RAGResult
, pero lo hace con una gran cantidad de detalles (por ejemplo, conversación del usuario, cadenas LLM bajo el capó, fuentes, contexto, clasificación/incrustación de candidatos, etc.).
Para ayudarle con la navegación, puede usar las flechas en la esquina superior derecha: '<' Ir al anterior, '>' Ir al siguiente y un ícono de dado para una selección aleatoria. Puede utilizar estas herramientas de navegación tanto para Conversation Browser como para RAG Viewer.
En el caso de Conversation Browser, también puede filtrar por palabras clave específicas (aprovecha occursin
bajo el capó). Simplemente escriba alguna palabra clave y presione ENTER. Sólo mantendrá las conversaciones que contengan la palabra clave.
Consejo
Al filtrar conversaciones, primero filtre con Spehulak para reducir la cantidad de conversaciones mostradas y luego utilícela en la herramienta de búsqueda del navegador para resaltar todas las apariciones de la palabra clave deseada.
¿Qué puede hacer? Explore cualquier conversación LLM serializada. Si utilizó mensajes rastreados, también mostraremos todos los metadatos relevantes (modelo, plantillas, versiones de plantillas, etc.).
¿Cómo guardar/registrar automáticamente mis conversaciones de LLM? Consulte los documentos de PromptingTools.jl.
O generar algunos ejemplos de juguetes.
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)
Deberías ver algunos archivos creados en la carpeta log/
¡Intenta abrirlos con Spehulak!
¿Cómo guardar mis resultados de RAG?
Guardar RAGResult
para futuros análisis es tan simple como JSON3.write(path, result)
Ejemplo completo:
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)
¡Ahora puedes inspeccionar sus detalles con Spehulak!
¿Qué es Spehulak?
"Špehulak" (pronunciado "shpeh-hoo-lahk") combina "espía" y "muñeco de nieve", basándose en las palabras checas "špeh" para espía y "sněhulák" para muñeco de nieve. Es un nombre divertido para una plataforma de observabilidad porque se trata de mantener un ojo atento, como un espía, mientras que la parte del muñeco de nieve juega a ser tranquilo bajo presión mientras examinas montones de datos, además de ser invisible/en segundo plano, no estar en el fondo. forma. ¡Es perfecto para profundizar en el funcionamiento interno de sus aplicaciones LLM!
MultiCandidateChunks
) ¡Este proyecto no sería posible sin el increíble Stipple.jl de la familia Genie.jl!