Proqramlaşdırma

JavaScript: AI-dan JSON cavab almaq

responseMimeType ilə təmiz JSON istə və JSON.parse ilə obyektə çevir.

Bütün dərslər · JavaScript dərsləri: sıfırdan öyrən

Mətn yox, JSON

Çat üçün mətn kifayətdir. Test, lüğət və mağazada sualı, variantı və düzgün cavabı ayrı-ayrı götürmək lazımdır. Uzun cümlədən bunu çıxarmaq çətindir. generationConfig içində responseMimeType: "application/json" AI-nı təmiz JSON-a məcbur edir. "Salam, buyurun" yazmır. generationConfig contents-in içində deyil, onunla eyni səviyyədə durur.

const sorguMelumati = {
  contents: [{ parts: [{ text: "2 rəng adı və kodu ver." }] }],
  generationConfig: { responseMimeType: "application/json" }
};

JSON.parse və test

Gələn hissə hələ mətndir, obyekt deyil. JSON.stringify obyekti göndərmək üçün mətnə çevirir. JSON.parse mətni massivə çevirir. Açar adlarını sualda dəqiq yaz: sual, variantlar, duzgunCavab. Yazmasan AI hər dəfə başqa ad uydurur. Sonra testler[0].sual və testler[0].duzgunCavab oxunur.

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);
}

Suallar

sual niyə undefined olur? JSON.parse yazılmayıb. jsonMetni hələ mətndir, massiv deyil.

Açar niyə hər dəfə dəyişir? Sualda adlar yoxdur. sual, variantlar və duzgunCavab sözlərini təlimata yaz.

generationConfig hara düşür? contents-in yanına, içinə yox. responseMimeType dəyəri application/json-dur.

stringify və parse fərqi nədir? stringify göndərir. parse gələn mətni obyekt edir.

Müəllif: Nibras Code