Искусство. Код... ИИ? – Telegram
Искусство. Код... ИИ?
271 subscribers
9 photos
1 video
1 file
37 links
Канал @vkochetkov о прекрасном (и не очень) вокруг кода, ИИ и безопасности приложений.

FAQ: https://news.1rj.ru/str/art_code_ai/7
Download Telegram
Поборовшись с проблемой выбора, вкупе с боязнью чистого листа канала, решил, что в первом посте отвечу на пару вопросов, которые мне конечно же никто не задавал, но мог бы, во-первых, и наверняка задаст в будущем, во-вторых. Не исключено также, что этот пост в дальнейшем будет обновляться.

Q: Почему личный канал, а не посты в POSIdev, организатором которого ты являешься?

A: Канал POSIdev (подписывайтесь кстати), в настоящее время — ресурс вполне конкретного сообщества, ассоциируемый с моей компанией-работодателем, и преследующий вполне конкретные цели, направленные на продвижение в массы культуры разработки качественного кода. Любой авторский пост там будет восприниматься, как выражение позиции, если не компании или сообщества, то как минимум — его организатора. И, должен заметить, что нынешний дефицит контента там, возможно, во многом связан именно с этим фактом.

Здесь же — я не ставлю перед собой задачу выражать чьи-либо позиции, кроме своей собственной, как и развивать ещё одно сообщество, что-то продвигать и т.п. Этот канал я рассматриваю, как площадку для шаринга каких-либо личных мыслей, идей и рассуждений вокруг своей профессиональной области, причем далеко не только про написание качественного кода. Но посты, во всех смыслах соответствующие формату POSIdev, и определённо интересные его аудитории, возможно буду размещать и там. По крайней мере, пока на том канале не начнет на регулярной основе появляться уникальный контент, и с учетом приведенных выше оговорок.

Q: Можно ли использовать материалы этого канала в сторонних ресурсах или проектах?

A: Коротко: да, без ограничений, с указанием авторства и адреса этого канала. Если нужно более формально: весь авторский код, если не указано иное, распространяется по лицензии MIT, весь прочий оригинальный контент, если не указано иное — по лицензии CC BY v4.0.

Как-то так 😍
Please open Telegram to view this post
VIEW IN TELEGRAM
3👌3👨‍💻21🆒1
MiniMax Agent, или — как проср... потратить $69 на чужие ошибки.

За последние пару дней провёл ~20 часов, исследуя возможности MiniMax Agent. Казалось бы, отличные результаты на мелких задачах: кодинг простых скриптиков, ресёрч технологий — бодро, чётко. А потом бесплатные кредиты закончились, а я решил сделать что-то посложнее 🤕

Первый фейл. Захотел парсинг видео с YouTube для написания статьи. По ссылке на видос — провал. Загруженное, в 720p — провал (слишком большой). В 320p — тоже провал (видимо, теперь слишком шакальный). Только когда подсунул текстовую транскрипцию видоса и PDF со слайдами оттуда, оно хоть что-то соизволило сгенерить. Итог: по 2–3 обрывочных предложения на слайд и куча скипнутой из доклада инфы. Ну и минус ~500 кредитов ещё.

Второй фейл. Попросил сгенерить копию сайта posidev.io с фронтом на TypeScript и бэком на Go. Минус ~1.5k. Результат: ничего не работает. TS-часть ещё можно было бы допилить вручную, но Go'шный бэк — это просто ад кромешный: ошибки типов, поломанные контракты, недостающие куски кода. И неспособность Minimax исправить это за несколько итераций. Руками — даже пытаться править не стал.

Третий фейл. Desktop headless-приложение: иконка в трее, меню, настройки, простая логика. Я честно попытался — выделил плюс-минус по 5k кредитов на каждую из трёх реализаций: Python, Go, C#.

🐍 Уже на стадии зависимостей всё развалилось: версии транзитивок оказались несовместимы. Агент, на какой-то из итераций правки этой проблемы, самовольно заменил библиотеки на совершенно другие, и выдал проект, в котором одна половина кодовой базы работает на старом наборе зависимостей, другая — на новом. Запустить не смог. Я — тоже.

🥰 Внезапно, в десктоп-приложении появился фронт на TypeScript. С системным треем в качестве бэка на будущее, видимо. Причем, это часть даже работала — в отличие от всего остального. Во фронт он, наверное, умеет лучше. С интерфейсами в Go агент явно не дружит, при попытках исправить ошибки компилятора генерил по пачке новых. Ничего не собралось, даже с моими подсказками и ручными правками.

😀 Ошибки в работе с async-методами, проблемы с интерфейсами (видимо эта боль у него тянется через все языки), в зависимостях — уязвимый System.Text.Json. Несколько итераций — и всё равно мимо, даже не собралось. А то, что он натворил с контрактами, вот реально — быстрее и проще было бы с нуля руками переписать.

💸 Итого: -17k кредитов.

Почему я столько раз про них упомянул? Потому что MiniMax продаёт эксперименты по цене продакшена. Будь его агент бесплатным, тон этого поста мог бы оказаться совсем другим. Но где-то на 4–5 улетевшей тысяче кредитов, уже даже такой тугоум как я, начал подозревать, что плачу своим баблом и временем не за результат, а за проданные ранее мне же чужие ошибки. Не жалуюсь, тут всё как в жизни, ок. Но подписку продлевать не стану. Оставшиеся кредиты потрачу на ресёрч без кода — тут MiniMax ещё кое-как справляется (но это не точно).

А для всего остального есть GPT с его Codex'ом, Cursor, DeepSeek и Manus.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4👨‍💻2
Forwarded from Positive Technologies
🍳 Хотите узнать, как устроена внутренняя кухня AppSec в Positive Technologies?

Попросили рассказать об этом подробнее наших коллег-экспертов Владимира Кочеткова, Георгия Александрию, Валерия Пушкаря и Дмитрия Рассадина.

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

Вы узнаете:

почему в нашем случае не всегда подходят практики DevSecOps;
готовы ли мы контрибьютить в AppSec;
как нашим экспертам удается успешно «поженить» задачи ИБ, разработки и интересы бизнеса;
приходилось ли им сталкиваться с серьезными проблемами безопасности, и что из этого вышло.

Обо всем этом и многом другом читайте на сайте нашего медиа.

P. S. Кстати, если вы ищете в статье лайфхаки, чтобы попасть в нашу AppSec-команду, вы их найдете.

#PositiveЭксперты #PositiveResearch
@Positive_Technologies
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥1
Каких разработчиков уже заменяет ИИ?

Самое страшное, на мой взгляд, что может произойти с разработчиком — это профессиональная стагнация. Когда он постепенно сужает зону своей ответственности и продуктивность до предела «лишь бы не уволили»: на троечку с плюсом, где только можно. И медленно перестаёт развиваться как профи.

А ИИ ли виноват в том, что им заменяют разработчиков? «На зеркало неча пенять...»

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

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

Которые всегда и везде ищут виноватых за пределами своего уютного болотца, а не внутри него.

Которые делают всё, чтобы не принимать решений:
«тут архитектор нужен»,
«пусть лид согласует»,
«не знаю, у меня все работает»,
«этого нет в требованиях, все вопросы к продакту»…

Зато багов меньше. Ну, меньше кода — меньше багов. Всё честно.

А ИИ тем временем тихо справляется со всей этой рутиной — безэмоционально, безропотно и, что особенно обидно, уже примерно на том же уровне качества, что и эти стагнирующие ребята. Только быстрее и дешевле. А иногда — даже без багов. (Но это не точно.)

И вижу здесь некоторую иронию в том, что они сами сделали себя заменяемыми, зажавшись в установке: «меньше ответственности = меньше риска». И теперь удивляются, почему на языке чувствуется привкус чужой пыли.

Из этого можно и нужно выбираться. Через непрерывное саморазвитие, пробу всего нового, любознательность, исследования, пет-проекты, инициативу, креативность, пробы и ошибки. Так же постепенно и без резких телодвижений, как и угораздило там оказаться.

Нет смысла гадать, заменит ли ИИ таких разработчиков. Пока они чиллят в своём уютном изолированном мирке, отрицая очередной, как им кажется, «зумерский хайп», это — лишь вопрос времени.

Им стоит задуматься о том, что деградация зайдёт настолько далеко, что их однажды не позовут даже ревьюить код, написанный ИИшными «руками».
10💯4👨‍💻2👌1
Как разработчику быстро вкатиться в тему LLM? Введение

Оказался в забавной ситуации, в которой круг моего общения с разработчиками четко поделился на два совершенно разных мира.

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

Другой мир, в свою очередь, делится ещё на две группы: тех, кто считает нынешнюю движуху вокруг ИИ проходящим и не заслуживающим внимания хайпом (про таких — уже писал в предыдущем посте), и ребят, которые возможно и хотели бы поиграться в интеграцию с LLM и всеми технологиями вокруг этой темы, но тупо не знают, с чего начать и за что хвататься. И, подумалось, что было бы неплохо сделать для них подборку материалов и примерный план вкатывания в эту область, чтобы давать ссылку всякий раз, когда в этом возникнет необходимость.

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

отрицание, гнев, торг...

1. промпт-инжиниринг,
2. взаимодействие с LLM через API,
3. Retrieval-Augmented Generation (RAG),
4. автономные ИИ-агенты,
5. мультиагентные системы и протоколы взаимодействия.

Один пост — одна часть, представляющая собой сборник первоочередных ссылок на туторы, доки, базовый инструментарий и библиотеки, с небольшими пояснениями там, где это требуется. Если кому есть, что дополнить на эту тему — велкам в комменты.

Погнали?

1. Промпт-инжиниринг
2. Взаимодействие с LLM через API
3. RAG (Retrieval Augmented Generation)
4. Автономные ИИ-агенты
5. Мультиагентные системы и протоколы взаимодействия
4🔥2
Как разработчику быстро вкатиться в тему LLM? Часть 1

Введение

1. Промпт-инжиниринг

Не устану повторять, что искусственный интеллект, пока ещё, силён настолько, насколько силен отдающий ему команды естественный. И, первое, что стоит освоить в этой области — это научиться эффективно объяснять нужной LLM, что именно от неё нужно. То есть, писать промпты под правильно выбранную под задачи модель. И то, и другое неплохо объясняет вот эта статья. Не лишним будет также ознакомиться и вот с этой шпаргалкой.

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

Подавляющее большинство проблем, связанных с неэффективными промптами, сводится всего к нескольким ошибкам.

а) Общение с LLM, как с живым человеком. Чем раньше придёт понимание, что там нет ничего живого, а от человеческого — только переработанные в векторное представление продукты информационной жизнедеятельности людей, тем быстрее пойдёт дело с промптингом.

б) Пренебрежение начальным контекстом. Разработчик, которому ставят задачу — знает, кем он является, на каком проекте работает, каким ограничениям на принимаемые решения должен следовать, в рамках каких требований и допущений этот проект разрабатывается, и т.п. А LLM — нет. Ей это всё нужно объяснить. Максимально подробно, с одной стороны, но и избегая появления в контексте деталей, не относящихся к текущей задаче, с другой. И да, между строк модели читать вполне умеют. И, при любом удобном случае, делают это там, где вообще не надо было.

в) Решение слишком комплексных задач в один присест. Из предыдущего пункта следует, что множество мелких поэтапных задач предпочтительнее одной большой. Чем компактнее и строже контекст, тем лучше результат на выходе. «Слона надо есть по частям» — вот, здесь это тоже актуально.

г) Использование одних и тех же подходов «в лоб», на всех задачах подряд. Ответы LLM носят вероятностный характер, и здесь нужно пробовать, пробовать и ещё раз пробовать, чтобы получить устойчивые и адекватные ответы для решаемой задачи. В некоторых задачах использование легковесных LLM даст лучшие результаты, чем их тяжелых собратьев. Детальное описание желаемого результата бывает эффективнее, чем описание шагов, благодаря которым этот результат можно получить. Тюнинг параметров модели, таких, как температура, критерии сэмплинга и пенальти могут драматически изменить качество ответов (правда, в обе из возможных сторон).

Ну и задача на потренироваться по этой части:

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

Часть 2.
54🔥1
Как разработчику быстро вкатиться в тему LLM? Часть 2

Часть 1

2. Взаимодействие с LLM через API

Потренировавшись в промптинге через веб-морды любых доступных LLM, самое время переходить к вопросам использования их API у себя в коде. Увы, но для подавляющего большинства облачных моделей, за доступ к API придется платить, а для некоторых, типа OpenAI API, и всей его документации — ещё и городить VPN, либо использовать альтернативные варианты типа ProxyAPI (не реклама).

Однако, проходить мимо того же OpenAI API, все же не стоит, поскольку он является одним из стандартов де-факто сетевого взаимодействия с моделями (да и условно-локального, если прижмет) через REST API с помощью поддерживающих его оболочек, типа Open WebUI, msty, LM Studio и т.п. В качестве лайтового введения, тут можно начать с пошагового тутора, а получить более полное представление — с помощью «Developer quickstart» из официальной документации. Множество готовых примеров использования OpenAI API есть в кукбуке. Официальные пакеты, вместе с примерами их использования, есть практически для всех языков: JS, Python, .NET, Go и т.п.

Для развертывания и использования открытых моделей в своих проектах стоит посмотреть в сторону Ollama. Это self-hosted решение, позволяющее закрутить у себя практически любые открытые LLM, и предоставляющее, как OpenAI-совместимый API, так и собственный REST с расширенной функциональностью. Подход к освоению примерно тот же — Quickstart, Examples, и вперёд. Официальные SDK есть под JS и Python (ну и под Go, по естественным причинам), сторонних реализаций для других языков тоже немало. Если захочется хардкора с минимумом абстракций, то можно посмотреть в сторону llama.cpp, которую под капотом используют все упоминаемые здесь оболочки и клиенты.

Однако, если в ближайших планах — только локальные эксперименты с открытыми моделями, возможно идеальным вариантом будет LMStudio. Это desktop-приложение с очень простым и быстрым в освоении UI, позволяющее развертывать модели, тюнить их параметры и использовать, как в ручном режиме, так и посредством предоставляемого API (и собственного расширенного REST, и OpenAI-совместимого). Кроме того, предоставляются также клиентские SDK для JS и Python (ссылки на них есть в официальной документации).

Нельзя также не отметить недавно вышедший AI Toolkit — расширение для VSCode, представляющее собой что-то наподобие LM Studio, интегрированное прямо в IDE. Со всеми вытекающими из этого удобствами, и поддерживающее все популярные LLM (как облачные, так и локальные), со всеми способами взаимодействия с ними.

Сетап автора представляет собой:

– LMStudio на ноутбуке для абстрактных экспериментов с худенькими моделями;
– AI Toolkit для экспериментов в IDE, в рамках конкретных проектов, и как потенциальная замена LMStudio в будущем;
– торчащий в локальную сеть Open WebUI под ollama, с кучей моделей пожирнее, развернутых на более мощном домашнем компе.

Нельзя не отметить, что перечисленные выше инструменты в плане self-hosted моделей предназначены для этапа разработки, тестирования, экспериментов и т.п. Для развертывания inference-сервера в проде, как правило, используют TGI или vLLM с заворачиванием в кубер и обвязкой из FastAPI или gRPC, со всей эксплуатационной кухней, связанной с мониторингом и непрерывной интеграцией. Ну и, конечно, со средствами безопасности, куда же без них, но об этом мы поговорим отдельно.

Задача на потренироваться:

Всё то же самое, что и в предыдущей части, только из кода на любимом языке, с помощью локальной или облачной LLM, с загрузкой данных по заданной неделе через соответствующие API Google-календаря и Google-задач.

Часть 3.
6👍2🔥1
Пятничный ASCII'шный Rust'о-пончик вам 🍩
Исходник, by u/toppletwist
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4