Sobes.tech
Middle

Cum să faci ca LLM să returneze un JSON strict și să valideze răspunsul?

sobes.tech AI

Răspuns de la 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.