DeepSeek выпустили фундаментальную переработку архитектуры трансформера.
Она решает проблему «кризиса идентичности», которая ломает очень большие модели ИИ.
Последние десять лет почти все крупные модели ИИ опирались на остаточные связи. Это быстрые обходные пути, которые позволяют сигналу перескакивать через слои и сохранять стабильность обучения.
Без них глубокие сети начинают терять информацию по пути и становятся плохо обучаемыми.
Но есть проблема: при росте глубины и размера моделей такие простые «пропуски» перестают работать.
Информация размывается. Градиенты нестабильны. Математика начинает ломаться.
DeepSeek (включая исследователей, среди которых Вэньфэн Лян) опубликовали работу с введением mHC: манивольд-ограниченные гипер-связи.
Это полная переработка того, как данные проходят внутри модели.
Вместо одного «обходного пути» они расширили его до нескольких параллельных потоков. Эти связи называют гипер-связями.
Но на этом не остановились.
Когда появляется несколько потоков, система обычно уходит в хаос. Модель теряет «отображение идентичности» — перестаёт корректно передавать информацию без искажений.
Ключевой шаг DeepSeek — принудить эти связи жить на заданном математическом многообразии.
Проецируя связи на многогранник Бёркгофа с помощью алгоритма Синхорна–Кноппа, они заставили модель оставаться устойчивой.
Сохраняется богатство маршрутов передачи данных, но сигнал не теряется и не «взрывается».
Результаты:
Стабильность: удалось обучить модель на 27 млрд параметров, которую раньше нельзя было стабилизировать с обычными гипер-связями.
Производительность: значительное улучшение на бенчмарках кодирования, математики и рассуждений (BBH и DROP).
Эффективность: несмотря на усложнение, кастомное ядро добавляет примерно 6,7% накладных расходов на обучение.
Последние годы индустрия пыталась делать модели умнее через увеличение масштаба.
DeepSeek показали, что реальный прирост даёт исправление «инфраструктуры» внутри модели.
Будущее масштабирования — не только в увеличении числа слоёв.
Оно в более качественных связях между ними.
👉 @PythonPortal
Она решает проблему «кризиса идентичности», которая ломает очень большие модели ИИ.
Последние десять лет почти все крупные модели ИИ опирались на остаточные связи. Это быстрые обходные пути, которые позволяют сигналу перескакивать через слои и сохранять стабильность обучения.
Без них глубокие сети начинают терять информацию по пути и становятся плохо обучаемыми.
Но есть проблема: при росте глубины и размера моделей такие простые «пропуски» перестают работать.
Информация размывается. Градиенты нестабильны. Математика начинает ломаться.
DeepSeek (включая исследователей, среди которых Вэньфэн Лян) опубликовали работу с введением mHC: манивольд-ограниченные гипер-связи.
Это полная переработка того, как данные проходят внутри модели.
Вместо одного «обходного пути» они расширили его до нескольких параллельных потоков. Эти связи называют гипер-связями.
Но на этом не остановились.
Когда появляется несколько потоков, система обычно уходит в хаос. Модель теряет «отображение идентичности» — перестаёт корректно передавать информацию без искажений.
Ключевой шаг DeepSeek — принудить эти связи жить на заданном математическом многообразии.
Проецируя связи на многогранник Бёркгофа с помощью алгоритма Синхорна–Кноппа, они заставили модель оставаться устойчивой.
Сохраняется богатство маршрутов передачи данных, но сигнал не теряется и не «взрывается».
Результаты:
Стабильность: удалось обучить модель на 27 млрд параметров, которую раньше нельзя было стабилизировать с обычными гипер-связями.
Производительность: значительное улучшение на бенчмарках кодирования, математики и рассуждений (BBH и DROP).
Эффективность: несмотря на усложнение, кастомное ядро добавляет примерно 6,7% накладных расходов на обучение.
Последние годы индустрия пыталась делать модели умнее через увеличение масштаба.
DeepSeek показали, что реальный прирост даёт исправление «инфраструктуры» внутри модели.
Будущее масштабирования — не только в увеличении числа слоёв.
Оно в более качественных связях между ними.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28👍6❤4🤔3
Динамическое программирование — одна из моих любимых тем в компьютерных науках.
А потом приходит осознание, что почти вся инфраструктура систем под капотом опирается на ту же самую идею.
Базовая концепция очень красивая:
мы разбиваем экспоненциальное пространство поиска на пересекающиеся подзадачи, сохраняем оптимальную подструктуру, мемоизируем промежуточные состояния и восстанавливаем глобально оптимальное решение при заданных ограничениях.
И этот уровень абстракции встречается буквально везде.
Например, в базах данных оптимизаторы запросов по стоимости — это по сути огромные движки динамического программирования.
SQL-запрос с большим количеством JOIN между таблицами создаёт колоссальное комбинаторное пространство вариантов выполнения.
Оптимизатору нужно выбрать порядок JOIN, пути доступа, индексы, hash join / merge join / nested loop, predicate pushdown, partition pruning, стратегию параллелизма.
Наивный перебор растёт факториально.
Поэтому оптимизаторы используют динамическое программирование для вычисления:
«какой самый дешёвый способ выполнить подмножество S отношений?»
Классическая оптимизация в стиле Selinger хранит самый дешёвый план для каждого подмножества и постепенно строит более крупные планы из меньших оптимальных под-планов.
Что-то вроде:
DP[S] = минимальная стоимость плана для JOIN отношений из подмножества S
Дальше переходы выглядят так:
комбинируем оптимальные левый/правый под-планы + оцениваем cardinality + считаем стоимость IO / CPU / сети.
Вся магия в том, что система перестаёт повторно вычислять эквивалентные состояния, но при этом всё ещё приближается к глобальному оптимуму.
И это далеко не только про базы данных.
Динамическое программирование тихо лежит в основе:
алгоритмов кратчайших путей, декодирования Витерби, выравнивания последовательностей в биоинформатике, оптимизаций компилятора, edit distance, эвристик TCP congestion control, политик кэширования, планировщиков ресурсов, tiling для GPU-ядра, register allocation, вероятностного вывода, value iteration в reinforcement learning.
Даже современное мышление в распределённых системах часто напоминает динамическое программирование:
минимизация задержек и стоимости через ограниченные переходы состояний.
Больше всего мне нравится, как DP меняет само мышление.
Ты перестаёшь брутфорсить задачу и начинаешь задавать другие вопросы:
— какое состояние действительно важно?
— какой информации достаточно, чтобы восстановить будущее?
— где находятся пересекающиеся вычисления?
— может ли локальная оптимальность собираться в глобальную?
— какие измерения определяют пространство поиска?
Тот самый дофаминовый момент, когда решение оптимизируется с O(nlogn) до O(n) или с O(n²) до O(n), — именно ради этого хочется писать алгоритмы каждый день.
И этот майндсет полезен далеко за пределами алгоритмических собеседований.
Одна из самых элегантных идей в CS:
превращать невозможные пространства поиска в вычислимо решаемые задачи через сжатие состояния и переиспользование оптимальных результатов.
👉 @PythonPortal
А потом приходит осознание, что почти вся инфраструктура систем под капотом опирается на ту же самую идею.
Базовая концепция очень красивая:
мы разбиваем экспоненциальное пространство поиска на пересекающиеся подзадачи, сохраняем оптимальную подструктуру, мемоизируем промежуточные состояния и восстанавливаем глобально оптимальное решение при заданных ограничениях.
И этот уровень абстракции встречается буквально везде.
Например, в базах данных оптимизаторы запросов по стоимости — это по сути огромные движки динамического программирования.
SQL-запрос с большим количеством JOIN между таблицами создаёт колоссальное комбинаторное пространство вариантов выполнения.
Оптимизатору нужно выбрать порядок JOIN, пути доступа, индексы, hash join / merge join / nested loop, predicate pushdown, partition pruning, стратегию параллелизма.
Наивный перебор растёт факториально.
Поэтому оптимизаторы используют динамическое программирование для вычисления:
«какой самый дешёвый способ выполнить подмножество S отношений?»
Классическая оптимизация в стиле Selinger хранит самый дешёвый план для каждого подмножества и постепенно строит более крупные планы из меньших оптимальных под-планов.
Что-то вроде:
DP[S] = минимальная стоимость плана для JOIN отношений из подмножества S
Дальше переходы выглядят так:
комбинируем оптимальные левый/правый под-планы + оцениваем cardinality + считаем стоимость IO / CPU / сети.
Вся магия в том, что система перестаёт повторно вычислять эквивалентные состояния, но при этом всё ещё приближается к глобальному оптимуму.
И это далеко не только про базы данных.
Динамическое программирование тихо лежит в основе:
алгоритмов кратчайших путей, декодирования Витерби, выравнивания последовательностей в биоинформатике, оптимизаций компилятора, edit distance, эвристик TCP congestion control, политик кэширования, планировщиков ресурсов, tiling для GPU-ядра, register allocation, вероятностного вывода, value iteration в reinforcement learning.
Даже современное мышление в распределённых системах часто напоминает динамическое программирование:
минимизация задержек и стоимости через ограниченные переходы состояний.
Больше всего мне нравится, как DP меняет само мышление.
Ты перестаёшь брутфорсить задачу и начинаешь задавать другие вопросы:
— какое состояние действительно важно?
— какой информации достаточно, чтобы восстановить будущее?
— где находятся пересекающиеся вычисления?
— может ли локальная оптимальность собираться в глобальную?
— какие измерения определяют пространство поиска?
Тот самый дофаминовый момент, когда решение оптимизируется с O(nlogn) до O(n) или с O(n²) до O(n), — именно ради этого хочется писать алгоритмы каждый день.
И этот майндсет полезен далеко за пределами алгоритмических собеседований.
Одна из самых элегантных идей в CS:
превращать невозможные пространства поиска в вычислимо решаемые задачи через сжатие состояния и переиспользование оптимальных результатов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍4🤯2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁25🤣9
This media is not supported in your browser
VIEW IN TELEGRAM
Кто-то сделал бесплатный PDF-редактор, который делает всё то же, что и Adobe, но занимает всего 20 МБ.
RevPDF работает полностью локально на устройстве. Позволяет редактировать текст и изображения, подписывать документы, редактировать конфиденциальные данные, сжимать файлы, конвертировать в Word — без интернета, без аккаунта и без подписки.
Полностью бесплатно. Полностью офлайн.
👉 @PythonPortal
RevPDF работает полностью локально на устройстве. Позволяет редактировать текст и изображения, подписывать документы, редактировать конфиденциальные данные, сжимать файлы, конвертировать в Word — без интернета, без аккаунта и без подписки.
Полностью бесплатно. Полностью офлайн.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔19❤8👍4😢1
7 обязательных сложностей алгоритмов (Big-O) для собеседований:
1. 𝐎(1) — 𝐤𝐨𝐧𝐬𝐭𝐚𝐧𝐭𝐧𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время выполнения не зависит от размера входных данных.
- Пример: доступ к элементу массива по индексу.
2. 𝐎(𝐥𝐨𝐠 𝐧) — 𝐥𝐨𝐠𝐚𝐫𝐢𝐟𝐦𝐢𝐜𝐡𝐞𝐬𝐤𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время растёт медленно при увеличении входа. Обычно встречается в алгоритмах, которые делят задачу пополам на каждом шаге.
- Пример: бинарный поиск в отсортированном массиве.
3. 𝐎(𝐧) — 𝐥𝐢𝐧𝐞𝐲𝐧𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время растёт линейно относительно размера входных данных.
- Пример: поиск элемента в массиве перебором.
4. 𝐎(𝐧 𝐥𝐨𝐠 𝐧) — 𝐥𝐢𝐧𝐞𝐲𝐧𝐨-𝐥𝐨𝐠𝐚𝐫𝐢𝐟𝐦𝐢𝐜𝐡𝐞𝐬𝐤𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время растёт чуть быстрее линейного. Обычно включает логарифмическое число операций на каждый элемент.
- Пример: сортировка quick sort или merge sort.
5. 𝐎(𝐧^2) — 𝐤𝐯𝐚𝐝𝐫𝐚𝐭𝐢𝐜𝐡𝐞𝐬𝐤𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время растёт пропорционально квадрату входа.
-Пример: bubble sort, где происходит сравнение и возможный swap каждой пары элементов.
6. 𝐎(2^𝐧) — 𝐞𝐤𝐬𝐩𝐨𝐧𝐞𝐧𝐭𝐬𝐢𝐚𝐥𝐧𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время удваивается с каждым новым элементом входа. Такие алгоритмы быстро становятся непригодными для больших данных.
- Пример: генерация всех подмножеств множества.
7. 𝐎(𝐧!) — 𝐟𝐚𝐤𝐭𝐨𝐫𝐢𝐚𝐥𝐧𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время пропорционально факториалу размера входа.
- Пример: генерация всех перестановок множества.
👉 @PythonPortal
1. 𝐎(1) — 𝐤𝐨𝐧𝐬𝐭𝐚𝐧𝐭𝐧𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время выполнения не зависит от размера входных данных.
- Пример: доступ к элементу массива по индексу.
2. 𝐎(𝐥𝐨𝐠 𝐧) — 𝐥𝐨𝐠𝐚𝐫𝐢𝐟𝐦𝐢𝐜𝐡𝐞𝐬𝐤𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время растёт медленно при увеличении входа. Обычно встречается в алгоритмах, которые делят задачу пополам на каждом шаге.
- Пример: бинарный поиск в отсортированном массиве.
3. 𝐎(𝐧) — 𝐥𝐢𝐧𝐞𝐲𝐧𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время растёт линейно относительно размера входных данных.
- Пример: поиск элемента в массиве перебором.
4. 𝐎(𝐧 𝐥𝐨𝐠 𝐧) — 𝐥𝐢𝐧𝐞𝐲𝐧𝐨-𝐥𝐨𝐠𝐚𝐫𝐢𝐟𝐦𝐢𝐜𝐡𝐞𝐬𝐤𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время растёт чуть быстрее линейного. Обычно включает логарифмическое число операций на каждый элемент.
- Пример: сортировка quick sort или merge sort.
5. 𝐎(𝐧^2) — 𝐤𝐯𝐚𝐝𝐫𝐚𝐭𝐢𝐜𝐡𝐞𝐬𝐤𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время растёт пропорционально квадрату входа.
-Пример: bubble sort, где происходит сравнение и возможный swap каждой пары элементов.
6. 𝐎(2^𝐧) — 𝐞𝐤𝐬𝐩𝐨𝐧𝐞𝐧𝐭𝐬𝐢𝐚𝐥𝐧𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время удваивается с каждым новым элементом входа. Такие алгоритмы быстро становятся непригодными для больших данных.
- Пример: генерация всех подмножеств множества.
7. 𝐎(𝐧!) — 𝐟𝐚𝐤𝐭𝐨𝐫𝐢𝐚𝐥𝐧𝐚𝐲𝐚 𝐬𝐥𝐨𝐳𝐡𝐧𝐨𝐬𝐭𝐢
- Время пропорционально факториалу размера входа.
- Пример: генерация всех перестановок множества.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣22👍10❤5🏆4
Лёгковесный автономный AI-агент на Python с поддержкой нескольких моделей и множества инструментов, может заменить Claude Code и работает локально: https://github.com/KevRojo/Dulus
Автономный AI-агент, написанный на 12 000 строк Python-кода, с поддержкой 11 провайдеров моделей, между которыми можно переключаться по необходимости, и 27 встроенными инструментами. Поддерживает протокол MCP, горячую загрузку плагинов, параллельную работу саб-агентов, офлайн-голосовой ввод/вывод и интеграцию с Telegram (Telegram-bridge).
👉 @PythonPortal
Автономный AI-агент, написанный на 12 000 строк Python-кода, с поддержкой 11 провайдеров моделей, между которыми можно переключаться по необходимости, и 27 встроенными инструментами. Поддерживает протокол MCP, горячую загрузку плагинов, параллельную работу саб-агентов, офлайн-голосовой ввод/вывод и интеграцию с Telegram (Telegram-bridge).
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍11❤3
Пишешь объектно-ориентированный Python? Не путай два базовых типа отношений:
1/ has-a («композиция»). Один объект содержит другой. У
2/ is-a («наследование»). Один класс является разновидностью уже существующего.
👉 @PythonPortal
1/ has-a («композиция»). Один объект содержит другой. У
Person есть (has-a) name. У Car есть (has-a) color.2/ is-a («наследование»). Один класс является разновидностью уже существующего.
Employee — это (is-a) Person. Car — это (is-a) Vehicle.Please open Telegram to view this post
VIEW IN TELEGRAM
1👍11❤5
Хостинг за 199 рублей/месяц. Бесплатные модели AI и навороченные агенты для создания любых веб-приложений, сайтов, интернет-магазинов, телеграмм-ботов. И все это можно оплатить картой РФ.
easyapps — сервис созданный инженерами, а не маркетолагами.
У сервиса мгновенная техническая поддержка и фриланс, если кому-то хочется чтобы даже вайбкодингом занимались вместо него.
Попробовать можно на https://easyapps.click
easyapps — сервис созданный инженерами, а не маркетолагами.
У сервиса мгновенная техническая поддержка и фриланс, если кому-то хочется чтобы даже вайбкодингом занимались вместо него.
Попробовать можно на https://easyapps.click
🤣9👍2🌭2❤1😁1
Компании, которые увольняют программистов и направляют деньги на ИИ выглядят примерно так
👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤56😁20👍8
Тернарный оператор в Python — удобная штука, но им легко злоупотребить:
То, что это можно написать, ещё не значит, что так стоит писать.
Если условий 3 и больше — лучше использовать
А тернарный оператор стоит оставить для:
comprehensions (генераторов списков / коллекций),
👉 @PythonPortal
'A' if s>=90 else 'B' if s>=80 else 'C' if s>=70 else 'F'
То, что это можно написать, ещё не значит, что так стоит писать.
Если условий 3 и больше — лучше использовать
if-elif-else.А тернарный оператор стоит оставить для:
comprehensions (генераторов списков / коллекций),
lambda-выражений, return в одну строку.Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1👀1
Регулярные выражения в python
Регулярные выражения (regex) в Python используются для поиска, соответствия и манипулирования строками на основе шаблонов. В Python регулярные выражения реализованы в модуле
Основные функции модуля re:
🔸
🔸
🔸
🔸
🔸
🔸
Примеры использования:
Объяснение примера:
>
>
>
>
>
>
Дополнительные примеры шаблонов:
Регулярные выражения мощный инструмент для работы с текстом, и они могут быть полезны в самых разных задачах, от простой проверки ввода до сложного парсинга текста.💊
👉 @PythonPortal
Регулярные выражения (regex) в Python используются для поиска, соответствия и манипулирования строками на основе шаблонов. В Python регулярные выражения реализованы в модуле
reОсновные функции модуля re:
re.match(): Проверяет, соответствует ли начало строки заданному шаблону.re.search(): Ищет шаблон в строке и возвращает первый найденный совпадающий объект.re.findall(): Находит все совпадения шаблона в строке и возвращает их в виде списка.re.finditer(): Находит все совпадения шаблона и возвращает их в виде итератора.re.sub(): Заменяет все совпадения шаблона на заданную строку.re.split(): Разделяет строку по заданному шаблону.Примеры использования:
import re
# Пример строки
text = "The rain in Spain falls mainly in the plain."
# 1. re.match()
match = re.match(r'The', text)
if match:
print("Match found:", match.group())
else:
print("No match found")
# 2. re.search()
search = re.search(r'rain', text)
if search:
print("Search found:", search.group())
else:
print("No search found")
# 3. re.findall()
findall = re.findall(r'in', text)
print("Findall results:", findall)
# 4. re.finditer()
finditer = re.finditer(r'in', text)
for match in finditer:
print("Finditer match:", match.group(), "at position", match.start())
# 5. re.sub()
substitute = re.sub(r'rain', 'snow', text)
print("Substitute result:", substitute)
# 6. re.split()
split = re.split(r'\s', text)
print("Split result:", split)
Объяснение примера:
>
re.match(r'The', text): Проверяет, начинается ли строка text с "The".>
re.search(r'rain', text): Ищет первое вхождение "rain" в строке text.>
re.findall(r'in', text): Находит все вхождения "in" в строке text.>
re.finditer(r'in', text): Возвращает итератор, который перебирает все вхождения "in" в строке text.>
re.sub(r'rain', 'snow', text): Заменяет все вхождения "rain" на "snow" в строке text.>
re.split(r'\s', text): Разделяет строку text по пробелам (символы пробела).Дополнительные примеры шаблонов:
\d: Любая цифра.\D: Любой символ, кроме цифры.\w: Любая буква, цифра или символ подчеркивания.\W: Любой символ, кроме буквы, цифры или символа подчеркивания.\s: Любой пробельный символ.\S: Любой непробельный символ..: Любой символ, кроме новой строки.^: Начало строки.$: Конец строки.*: 0 или более повторений.+: 1 или более повторений.?: 0 или 1 повторение.{n}: Ровно n повторений.{n,}: n или более повторений.{n,m}: От n до m повторений.Регулярные выражения мощный инструмент для работы с текстом, и они могут быть полезны в самых разных задачах, от простой проверки ввода до сложного парсинга текста.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20
Релиз Pyrefly type checker 1.0.0 уже здесь: https://pyrefly.org/blog/v1.0/
Вот основные улучшения:
🐍 Обновлённая диагностика стала в 2–125 раз быстрее
🐍 Полная проверка типов ускорена на 20–36%
🐍 Первичная индексация при первом сканировании стала в 2–3 раза быстрее
🐍 Использование памяти снижено на 40–60%
🐍 Добавлен отчёт о покрытии type checking
👉 @PythonPortal
Вот основные улучшения:
🐍 Обновлённая диагностика стала в 2–125 раз быстрее
🐍 Полная проверка типов ускорена на 20–36%
🐍 Первичная индексация при первом сканировании стала в 2–3 раза быстрее
🐍 Использование памяти снижено на 40–60%
🐍 Добавлен отчёт о покрытии type checking
Please open Telegram to view this post
VIEW IN TELEGRAM
pyrefly.org
Pyrefly v1.0 is here! | Pyrefly
Pyrefly has reached stable version 1.0 status, read about the new features and how to get started.
😁4❤1
Google выпустила свои официальные skills для AI-агентов.
Компания опубликовала 13 skills, совместимых с Claude Code, Cursor, Copilot и другими агентами.
Они позволяют агентам выполнять продвинутые задачи и автоматизировать сложные рабочие процессы.
Это бесплатно и с открытым исходным кодом : https://github.com/google/skills
👉 @PythonPortal
Компания опубликовала 13 skills, совместимых с Claude Code, Cursor, Copilot и другими агентами.
Они позволяют агентам выполнять продвинутые задачи и автоматизировать сложные рабочие процессы.
Это бесплатно и с открытым исходным кодом : https://github.com/google/skills
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3