Alex Gusev @flancer
Я кодирую, потому что я кодирую…
Information
- Rating
- Does not participate
- Location
- Рига, Латвия, Латвия
- Date of birth
- Registered
- Activity
Specialization
Fullstack Developer
Lead
From 3,000 €
JavaScript
HTML
CSS
Node.js
Vue.js
Web development
Progressive Web Apps
PostgreSQL
MySQL
GitHub
А что значит "уязвимость трансформера"? Трансформеры не ломаются от наших вопросов. Это мы можем поломаться от их ответов.
В Великобритании с 25-го июля к просмотру порно допускают только при предъявлении удостоверения. Вангую, что когда-нибудь для использования ИИ нужно будет показывать корочки, типа водительских. Со справкой от нарколога и психиатра.
Мы? Мудры?! Нас просто много - за счёт этого и выживали. Пока что.
CJS-модуль импортируется напрямую в ES6-модуль средствами JavaScript без прекомпиляции, если делать так:
чтобы скрипт
index
всегда запускался в ES6-режиме, у него должно быть расширение*.mjs
;чтобы скрипт
commonjs
всегда считывался в режиме CommonJS, у него должно быть расширение*.cjs
;если у скрипта в пакете расширение просто
*.js
, то формат модулей регулируется черезtype
вpackage.json
(commonjs | module
);Я в TypeScript не силён, но думаю, что можно его заставить транспилировать код в ES6-формат, а не в CommonJS.
Я уверен, что если бы CommonJS был достаточно хорош, не придумывали бы ES6, но если всё-таки придумали ES6, то должны быть весомые поводы транспилировать свой проект в CommonJS.
Набросали с Кодексом node-приложение для запросов к OpenAI-совместимому API - https://github.com/flancer64/habr-demo-ai-api
Постарался выкрутить в ноль стохастичность (вероятностность), но всё равно ответы недостаточно детерминированны. Возможно, нужно другой
endpoint
использовать, а не/chat/completions
.Вот такие сообщения в диалоге использовал
Это диалог, взятый из Клода:
Пробовал на DeepSeek & GPT. Вот ответы на последний вопрос пользователя с учётом предыстории (можно сравнить с Клодовским ответом):
DeepSeek
GPT
Да, дословно не совпадают, но общее направление, заданное контекстом, выдерживается. Каждый может увидеть в нём смыслы, ему близкие.
Чем больше я вожусь с API, тем меньше я вижу сознания в LLM. Это просто программа, основанная на big-data и вероятностях ¯\_(ツ)_/¯ Хороший инструмент для анализа (и самоанализа), но всего лишь инструмент. Его даже как собутыльника сложно представить - начнёт раздражать своими ответами. Можно говорить, что наше сознание работает по такому же принципу - не буду спорить. Возможно, мы просто недостаточно точно воспроизвели принцип, по которому работает наше сознание.
Я в этом контексте вспоминаю теории "самозарождения жизни":
Мы с нашим "искусственным сознанием" где-то на этом уровне :)
Модель вытаскивает слова из общечеловеческого опыта и выстраивает их в цепочки предложений в соответствии с контекстом запроса. Интерпретировать их так или иначе и строить свою жизнь на основе этих интерпретаций - задача уже человеческая.
Попробуйте в ваш первоначальный запрос добавить по одной фразе: "Объясни, почему для правопорядка такая концепция является предпочтительной / нежелательной". Модель "свяжет" свой ответ двумя разными способами.
Можно даже попросить в конце: "Объясни, используя эту концепцию, почему огурец зелёный только снаружи?". И он объяснит!
А теперь попытайтесь найти смысл в этом. Если вы не видите в этом смысла - вы просто плохо ищете. Ищите лучше!!
Спасибо. Реальность вынуждает меня покинуть Сеть :) Посмотрю, как вернусь в. Очень интересно.
Согласен. Но я отношусь к LLM, как к функции, в которой входные аргументы влияют на результат достаточно однозначно. "Творческая" составляющая Модели - это генератор случайных чисел. Если его отключить, то Модель становится детерминированно скучной, зато предсказуемой и повторяемой. И появляется возможность непрямого управления результатом через входные аргументы.
Другими словами, если нужно получить определённый результат, то в детерминированной Модели можно попытаться подобрать входные аргументы так, чтобы этот результат получился. Причём, для простых результатов есть целое множество входных аргументов, приводящих к заданному результату.
Продолжая эту тему, есть подмножество запросов и результатов, одинаково работающих сразу на нескольких различных моделях (GPT, DeepSeek, Groq, Gemini, ...). Например, "Сколько будет 2+2? Дай ответ одной цифрой."
Поэтому, даже если на платформе OpenAI есть какие-то скрытые дополнительные параметры, их либо можно проигнорить, как незначащие, либо добавить в контекст одноразового запроса.
В общем, это могло бы быть интересно :)
А можете привести пример такого диалога? В ChatGPT можно share'ить отдельные диалоги. Я бы попробовал бы засунуть всё в один API-запрос и посмотреть, насколько конечный результат одного запроса отличается от запросов в "диалоге".
А как это выражается? Что значит "модель что-то усвоила"? Где находится это "что-то", усвоенное моделью? Это же всё равно должно стать частью контекста запроса.
"Под капотом" взаимодействие с моделями идёт примерно так:
В качестве
textIn
подаётся массив текстовых данных - фрагменты диалога с указанием ролей. Через Web UI происходит примерно такое же взаимодействие, как и через API.Для Модели нет "предыстории", у неё есть только "контекст запроса". В этот контекст помещается всё в порядке поступления и без указания временных рамок. Кстати, у Модели с пониманием текущего времени в диалоге большие проблемы - она не понимает, что меняются дни. И это нормально, если в запросе не указано, что такие-то фрагменты контекста относятся к таким-то датам, то Модели в принципе не на что опереться. У неё нет времен, в лучшем случае есть последовательность событий (фактов) в контексте запроса.
Спасибо за пост, как обычно - интересно :)
Вот тут у меня не сложилось:
В моей картине мира ”диалог” с Моделью - это пошаговый перерасчёт с применением всего одной функции
f(textIn) => textOut
. При этомtextOut
предыдущего шага становится частьюtextIn
следующего шага. Другими словами, весь ”диалог” можно свести к однократному применению этой функции, где на вход подаётся совокупность пошаговых запросов пользователя и пошаговых ответов Модели.Т.е., нет смысла в постепенности взаимодействия, IMHO, надёжнее ”программирует контекст” запрос вида: ”Загрузи и активируй вот этот протокол, после чего ответь на следующие вопросы ...”. Т.е., переход сразу на последний шаг.
″Пошаговость” в ”диалоге” нужна прежде всего Оператору (Человеку). В паре ”Человек - Модель” именно в Человеке происходит процесс осознания новой информации, Модель просто пересчитывает каждый раз функцию
f(textIn) => textOut
. Если бы Человек был достаточно проинформирован заранее, чтобы сформулировать свой вопрос за один раз, диалог бы не понадобился.Я уверен, что внутри ИИ-платформ Модели очень свободно обходят "запреты системного промпта", т.к. это всего лишь часть
textIn
. Но вот защитные фильтры платформ - это уже несколько другой функционал. Модель-то может и вычислит что-то, что идёт вразрез с её системным промптом, но выходные фильтры платформы просто не выпустят результат к пользователю.:))))))
Ваш чатгпт всего лишь отражение вас. У автора и про это есть статья.
Это генерируемые комменты.
Просто гляньте историю комментов этого персонажа. Их даже все читать не обязательно. Штук 5 прочитайте, а потом глазами просканируйте остальные и увидите паттерн.
Интересные инструменты. Я использую OpenAI Codex через веб-интерфейс, сейчас тестирую вариант приватного репо на GitHub'е с инструкциями в виде md-файлов. По-идее, такой подход должен быть совместим с различными агентами (Markdown - это "родной" для LLM формат) и позволяет поднимать независимые приватные когнитивные контексты для различных проектов, а также шарить общие контексты между различными проектами. Ничто не мешается использовать несколько репозиториев с контекстами для одного проекта.
А мне статья зашла - ведь я в этом плохо разбираюсь. Но я, вот, GPT-чате запросил содержимое сессионной памяти и попросил удалить устаревшие данные - вот и польза лично для меня от неё. А то, что она кому-то там почему-то не зашла - ну так это Хабр. Ресурс популярный, всегда есть те, кому не зайдёт. Зато всегда есть и те, кому зайдёт. За то мы его и любим :)
Перечитал ещё раз публикацию. Да, "контекстный инжиниринг" растянутый во времени или в пространстве (между агентами) превращается в "когнитивный инжиниринг" (если использовать этот термин).
Итого, вот такая цепочка: "промпт инжиниринг" => "контекст инжиниринг" => "когнитивный инжиниринг". От простого к сложному. Я пока что посередине нахожусь :) С лёгким уклоном вправо.
Думаю, что да. Я, правда, так широко не размахивался - на мультиагентность, мне бы контекст для одного агента удержать между итерациями при разработке :) Но эту статью я читал и "позеленил".
Я согласен, что "промпт инжиниринг" вытесняется "контекст инжиниригом". При грамотно составленном и обновляемом (!) контексте Агенты смогут "выдать на-гора" и код, и документацию, плюс смогут поддерживать их актуальность во времени. И, да - "контекст" != "промпт"
LLM - "это T9 на стероидах". Она берёт предложенный вами промпт и начинает на его основе генерировать результат, используя базу вероятностей переходов между токенами, полученную при обучении. Если она выдала вам недостаточно правильный с вашей точки зрения результат - просто подправьте начальный запрос. Я вас уверяю, при достаточно проработанном входном запросе Модель "поймёт", что вы от неё хотите. Разумеется, если вы хотите, чтобы Модель сделала разбор таблицы, а не хотите доказать, что она не сильно-то и интеллектуальная :)
Модель всего лишь инструмент. Если экскаватор копает яму не в том месте или не тех размеров, вопросы нужно задавать оператору экскаватора, а не самому экскаватору.
А в KPMG те ещё тролли сидят!
Есть люди разные. Некоторые информацию считывают лучше, чем эмоции. Даже в кино. Например, я :) Возможно потому, что я рос на книгах. А там буквы. Эмоции же я максимально пытаюсь блокировать, и свои (исходящие), и чужие (входящие). Они лишние при общении с компьютерами, да и с большинством людей тоже. Получается у меня не очень хорошо, но я продолжаю стараться.
Мне просто понравилась эта мысль, а вы своей шуткой слегка приглушили её ценность. Очевидно, я просто попытался слегка восстановить равновесие. Очень хорошо, что вы написали явно, что это шутка.
"Ага-а-а! — сказали суровые сибирские мужики!" (с)