Sobes.tech
Middle

Comment faire en sorte que le LLM renvoie un JSON strict et valide la réponse?

sobes.tech IA

Réponse de l'IA

Чтобы заставить 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.