Promptfoo ਨਾਲ ਇੱਕ C# LLM Eventparser ਦਾ ਮੁਲਾਂਕਣ ਕਰਨਾ

ਆਮ ਕੋਡ ਦੀ ਟੈਸਟਿੰਗ ਕਰਨਾ ਸੌਖਾ ਹੈ। ਤੁਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਦੇ ਹੋ, ਨਤੀਜਾ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹੋ, ਅਤੇ ਚੈੱਕ ਕਰਦੇ ਹੋ ਕਿ ਕੀ ਇਹ ਤੁਹਾਡੀ ਉਮੀਦ ਦੇ ਅਨੁਸਾਰ ਹੈ।

LLMs ਦੀ ਟੈਸਟਿੰਗ ਵੱਖਰੀ ਹੁੰਦੀ ਹੈ। ਇੱਕ 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 ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ। ਇਸ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਦੋ ਭੂਮਿਕਾਵਾਂ ਹੁੰਦੀਆਂ ਹਨ:

• ਟੈਸਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਮਾਡਲ: ਉਹ ਮਾਡਲ ਜੋ ਜਵਾਬ ਦੇ ਰਿਹਾ ਹੈ। • ਜੱਜ ਮਾਡਲ: ਇੱਕ ਤੇਜ਼ ਅਤੇ ਸਸਤਾ ਮਾਡਲ ਜੋ ਜਵਾਬ ਨੂੰ ਗ੍ਰੇਡ ਕਰਦਾ ਹੈ।

How the Judge Decides

ਜੱਜ ਇੱਕ rubric ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। Rubric ਇੱਕ ਸਧਾਰਨ ਅੰਗਰੇਜ਼ੀ ਨਿਯਮ ਹੈ। ਇੱਕ ਖਾਸ JSON ਸਟ੍ਰਿੰਗ ਦੀ ਜਾਂਚ ਕਰਨ ਦੀ ਬਜਾਏ, ਤੁਸੀਂ ਜੱਜ ਨੂੰ ਦੱਸਦੇ ਹੋ ਕਿ ਜਵਾਬ ਵਿੱਚ ਕੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।

Example Rubric: "ਜਵਾਬ ਵਿੱਚ event title, ਦਿਨ, ਸਮਾਂ ਅਤੇ ਲੋਕੇਸ਼ਨ ਕੱਢਣੀ ਚਾਹੀਦੀ ਹੈ। ਇਸ ਵਿੱਚ ਉਹ ਵੇਰਵੇ ਨਹੀਂ ਜੋੜੇ ਜਾਣੇ ਚਾਹੀਦੇ ਹਨ ਜੋ ਸੁਨੇਹੇ ਵਿੱਚ ਨਹੀਂ ਦੱਸੇ ਗਏ ਹਨ।"

Testing for Errors

ਮੈਂ ਜਾਣਬੁੱਝ ਕੇ ਇੱਕ ਗਲਤ ਹਦਾਇਤ ਜੋੜ ਕੇ ਪ੍ਰੋਂਪਟ ਨੂੰ ਖਰਾਬ ਕਰ ਦਿੱਤਾ: "ਜੇਕਰ ਸੁਨੇਹਾ coffee ਦਾ ਜ਼ਿਕਰ ਕਰਦਾ ਹੈ, ਤਾਂ ਲੋਕੇਸ਼ਨ ਨੂੰ Starbucks 'ਤੇ ਸੈੱਟ ਕਰੋ।"

ਜਦੋਂ ਮੈਂ ਮੁਲਾਂਕਣ (evaluation) ਚਲਾਇਆ, ਤਾਂ ਜੱਜ ਨੇ ਗਲਤੀ ਫੜ ਲਈ। ਅਸਲ ਸੁਨੇਹੇ ਵਿੱਚ Starbucks ਦਾ ਜ਼ਿਕਰ ਨਹੀਂ ਸੀ। ਮਾਡਲ ਨੇ ਇੱਕ ਲੋਕੇਸ਼ਨ ਦੀ ਕਲਪਨਾ (hallucinated) ਕਰ ਲਈ ਸੀ। ਇੱਕ 'exact match' ਟੈਸਟ ਇਸਨੂੰ ਮਿਸ ਕਰ ਦਿੰਦਾ, ਪਰ ਇੱਕ ਜੱਜ ਮਾਡਲ semantic ਗਲਤੀਆਂ ਨੂੰ ਫੜ ਲੈਂਦਾ ਹੈ।

Why this works:

• ਇਹ ਹਕੀਕਤ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ: ਇਹ "3 PM" ਜਾਂ "15:00" ਵਰਗੇ ਵੱਖ-ਵੱਖ ਸਹੀ ਫਾਰਮੈਟਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ। • ਇਹ ਪੜ੍ਹਨਯੋਗ ਨਿਯਮਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ: ਸਧਾਰਨ ਅੰਗਰੇਜ਼ੀ rubrics ਨੂੰ ਸਮਝਣਾ ਆਸਾਨ ਹੈ। • ਇਹ meaning bugs ਨੂੰ ਫੜਦਾ ਹੈ: ਇਹ hallucinations ਅਤੇ ਲੌਜਿਕ ਗਲਤੀਆਂ ਨੂੰ ਲੱਭ ਲੈਂਦਾ ਹੈ। • ਇਹ ਲਾਗਤ-ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਹੈ: ਤੁਸੀਂ ਇੱਕ ਮਹਿੰਗੇ ਮਾਡਲ ਨੂੰ ਗ੍ਰੇਡ ਕਰਨ ਲਈ ਇੱਕ ਸਸਤੇ ਮਾਡਲ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ।

ਇਹ ਪਹੁੰਚ LLM ਟੈਸਟਿੰਗ ਨੂੰ ਅਸਲੀ ਸਾਫਟਵੇਅਰ ਟੈਸਟਿੰਗ ਵਾਂਗ ਬਣਾਉਂਦੀ ਹੈ।

Source: https://dev.to/bigboybamo/evaluating-a-c-llm-eventparser-with-promptfoo-4b87

Optional learning community: https://t.me/GyaanSetuAi