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

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

По вопросам: @obulygin91
Download Telegram
🧹 Пора навести порядок в списках Python! 💥 При помощи карточек вспоминаем, как удалять элементы: от del до list comprehensions.
🔥12👍521👌1👨‍💻1
This media is not supported in your browser
VIEW IN TELEGRAM
👨‍💻 Amazon неожиданно выкатили свою AI IDE — Kiro. Похоже, у Cursor появился серьезный конкурент от бигтеха.

Главная фишка, которой они трясут — переход от «вайб-кодинга» к «spec-driven development». Типа, ты больше не кидаешь в чат абстрактные идеи, а IDE сама раскладывает их на внятные спеки, архитектуру и таски. А уже потом по этому ТЗ работают AI-агенты.

Что еще обещают:
▫️ Автоматическое написание доков и тестов по триггерам (например, на save файла).
▫️ Полная совместимость с плагинами и настройками VS Code.
▫️ Можно скормить фотку диаграммы с доски, и она её поймет.

Звучит как попытка превратить тупого AI-ассистента в системного аналитика.

Ну и самое прекрасное — пока что всё это бесплатно, потому что "Preview" 🌚. Мы-то знаем, что это значит.

Тестим, пока дают: https://kiro.dev/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥2🤔21🌚1
*Какое-то большое число*
🔥2🙏22👍1
Что получим при запуске кода?
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