Evaluating a C# LLM Eventparser with Promptfoo
Тестування звичайного коду — це просто. Ви викликаєте функцію, отримуєте результат і перевіряєте, чи відповідає він вашим очікуванням.
Тестування LLM — це інша справа. LLM може повернути "3 PM" в одному випадку та "15:00" в іншому. Обидва варіанти правильні, але тест на точне співпадіння не пройде. Вам потрібно перевіряти, чи є відповідь якісною, а не чи вона ідентична.
Я створив невеликий застосунок під назвою EventParser, щоб протестувати це. Він бере звичайне повідомлення, наприклад "Team sync on Friday at 3 PM", і перетворює його на структуровані дані.
Ось як ви можете протестувати його за допомогою Promptfoo та робочого процесу LLM-as-a-judge.
The Setup
Застосунок використовує один файл промпту: extract_event.txt. Код на C# зчитує цей файл під час виконання. Promptfoo зчитує той самий файл для тестування. Це гарантує, що ви тестуєте саме той промпт, який бачать ваші користувачі.
The Workflow
Замість того, щоб людина перевіряла кожен результат, ми використовуємо модель-суддю. У цьому процесі задіяні дві ролі:
• The model under test: модель, яка надає відповідь. • The judge model: швидша та дешевша модель, яка оцінює відповідь.
How the Judge Decides
Суддя використовує рубрику. Рубрика — це правило, написане простою англійською мовою. Замість того, щоб перевіряти конкретний JSON-рядок, ви вказуєте судді, що саме має містити відповідь.
Example Rubric: "The answer should extract the event title, day, time, and location. It must not add details not mentioned in the message."
Testing for Errors
Я навмисно зіпсував промпт, додавши неправильну інструкцію: "If the message mentions coffee, set the location to Starbucks."
Коли я запустив оцінювання, суддя виявив помилку. В оригінальному повідомленні не згадувався Starbucks. Модель галюцинувала локацію. Тест на точне співпадіння пропустив би це, але модель-суддя фіксує семантичні помилки.
Why this works:
• It matches reality: воно приймає різні правильні формати, як-от "3 PM" або "15:00". • It uses readable rules: рубрики простою англійською мовою легко розуміти. • It catches meaning bugs: воно знаходить галюцинації та логічні помилки. • It is cost effective: ви можете використовувати дешеву модель для оцінювання дорожчої.
Такий підхід робить тестування LLM схожим на справжнє тестування програмного забезпечення.
Source: https://dev.to/bigboybamo/evaluating-a-c-llm-eventparser-with-promptfoo-4b87
Optional learning community: https://t.me/GyaanSetuAi
