Проблемът с хубавия текст
„Разбира се! Ето извлечените данни: името е Иван Петров, а градът — Пловдив. Надявам се това да помогне!“ За човек — отличен отговор. За програма — безполезен: няма как надеждно да се извади името от него.
Структуриран изход
Отговор в предварително зададен машинен формат — обикновено JSON по схема, — който може да се прочете от код без разчитане на текст.
| Свободен текст | Структуриран изход | |
|---|---|---|
| За кого е | за човек | за програма |
| Разчитане | регулярни изрази и надежда | json.loads() |
| При промяна на формулировката | кодът се чупи | нищо не се променя |
| Подходящо за | обяснения, чат | извличане, класификация, попълване на форми |
Как се иска
Първо ниво: с думи в промпта
Най-простото — описвате формата и давате пример. Работи в повечето случаи, но моделът понякога добавя обяснение преди JSON-а или го загражда в блок за код.
Второ ниво: схема
Съвременните услуги приемат схема — описание на полетата и типовете им. Тогава изходът е гарантирано валиден JSON с точно тези полета. Това е правилният начин.
Трето ниво: валидиране
Дори при схема съдържанието може да е глупост: дата в бъдещето, цена −5, име от една буква. Схемата гарантира формата, не смисъла. Проверките за смисъл остават ваша работа.
Правила за добра схема
- Малко полета с ясни имена — не се иска един и същ отговор по три начина.
- Изброими стойности вместо свободен текст, когато е възможно: „положително | отрицателно | неутрално“.
- Поле за увереност или за „не е ясно“ — за да има модел къде да признае незнание.
- Числа като числа, не като текст.
- Изрично поле за източник, ако отговорът стъпва на подаден документ.
Температурата
За структуриран изход температурата се сваля до 0. Не искаме творчество — искаме един и същ вход да дава един и същ изход.
Какво правим при неуспех
- Опитайте да разчетете отговора.
- Ако не е валиден — повторете заявката веднъж, с изрично напомняне за формата.
- Ако пак не стане — запишете случая в журнал и върнете на потребителя разбираемо съобщение.
- Никога не показвайте суровата грешка на потребителя и никога не приемайте непроверени данни в базата.
Отговорът е вход от чужд източник
Отнасяйте се към изхода на модела като към данни от потребител: може да е невалиден, може да е подвеждащ, може да съдържа текст, който вашата система не очаква. Валидирайте преди употреба — точно както при формуляр в уеб приложение.