Лого на 91. НЕГ „Проф. Константин Гълъбов“

Избираем модул · Урок 25

Структуриран изход

Как да получим от модела JSON, който програмата може да ползва — схема, валидиране и какво правим, когато отговорът не е валиден.

Проблемът с хубавия текст

„Разбира се! Ето извлечените данни: името е Иван Петров, а градът — Пловдив. Надявам се това да помогне!“ За човек — отличен отговор. За програма — безполезен: няма как надеждно да се извади името от него.

Структуриран изход

Отговор в предварително зададен машинен формат — обикновено JSON по схема, — който може да се прочете от код без разчитане на текст.

Свободен текстСтруктуриран изход
За кого еза човекза програма
Разчитанерегулярни изрази и надеждаjson.loads()
При промяна на формулировкатакодът се чупинищо не се променя
Подходящо заобяснения, чатизвличане, класификация, попълване на форми

Как се иска

Първо ниво: с думи в промпта

Най-простото — описвате формата и давате пример. Работи в повечето случаи, но моделът понякога добавя обяснение преди JSON-а или го загражда в блок за код.

Второ ниво: схема

Съвременните услуги приемат схема — описание на полетата и типовете им. Тогава изходът е гарантирано валиден JSON с точно тези полета. Това е правилният начин.

Трето ниво: валидиране

Дори при схема съдържанието може да е глупост: дата в бъдещето, цена −5, име от една буква. Схемата гарантира формата, не смисъла. Проверките за смисъл остават ваша работа.

Правила за добра схема

  • Малко полета с ясни имена — не се иска един и същ отговор по три начина.
  • Изброими стойности вместо свободен текст, когато е възможно: „положително | отрицателно | неутрално“.
  • Поле за увереност или за „не е ясно“ — за да има модел къде да признае незнание.
  • Числа като числа, не като текст.
  • Изрично поле за източник, ако отговорът стъпва на подаден документ.

Температурата

За структуриран изход температурата се сваля до 0. Не искаме творчество — искаме един и същ вход да дава един и същ изход.

Какво правим при неуспех

  1. Опитайте да разчетете отговора.
  2. Ако не е валиден — повторете заявката веднъж, с изрично напомняне за формата.
  3. Ако пак не стане — запишете случая в журнал и върнете на потребителя разбираемо съобщение.
  4. Никога не показвайте суровата грешка на потребителя и никога не приемайте непроверени данни в базата.

Отговорът е вход от чужд източник

Отнасяйте се към изхода на модела като към данни от потребител: може да е невалиден, може да е подвеждащ, може да съдържа текст, който вашата система не очаква. Валидирайте преди употреба — точно както при формуляр в уеб приложение.