Проверяйте типы в вашем Python-кодбейзе в 15 раз быстрее с Pyrefly : https://github.com/facebook/pyrefly
Такие инструменты, как MyPy и Pyright, обрабатывают файлы последовательно, поэтому с ростом кодовой базы увеличивается время ожидания.
Pyrefly — type checker от Meta, написанный на Rust, выполняет проверки параллельно, сохраняя почти постоянную производительность по мере роста кодовой базы.
Ключевые возможности:
• Перепроверяет только изменённые модули, ускоряя инкрементальные прогоны
• Автоматически выводит типы для переменных и возвращаемых значений
На кодовой базе PyTorch Pyrefly выполняет полный прогон за 2.4 секунды — примерно в 15 раз быстрее, чем Pyright, и в 20 раз быстрее, чем MyPy.
👉 @PythonPortal
Такие инструменты, как MyPy и Pyright, обрабатывают файлы последовательно, поэтому с ростом кодовой базы увеличивается время ожидания.
Pyrefly — type checker от Meta, написанный на Rust, выполняет проверки параллельно, сохраняя почти постоянную производительность по мере роста кодовой базы.
Ключевые возможности:
• Перепроверяет только изменённые модули, ускоряя инкрементальные прогоны
• Автоматически выводит типы для переменных и возвращаемых значений
На кодовой базе PyTorch Pyrefly выполняет полный прогон за 2.4 секунды — примерно в 15 раз быстрее, чем Pyright, и в 20 раз быстрее, чем MyPy.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍3
Что если можно было бы сфотографировать свои рукописные заметки и превратить их в чистый, структурированный текст?
Большинство OCR-инструментов ориентированы на печатный текст и плохо справляются с рукописными заметками, особенно если в них есть диаграммы, формулы и свободная запись.
Chandra OCR создан именно для этого кейса. Он извлекает текст, изображения и диаграммы из рукописных заметок и реконструирует их в чистый Markdown или HTML.
Сравнение с другими OCR-инструментами:
• 85.9% в целом на бенчмарке olmOCR, опережая olmOCR 2 (82.4%), GPT-4o (69.9%), Gemini Flash 2 (63.8%) и Mistral OCR (72.0%)
• 89.3% на рукописной математике — области, где большинство OCR-инструментов испытывают сложности
• Поддерживает более 90 языков из коробки
https://github.com/datalab-to/chandra
👉 @PythonPortal
Большинство OCR-инструментов ориентированы на печатный текст и плохо справляются с рукописными заметками, особенно если в них есть диаграммы, формулы и свободная запись.
Chandra OCR создан именно для этого кейса. Он извлекает текст, изображения и диаграммы из рукописных заметок и реконструирует их в чистый Markdown или HTML.
Сравнение с другими OCR-инструментами:
• 85.9% в целом на бенчмарке olmOCR, опережая olmOCR 2 (82.4%), GPT-4o (69.9%), Gemini Flash 2 (63.8%) и Mistral OCR (72.0%)
• 89.3% на рукописной математике — области, где большинство OCR-инструментов испытывают сложности
• Поддерживает более 90 языков из коробки
https://github.com/datalab-to/chandra
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10
Можно буквально поискать
Спасибо, вайб-кодеры 🙏
👉 @PythonPortal
OPENAI_API_KEY на GitHub — и найти кучу утёкших API-ключей.Спасибо, вайб-кодеры 🙏
Please open Telegram to view this post
VIEW IN TELEGRAM
😁50👍8
Что если ваш AI-ассистент действительно мог бы запоминать, с кем он общается?
Когда вы строите AI-приложение с использованием API OpenAI или Anthropic, каждый диалог начинается с нуля — без встроенной памяти между сессиями.
Добавление памяти вручную через векторную базу данных, такую как ChromaDB, требует писать собственную логику извлечения, дедупликации и скоупинга поверх слоя хранения.
mem0 решает всё это одним вызовом функции. Просто передавайте диалоги и получайте релевантные «воспоминания» при необходимости.
Ключевые возможности:
• Автоматическое извлечение фактов из сырых диалогов через memory.add()
• Кросс-сессионный поиск через memory.search() в любой последующей беседе
• Автоматическое разрешение конфликтов при изменении пользовательских предпочтений со временем
Кроме того, mem0 — open-source. Установить можно через
👉 @PythonPortal
Когда вы строите AI-приложение с использованием API OpenAI или Anthropic, каждый диалог начинается с нуля — без встроенной памяти между сессиями.
Добавление памяти вручную через векторную базу данных, такую как ChromaDB, требует писать собственную логику извлечения, дедупликации и скоупинга поверх слоя хранения.
mem0 решает всё это одним вызовом функции. Просто передавайте диалоги и получайте релевантные «воспоминания» при необходимости.
Ключевые возможности:
• Автоматическое извлечение фактов из сырых диалогов через memory.add()
• Кросс-сессионный поиск через memory.search() в любой последующей беседе
• Автоматическое разрешение конфликтов при изменении пользовательских предпочтений со временем
Кроме того, mem0 — open-source. Установить можно через
pip install mem0ai.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12
Трудно запомнить разницу между
- Буква "p" (
- Буква "f" (
Чтобы запомнить коды формата, можно воспользоваться: https://buff.ly/oEdYGMI
Хочешь распарсить строку в
Оба вызова возвращают
Хочешь отформатировать
👉 @PythonPortal
strptime и strftime?- Буква "p" (
strptime) — это про parsing, получение datetime из строки- Буква "f" (
strftime) — это про formatting, получение строки из datetimeЧтобы запомнить коды формата, можно воспользоваться: https://buff.ly/oEdYGMI
Хочешь распарсить строку в
datetime? Используй strptime, передавая (a) строку и (b) спецификацию формата даты:datetime.datetime.strptime('2026-04-01', '%Y-%m-%d')
datetime.datetime.strptime('26-April-01', '%y-%B-%d')Оба вызова возвращают
datetime.datetime(2026, 4, 1, 0, 0)Хочешь отформатировать
datetime в строку? Используй strftime:dt = datetime.datetime(2026, 4, 1, 13, 15, 17)
dt.strftime('%Y-%m-%d') # '2026-04-01'
dt.strftime('%Y-%m-%d %H:%M:%S') # '2026-04-01 13:15:17'
dt.strftime('%y-%B-%e %H:%M:%S') # '26-April- 1 13:15:17'
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2
Что если автоматизировать весь воркфлоу Google Workspace прямо из терминала?
Работа через браузер заставляет кликать по нескольким приложениям, чтобы открыть таблицу, проверить календарь и отправить фоллоу-ап письмо.
Такой ручной цикл быстро накапливает оверхед при ежедневных или еженедельных повторениях.
gws — это интерфейс командной строки, который объединяет все сервисы Workspace за простыми командами в терминале с структурированным JSON-выводом, готовым для скриптов.
Ключевые возможности:
• Единый интерфейс для Drive, Gmail, Calendar, Sheets, Docs и других сервисов
• JSON-вывод, который напрямую пайпится в существующие скрипты и воркфлоу
• 100+ навыков для ИИ-агентов, позволяющих языковым моделям оркестрировать задачи Workspace программно
https://github.com/googleworkspace/cli
👉 @PythonPortal
Работа через браузер заставляет кликать по нескольким приложениям, чтобы открыть таблицу, проверить календарь и отправить фоллоу-ап письмо.
Такой ручной цикл быстро накапливает оверхед при ежедневных или еженедельных повторениях.
gws — это интерфейс командной строки, который объединяет все сервисы Workspace за простыми командами в терминале с структурированным JSON-выводом, готовым для скриптов.
Ключевые возможности:
• Единый интерфейс для Drive, Gmail, Calendar, Sheets, Docs и других сервисов
• JSON-вывод, который напрямую пайпится в существующие скрипты и воркфлоу
• 100+ навыков для ИИ-агентов, позволяющих языковым моделям оркестрировать задачи Workspace программно
https://github.com/googleworkspace/cli
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
GOOGLE выкатили инструмент для детектирования типов файлов
долгое время использовался внутри — Gmail, Drive, Safe Browsing, сотни миллиардов файлов каждую неделю
затем открыли исходники
называется magika — определяет реальный тип файла, а не то, за что он себя выдаёт
переименовал вредонос в "resume.pdf"? magika определит
замаскировал скрипт под изображение? magika определит
любые трюки с расширениями? magika обходит их
модель обучена на 100 млн файлов
200+ типов контента
точность ~99%
около 5 мс на файл
одна команда:
тот же инструмент, который защищает пользователей Google, можно использовать в своих системах
👉 @PythonPortal
долгое время использовался внутри — Gmail, Drive, Safe Browsing, сотни миллиардов файлов каждую неделю
затем открыли исходники
называется magika — определяет реальный тип файла, а не то, за что он себя выдаёт
переименовал вредонос в "resume.pdf"? magika определит
замаскировал скрипт под изображение? magika определит
любые трюки с расширениями? magika обходит их
модель обучена на 100 млн файлов
200+ типов контента
точность ~99%
около 5 мс на файл
одна команда:
pip install magika
тот же инструмент, который защищает пользователей Google, можно использовать в своих системах
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - google/magika: Fast and accurate AI powered file content types detection
Fast and accurate AI powered file content types detection - google/magika
👍24❤7
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣71❤17😁2😢1
Новая статья: системная инженерия
Код-агенты снизили порог входа в написание кода, но не снизили требования к продакшн-софту.
Агентное ПО — это всё тот же софт. Агент заменяет бизнес-логику, всё остальное остаётся без изменений.
https://ashpreetbedi.com/articles/systems-engineering
👉 @PythonPortal
Код-агенты снизили порог входа в написание кода, но не снизили требования к продакшн-софту.
Агентное ПО — это всё тот же софт. Агент заменяет бизнес-логику, всё остальное остаётся без изменений.
https://ashpreetbedi.com/articles/systems-engineering
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Определяй функции на обычном языке и запускай их локально: PAW
PAW компилирует спецификации на естественном языке в компактные нейронные программы. После компиляции они работают как обычные Python-функции (без интернета, без внешнего сервиса, без оплаты за вызовы).
Нейронная программа объединяет дискретный текст и непрерывную LoRA для адаптации фиксированного интерпретатора.
Подходит для нечетких задач: триаж по срочности, починка сломанного JSON, фильтрация логов, роутинг инструментов.
Хорошо сочетается с код-агентами: http://programasweights.com/agents
Интерпретатор — предобученный Qwen3 0.6B, без модификаций. Вся адаптация под задачи происходит через скомпилированную нейронную программу.
На FuzzyBench: 73.4% точности против 9.8% у прямого промпт-инжиниринга той же 0.6B. Даже Qwen3 32B даёт только 68.7%.
Их интерпретатор на базе GPT-2 — всего 124M параметров, достаточно компактный, чтобы полностью работать в браузере через WebAssembly.
Скачиваешь базовую модель ~134 МБ один раз, затем каждая нейронная программа занимает ~5 МБ. Сервер для инференса не нужен.
python:
js:
👉 @PythonPortal
PAW компилирует спецификации на естественном языке в компактные нейронные программы. После компиляции они работают как обычные Python-функции (без интернета, без внешнего сервиса, без оплаты за вызовы).
Нейронная программа объединяет дискретный текст и непрерывную LoRA для адаптации фиксированного интерпретатора.
Подходит для нечетких задач: триаж по срочности, починка сломанного JSON, фильтрация логов, роутинг инструментов.
Хорошо сочетается с код-агентами: http://programasweights.com/agents
Интерпретатор — предобученный Qwen3 0.6B, без модификаций. Вся адаптация под задачи происходит через скомпилированную нейронную программу.
На FuzzyBench: 73.4% точности против 9.8% у прямого промпт-инжиниринга той же 0.6B. Даже Qwen3 32B даёт только 68.7%.
Их интерпретатор на базе GPT-2 — всего 124M параметров, достаточно компактный, чтобы полностью работать в браузере через WebAssembly.
Скачиваешь базовую модель ~134 МБ один раз, затем каждая нейронная программа занимает ~5 МБ. Сервер для инференса не нужен.
python:
pip install programasweightsjs:
npm install @programasweights/webPlease open Telegram to view this post
VIEW IN TELEGRAM
❤6
Совет по Git
Интерактивно просматривай и добавляй изменения частями (патчами), вместо того чтобы добавлять всё сразу:
Почему это полезно:
• добавляешь только нужные изменения
• пропускаешь случайные или незавершённые правки
• разбиваешь работу на чистые и сфокусированные коммиты
👉 @PythonPortal
Интерактивно просматривай и добавляй изменения частями (патчами), вместо того чтобы добавлять всё сразу:
git add -pПочему это полезно:
• добавляешь только нужные изменения
• пропускаешь случайные или незавершённые правки
• разбиваешь работу на чистые и сфокусированные коммиты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤5🤝2
Построение надёжной RAG-системы — это не просто подключение векторной базы данных. Это проектирование интеллектуального пайплайна с балансом между точностью извлечения, логикой маршрутизации и строгой оценкой.
Хорошо спроектированная RAG-архитектура включает:
• Продвинутую сборку запроса с использованием реляционных, графовых и векторных баз данных для контекстного понимания
• Интеллектуальную маршрутизацию (логическую + семантическую) для оптимального выбора промптов и эффективности системы
• Многоэтапное извлечение с уточнением и переранжированием для повышения релевантности и снижения галлюцинаций
• Гибкие стратегии генерации, такие как Self-RAG, RRR и циклы активного извлечения
• Надёжные пайплайны индексирования: семантический чанкинг, иерархическая кластеризация (RAPTOR) и специализированные эмбеддинги (ColBERT)
• Непрерывную оценку с использованием фреймворков RAGAS, Grouse и DeepEval для измеримой производительности
Современные ИИ-системы требуют не только больших языковых моделей, но и качественных пайплайнов данных, точного извлечения и дисциплины в оценке.
Если ты строишь масштабируемые ИИ-продукты, архитектура RAG-системы становится конкурентным преимуществом.
#RAG #GenerativeAI #AIArchitecture #MachineLearning #LLM #DataEngineering #AIEngineering
👉 @PythonPortal
Хорошо спроектированная RAG-архитектура включает:
• Продвинутую сборку запроса с использованием реляционных, графовых и векторных баз данных для контекстного понимания
• Интеллектуальную маршрутизацию (логическую + семантическую) для оптимального выбора промптов и эффективности системы
• Многоэтапное извлечение с уточнением и переранжированием для повышения релевантности и снижения галлюцинаций
• Гибкие стратегии генерации, такие как Self-RAG, RRR и циклы активного извлечения
• Надёжные пайплайны индексирования: семантический чанкинг, иерархическая кластеризация (RAPTOR) и специализированные эмбеддинги (ColBERT)
• Непрерывную оценку с использованием фреймворков RAGAS, Grouse и DeepEval для измеримой производительности
Современные ИИ-системы требуют не только больших языковых моделей, но и качественных пайплайнов данных, точного извлечения и дисциплины в оценке.
Если ты строишь масштабируемые ИИ-продукты, архитектура RAG-системы становится конкурентным преимуществом.
#RAG #GenerativeAI #AIArchitecture #MachineLearning #LLM #DataEngineering #AIEngineering
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Как использовать borb для создания простого PDF на Python
👉 @PythonPortal
from borb.pdf.canvas.layout.page_layout.multi_column_layout import SingleColumnLayout
from borb.pdf.canvas.layout.text.paragraph import Paragraph
from borb.pdf.document import Document
from borb.pdf.page.page import Page
from borb.pdf.pdf import PDF
def main(pdf_path):
pdf = Document()
# Добавляем пустую страницу в PDF
page = Page()
pdf.append_page(page)
# Создаём лэйаут для размещения текста
layout = SingleColumnLayout(page)
# Добавляем текст с помощью класса Paragraph
layout.add(Paragraph("Hello from borb!"))
with open(pdf_path, "wb") as pdf_fh:
PDF.dumps(pdf_fh, pdf)
if __name__ == "__main__":
main("demo.pdf")
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
❤31😁6
Знал ли ты, что Python может открыть вкладку браузера?
Без фреймворков. Всего одна строка.
Вот как запустить URL — удобно для создания утилит, повышения продуктивности или автоматического открытия документации из скриптов.
Попробуй сам.🙂
👉 @PythonPortal
Без фреймворков. Всего одна строка.
Вот как запустить URL — удобно для создания утилит, повышения продуктивности или автоматического открытия документации из скриптов.
Попробуй сам.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍36🔥3❤1
Docker Tip
Вот как можно проанализировать, что раздувает образ.
Как известно, каждый Docker-образ состоит из слоёв.
Каждый слой добавляется отдельной строкой в Dockerfile.
Эти слои позволяют понять, почему образ большой, медленно собирается или плохо кэшируется.
Вот как можно проинспектировать слои и посмотреть, что изменилось в каждом из них.
Можно использовать утилиту
Она даёт визуальное представление:
✅ всех созданных слоёв
✅ какие файлы были добавлены или изменены
✅ сколько места занимает каждый слой
При анализе слоёв образа можно определить:
- какая команда добавляет лишний объём
- как оптимизировать Dockerfile для более компактных и эффективных сборок
Также утилита показывает метрику эффективности образа, которая отражает, сколько данных дублируется или расходуется впустую между слоями.
👉 @PythonPortal
Вот как можно проанализировать, что раздувает образ.
Как известно, каждый Docker-образ состоит из слоёв.
Каждый слой добавляется отдельной строкой в Dockerfile.
Эти слои позволяют понять, почему образ большой, медленно собирается или плохо кэшируется.
Вот как можно проинспектировать слои и посмотреть, что изменилось в каждом из них.
Можно использовать утилиту
dive.Она даёт визуальное представление:
При анализе слоёв образа можно определить:
- какая команда добавляет лишний объём
- как оптимизировать Dockerfile для более компактных и эффективных сборок
Также утилита показывает метрику эффективности образа, которая отражает, сколько данных дублируется или расходуется впустую между слоями.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4