경고
이 패키지는 실험적이며 개발 초기 단계입니다. 프로덕션에서 사용하는 경우 주의하세요.
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은 PromptingTools.jl(예: JSON 파일)을 통해 저장된 직렬화된 LLM 대화 또는 RAG 결과를 로드할 수 있습니다.
두 가지 옵션이 있습니다:
예를 들어 이 저장소에 log/conversation...
파일을 로드합니다.
1) 대화 브라우저와 2) RAG 뷰어의 두 페이지가 있습니다. 왼쪽에 있는 아이콘을 클릭하여 변경할 수 있습니다.
대화 브라우저는 로드된 모든 대화를 수직으로 표시하므로 추적을 빠르게 탐색하고 이상한 동작을 확인할 수 있습니다.
RAG 뷰어는 항상 단일 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으로 세부 사항을 검사할 수 있습니다!
스페훌락은 무엇인가요?
"Špehulak"("shpeh-hoo-lahk"로 발음)는 "스파이"와 "눈사람"을 혼합하여 스파이를 뜻하는 체코어 "špeh"와 눈사람을 뜻하는 "sněhulák"을 결합한 것입니다. 관찰 가능성 플랫폼의 재미있는 이름은 스파이처럼 감시하는 눈을 유지하는 것에 관한 반면, 눈사람 부분은 많은 양의 데이터를 선별할 때 압력을 가할 때 시원함을 유지하고 눈에 보이지 않는/백그라운드에 있는 역할을 하기 때문입니다. 방법. LLM 앱의 내부 작동 방식을 자세히 알아보는 데 적합합니다!
MultiCandidateChunks
) 이 프로젝트는 Genie.jl 제품군의 놀라운 Stipple.jl이 없었다면 불가능했을 것입니다!