Программирование

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 делает из пришедшего текста объект.

Автор: Nibras Code