t27.aiEnglish

Пример сильнее прилагательного

Вы узнаете

Почему один пример с нужным результатом задаёт правило точнее прилагательного и зачем добавлять второй пример.

Прилагательное вроде больше или короче подходит ко многим правилам, поэтому агент выбирает одно из них, и не всегда твоё. Пример входа с нужным выходом подходит к гораздо меньшему числу правил. В prompt_example.t27 ты имеешь в виду правило прибавить 3, а примеры такие: из 1 получить 4, из 2 получить 5 и из 5 получить 8. Начальный пример подходит двум правилам, прибавить 3 и умножить на 3 и прибавить 1, поэтому выбрать между ними он не может. Второй пример, из 2 получить 5, отсекает другое правило, потому что оно дало бы 7. В уроке подкладывается одна ошибка: замени шаг с 3 на 2, и примеры не проходят.

Попробуйте

Открой таблицу и найди строку, где правило B перестаёт совпадать; затем в спецификации замени A_STEP на 2 и сосчитай упавшие тесты.

Открыть интерактивный урок →

Vibecoding: an example beats an adjective ↗

One example input and output fits two rules; a second example drops one. Why an agent follows an example better than the word bigger. Vibecoding from zero, Prompting.

specs/vibecoding/prompt_example.t27

// SPDX-License-Identifier: Apache-2.0
; Vibecoding, module Prompting, lesson 2: an example beats an adjective.
; "Make it bigger" fits a hundred rules. An example input and the output you want fits few.
; Here the wanted rule is "add 3". One example fits two rules; a second example drops one of them.

module vibecoding_prompt_example;

; The examples you give the agent: inputs and the outputs you want back.
pub const EX_IN : [3]u8 = [1, 2, 5];
pub const EX_OUT : [3]u8 = [4, 5, 8];

; Rule A is the one you meant: add 3. Rule B is another rule an agent could read from one example.
pub const A_STEP : u8 = 3;
pub const B_MUL : u8 = 3;
pub const B_ADD : u8 = 1;

pub fn rule_a(x: u8) -> u8 {
    return x + A_STEP;
}

pub fn rule_b(x: u8) -> u8 {
    return x * B_MUL + B_ADD;
}

; How many examples a rule must match before it is the rule you meant.
pub const EXAMPLES_GIVEN : u8 = 3;

test the_first_example_fits_both_rules {
    assert EX_OUT[0] == EX_IN[0] + A_STEP;
    assert EX_OUT[0] == EX_IN[0] * B_MUL + B_ADD;
}

test the_second_example_rules_out_b {
    assert EX_OUT[1] == EX_IN[1] + A_STEP;
    assert EX_OUT[1] != EX_IN[1] * B_MUL + B_ADD;
}

test every_example_fits_rule_a {
    assert EX_OUT[0] == EX_IN[0] + A_STEP;
    assert EX_OUT[1] == EX_IN[1] + A_STEP;
    assert EX_OUT[2] == EX_IN[2] + A_STEP;
}

test the_last_example_is_read {
    assert EX_IN[EXAMPLES_GIVEN - 1] == 5;
    assert EX_OUT[EXAMPLES_GIVEN - 1] == 8;
}

Открыть спеку урока в плеере ↗

Все уроки