Sobes.tech
Middle
22

Как заставить LLM возвращать строгий JSON и валидировать ответ?

Компании, где спрашивали
Автомакон

Ответ от нейросети

sobes.tech AI

Чтобы заставить LLM (Large Language Model) возвращать строго валидный JSON, важно правильно сформулировать запрос (prompt) с чёткими инструкциями. Например, можно явно указать, что ответ должен быть в формате JSON, без лишнего текста, и даже привести пример желаемой структуры.

Пример подсказки:

Пожалуйста, верни ответ строго в формате JSON, без дополнительного текста. Вот пример структуры:
{
  "name": "",
  "age": 0,
  "email": ""
}

Для валидации ответа можно использовать парсеры JSON в вашем языке программирования. Если парсер выдаёт ошибку, значит ответ невалиден. Также можно использовать JSON Schema для проверки структуры и типов данных.

Пример на Python с валидацией через json и jsonschema:

import json
from jsonschema import validate, ValidationError

schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "age": {"type": "integer"},
        "email": {"type": "string", "format": "email"}
    },
    "required": ["name", "age", "email"]
}

response = '{"name": "Иван", "age": 30, "email": "ivan@example.com"}'

try:
    data = json.loads(response)
    validate(instance=data, schema=schema)
    print("Ответ валиден")
except (json.JSONDecodeError, ValidationError) as e:
    print(f"Ошибка валидации: {e}")

Таким образом, комбинация чётких инструкций в prompt и программной валидации позволяет добиться строгого JSON-ответа от LLM.