Обновить
595.7

Python *

Высокоуровневый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Ну это полный мэтч! Как мы сделали бота для знакомств в чатах

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели6.6K

Всем привет, я Иван, продакт-менеджер. И я состою в айтишном чате — человек двести, может, чуть больше. Там всё как обычно: обсуждаем новости, спорим про фреймворки, кидаем мемы.

Сообщений очень много, и когда новички приходят, пишут интро о себе — через пару минут их уже никто не видит, всё уходит в ленту. В какой-то момент стало интересно: можно ли эту проблему решить алгоритмом?

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

Читать далее

Как мы обучили нейросеть распознавать игральные кости

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6.6K

Могут ли игральные кости быть нечестными? Чтобы ответить на этот вопрос, недостаточно просто бросить кости пару раз. Нужны тысячи, а лучше сотни тысяч бросков. Делать это вручную — путь в никуда. Поэтому мы решили научить компьютер делать это за нас. В этой статье — история о том, как мы создали систему, способную распознавать игральные кости в реальном времени, и с какими трудностями столкнулись.

Читать далее

Свой оффлайн-ассистент на Phi-3-mini: Разворачиваем локальную модель нейросети для анализа данных с открытым кодом

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6K

Тренд на использование больших языковых моделей (LLM) не ослабевает, но облачные решения вроде ChatGPT или Gemini имеют ряд ограничений: зависимость от интернета, платные подписки и, что самое важное, конфиденциальность данных. Особенно остро последний вопрос стоит при работе с корпоративной или чувствительной информацией, которую нельзя загружать в чужие сервисы.

В этой статье я хочу поделиться опытом создания полностью локального AI-ассистента на основе Microsoft Phi-3-mini — компактной, но мощной модели, способной анализировать данные из CSV, JSON и TXT файлов. Весь проект представляет собой набор Python-скриптов с открытым исходным кодом, которые автоматизируют установку и предоставляют интуитивно понятный чат-интерфейс.

Почему Phi-3-mini?

Microsoft позиционирует семейство моделей Phi-3 как "достаточно маленькие" (Small Language Models), но при этом "достаточно умные". Phi-3-mini, обладая 3.8 миллиардами параметров, демонстрирует производительность, сопоставимую с моделями вроде Mixtral 8x7B и GPT-3.5, но в значительно меньшем размере. Это делает её идеальным кандидатом для локального запуска на потребительском железе.

Компактность: ~7-8 ГБ против десятков и сотен ГБ у более крупных моделей.

Эффективность: Оптимизирована для работы на GPU с ограниченными ресурсами.

Качество: Поддерживает контекст до 4K токенов и отлично справляется с логическими и аналитическими задачами, включая код.

Читать далее

Как я построил RAG-систему за вечер с помощью 5 open source-инструментов

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели22K

Команда Python for Devs подготовила практическое руководство по сборке полноценной RAG-системы из пяти open source-инструментов. MarkItDown, LangChain, ChromaDB, Ollama и Gradio превращают разрозненные документы в умную базу знаний с потоковой генерацией ответов. Всё локально, без облаков и с открытым кодом — попробуйте собрать свой ChatGPT прямо у себя.

Читать далее

Телеграмм бот на Python aiogram 3. Часть 4

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели6.9K

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

В Telegram существует два принципиально разных типа клавиатур, каждый из которых служит своей цели:

ReplyKeyboardMarkup: Постоянные кнопки, заменяющие стандартную клавиатуру.

InlineKeyboardMarkup: Встроенные в сообщение кнопки, которые отправляют боту "сигналы" (callback) и позволяют редактировать уже отправленный контент.

Читать далее

Самый скучный на свете взлом подарочных сертификатов

Время на прочтение5 мин
Охват и читатели26K

Привет, Хабр!

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

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

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

Читать далее

HumanDynamics: как мы построили цифровой мир, жители которого пошли в банк и взяли кредит

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели4.6K

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

Читать далее

Пул интерпретаторов в Python 3.14. Что, зачем и почему?

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7.5K

Как все знают, GIL (Global Interpreter Lock) не позволяет нескольким потокам CPython выполнять CPU-bound задачи параллельно. Глобальная блокировка интерпретатора предоставляет каждому потоку лишь небольшой интервал времени для работы. При этом планирование работы потоков (какому именно потоку из ожидающих предоставить разрешение на выполнение) осуществляется планировщиком операционной системы. Интерпретатор не является полноценным планировщиком работы потоков, он делегирует эту функцию операционной системе. GIL использует мьютексы ОС для блокировки работы потоков так, чтобы в один момент времени мог выполняться только один поток из нескольких.

Читать далее

От джуна к эксперту: как карта навыков и план развития помогают профессиональному росту Python-разработчика

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели11K

Привет! Меня зовут Евгений Бартенев, я техлид и автор курса «Python-разработчик» в Яндекс Практикуме. В профессии я уже больше 20 лет: прошёл путь от джуниора до эксперта по Python и видел, как меняется рынок и как вместе с ним меняются требования к разработчикам.

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

В этом материале поделюсь подходами, которые помогут выйти из подобной ситуации. Я расскажу, что такое план профессионального развития, зачем он нужен и как его использовать для личного роста, на собеседованиях, в обучении и в реальной работе. Затем покажу пример карты навыков Python-разработчика, дам шаблон плана и конкретные рекомендации, что делать, если вы действительно нацелены на движение вперёд и хотите вырасти до уровня эксперта.

Читать далее

Декораторы. Продвинутый уровень. Шаблон универсального декоратора

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели5.3K

Всем привет! Меня зовут Михаил, я веду Telegram-канал «Python Шпильки», где делюсь изящными приемами программирования. Сегодня я хочу рассказать об универсальном декораторе, который может принимать аргументы, а также вызываться без их приема. Для тех кто хорошо знает тему декораторов - ничего нового они тут не увидят! Этот пост для тех, кто, возможно, хочет более подробно понять тему декоратора. Итак, поехали.

Для начала приведу пример конструкции универсального декоратора:

Читать далее

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

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели16K

Paradox: что если заменить финансовые рынки математической моделью? В статье я смоделирую экономику блокчейн-протокола, где цена токена вычисляется по формуле, и покажу, как разные стратегии поведения влияют на доходность участников. Полный разбор механики и результатов.

Читать далее

DIY Observability для автотестов, используя Pytest, ClickHouse и Grafana

Уровень сложностиСредний
Время на прочтение25 мин
Охват и читатели4.8K

Всем привет! Меня зовут Андрей, я инженер по автоматизации тестирования в команде Озон Банка, занимающейся разработкой и поддержанием инструментов тестирования, которыми пользуется весь банк.

Сегодня я хотел бы поделиться опытом сбора технических метрик pytest и их анализа в целях выявления узких мест и ускорения выполнения тестов.

Читать далее

Занимательные графики. Python matplotlib

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели8.3K

Относительно недавно заинтересовался нейросетями и стал изучать python. Одной из первых библиотек, которой заинтересовался была matplotlib. Достаточная занимательная библиотека для построения научных графиков в Python. Она включает в себя функции для создания высококачественных визуализаций типа линейных диаграмм, гистограмм, диаграмм разброса и прочих. Такие графики крайне полезны для понимания процесса, вывода аналитики и прочих задач.

Читать далее

Ближайшие события

Все об устройстве MSK144 с примерами на Python (часть 2)

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели8.3K

MSK144 — цифровой протокол, разработанный Джо Тейлором (K1JT) и его командой в 2016 году для проведения связей через метеорное рассеивание.

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

Статья может быть интересна радиолюбителям и людям, интересующимся темой цифровой обработки сигналов.

Читать далее

Декораторы в Python для начинающих с домашним заданием

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели11K

Привет, Хабр! Если вы работаете с Python дольше пары недель, вы наверняка сталкивались с конструкцией, начинающейся с символа @. Это декораторы — мощный инструмент, который делает код чище, читабельнее и соответствует принципу DRY (Don't Repeat Yourself). Но за элегантным синтаксисом скрывается несколько ключевых концепций языка, которые важно понимать.

Читать далее

Я сделал Log Bull — простую open source альтернативу ELK, Loki и Graylog для сбора логов из кода (Python, Go, JS и т.д.)

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели9K

За последние ~5 лет я много раз сталкивался с задачей собирать логи: обычно из маленьких или средних по размеру кодовой базы проектов. Отправлять логи из кода не проблема, у Java и Go для этого есть библиотеки практически из коробки. А вот разворачивать что-то для их сбора — головняк. Понятно, что решаемый (ещё до ChatGPT, а сейчас так тем более), но всё же. Все системы логов, прежде всего, ориентированы на большой-большой enterprise мир и его требования, а не на простых смертных с несколькими палками, клеем и дедлайном "вчера".

Запуск ELK для меня каждый раз испытание: куча настроек, нетривиальный деплой, а при заходе в UI разбегаются глаза от вкладок. С Loki и Graylog — немного проще, но всё равно функций сильно больше, чем мне нужно. При этом разделять логи между проектами, добавлять других пользователей в систему так, чтобы они не видели лишнего — тоже не самый очевидный процесс.

Поэтому примерно год назад я решил, что сделаю свою систему для сбора логов для себя: максимально простую в использовании и запуске. Чтобы разворачивалась на сервере одной командой, вообще без настроек и без лишних вкладок в интерфейсе. Собственно, так появился и теперь вышел в open source Log Bull: система для сбора логов для разработчиков с проектами middle-sized размера.

Читать далее

История (и код на github) про то, как ChatGPT подружил проектный телеграм-чатик и таски в Jira

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.8K

(спойлер: в конце будет ссылка на GitHub)

Таск-менеджеры вроде Jira — хороший инструмент для ведения проектов. Вот только есть одна проблема — на них очень быстро забивают. В первую очередь — проектные менеджеры (на всякий случай: я тоже забиваю). Когда проект стартует, менеджер с командой, как правило, делают волевую попытку декомпозировать его на эпики и задачи. Каждая задача получает красивое описание, а иногда даже назначенных исполнителей и дедлайны.

Потом проект стартует…

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

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

Читать далее

Собираем MLOps-проект с нуля: Как я научил Telegram-бота искать скидки на Avito

Время на прочтение3 мин
Охват и читатели5.5K

Привет, Хабр! Каждый, кто хоть раз искал подержанную технику, знает эту боль: часы ручного мониторинга Avito, десятки страниц и попытки на глаз определить, адекватна ли цена. Выгодные предложения улетают за минуты.

Я решил подойти к этой задаче как инженер и создать личного ассистента, который бы делал всю грязную работу за меня: 24/7 сканировал Avito, сам оценивал адекватность цены и присылал мне в Telegram только самые сливки.

Так родилась идея проекта Intelligent Deal Finder. В этой статье я познакомлю вас со своим проектом, который решает эту задачу. Эта статья будет ознакомительной.

Читать далее

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

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.9K

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

Сложность языка зависит не только от его особенностей, но и от вашего опыта и готовности разбираться в материалах. Объективного критерия нет.

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

Читать далее

AI-генерация тестов: как превратить 3 месяца работы в 1 неделю

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели6.7K

AI генерирует тесты, но 95% из них не работают — галлюцинирует классы,
путает поля, использует несуществующие API. Знакомо? Мы в отделе RAPID прошли через
это на проекте с биржевым протоколом TWIME. Делимся итеративным подходом:
как за 3 шага превратить хаос из 307 тестов в 109 работающих.
С конкретными промптами, метриками и выводами.

Читать далее

Вклад авторов