คำเตือน
แพ็คเกจนี้เป็นการทดลองและอยู่ในช่วงเริ่มต้นของการพัฒนา ระวังหากใช้ในการผลิต
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 Viewer คุณสามารถเปลี่ยนระหว่างรายการเหล่านี้ได้โดยคลิกที่ไอคอนทางด้านซ้ายมือ
หน้าต่างเลือกการสนทนาจะแสดงการสนทนาที่โหลดทั้งหมดเรียงซ้อนกันในแนวตั้ง เพื่อให้คุณสามารถเรียกดูร่องรอยและสังเกตเห็นพฤติกรรมแปลกๆ ได้อย่างรวดเร็ว
RAG Viewer จะแสดงเพียง RAGResult
เดียวเสมอ แต่จะแสดงพร้อมกับรายละเอียดจำนวนมาก (เช่น การสนทนาของผู้ใช้, LLM chains ภายใต้ประทุน, แหล่งที่มา, บริบท, การจัดอันดับ/การฝังผู้สมัคร ฯลฯ)
เพื่อช่วยคุณในการนำทาง คุณสามารถใช้ลูกศรที่มุมขวาบน: '<' ไปที่ก่อนหน้า '>' ไปที่ถัดไป และไอคอนลูกเต๋าสำหรับการเลือกแบบสุ่ม คุณสามารถใช้เครื่องมือการนำทางเหล่านี้สำหรับทั้ง Conversation Browser และ RAG Viewer
ในกรณีของเบราว์เซอร์การสนทนา คุณยังสามารถกรองคำหลักที่ต้องการได้ (โดยจะ 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") ผสมผสานระหว่าง "spy" และ "snowman" โดยมาจากคำภาษาเช็ก "špeh" ที่แปลว่าสายลับ และ "sněhulák" ที่แปลว่าตุ๊กตาหิมะ เป็นชื่อที่สนุกสำหรับแพลตฟอร์มการสังเกต เนื่องจากมันเป็นเรื่องของการจับตามองเหมือนสายลับ ในขณะที่ส่วนของมนุษย์หิมะเล่นได้อย่างเยือกเย็นภายใต้แรงกดดันในขณะที่คุณกรองข้อมูลกองโต บวกกับการมองไม่เห็น/ในเบื้องหลัง ไม่ใช่อยู่ใน ทาง. เหมาะอย่างยิ่งสำหรับการดำน้ำลึกเข้าไปในผลงานภายในของแอป LLM ของคุณ!
MultiCandidateChunks
) โครงการนี้จะเป็นไปไม่ได้หากไม่มี Stipple.jl ที่น่าทึ่งจากตระกูล Genie.jl!