JavaScript: systemInstruction, скрытое правило
Скажи ИИ, кто он и от чего отказывается, через systemInstruction.
Все уроки · Уроки JavaScript: учимся с нуля
Скрытое правило
System prompt — правило, которое пользователь не видит. Его пишет программист. contents — это вопрос пользователя. Правило говорит ИИ, кто он, какой длины ответ и от какой темы отказаться.
const sorguMelumati = {
systemInstruction: {
parts: [{ text: "Sən Nibras Code müəllimisən. Yalnız qısa cümlə ilə cavab ver." }]
},
contents: [
{ parts: [{ text: "JavaScript nədir?" }] }
]
};Меняется роль, не код
В той же функции меняется только текст systemInstruction. Учитель отказывает на посторонний вопрос. Учитель арабского пишет слово с огласовками и одно предложение, без лишнего объяснения. Ключ берётся из process.env.
const apiKey = process.env.GEMINI_API_KEY;
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=${apiKey}`;
async function muellimBot(istifadeciSuali) {
const sorguMelumati = {
systemInstruction: {
parts: [{
text: "Sən JavaScript müəllimisən. Yalnız proqramlaşdırma sualına cavab ver. Başqa mövzuda belə yaz: Üzr istəyirəm, mən yalnız proqramlaşdırma üzrə kömək edə bilərəm."
}]
},
contents: [{ parts: [{ text: istifadeciSuali }] }]
};
const cavab = await fetch(url, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(sorguMelumati)
});
const melumat = await cavab.json();
console.log(melumat.candidates[0].content.parts[0].text);
}Вопросы
Как пишется имя? systemInstruction. systeminstruction и system_instruction неправильно. I большая.
Почему правило ломается? Инструкция противоречит себе. Не проси длинное объяснение и одно предложение сразу. Пиши коротко и ясно.
Можно ли писать правило внутрь contents? Работает, но в длинном разговоре забывается. Правило живёт в systemInstruction.
Что в сильной инструкции? Личность, длина, запрет и форма ответа. Четыре пункта не должны противоречить друг другу.