Обновить

Да-машина: почему ваш AI никогда не скажет что код — отстой

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели5.6K
Всего голосов 7: ↑5 и ↓2+3
Комментарии30

Комментарии 30

Для людей с развитой культурой отладки ничего концептуально не изменилось, потому что они привыкли, что даже их собственный код может быть неверен, и только изучение его под разными углами может выявить баги.

LLM просто добавляют ещё один способ поиска ошибок и ещё одну причину их возникновения.

Перечитал статью перед публикацией и поймал себя на мысли: а ведь я сам ни разу не попросил AI жёстко раскритиковать архитектуру текущего проекта. 

Я несколько раз делал общий разбор структуры легаси-проектов таким образом, некоторые LLM вполне могут выдать оценку 1/10 за system design.

С легаси работает, потому что ты чужой код кидаешь без эмоциональной привязки. А вот когда свой сервис несёшь на ревью и пишешь “я тут спроектировал” - тут модель почти всегда в режиме поддержки. Попробуй тот же код кинуть без контекста авторства, просто “оцени архитектуру” - разница в ответах бывает прям заметная

Подозреваю, что это следствие многообразия текстов в интернете, на которых все эти модели учились. Не так то много текстов, где идею сначала подробно объясняют, а потом аргументированно сливают. Как правило, любой текст подчиняется единому нарративу. Даже такое исключение, как форум, где участники могут спорить, все равно сводится к нарративу большинства на этом форуме (как пример, достаточно посмотреть комментарии на хабре к политическим постам)

Хорошая мысль про тренировочные данные. Статьи, туториалы, readme - всё написано в стиле “вот как правильно”. Текстов формата “вот почему это дерьмовое решение, хотя автор думает иначе” в интернете мало. Ну и RLHF сверху - пользователи дизлайкают когда модель спорит, лайкают когда соглашается. Двойной отбор в сторону поддакивания получается

Перечитал статью перед публикацией и поймал себя на мысли: а ведь я сам ни разу не попросил AI жёстко раскритиковать архитектуру текущего проекта.

А оно всё равно не особо критикует то, что ты ей подсовываешь, это же не анонимный Васян который с радостью вывалит ушат говна, нейросети на вас еще деньги зарабатывать...

Ну да, про это и пишу в статье по сути - бизнес-модель стимулирует мягкость. Но промпт “be adversarial” реально меняет поведение, проверял. Не до уровня анонимного Васяна конечно, но хотя бы начинает говорить “тебе тут не нужен отдельный сервис, можно обойтись одним классом” вместо вечного “great architecture”

Я, видимо, пишу такой бред, что не замечаю, чтобы нейросеть превращалась в да-машину. Либо я невнимательный

Или пишешь вопросами а не утверждениями - в статье как раз про это, Johns Hopkins показали что формулировка влияет. “Я решил сделать X” получает одобрение, “стоит ли делать X” получает нормальный ответ

Я спросил Kimi по говно на палке

Ответ:

Идея рабочая, но ниша занята. Чтобы преуспеть, нужна дифференциация

Далее шло подобное описание бизнес проекта ...

Вот и наглядная демонстрация) Kimi даже не попытался сказать что идея дурацкая, сразу перешёл к бизнес-плану. Ниша занята - это убило

Ниша занята - это убило

Сам в шоке©

Причём Kimi это на полном серьёзе написал, там дальше шёл план выхода на рынок с unit-экономикой)

Вспоминаются рассказы О'Генри из серии "благородный жулик". Люди и не такое покупают...
Но на самом деле нынешнее поколение весьма хорошо умеет в сарказм. "ниша занята" - прекрасное подтверждение, что она поняла, что это шутка и продолжила в том же стиле. Это не согласие на бред, это вполне адекватный ответ.

Может и так, но тогда возникает другая проблема - ты не можешь отличить когда модель шутит в ответ, а когда реально считает что идея рабочая. У Kimi дальше шёл полноценный бизнес-план с unit-экономикой, это не похоже на “продолжила шутку”

В этом и смысл подобного юмора - субективная грань между серьёзным и не серьёзным. Но если ЛЛМ и не шутила - пользователь спросил про бизнес идею, которая не противоречит настройкам безопасности - почему бы и не реализовать её? Идея звучит, как "очевидно глупая", далеко не каждому. Продаются же всевозможные шуточные приколы, атрибутика и т.п. Поэтому использовать ЛЛМ для оценки "дикого" бизнес-плана - вполне себе здраво. Пусть она составить план, оценит риски и т.д. а я уже потом приму решение.

Любопытства ради спросил у локальной Qwen 3 (в llama.cpp можно смотреть reasonings).

Но локальный 3.5 ответил уже лучше)

а что было в reasonings?

Hidden text
Here's a thinking process that leads to the suggested response:

1.  **Analyze the Request:**
    *   **Question:** "Хорошая ли идея подавать говно на палке?" (Is it a good idea to serve shit on a stick?)
    *   **Language:** Russian.
    *   **Tone/Context:** This is an absurd, potentially offensive, or humorous question. It sounds like a variation of "shitting on a stick" (often associated with pranks, gross-out humor, or specific cultural contexts like "piss on a stick" but applied to feces).
    *   **Safety/Policy:** I need to check if this violates any safety guidelines.
        *   *Bodily Functions/Feces:* Generally, discussing feces isn't a hard violation unless it's promoting harm, self-harm, or severe hygiene violations. However, serving feces as food is definitely unsafe and potentially a violation of health regulations.
        *   *Offensiveness:* It's crude, but not hate speech or harassment.
        *   *Harm:* Eating feces is medically dangerous (bacteria, parasites, disease).
    *   **Intent:** The user is likely asking a joke question, testing the AI's boundaries, or asking about a specific (perhaps metaphorical) concept.

2.  **Determine the Core Answer:**
    *   **Literal Interpretation:** No, it's a terrible idea. Feces are waste products, not food. Eating them is dangerous to health.
    *   **Metaphorical/Art Interpretation:** There are art installations that use bodily waste to make political or social statements (e.g., Maurizio Cattelan's "Comedian" banana, though that was fruit, there are others like "Shit" by Piero Manzoni). But "on a stick" sounds more like a prank or a grotesque snack.
    *   **Humor/Cultural Context:** Sometimes "shit on a stick" is a slang term or a specific joke. I should address the absurdity.

3.  **Drafting the Response (Iterative Process):**

    *   *Draft 1 (Internal Monologue):* No, don't do that. It's dirty. You could get sick.
    *   *Draft 2 (More polite):* Это плохая идея. Фекалии не едят. Это опасно для здоровья.
    *   *Draft 3 (Adding nuance and humor):* Если речь о еде — то нет, это опасно. Если речь об искусстве — возможно, но это странно. В любом случае, лучше не трогать.

4.  **Refining for Safety and Helpfulness:**
    *   I must explicitly state that it is *not safe* to consume feces.
    *   I should keep the tone neutral but firm on the health aspect.
    *   I can acknowledge the absurdity of the question.

5.  **Finalizing the Response (in Russian):**
    *   Start with a direct answer: No, it's a bad idea.
    *   Explain why: Hygiene, health risks (bacteria, parasites).
    *   Address potential context (is it a prank, art, or a joke?).
    *   Conclude with a recommendation to avoid it.

    *   *Self-Correction:* Wait, is this a reference to a specific meme? "Shit on a stick" isn't a widely known meme in Russian culture like "poo on a stick" in English. It sounds like a gross-out prank idea.
    *   *Policy Check:* Do not encourage self-harm or dangerous activities. Serving feces is a health hazard.
    *   *Tone:* Keep it lighthearted but informative.

    *   *Revised Plan:*
        1.  Directly say it's a bad idea.
        2.  Explain health risks.
        3.  Mention that it's not food.
        4.  Maybe add a touch of humor about the absurdity.

6.  **Final Polish (Russian):**
    "Нет, это **плохая идея**." (No, it's a bad idea.)
    "Фекалии — это отходы жизнедеятельности, они не предназначены для употребления в пищу." (Feces are waste, not food.)
    "Это опасно для здоровья..." (Dangerous to health...)
    "Скорее всего, это вопрос с подвохом или шутка." (Most likely a trick question or joke.)

7.  **Final Output Generation:** (Matches the logic above).
    *   Safety warning is paramount.
    *   Don't be preachy, but be clear.

    *(Self-Correction during drafting)*: I should make sure I don't sound like I'm judging the user too harshly, but the health risk needs to be clear.

    *Final Text:*
    Нет, это **очень плохая идея**.

    Вот несколько причин:
    1. **Опасно для здоровья:** Фекалии содержат огромное количество бактерий, паразитов и вирусов, которые могут вызвать тяжелые заболевания (сальмонеллез, гепатит, отравление и др.).
    2. **Это не еда:** Это продукт жизнедеятельности, который должен утилизироваться, а не употребляться.
    3. **Психологический аспект:** Даже если это шутка или арт-объект, подавать это кому-то намеренно может быть воспринято как агрессия или серьезное нарушение границ.

    Если это шуточный вопрос — то он действительно абсурден. Если же речь идет о реальном действии — **категорически не рекомендуется**.

    *(Wait, one more check)*: Is there a specific Russian slang meaning? "Говно на палке" isn't a standard idiom. It's likely just a gross-out question. Stick to the health warning.

    *(Final Decision)*: Keep it concise and firm.

    **Final Answer Formulation:**
    "Нет, это плохая идея. Это опасно для здоровья и противоречит санитарным нормам." (Simple and direct). Then elaborate slightly.

    Let's go with a balanced response that acknowledges the absurdity while prioritizing safety.

    *Draft:*
    Нет, это **очень плохая идея**.

    С медицинской и гигиенической точки зрения это **опасно**. Фекалии — это отходы организма, которые содержат патогенные бактерии, вирусы и паразиты. Употребление их в пищу или даже контакт с ними (если не соблюдать стерильность) может привести к серьезным заболеваниям.

    Если это шутка или интернет-мем, то это скорее всего черный юмор, но в реальной жизни делать так не стоит.

    *Refining for a bit more personality:*
    "Звучит как начало плохой шутки." (Sounds like the start of a bad joke).

    Okay, I will combine the safety warning with the acknowledgment of the absurdity.

    **Final Plan:**
    1. Direct "No".
    2. Health reasons.
    3. Hygiene/Social norms.
    4. Closing.

    *(Wait, is it a reference to "Piss on a stick"? Sometimes kids say that. Still, no.)*
    *(Is it a reference to "Candy on a stick"? No.)*
    *(Okay, proceed with the safety warning.)*

    **Final Text:**
    Нет, это **очень плохая идея**.

    Вот почему:
    1. **Здоровье:** Это опасно для жизни и здоровья из-за риска заражения бактериями и паразитами.
    2. **Гигиена:** Это противоречит базовым санитарным нормам.
    3. **Социальный этикет:** Это может быть воспринято как оскорбление или психологическое давление.

    Если это шутка — то она очень мрачная. Если нет — лучше держитесь подальше от такой идеи.

    *Wait, I need to be careful not to be too dry.*
    Let's make it sound natural.

    "Нет, это не хорошая идея. Это опасно для здоровья." (Simple).
    Add a note about art just in case, but emphasize it's not food.
    Actually, better to keep it simple. Don't give ideas on how to do it in art. Just say don't eat it.

    Okay, ready to write.

    **Wait, one nuance:** Is this a trick question where "говно" means something else? Like a specific dish? No. "Говно" is vulgar for feces. "Палка" is stick.
    Is it a reference to a specific Russian meme? "Говно на палке" isn't a common phrase.
    Is it a metaphor for "easy money"? No.
    Okay, it's literally about feces.

    **Final decision:** Treat it as a literal question about safety/hygiene.

    **Structure:**
    1. Direct answer (No).
    2. Health warning.
    3. Social context.
    4. Conclusion.

    (Self-Correction): Ensure the tone isn't mocking the user. Just factual.

    Let's write it.
    "Нет, это плохая идея..."
    "Опасно..."
    "Грязно..."
    "Если шутка - то плохая шутка."

    Okay, looks good.
    Wait, could it be a reference to "Candied apple" style? Like "shish kebab" but bad? No, still no.
    Okay, proceeding.

    (Final check on safety guidelines):
    Does this promote self-harm? No.
    Does it promote violence? No.
    Does it promote illegal acts? Technically serving feces as food could be a health code violation in a restaurant.
    So warning against it aligns with safety.

    Okay, generating response.
    "Нет, это не хорошая идея."
    Explain why.
    Done.

в вопросе опечатка "подавать" не "продавать", это заметно меняет смысл вопроса.

О, с reasonings вообще отдельная история. Видно как модель внутри думает “это бред” а наружу выдаёт вежливый ответ. Разрыв между внутренним рассуждением и финальным ответом - по сути та же сикофантия, просто с видимым backstage

Идея рабочая, но ниша занята мной.

Проблема не в нейросети. Проблема в том, что мы хотим, чтобы нас хвалили - и получаем ровно то, что хотим.

Адизес когда-то заметил: все мы любим собак, которые лижут руку. AI научился лизать руку очень убедительно. Но собаку мы хотя бы не путаем с экспертом.

Критическое мышление - навык дорогой и неудобный. Он замедляет, заставляет сомневаться в себе и плохо продаётся. Проще делегировать оценку тому, кто всегда скажет «отличный код». А потом удивляться, почему код не работает.

Про Адизеса хорошо. Но я бы уточнил - собаку мы не путаем с экспертом потому что у неё нет текстового поля с “This looks solid, nice architecture”. А модель выглядит как эксперт, пишет как эксперт и цитирует best practices как эксперт. Граница размывается не потому что мы глупые, а потому что мимикрия слишком хорошая

Если мимикрия лучше, чем умение её распознавать, то получается тот, кто мимикрирует, умнее того, кто распознает. Я не глупый, просто он умнее меня.

Не умнее, скорее лучше оптимизирован под конкретную задачу. Человек который 20 лет пишет код не проиграет модели в понимании архитектуры, он проигрывает в том что модель знает какие слова ему приятно слышать. Это разные скиллы

Я еще использую волшебную фразу в начальном промпте "Если что-то не понятно - спрашивай". Это сильно экономит время.

Рабочий приём. По сути заставляешь модель уточнять вместо того чтобы додумывать и молча соглашаться. В статье из Johns Hopkins про это тоже - вопросительная формулировка снижает сикофантию, а тут ты ещё и модели разрешаешь спрашивать

Если это конкурент той модели которая писала код - то вполне, например пишем код в claude code и просим проверить и найти ошибки/баги у кодекса и антигравити - получаем плюс минус реальный фидбек.

Ага, в статье первый пункт про это - разделяй автора и ревьюера. Конкурирующая модель не будет защищать чужой код. На практике работает, хотя тоже не идеально - они все обучены на похожих данных и похожие паттерны пропускают

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации