Middle
Wie lässt man das LLM ein strenges JSON zurückgeben und die Antwort validieren?
sobes.tech KI
Antwort von 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.