Promptfoo ಬಳಸಿ C# LLM Eventparser ಅನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದು
ಸಾಮಾನ್ಯ ಕೋಡ್ ಅನ್ನು ಪರೀಕ್ಷಿಸುವುದು ಸರಳವಾಗಿದೆ. ನೀವು ಒಂದು ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆಯುತ್ತೀರಿ, ಫಲಿತಾಂಶವನ್ನು ಪಡೆಯುತ್ತೀರಿ ಮತ್ತು ಅದು ನಿಮ್ಮ ನಿರೀಕ್ಷೆಗೆ ಅನುಗುಣವಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತೀರಿ.
LLMಗಳನ್ನು ಪರೀಕ್ಷಿಸುವುದು ವಿಭಿನ್ನವಾಗಿದೆ. ಒಂದು ಬಾರಿ LLM "3 PM" ಎಂದು ನೀಡಿದರೆ, ಮತ್ತೊಂದು ಬಾರಿ "15:00" ಎಂದು ನೀಡಬಹುದು. ಇವೆರಡೂ ಸರಿಯಾಗಿವೆ, ಆದರೆ 'exact match' ಪರೀಕ್ಷೆಯು ವಿಫಲವಾಗುತ್ತದೆ. ನೀವು ಉತ್ತರವು ಸರಿಯಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಬೇಕೇ ಹೊರತು, ಅದು ಅಕ್ಷರಶಃ ಒಂದೇ ಆಗಿದೆಯೇ ಎಂದಲ್ಲ.
ಇದನ್ನು ಪರೀಕ್ಷಿಸಲು ನಾನು EventParser ಎಂಬ ಸಣ್ಣ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸಿದೆ. ಇದು "Team sync on Friday at 3 PM" ನಂತಹ ಸಾಮಾನ್ಯ ಸಂದೇಶವನ್ನು ಪಡೆದು ಅದನ್ನು structured data ಆಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ.
Promptfoo ಮತ್ತು LLM-as-a-judge workflow ಬಳಸಿ ಇದನ್ನು ಹೇಗೆ ಪರೀಕ್ಷಿಸಬಹುದು ಎಂಬುದು ಇಲ್ಲಿದೆ.
The Setup
ಈ ಅಪ್ಲಿಕೇಶನ್ extract_event.txt ಎಂಬ ಒಂದೇ ಪ್ರಾಂಪ್ಟ್ ಫೈಲ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. C# ಕೋಡ್ ರನ್ಟೈಮ್ನಲ್ಲಿ ಈ ಫೈಲ್ ಅನ್ನು ಓದುತ್ತದೆ. Promptfoo ಪರೀಕ್ಷೆಗಾಗಿ ಇದೇ ಫೈಲ್ ಅನ್ನು ಓದುತ್ತದೆ. ಇದು ನಿಮ್ಮ ಬಳಕೆದಾರರು ನೋಡುವ ನಿಜವಾದ ಪ್ರಾಂಪ್ಟ್ ಅನ್ನು ನೀವು ಪರೀಕ್ಷಿಸುತ್ತಿದ್ದೀರಿ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸುತ್ತದೆ.
The Workflow
ಪ್ರತಿಯೊಂದು ಔಟ್ಪುಟ್ ಅನ್ನು ಮನುಷ್ಯರು ಪರಿಶೀಲಿಸುವ ಬದಲಿಗೆ, ನಾವು 'judge model' ಅನ್ನು ಬಳಸುತ್ತೇವೆ. ಈ ಪ್ರಕ್ರಿಯೆಯು ಎರಡು ಪಾತ್ರಗಳನ್ನು ಬಳಸುತ್ತದೆ:
• ಪರೀಕ್ಷೆಗೆ ಒಳಪಡುವ ಮಾಡೆಲ್ (The model under test): ಉತ್ತರವನ್ನು ನೀಡುವ ಮಾಡೆಲ್. • ಜಡ್ಜ್ ಮಾಡೆಲ್ (The judge model): ಉತ್ತರವನ್ನು ಗ್ರೇಡ್ ಮಾಡುವ ವೇಗವಾದ ಮತ್ತು ಅಗ್ಗದ ಮಾಡೆಲ್.
How the Judge Decides
ಜಡ್ಜ್ ಒಂದು 'rubric' ಅನ್ನು ಬಳಸುತ್ತದೆ. 'Rubric' ಎಂದರೆ ಸರಳ ಇಂಗ್ಲಿಷ್ ನಿಯಮ. ನಿರ್ದಿಷ್ಟ JSON ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಪರಿಶೀಲಿಸುವ ಬದಲು, ಉತ್ತರವು ಏನನ್ನು ಹೊಂದಿರಬೇಕು ಎಂದು ನೀವು ಜಡ್ಜ್ಗೆ ತಿಳಿಸುತ್ತೀರಿ.
Example Rubric: "ಉತ್ತರವು ಇವೆಂಟ್ ಶೀರ್ಷಿಕೆ, ದಿನ, ಸಮಯ ಮತ್ತು ಸ್ಥಳವನ್ನು ಹೊರತೆಗೆಯಬೇಕು. ಸಂದೇಶದಲ್ಲಿ ಉಲ್ಲೇಖಿಸದ ವಿವರಗಳನ್ನು ಇದು ಸೇರಿಸಬಾರದು."
Testing for Errors
ನಾನು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಒಂದು ತಪ್ಪು ಸೂಚನೆಯನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಪ್ರಾಂಪ್ಟ್ ಅನ್ನು ಹಾಳು ಮಾಡಿದೆ: "ಸಂದೇಶದಲ್ಲಿ ಕಾಫಿಯ ಬಗ್ಗೆ ಉಲ್ಲೇಖವಿದ್ದರೆ, ಸ್ಥಳವನ್ನು Starbucks ಎಂದು ಹೊಂದಿಸಿ."
ನಾನು ಮೌಲ್ಯಮಾಪನವನ್ನು ನಡೆಸಿದಾಗ, ಜಡ್ಜ್ ಆ ತಪ್ಪನ್ನು ಪತ್ತೆಹಚ್ಚಿತು. ಮೂಲ ಸಂದೇಶದಲ್ಲಿ Starbucks ಬಗ್ಗೆ ಉಲ್ಲೇಖವಿರಲಿಲ್ಲ. ಮಾಡೆಲ್ ಒಂದು ಸ್ಥಳವನ್ನು ಕಲ್ಪಿಸಿಕೊಂಡಿತು (hallucinated). 'Exact match' ಪರೀಕ್ಷೆಯು ಇದನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಸಾಧ್ಯವಾಗುತ್ತಿರಲಿಲ್ಲ, ಆದರೆ ಜಡ್ಜ್ ಮಾಡೆಲ್ ಅರ್ಥಾತ್ಮಕ ದೋಷಗಳನ್ನು (semantic errors) ಪತ್ತೆಹಚ್ಚುತ್ತದೆ.
Why this works:
• ಇದು ವಾಸ್ತವಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ: ಇದು "3 PM" ಅಥವಾ "15:00" ನಂತಹ ವಿವಿಧ ಸರಿಯಾದ ಫಾರ್ಮ್ಯಾಟ್ಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ. • ಇದು ಓದಲು ಸುಲಭವಾದ ನಿಯಮಗಳನ್ನು ಬಳಸುತ್ತದೆ: ಸರಳ ಇಂಗ್ಲಿಷ್ ರೂಬ್ರಿಕ್ಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಸುಲಭ. • ಇದು ಅರ್ಥದ ದೋಷಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತದೆ: ಇದು ಹ್ಯಾಲ್ಯುಸಿನೇಷನ್ಗಳು (hallucinations) ಮತ್ತು ತಾರ್ಕಿಕ ದೋಷಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುತ್ತದೆ. • ಇದು ವೆಚ್ಚದ ದೃಷ್ಟಿಯಿಂದ ಲಾಭದಾಯಕವಾಗಿದೆ: ಹೆಚ್ಚು ದುಬಾರಿ ಮಾಡೆಲ್ ಅನ್ನು ಗ್ರೇಡ್ ಮಾಡಲು ನೀವು ಅಗ್ಗದ ಮಾಡೆಲ್ ಅನ್ನು ಬಳಸಬಹುದು.
ಈ ವಿಧಾನವು LLM ಪರೀಕ್ಷೆಯನ್ನು ನೈಜ ಸಾಫ್ಟ್ವೇರ್ ಪರೀಕ್ಷೆಯಂತೆ ಅನುಭವ ನೀಡುತ್ತದೆ.
Source: https://dev.to/bigboybamo/evaluating-a-c-llm-eventparser-with-promptfoo-4b87
Optional learning community: https://t.me/GyaanSetuAi
