Programlama

JavaScript: AI agent ve function calling

AI fonksiyonu kendisi çalıştırmaz. functionCall der, sen çalıştırıp functionResponse döndürürsün.

Tüm dersler · JavaScript dersleri: sıfırdan öğren

Sohbet ve agent

Sohbet yalnız metin yazar. Veritabanını ve senin fonksiyonunu çalıştıramaz. Agent harekete geçer, ama fonksiyonu kendisi çağırmaz. tools listesinde ad, description ve parametreler durur. AI soruyu okuyup functionCall döndürür: ad ve args. Sen o fonksiyonu çalıştırıp sonucu functionResponse ile geri gönderirsin. AI son cümleyi ondan yazar. description boşsa yanlış fonksiyon seçilir. Tip büyük harftir: STRING, NUMBER, OBJECT.

functionCall ve geri dönüş

İlk sorgu araçlarla gider. parts[0].functionCall varsa metin yok, emir var. Fonksiyonu sen çalıştırırsın. İkinci sorguda üç parça durur: soru, modelin functionCall'u ve functionResponse. Sonucu yalnız console.log edip geri göndermezsen kullanıcı düzgün cümle görmez. Selam gibi soruda functionCall olmaz, doğrudan text gelir.

const apiKey = process.env.GEMINI_API_KEY;
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${apiKey}`;

function havaMelumatiniVer(seher) {
  if (seher === "Baku") return "Bakıda 24 dərəcə, günəşlidir.";
  return "Bu şəhər üçün məlumat yoxdur.";
}

const aletler = [{
  functionDeclarations: [{
    name: "havaMelumatiniVer",
    description: "Verilmiş şəhər üçün hava mətnini qaytarır.",
    parameters: {
      type: "OBJECT",
      properties: { seher: { type: "STRING", description: "Şəhər, məsələn Baku" } },
      required: ["seher"]
    }
  }]
}];

async function agentSorgusuGonder(istifadeciSuali) {
  const ilkBody = {
    contents: [{ role: "user", parts: [{ text: istifadeciSuali }] }],
    tools: aletler
  };
  const cavab = await fetch(url, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(ilkBody)
  });
  const melumat = await cavab.json();
  const hisse = melumat.candidates[0].content.parts[0];
  if (!hisse.functionCall) {
    console.log(hisse.text);
    return;
  }
  const ad = hisse.functionCall.name;
  const netice = havaMelumatiniVer(hisse.functionCall.args.seher);
  const ikinciBody = {
    contents: [
      { role: "user", parts: [{ text: istifadeciSuali }] },
      { role: "model", parts: [{ functionCall: hisse.functionCall }] },
      { role: "user", parts: [{ functionResponse: { name: ad, response: { netice } } }] }
    ],
    tools: aletler
  };
  const cavab2 = await fetch(url, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(ikinciBody)
  });
  const melumat2 = await cavab2.json();
  console.log(melumat2.candidates[0].content.parts[0].text);
}

Sorular

AI fonksiyonu kendisi çalıştırır mı? Hayır. Yalnız adını ve parametresini söyler. Çalıştıran senin kodundur.

description neden önemlidir? AI fonksiyonu ne zaman seçeceğini bu metinden bilir. Boş veya bulanıksa yanlışını çağırır.

STRING küçük harfle yazılırsa? Gemini hata verir. Tip OBJECT, STRING ve NUMBER büyük harftedir.

Sonuç neden kullanıcıya ulaşmıyor? functionResponse ikinci sorguda yok. console.log yetmez.

Yazar: Nibras Code