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 వర్క్ఫ్లోను ఉపయోగించి దీనిని ఎలా పరీక్షించవచ్చో ఇక్కడ చూడండి.
సెటప్
ఈ యాప్ extract_event.txt అనే ఒకే ఒక ప్రాంప్ట్ ఫైల్ను ఉపయోగిస్తుంది. C# కోడ్ రన్టైమ్లో ఈ ఫైల్ను చదువుతుంది. Promptfoo పరీక్ష కోసం అదే ఫైల్ను చదువుతుంది. దీనివల్ల మీ వినియోగదారులు చూసే అసలు ప్రాంప్ట్నే మీరు పరీక్షిస్తున్నారని నిర్ధారించుకోవచ్చు.
వర్క్ఫ్లో
ప్రతి అవుట్పుట్ను మనిషి తనిఖీ చేసే బదులు, మేము ఒక జడ్జ్ మోడల్ను (judge model) ఉపయోగిస్తాము. ఈ ప్రక్రియలో రెండు పాత్రలు ఉంటాయి:
• పరీక్షించబడుతున్న మోడల్ (The model under test): సమాధానాన్ని అందించే మోడల్. • జడ్జ్ మోడల్ (The judge model): సమాధానాన్ని గ్రేడ్ చేసే వేగవంతమైన మరియు తక్కువ ఖర్చుతో కూడిన మోడల్.
జడ్జ్ ఎలా నిర్ణయిస్తుంది
జడ్జ్ ఒక రూబ్రిక్ (rubric)ను ఉపయోగిస్తుంది. రూబ్రిక్ అంటే ఒక సాధారణ ఇంగ్లీష్ నియమం. ఒక నిర్దిష్ట JSON స్ట్రింగ్ కోసం వెతకడానికి బదులుగా, సమాధానంలో ఏముండాలి అనే విషయాన్ని మీరు జడ్జ్కు చెబుతారు.
ఉదాహరణ రూబ్రిక్: "సమాధానం ఈవెంట్ టైటిల్, రోజు, సమయం మరియు ప్రదేశాన్ని సంగ్రహించాలి. సందేశంలో పేర్కొనని వివరాలను ఇది జోడించకూడదు."
లోపాలను పరీక్షించడం
నేను కావాలనే ఒక తప్పుడు సూచనను జోడించి ప్రాంప్ట్ను పాడు చేశాను: "సందేశంలో కాఫీ గురించి ప్రస్తావించినట్లయితే, ప్రదేశాన్ని Starbucksగా సెట్ చేయండి."
నేను మూల్యాంకనాన్ని (evaluation) చేసినప్పుడు, జడ్జ్ ఆ తప్పును పట్టుకుంది. అసలు సందేశంలో Starbucks గురించి ఎక్కడా ప్రస్తావించలేదు. మోడల్ ఒక ప్రదేశాన్ని ఊహించి చెప్పింది (hallucinated). 'Exact match' పరీక్ష దీనిని గుర్తించలేదు, కానీ జడ్జ్ మోడల్ అర్థవంతమైన లోపాలను (semantic errors) గుర్తిస్తుంది.
ఇది ఎందుకు పనిచేస్తుంది:
• ఇది వాస్తవానికి అనుగుణంగా ఉంటుంది: ఇది "3 PM" లేదా "15:00" వంటి వివిధ సరైన ఫార్మాట్లను అంగీకరిస్తుంది. • ఇది చదవగలిగే నియమాలను ఉపయోగిస్తుంది: సాధారణ ఇంగ్లీష్ రూబ్రిక్లను అర్థం చేసుకోవడం సులభం. • ఇది అర్థం పరమైన లోపాలను (meaning bugs) గుర్తిస్తుంది: ఇది హాలూసినేషన్స్ (hallucinations) మరియు లాజిక్ లోపాలను కనుగొంటుంది. • ఇది తక్కువ ఖర్చుతో కూడుకున్నది: ఖరీదైన మోడల్ను గ్రేడ్ చేయడానికి మీరు తక్కువ ఖర్చుతో కూడిన మోడల్ను ఉపయోగించవచ్చు.
ఈ విధానం LLM పరీక్షను నిజమైన సాఫ్ట్వేర్ టెస్టింగ్లా అనిపిస్తుంది.
Source: https://dev.to/bigboybamo/evaluating-a-c-llm-eventparser-with-promptfoo-4b87
Optional learning community: https://t.me/GyaanSetuAi
