PythonTalk
4.77K subscribers
1.46K photos
48 videos
7 files
1.32K links
Привет, меня зовут Олег Булыгин 👋

🐍 Здесь я делюсь полезной информацией для тех, кто пишет код на Python: от разработки до Data Science.

По вопросам: @obulygin91
Download Telegram
Что получим при запуске кода?
Anonymous Quiz
11%
None
27%
2 * 100 - 1
29%
OverflowError
16%
TypeError
16%
Всё зависнет
👍33211🔥1
💥 Google DeepMind выкатил LEGO для AI-агентов!

Open-source библиотека GenAI Processors — это фреймворк, который предлагает новый взгляд на то, как можно организовывать AI-агентов.

Суть такая:

1. Всё — это ProcessorPart. Неважно, что прилетело: кусок аудио, кадр видео, текстовая транскрипция или JSON-чик с данными. Всё это теперь унифицированный "кубик" со своим типом, ролью и метаданными. Никакого зоопарка из форматов.
2. "Моторы" и "переключатели" для кубиков. Вместо того, чтобы лепить гигантские функции, ты собираешь свой AI из маленьких, переиспользуемых "процессоров". Они могут работать как последовательный конвейер (Processor), так и обрабатывать каждый кубик параллельно (PartProcessor), выжимая максимум из асинхронности Python'а. Хочешь, чтобы данные обрабатывались разными способами одновременно? Пожалуйста: процессор1 // процессор2. Хочешь последовательно? процессорА + процессорБ.

GenAI Processors умеет сам жонглировать потоками, минимизировать задержки и обеспечивать хорошую отзывчивость (Time-To-First-Token).

Что с этим можно делать?

* Собирать real-time AI-агентов (слышит, видит, говорит) всего в несколько строк кода.
* Строить исследовательских агентов, которые сами ищут инфу в Google и синтезируют ответы.
* Делать умных планировщиков, которые, пока ты ждешь, уже в фоне накидывают тебе маршрут путешествия.

🧐 Разбор поподробнее с примерами кода читаем здесь.
👍71🙏1👌1
Осваиваем query() и eval() в Pandas для лаконичной фильтрации и вычислений

Если вы работаете с данными, то наверняка знаете этот "скобочный ад" в pandas. Когда простое, на первый взгляд, условие фильтрации превращается в нечитаемое чудовище: df[(df['col1'] > X) & ((df['col2'] == Y) | (df['col3'] < Z))] 🤢

Но есть более читаемый путь. Речь, конечно, о методах query() и eval(). Они позволяют писать условия фильтрации и вычисления в виде простой строки, как будто вы описываете логику на естественном языке. Код становится чище, короче и понятнее с первого взгляда.

Все подробности, наглядные примеры разобрали в статье. Читаем 🚀
🔥62👍22
Открытая альтернатива NotebookLM — NotebookLlama 🦙

Это полноценный AI-комбайн для работы с любыми документами, который можно развернуть у себя.

Что умеет эта 🦙:
✔️ Создаёт единую базу знаний из кучи файлов (PDF, DOCX, и т.д.).
✔️ Автоматически пишет саммари и строит интерактивные mind map-графы, чтобы вы не утонули в информации.
✔️ Позволяет чатиться с документами — задаете вопрос и получаете ответ строго по тексту, с указанием источников.
✔️ Может сгенерировать подкаст в формате диалога по вашему документу (использует ElevenLabs).
✔️ Полностью бесплатный, кастомизируемый и ваш.

Короче, мастхэв для всех, кто работает с информацией и хочет иметь под рукой собственный, а не корпоративный инструмент.

Я уже поковырялся в коде, разобрал архитектуру и написал подробнейший гайд по установке.

👉 Читаем, как запустить у себя

И вот ссылка на GitHub проекта 🫲🏻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1🙏1👌1
🗺 Ультимативный роадмап по Data Science

Меня постоянно спрашивают: «Что учить для DS?», «А в каком порядке?», «А что самое важное?».
В общем, я заморочился — запилил интерактивную карту навыков по Data Science. Не стыдно и людям показать.

Что там внутри:
1️⃣ Все навыки разделены на два больших блока: Фундамент (аналитический, программный и инженерный стек) и Жизненный цикл проекта (от сбора данных до MLOps).
2️⃣ Всё можно тыкать, раскрывать списки и переходить по ссылкам на конкретные инструменты.
3️⃣ Где было уместно, я добавил ссылки на свои же статьи и на бесплатные тренажёры по Python и SQL.

Лучше смотреть на десктопе, но и на смартах более-менее адаптируется.
В общем, сохраняйте в закладки, делитесь с коллегами и джунами 🧐

👉 Интерактивная карта навыков DS
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥233👍32🤔1🆒11
👨‍💻 Сейчас на курсах по программированию, где есть ревью кода экспертами, эти самые эксперты, разделяются так:

1️⃣ Вообще не смотря работу, отправляю отзыв с заготовкой нейтрально-хвалебного текста (да, так можно 🤪)
2️⃣ Не смотрю работу, скармливаю её нейросетке, отправляю сгенерированный отзыв
3️⃣ Изучаю работу, отзыв формирую из заготовок фраз / хороших генераций нейросетки
4️⃣ Изучаю работу, отзыв всегда пишу с нуля руками. Это вообще исчезающая категория, т.к. проиграли конкуренцию с точки зрения всех бизнес-метрик всем остальным (долго проверяют / сильно докапываются, бизнесу такое не надо).

Я их отсортировал по эффективности стратегий с точки зрения зарабатывания денег 🤑

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

Считайте, что вам очень повезло, если у вас будет проверяющий из группы 3.

Полная сепарация так называемого "асинхронного" формата обучения от "синхронного" уже вполне явно сформировалось по принципу "первое для бедных, второе — для богатых". В том числе благодаря нейронкам. Дальше это будет только усугубляться.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔9😢7🤬1🙉1👾1
В продолжение дискуссии выше: агась, бОльшая часть работ учащихся сейчас — генерация.
Опытными проверяющими это выкупается элементарно.

Могли ли вы себе представить, как в основном будет работать массовое образование: нейронки проверяют работы нейронок, а вы за это платите и получаете дипломы 😂

Ору, как чайка, ржу, как дельфин с этого.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣1682👻2🙈1🤪1🙉1🙊1
Алгоритмическая задачка 🐍

Представьте, что вы нашли сокровищницу! 🐉💰 В ней — россыпь золотых слитков разного веса. Ваша задача как самого умного в команде — определить, можно ли поделить всю добычу по-честному на k равных долей для каждого участника.

📋 Условие

Напишите функцию can_partition(nums: list[int], k: int) -> bool, которая принимает список весов слитков nums и количество участников k. Функция должна возвращать True, если все слитки можно разбить ровно на k непустых групп с одинаковой суммой весов, и False в противном случае.

Формат ввода:
- nums: список целых положительных чисел.
- k: целое положительное число.

Формат вывода:
- bool: True или False.

Примеры: 🤔

1️⃣ Вход:
nums = [4, 3, 2, 3, 5, 2, 1]
k = 4

Вывод: True
Объяснение: Общая сумма 20. На каждого из 4-х участников приходится по 5. Возможный делёж: [5], [1, 4], [2, 3], [2, 3].

2️⃣ Вход:
nums = [1, 2, 3, 4]
k = 3

Вывод: False
Объяснение: Общая сумма 10, которая не делится на 3 без остатка. Делёж невозможен.

Жду ваши элегантные и эффективные решения в комментариях! 👇
3🤔2👍1🙏1
Что будет нового в Python 3.14? 🐍

Если коротко — Python продолжает войну с GIL и делает очередной шаг в сторону производительности.
Релиз запланирован на октябрь 🗓

Что самого сочного нас ждёт:

1️⃣ Free-threaded Python теперь официально поддерживается (PEP 779).
Сборка без глобальной блокировки интерпретатора — больше не эксперимент. Да, пока это опционально и с небольшими потерями в однопотоке, но вектор задан.

2️⃣ Множественные интерпретаторы в стандартной библиотеке (PEP 734).
Еще один гвоздь в крышку гроба GIL. Теперь можно запускать изолированные копии Python в одном процессе, используя concurrent.interpreters. Это как multiprocessing, только легковеснее и эффективнее. Мощнейший инструмент для CPU-bound задач.

3️⃣ T-строки (PEP 750).
Новый вид строк с префиксом t"...". В отличие от f-строк, они не вычисляются сразу, а создают объект-шаблон. Это удобно для безопасной генерации HTML, SQL и других DSL. Больше никаких случайных XSS-уязвимостей из-за кривых конкатенаций.

4️⃣ Удаленная отладка с PDB (PEP 768).
Теперь можно подключить pdb к любому запущенному Python-процессу по его PID: python -m pdb -p 12345. Отлаживать зависшие в проде приложения станет проще.

А ещё отложенные аннотации (прощай, from __future__ import annotations), Zstandard из коробки и улучшенная подсветка синтаксиса в REPL.

Больше подробностей здесь ◀️

Доживём до того, как шутки про медленный Python останутся в прошлом?
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍221🔥1🥰1🎉1🙏1🍾1
🔮 Прогнозирование временных рядов в Python: от хаоса в данных к работающей модели SARIMA

Как изменятся продажи? Какой спрос ждать к праздникам? Вечные вопросы, на которые бизнесу нужны ответы. И чаще всего решение кроется в анализе временных рядов.

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

Что внутри:
1️⃣ Загружаем и смотрим на данные. Учимся видеть тренд и сезонность.
2️⃣ Узнаём, почему «нестационарный» ряд — это плохо, и как его исправить с помощью логарифмов и дифференцирования.
3️⃣ Разбираемся, как подбирать параметры в SARIMA при помощи ACF/PACF графиков.
4️⃣ Строим и проверяем полученную модель.
🔥9311👍1🎉1🙏1
✍️ Решения вчерашней задачи

Задачку никто не решил 🥹 Но она была не из простых. Давайте посмотрим, как можно было.

💡 Оптимальное решение: умный бэктрекинг с умом

Этот метод по своей сути — умный перебор. Мы пытаемся рекурсивно "пристроить" каждый слиток в одну из k корзин, но с важными оптимизациями, которые отсекают заведомо проигрышные пути.

def can_partition(nums: list[int], k: int) -> bool:
total_sum = sum(nums)
if total_sum % k != 0:
return False

target_sum = total_sum // k
subsets = [0] * k
nums.sort(reverse=True)

def backtrack(index):
if index == len(nums):
return True

for i in range(k):
if subsets[i] + nums[index] <= target_sum:
subsets[i] += nums[index]
if backtrack(index + 1):
return True
subsets[i] -= nums[index]

if subsets[i] == 0:
break

return False

return backtrack(0)


🧠 Как это работает?

1. Первым делом считаем общую сумму total_sum. Если она не делится на k нацело, то поделить слитки на равные по весу группы невозможно. Сразу возвращаем False.

2. Сортируем слитки по убыванию nums.sort(reverse=True). Пытаясь разместить сначала самые тяжелые слитки, мы гораздо быстрее обнаруживаем "тупиковые" ветви комбинаций и отбрасываем их, экономя уйму времени.

3. Рекурсивный поиск (бэктрекинг):
- Функция backtrack пытается разместить каждый слиток, начиная с index = 0.
- Она перебирает все k "корзин" (subsets) и пробует добавить текущий слиток nums[index].
- Если после добавления сумма в корзине не превышает target_sum, мы рекурсивно вызываем backtrack для следующего слитка.
- Если вызов вернул True — ура, решение найдено!
- Если нет — мы "откатываем" изменение (убираем слиток из корзины) и пробуем положить его в следующую.

4. Оптимизация: if subsets[i] == 0: break.
Эта строчка означает: если мы попробовали положить слиток в пустую корзину и эта попытка не привела к итоговому решению, то нет никакого смысла пробовать класть этот же слиток в другие пустые корзины. Они ведь ничем не отличаются! Это простое условие радикально сокращает пространство поиска.

Временная сложность: O(k^N), где N — количество слитков. Задача относится к классу NP-полных, поэтому решения с полиномиальным временем (вроде O(N^2)) не существует. Однако благодаря нашим оптимизациям, на реальных данных алгоритм работает значительно быстрее, чем его худшая оценка.
А пространственная сложность: O(N + k). В основном определяется глубиной рекурсии (O(N)) и хранением "корзин" (O(k)).

Наверное, одна из самых сложных задачек, которые тут были 😏
👍3💯21🎉1🙏1
Трон опенсорс-моделей снова занят 🤴

Недолго Kimi K2 носил корону. Китайцы из Qwen выкатили обнову Qwen3-235B-A22B-Instruct-2507, которая их подвинула.

Самое интересное даже не в цифрах, а в подходе. Они официально разделили модели на Instruct и Reasoning. Эта — чистый Instruct. Зачем? Да потому что, по их словам, гибриды пока получаются "ни рыба, ни мясо" и проигрывают специализированным версиям.

Что на счёт метрик в задачах программирования?

💻 LiveCodeBench: 51.8. Для понимания: у Kimi K2 — 48.9, у Claude Opus — 44.6. Разница не в пределах погрешности, а вполне себе ощутимая.
🌍 MultiPL-E (код на разных языках): 87.9. Это уровень Claude Opus, который многие считают эталоном.
🤖 Aider-Polyglot (агентное использование в IDE): 57.3. Тут она чуть уступает Claude (70.7), но всё ещё наравне с другими топами и показывает, что заточена под реальные задачи, а не только синтетические тесты.

🚀 Как им это удаётся?
Вся магия в MoE (Mixture of Experts). Из 235 миллиардов параметров в любой момент времени активны только 22 миллиарда. Это делает модель гораздо более лёгкой и быстрой на инференсе, чем можно было бы подумать. А главное — это прямой намёк, что скоро эту мощь дистиллируют в модели поменьше. Так что праздник на улице простых смертных с одной-двумя RTX на борту точно будет.

Ещё они мощно вкладываются в агентное применение и tool calling через свою библиотеку Qwen-Agent. То есть её можно не просто просить написать функцию, а встраивать в сложные рабочие процессы, давать доступ к инструментам и заставлять работать, а не только болтать.

Погонять бесплатно тут | Веса на Hugging Face
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🎉1🙏1🏆1
Нейронка-исследователь от Стэнфорда 🧑🏻‍🔬

Наткнулся тут на проект от ребят из Стэнфорда — STORM. Это LLM-система, которая по заданной теме сама лезет в интернет, проводит ресёрч и на выходе генерирует подробную статью в стиле Википедии, сразу со ссылками на источники.

Самое интересное, конечно, как оно под капотом работает. Вместо того чтобы тупо просить LLM задавать вопросы, они сделали хитрее:
1️⃣ Сначала система находит похожие статьи, чтобы понять, с каких разных точек зрения (перспектив) можно посмотреть на тему.
2️⃣ А потом симулирует диалог между автором и экспертом, который «заземлён» на найденные интернет-источники. Это позволяет задавать более глубокие и осмысленные вопросы.

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

Что ещё крутого:
▫️ Есть фича Co-STORM, где человек может влезть в процесс и направить дискуссию LLM-агентов в нужное русло.
▫️ Всё это дело опенсорсное и ставится через pip install knowledge-storm.
▫️ Можно под капотом менять и LLM (через litellm), и поисковые движки.

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

👉🏻 GitHub проекта
👉🏻 Попробовать онлайн
👍32🔥22🙏1👨‍💻1
КИТАЙСКИЙ КОНВЕЙЕР НЕ ОСТАНОВИТЬ 🇨🇳

Не успела вчера выйти новость про обновление Qwen3-235B, как китайцы выкатили новую модель.

И на этот раз они не просто обновили флагман, а выкатили узкоспециализированный инструмент для программирования — Qwen3-Coder. И вновь занимают топ 🏆

Что самое важное, кроме очередной победы на бенчмарках:

1️⃣ Агентность > Генерация. Это главный тренд. Модель натаскивали не просто на написание кода по промпту, а на решение комплексных задач в несколько шагов (Long-Horizon RL). Её учили работать с инструментами, анализировать фидбек и самостоятельно закрывать тикеты на SWE-Bench.

2️⃣ Практичность, а не синтетика. Они прямо говорят, что забили на типовые задачки в духе соревновательного программирования и сфокусировались на RL-тренировке на реальных, повседневных задачах программистов. Для этого развернули 20 000 параллельных окружений на своей облачной инфраструктуре. Масштаб впечатляет.

3️⃣ Инструменты "из коробки". Вместе с моделью выложили и CLI-агента Qwen Code — допиленный форк Gemini Code. Устанавливается одной командой и готов к работе.

npm i -g @qwen-code/qwen-code

Более того, модель можно подцепить к Claude Code от Anthropic. То есть её встраивают в уже существующую экосистему, а не заставляют всех переходить на что-то новое.

Погонять бесплатно тут: https://chat.qwen.ai/
Репа с CLI-агентом: https://github.com/QwenLM/qwen-code
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥621🙏1👨‍💻1
Сегодня самый простой квиз, буквально одна две операции 😌

Жду 100% правильных ответов 🌝
👍2🎉2🙏1
Что получим при запуске кода?
Anonymous Quiz
49%
100
2%
-20
6%
SyntaxError
43%
-100
1%
20
🎉32👍2💯2🔥1🙏1
📊 Вот вам немного свежих цифр по рынку труда в IT, чтобы вернуть вас с небес на землю.

Картина, конечно, интересная 😁

1. Деньги
Разрыв между тем, что хотят соискатели, и тем, что готовы платить компании, не просто есть — он растёт.

▫️ Ожидаемые зарплаты (фиолетовая линия) подросли со 100к до 110к. Аппетиты не стоят на месте.
▫️ Предлагаемые (красная линия) замерли на отметке 90к и не двигаются.

То есть, пропасть между хотелками и реальностью за полгода увеличилась с 15к до 20к.

2. Конкуренция
hh.индекс — это количество резюме на одну вакансию.

▫️В прошлом году (синяя линия) было в среднем 7-8 человек на место. Рынок работодателя, но терпимо.
▫️В этом году (зеленая линия) показатель улетел в космос: с 9.9 в январе до 12.5 в июне.

По классификации самого hh.ru, 12+ — это «крайне высокий уровень конкуренции».

Итого, что мы имеем:
Людей, желающих «войти в айти», стало КРАТНО больше. При этом их зарплатные ожидания растут, а вот готовность бизнеса платить — нет.

Получается какой-то идеальный шторм. Хотелок больше, денег столько же (если не меньше), а на каждое место теперь претендует целая толпа.

Что будет дальше? 🔮
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯5💔3😭2👻2😁1🤔1😱1🌚1🍌111
Лекс Фридман взял интервью у Демиса Хассабиса — сооснователя и CEO Google DeepMind.

Получилось интересно. Что касается программирования, то он высказал такие мысли:

ИИ-системы исключительно хорошо справляются с программированием.


В ближайшие 5-10 лет программисты, которые примут и освоят эти технологии, станут сверхчеловечески продуктивными (в 10 раз эффективнее, чем сейчас)


Фокус работы программистов сместится: вместо написания всего кода вручную, они будут определять архитектуру, формулировать задачи, направлять "ai-помощников" и проверять качество сгенерированного кода.


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


Это изменение будет в 10 раз масштабнее и в 10 раз быстрее, чем промышленная революция. Программистам придется переучиваться и адаптировать свои текущие навыки. Появятся новые профессии, которые мы сегодня даже не можем представить.


Think about it 🧠
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔621🔥1🙏11
Создаём GPT с нуля: фундаментальный туториал от Карпатого 🧠

Есть контент, который не стареет. Например, туториал от Андрея Карпатого (сооснователь OpenAI, экс-директор по AI в Tesla), где он с нуля на Python собирает и тренирует GPT от начала до конца: от определения nn.Module и оптимизации с помощью Flash Attention до настройки гиперпараметров и оценки результатов.

Да, в видео разбирают GPT-2, но его главный плюс, а не минус. Именно эту модель, в отличие от современных гигантов, можно реально натренировать на одной домашней GPU, пройдя своими руками весь путь от и до. При этом фундаментальные принципы, лежащие в основе современных LLM, там раскрыты полностью.

А код доступен на GitHub 🐍
9👍4🔥31