JavaScript: получить от ИИ ответ JSON
Попроси чистый JSON через responseMimeType и преврати его в объект через JSON.parse.
Все уроки · Уроки JavaScript: учимся с нуля
Не текст, а JSON
Для чата текста хватает. В тесте, словаре и магазине вопрос, варианты и верный ответ нужно брать по отдельности. Вытащить это из длинного предложения трудно. responseMimeType: "application/json" внутри generationConfig заставляет ИИ вернуть чистый JSON. Он не пишет «Здравствуйте, вот». generationConfig не внутри contents, а на одном уровне с ним.
const sorguMelumati = {
contents: [{ parts: [{ text: "2 rəng adı və kodu ver." }] }],
generationConfig: { responseMimeType: "application/json" }
};JSON.parse и тест
Пришедшая часть всё ещё текст, не объект. JSON.stringify превращает объект в текст, чтобы отправить. JSON.parse превращает текст в массив. Имена ключей напиши в вопросе точно: sual, variantlar, duzgunCavab. Иначе ИИ каждый раз выдумает другое имя. Потом читаются testler[0].sual и testler[0].duzgunCavab.
const apiKey = process.env.GEMINI_API_KEY;
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${apiKey}`;
async function testYarat(movzu) {
const telimat = `${movzu} mövzusunda 2 sual hazırla. Massiv qaytar. Hər obyektdə sual, variantlar və duzgunCavab olsun.`;
const cavab = await fetch(url, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
contents: [{ parts: [{ text: telimat }] }],
generationConfig: { responseMimeType: "application/json" }
})
});
const melumat = await cavab.json();
const jsonMetni = melumat.candidates[0].content.parts[0].text;
const testler = JSON.parse(jsonMetni);
console.log(testler[0].sual, testler[0].duzgunCavab);
}Вопросы
Почему sual равен undefined? JSON.parse не написан. jsonMetni всё ещё текст, не массив.
Почему ключ каждый раз другой? В вопросе нет имён. Напиши слова sual, variantlar и duzgunCavab в инструкцию.
Куда ставится generationConfig? Рядом с contents, не внутрь. Значение responseMimeType — application/json.
В чём разница stringify и parse? stringify отправляет. parse делает из пришедшего текста объект.