𝗦𝗤𝗟 𝗙𝗿𝗼𝗺 𝗕𝗮𝘀𝗶𝗰𝘀 𝘁𝗼 𝗔𝗱𝘃𝗮𝗻𝗰𝗲𝗱: этот PDF-файл содержит SQL от начального до продвинутого уровня.
Этот 101-страничный PDF-файл вам понадобится для подготовки и повторения SQL перед любым собеседованием по данным.
👉 @PythonPortal
Этот 101-страничный PDF-файл вам понадобится для подготовки и повторения SQL перед любым собеседованием по данным.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤28👍9🔥4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁66❤5👍4
LandingAI выпустили бесплатный курс по Document AI. Там учат собирать пайплайны обработки документов, которые вытаскивают текст, таблицы, графики и формы, не теряя контекст разметки.
Проблема классического OCR в том, что оно “достаёт буквы”, но ломает смысл:
- у таблиц пропадает структура (включая merged cells)
- связи “график⬅️ ➡️ подпись” разваливаются
- порядок чтения в multi-column становится кашей
В курсе показывают, как строить агент-воркфлоу, которые читают документы ближе к тому, как это делает человек, через Agentic Document Extraction (ADE).
Что внутри:
- почему обычный OCR валится на сложных документах
- как детект layout + правильный reading order сохраняют структуру
- как парсить PDF в Markdown/JSON и не потерять layout
- как собирать RAG с ADE и векторными БД
- как деплоить event-driven документные пайплайны на AWS
3 часа, 6 практических примеров кода. Полностью бесплатно.
👉 @PythonPortal
Проблема классического OCR в том, что оно “достаёт буквы”, но ломает смысл:
- у таблиц пропадает структура (включая merged cells)
- связи “график
- порядок чтения в multi-column становится кашей
В курсе показывают, как строить агент-воркфлоу, которые читают документы ближе к тому, как это делает человек, через Agentic Document Extraction (ADE).
Что внутри:
- почему обычный OCR валится на сложных документах
- как детект layout + правильный reading order сохраняют структуру
- как парсить PDF в Markdown/JSON и не потерять layout
- как собирать RAG с ADE и векторными БД
- как деплоить event-driven документные пайплайны на AWS
3 часа, 6 практических примеров кода. Полностью бесплатно.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4🔥2
Истинная природа методов — это «специальные методы».
Про жизненный цикл инстанса.
▪️
Думаю, как конструктор используется очень часто. В основном это инициализация экземпляра (например, инициализация атрибутов). Отличие от
Возвращаемое значение всегда
▪️
В отличие от
Возвращаемое значение должно быть созданным экземпляром (обычно это экземпляр класса из аргумента
Типичное место применения
Ещё
▪️
Вызывается в момент, когда экземпляр уничтожается (например, через
👉 @PythonPortal
Про жизненный цикл инстанса.
__init__object.__init__(self[, ...])Думаю, как конструктор используется очень часто. В основном это инициализация экземпляра (например, инициализация атрибутов). Отличие от
__new__, о котором ниже: __init__ выполняется уже после создания экземпляра.Возвращаемое значение всегда
None.__new__object.__new__(cls[, ...])В отличие от
__init__, выполняется до создания экземпляра и отвечает именно за его создание. Поэтому это не инстанс-метод, а статический метод, но явно прописывать @staticmethod не нужно.Возвращаемое значение должно быть созданным экземпляром (обычно это экземпляр класса из аргумента
cls).Типичное место применения
__new__ это инициализация подклассов, которые наследуются от иммутабельных типов (int, str, tuple и т.д.). Они иммутабельные, поэтому после создания объекта нельзя менять атрибуты через __init__.Ещё
__new__ используют для реализации паттерна Singleton.__del__object.__del__(self)Вызывается в момент, когда экземпляр уничтожается (например, через
del). Явных популярных кейсов немного, но может быть полезно при отладке, чтобы понимать тайминг работы GC.Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4😢1
This media is not supported in your browser
VIEW IN TELEGRAM
Любой может программировать с помощью ИИ.
Вы используете ИИ без базовых знаний программирования:
👉 @PythonPortal
Вы используете ИИ без базовых знаний программирования:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥37😁24👍7❤1
This media is not supported in your browser
VIEW IN TELEGRAM
GitHub запустил свою платформу для обучения: все курсы и сертификаты в одном месте.
Git, GitHub, MCP, использование ИИ, VSCode и многое другое.
И большая часть контента бесплатна: → https://learn.github.com
👉 @PythonPortal
Git, GitHub, MCP, использование ИИ, VSCode и многое другое.
И большая часть контента бесплатна: → https://learn.github.com
Please open Telegram to view this post
VIEW IN TELEGRAM
❤34
Сюююда: GitHub-репозиторий, чтобы учиться AI Engineering.
Там собраны одни из лучших бесплатных курсов, статей, туториалов и видео по темам:
Математическая база
Основы AI и ML
Deep Learning и специализации
Generative AI
Большие языковые модели (LLM)
Гайды по prompt engineering
RAG, агенты и MCP
Смотри тут: https://github.com/ashishps1/learn-ai-engineering
👉 @PythonPortal
Там собраны одни из лучших бесплатных курсов, статей, туториалов и видео по темам:
Математическая база
Основы AI и ML
Deep Learning и специализации
Generative AI
Большие языковые модели (LLM)
Гайды по prompt engineering
RAG, агенты и MCP
Смотри тут: https://github.com/ashishps1/learn-ai-engineering
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍4
Изучи Python с Университетом University of Helsinki
✓ С официальным сертификатом
✓ С нуля до продвинутого уровня
✓ 14 частей с практическими заданиями
Весь контент доступен → здесь
👉 @PythonPortal
✓ С официальным сертификатом
✓ С нуля до продвинутого уровня
✓ 14 частей с практическими заданиями
Весь контент доступен → здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
pip 26.0: pre-release и фильтрация по времени загрузки
Три большие новые фичи:
▪️
▪️
▪️
Куда более подробный пост: читать
Официальный анонс здесь
Полный changelog здесь
👉 @PythonPortal
Три большие новые фичи:
--all-releases <package> и --only-final <package>: контроль pre-release по каждому пакету отдельно, плюс возможность отключить все pre-release пакеты через --only-final :all:--uploaded-prior-to <timstamp>: можно ограничить по времени загрузки пакета, например --uploaded-prior-to "2026-01-01T00:00:00Z"--requirements-from-noscript <noscript>: установка зависимостей, объявленных в inline metadata скрипта (PEP 723)Куда более подробный пост: читать
Официальный анонс здесь
Полный changelog здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
Richard Si
What's new in pip 26.0 - prerelease and upload-time filtering!
pip 26.0 includes support for reading requirements from inline noscript metadata, excluding distributions by upload time, per-package prerelease selection, and experimental support for in-process build dependencies.
❤10🔥6😢1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20🤔3👍1🔥1
Вот частое заблуждение про RAG
Когда говорят про RAG, обычно думают так: проиндексировали док → потом достали этот же док.
Но индексация ≠ ретривал.
То есть данные, которые ты индексируешь, не обязаны совпадать с теми данными, которые ты потом скармливаешь LLM на этапе генерации.
Вот 4 умных способа индексировать данные:
1) Chunk Indexing
▪️ Самый распространенный подход.
▪️ Режешь документ на чанки, строишь эмбеддинги и кладешь их в векторную базу.
▪️ Во время запроса просто достаешь ближайшие чанки.
Подход простой и рабочий, но большие или шумные чанки могут просаживать точность.
2) Sub-chunk Indexing
▪️ Берешь исходные чанки и дробишь их еще мельче на сабчанки.
▪️ Индексируешь уже эти более мелкие куски.
▪️ Но при выдаче все равно возвращаешь “большой” чанк для контекста.
Помогает, когда в одном абзаце/секции намешано несколько разных идей: шанс точно сматчиться с запросом выше.
3) Query Indexing
▪️ Вместо сырого текста генеришь гипотетические вопросы, на которые, по мнению LLM, этот чанк может ответить.
▪️ Эмбеддишь эти вопросы и сохраняешь.
▪️ При ретривале реальные пользовательские запросы обычно лучше ложатся на такие “вопросные” представления.
▪️ Похожая идея есть в HyDE, только там матчат гипотетический ответ с реальными чанками.
Кайфово для QA-систем, потому что уменьшает семантический разрыв между запросом пользователя и тем, что лежит в индексе.
4) Summary Indexing
▪️ Просишь LLM кратко резюмировать каждый чанк в компактную семантическую форму.
▪️ Индексируешь summary вместо исходного текста.
▪️ А возвращаешь все равно полный чанк для контекста.
Особенно эффективно для плотных или структурированных данных (типа CSV/таблиц), где эмбеддинги сырого текста часто слабо что-то выражают
👉 @PythonPortal
Когда говорят про RAG, обычно думают так: проиндексировали док → потом достали этот же док.
Но индексация ≠ ретривал.
То есть данные, которые ты индексируешь, не обязаны совпадать с теми данными, которые ты потом скармливаешь LLM на этапе генерации.
Вот 4 умных способа индексировать данные:
1) Chunk Indexing
Подход простой и рабочий, но большие или шумные чанки могут просаживать точность.
2) Sub-chunk Indexing
Помогает, когда в одном абзаце/секции намешано несколько разных идей: шанс точно сматчиться с запросом выше.
3) Query Indexing
Кайфово для QA-систем, потому что уменьшает семантический разрыв между запросом пользователя и тем, что лежит в индексе.
4) Summary Indexing
Особенно эффективно для плотных или структурированных данных (типа CSV/таблиц), где эмбеддинги сырого текста часто слабо что-то выражают
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14
Вот полный путь, который я бы рекомендовал, чтобы в этом году собрать production-grade AI-агентов:
▪️ база по Python и алгоритмам
▪️ математика и основы ML
▪️ трансформеры и LLM
▪️ prompt engineering
▪️ memory и RAG
▪️ tools и интеграции
▪️ фреймворки типа LangChain или CrewAI
▪️ multi-agent системы
▪️ тестирование, деплой, безопасность
👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁14❤5🤣5👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
Большой Python-грех: использовать изменяемый объект как аргумент по умолчанию
Не используй изменяемые объекты в качестве значений по умолчанию. В Python значения аргументов по умолчанию вычисляются один раз, в момент определения функции, а не при каждом ее вызове.
Если у тебя аргумент по умолчанию выглядит так:
Лучший вариант: ставить неизменяемый объект в значение по умолчанию. Тогда каждый вызов будет получать новый список, как в примере
👉 @PythonPortal
Не используй изменяемые объекты в качестве значений по умолчанию. В Python значения аргументов по умолчанию вычисляются один раз, в момент определения функции, а не при каждом ее вызове.
Если у тебя аргумент по умолчанию выглядит так:
items=[], этот список будет общим для всех вызовов, и ты получишь накапливающееся состояние, которого не планировал.Лучший вариант: ставить неизменяемый объект в значение по умолчанию. Тогда каждый вызов будет получать новый список, как в примере
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤10😁5👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁31🤣16❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Китайский агент для автоматизации рабочего стола, который работает полностью локально.
Он умеет запускать любые приложения, открывать файлы, серфить по сайтам и автоматизировать задачи без подключения к интернету.
100% Open-Source.
👉 @PythonPortal
Он умеет запускать любые приложения, открывать файлы, серфить по сайтам и автоматизировать задачи без подключения к интернету.
100% Open-Source.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤3🤔2