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

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.

Что в сильной инструкции? Личность, длина, запрет и форма ответа. Четыре пункта не должны противоречить друг другу.

Автор: Nibras Code