Обновить
846.85

Python *

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

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

Grep-AST или Как мы заменили векторный поиск всего одной библиотекой

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

Всем привет! 

На связи София из команды применения больших языковых моделей ecom.tech. Сегодня хочу поделиться одной малоизвестной библиотекой, которую мы волей судьбы откопали на просторах github, попробовали использовать для поиска по нашей кодовой базе, и, о чудо! Это ощутимо помогло нам. Казалось бы, такой маленький шаг для человечества, но такой полезный для нашего проекта.

Читать далее

Новости

Все паттерны в автоматизации тестирования

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

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

Паттерны — это та вещь, которая моментально выдает уровень культуры кода и понимание инженерных практик. Неудивительно, что на собеседованиях на позицию Automation QA любят покопаться в этой теме.

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

Добро пожаловать в обсуждение! Буду рад конструктивной критике и дополнениям.

Читать далее

Использование алгоритма Hunt&Kill для создания клеточного лабиринта

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

Статья про то, как создавать клеточные лабиринты с помощью алгоритма Hunt&Kill + реализация на языке python.

Читать далее

Плюс, или как я соцсеть делал

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

История о том, как я создал свою соцсеть. И у меня даже получилось что-то. Видеохостинг, мессенджер, короткие ролики, стена и многое другое

Читать далее

ИИ вместо мануальщика: как я за неделю написал анализатор МРТ на Python

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

Сидячая работа — профессиональное проклятие разработчиков. Проводя по 10 часов за кодом, мы часто игнорируем «звоночки» от поясницы, пока они не превращаются в полноценные прострелы. После очередного визита к врачу я задался вопросом: а можно ли использовать современные LLM, чтобы упростить жизнь пациенту и наглядно отслеживать динамику лечения?

Так появился Spine Advisor — десктопное приложение на Python, которое использует мультимодальную модель Gemini 3 Flash для «чтения» МРТ и ведения цифрового дневника спины.

Читать далее

Как я создала локального AI-ассистента для системного аналитика: от Telegram-бота до полноценного помощника (часть 1)

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

Привет! Меня зовут Фаина, я системный аналитик с опытом более 5 лет. В последнее время все чаще стала задумываться как системному аналитику в текущих реалиях применять в работе ИИ. Так началось мое погружение в увлекательный мир LangChain, ИИ, RAG и векторные БД.

Для начального исследования я решила попробовать что-то достаточно простое и базовое. Так в мою голову пришла идея создать ТГ бота, который напоминает о запланированных делах

Читать далее

Telegram-бот для дисциплины: от монолита к модульности, реферальной системе и тотемным животным

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

Привет, Хабр! Тут я хочу подробно разобрать архитектурные решения, которые позволили проекту расти, и показать реальные куски кода, отвечающие за ключевую логику. Будет как и само изложение фактически проделанной работы, так и спорные ситуации, а также открытые вопросы, без которых масштабирование сложно будет в дальнейшем.

Что там интересного почитать, ну?

Coreness Flow: локальный AI-агент без облака и без лишнего кода

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

Большинство AI-инструментов — либо облако, либо код под каждую задачу. Coreness Flow строится вокруг событий: пришло сообщение, сработал cron, прилетел webhook — агент находит сценарий по триггеру и выполняет цепочку шагов.

Плагины декларируют вклад в интерфейс через config.json — фронт собирает вкладки и настройки по этим данным, без правки React-кода. Новый плагин — новая вкладка, без хирургии во фронтенде. RAG полностью локальный: BGE-M3 ONNX INT8 + Qdrant embedded в процессе приложения, гибридный поиск офлайн. Разбор архитектуры — API Bus, lifecycle, система сценариев с триггерами и переходами.

Читать далее

C помощью Python нашел следы Шекспира в песне Цоя

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

Даже беглый анализ некоторых текстов группы "Кино" наталкивает на мысль о довольно сильных символических значениях их стихотворных строк. Мне стало интересно провести сравнительный анализ текста песни Виктора Цоя и драмы Уильяма Шекспира "Гамлет" и найти пересечения, аллюзии и реминисценции в творчестве двух авторов помощью инструментов NLP на Python.

Читать далее

Часть 3: Архитектура нейросети для распознавания голосовых команд

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

def get_features_all(y, sr):
"""
Получаем различные параметры аудио которые в сумме дадут уникальный набор признаков
"""
# Частота цветности
chst = librosa.feature.chroma_stft(y=y, sr=sr)
# Среднеквадратичные колебания (энергия сигнала)
rmse = librosa.feature.rms(y=y)
# Пересечения нуля (частота смены знака сигнала)
zcr = librosa.feature.zero_crossing_rate(y)
# Центр масс звука (спектральный центр)
spe_c = librosa.feature.spectral_centroid(y=y, sr=sr)
# Ширина полосы частот
spe_b = librosa.feature.spectral_bandwidth(y=y, sr=sr)
# Спектральный спад частоты
rol = librosa.feature.spectral_rolloff(y=y, sr=sr)
# Значимые для обработки частоты (MFCC)
mfcc = librosa.feature.mfcc(y=y, sr=SR, n_mfcc=50,
n_mels=50, hop_length=1024)
return chst, rmse, zcr, spe_c, spe_b, rol, mfcc

Читать далее

От скалярной тоски к SIMD-эйфории: как подружить IDA Pro с инструкциями RISC-V P Extension

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

У нас в «Лаборатории Касперского» есть команда анализа защищенности, занимающаяся поиском уязвимостей в самых разнообразных системах. В ней работают эксперты, способные исследовать практически любое устройство (и публикующие технические заметки о своих находках). Но в жизни практически каждого исследователя безопасности прошивок однажды наступает момент, когда он или она сталкивается с новым или не особо известным микроконтроллером или свежей процессорной архитектурой с кастомными расширениями. В последнее время такие моменты наступают все чаще — за прошедшие несколько лет рынок наполнился огромным количеством новых чипов из Поднебесной, в частности, на базе RISC-V, со своими собственными расширениями и реализациями ядер. И вот не так давно на анализ нашим исследователям попало устройство c таким чипом на базе RISC-V, c базовым набором инструкций RV32I и расширением P (причем еще и не последней версии), добавляющим короткие SIMD-операции (Packed-SIMD Instructions).

То, что наши эксперты видели его впервые — абсолютно нормально. Но, по всей видимости, его впервые видел и IDA Pro — инструмент, которым пользуются наши исследователи. Поэтому им пришлось не только изучить ранний черновик расширения P (оно же Packed-SIMD Extension), но также реализовать поддержку IDA Pro ряда инструкций из него и произвести лифтинг, то есть трансляцию инструкций в промежуточное представление или язык, понятные декомпилятору. Именно этим опытом они и решили поделиться в данной статье.

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

Читать далее

Как меня опрокинул автоматический скоринг Сбера

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

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

Это разбор частного случая глазами человека, который внезапно оказался в очень неприятной жизненной ситуации в связи с тем, что в ответственный момент классификатор «принял решение» об отказе в ипотеке. В данный момент ситуация продолжает оставаться неясной и я нахожусь в стрессе. В какой-то степени, попытка хоть как-то разобраться в том, какие факторы повлияли на отказ в выдаче ипотеки, хоть как-то снижает уровень стресса.

Читать далее

Улучшение нейросетевого прогноза температуры воздуха

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

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

Речь пойдет о моем проекте edge-weather-forecast — лёгкой нейросетевой модели прогнозирования температуры, которую можно запускать прямо на метеостанции или на простом CPU-устройстве вроде Raspberry Pi.

Читать далее

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

Изучаем FastAPI за одну статью: от «Hello World» до структурированного API

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

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

В этом гайде я хочу взять вас за руку и провести по всем базовым концепциям фреймворка. Мы напишем свой первый API-сервис с нуля, разберем частые ошибки новичков с асинхронностью и поймем, как писать чистый код с помощью APIRouter. Спойлер: баз данных и сложных ORM сегодня не будет, сосредоточимся на чистом понимании магии FastAPI.

Читать далее

Что будет с джунами в эпоху ИИ-кодинга?

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

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

Если вы хотите узнать ещё больше об организации процессов ML-разработки, подписывайтесь на наш Телеграм-канал Варим ML

Давайте вообще кратко вспомним, в чём проблема. До текущего момента стандартный путь разработчика или ML-инженера выглядел примерно так:

Читать далее

Как обойти платную подписку Битрикс24 и вернуть своего бота к жизни: делаем свой провайдер событий на коробке

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

Привет, Хабр! (И тебе, страдалец, который три недели смотрит на мёртвого бота в Битриксе. И тебе, админ, который уже устал объяснять руководству, почему «оно перестало работать». И тебе, безопасник, который узнал, что данные компании летают через какой-то curator.pro и чуть не уронил кружку.)

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

Спойлер: стало хуже. Но мы справились.

Читать далее

Как я устал дебажить MAX API, отреверсил их вебхуки и отучил Cursor галлюцинировать

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

Как я устал дебажить MAX API, отреверсил их вебхуки и отучил Cursor галлюцинировать

Когда я писал своего первого более-менее серьезного бота под Max, случилась классика. Я и мой ИИ-ассистент (Cursor) пишем код, строго опираясь на официальную документацию Max API. Запускаю — падает. Сижу по 5-6 итераций, пытаюсь отдебажить базовый функционал, который под ту же Телегу пишется с закрытыми глазами.

В какой-то момент меня это достало. Я понял, что проблема не во мне и не в галлюцинациях нейронки. Я просто включил логирование всех входящих POST-запросов и стал дампить реальные вебхуки, которые прилетают от серверов Max. Открыв логи, я понял, почему мы так долго буксовали: то, что написано в документации, и то, что прилетает по факту — это две большие разницы. А слепая привычка писать архитектуру под Telegram Bot API делает только хуже.

Различия с официальной документацией Max API (Docs vs Реальность)

Вскрываем реальные вебхуки Max API

Почему ReAct-агенты ломаются в продакшене и чем их заменить

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

Приветствую читателей.
Мы пытались построить LLM-чат для продакшена.
Через месяц у нас был 20k-токенный prompt, 50 тулзов и ответы по 2 минуты.
В итоге пришлось отказаться от ReAct и перейти на LLMCompiler.

А начали мы с того что компания захотела поекспериментировать с созданием чата

Для начала освежим память как вообще работает llm и react архитектура.
С точки зрения разработчика, ллм - это функция, которая принимает на вход строку и отдает другую строку, входящая строка может прораммировать то, какой ответ будет, например, вы можете попросить ллм вести себя как чат, далее хранить историю входов и выходов и передавать ее опять в ллм.

Простейший пример чата.

Читать далее

Мой первый open source проект с Cursor и Opus 4.6 — GenAI Prices Parser

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

Запустил свой первый open source проект. Задача простая, но полезная: автоматический сбор цен на LLM-модели всех основных провайдеров и загрузка в PostgreSQL для BI-аналитики.

Что делает:

Каждый день скачивает актуальные цены из базы pydantic/genai-prices (29 провайдеров, 1100+ связок провайдеров и моделей)

Раскладывает в плоскую таблицу: провайдер, модель, контекстное окно, цена input/output за 1M токенов, кэширование, аудио

Загружает в PostgreSQL: текущий снимок + историческая витрина для отслеживания динамики цен

Читать далее

Алгоритм Крускала и кишки лабиринтов

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

Алгоритм Крускала (также алгоритм Краскала) - алгоритм, который преобразовывает связный неориентированный граф в минимальное остовное дерево. На самом деле пока что непонятно, что делает он, поэтому разберём поподробнее.

Итак, у нас есть связный граф, который хранится в виде списков рёбер (позже это будет важно). Предположим, у нас есть задание: нам нужно связать все вершины так, чтобы общий их вес будет минимальным. Если говорить более по-умному, нам нужно получить из графа именно это самое минимальное остовное дерево. 

Читать далее
1
23 ...