JavaScript: AI agent və function calling
AI funksiyanı özü işlətmir. functionCall deyir, sən işlədib functionResponse qaytarırsan.
Bütün dərslər · JavaScript dərsləri: sıfırdan öyrən
Çatbot və agent
Çatbot yalnız mətn yazır. Bazanı və sənin funksiyanı işlədə bilmir. Agent hərəkət edir, amma funksiyanı özü çağırmır. tools siyahısında ad, description və parametrlər durur. AI sualı oxuyub functionCall qaytarır: ad və args. Sən həmin funksiyanı işlədib nəticəni functionResponse ilə geri göndərirsən. AI son cümləni ondan yazır. description boşdursa, səhv funksiya seçilir. Tip böyük hərflədir: STRING, NUMBER, OBJECT.
functionCall və geri dönüş
Birinci sorğu alətlərlə gedir. parts[0].functionCall varsa, mətn yoxdur, əmr var. Funksiyanı sən işlədirsən. İkinci sorğuda üç hissə durur: sual, modelin functionCall-u və functionResponse. Nəticəni yalnız console.log edib geri göndərməsən, istifadəçi səliqəli cümlə görmür. Salam kimi sualda functionCall olmur, birbaşa text gəlir.
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);
}Suallar
AI funksiyanı özü işlədirmi? Xeyr. Yalnız adını və parametrini deyir. İşlədən sənin kodundur.
description niyə vacibdir? AI funksiyanı nə vaxt seçəcəyini bu mətndən bilir. Boş və ya dumanlı olsa, səhvini çağırır.
STRING kiçik hərflə yazılsa? Gemini xəta verir. Tip OBJECT, STRING və NUMBER böyük hərflədir.
Nəticə niyə istifadəçiyə çatmır? functionResponse ikinci sorğuda yoxdur. console.log kifayət etmir.