Кто-то протестировал 35 AI-моделей на 172 млрд токенов реальных вопросов по документам.
Цифры по галлюцинациям должны навсегда закрыть аргумент: «просто дайте модели документы».
Вот что на самом деле показали данные.
Лучшая модель во всём исследовании, в идеальных условиях, выдумывала ответы в 1,19% случаев. Это звучит немного — пока не понимаешь, что это потолок. Абсолютно лучший возможный результат. При оптимальных настройках, которые почти никогда не используются в реальных внедрениях.
Типичные топ-модели показывают 5–7% фабрикаций в задачах document Q&A.
Не на вопросах из памяти.
Не на абстрактном рассуждении.
А на вопросах, где ответ буквально лежит в документе перед моделью.
Медианное значение среди всех 35 протестированных моделей — около 25%.
То есть каждый четвёртый ответ — выдумка, даже когда исходный материал предоставлен.
Затем протестировали, что происходит при увеличении окна контекста. Всем компаниям, продающим 128K и 200K context как решение проблемы галлюцинаций, стоит внимательно прочитать этот момент.
При длине контекста 200K каждая модель в исследовании превысила 10% галлюцинаций. Показатель почти утроился по сравнению с оптимальными более короткими контекстами.
Чем длиннее окно контекста, тем выше уровень фабрикаций.
Фича, которую продают как решение проблемы, на практике заметно её усугубляет.
Есть ещё одно наблюдение, о котором говорят недостаточно.
Навык grounding (привязки к источнику) и способность избегать фабрикаций — это две разные способности у моделей.
Модель может отлично находить релевантную информацию в документе, но при этом плохо справляться с тем, чтобы не придумывать факты. Это разные метрики, и между ними нет надёжной корреляции. Нельзя предполагать, что если модель хорошо делает retrieval, то она меньше галлюцинирует.
172 млрд токенов. 35 моделей.
Вывод у всех один и тот же.
Передача LLM самого документа не решает проблему галлюцинаций. Она лишь меняет форму их проявления.
👉 @PythonPortal
Цифры по галлюцинациям должны навсегда закрыть аргумент: «просто дайте модели документы».
Вот что на самом деле показали данные.
Лучшая модель во всём исследовании, в идеальных условиях, выдумывала ответы в 1,19% случаев. Это звучит немного — пока не понимаешь, что это потолок. Абсолютно лучший возможный результат. При оптимальных настройках, которые почти никогда не используются в реальных внедрениях.
Типичные топ-модели показывают 5–7% фабрикаций в задачах document Q&A.
Не на вопросах из памяти.
Не на абстрактном рассуждении.
А на вопросах, где ответ буквально лежит в документе перед моделью.
Медианное значение среди всех 35 протестированных моделей — около 25%.
То есть каждый четвёртый ответ — выдумка, даже когда исходный материал предоставлен.
Затем протестировали, что происходит при увеличении окна контекста. Всем компаниям, продающим 128K и 200K context как решение проблемы галлюцинаций, стоит внимательно прочитать этот момент.
При длине контекста 200K каждая модель в исследовании превысила 10% галлюцинаций. Показатель почти утроился по сравнению с оптимальными более короткими контекстами.
Чем длиннее окно контекста, тем выше уровень фабрикаций.
Фича, которую продают как решение проблемы, на практике заметно её усугубляет.
Есть ещё одно наблюдение, о котором говорят недостаточно.
Навык grounding (привязки к источнику) и способность избегать фабрикаций — это две разные способности у моделей.
Модель может отлично находить релевантную информацию в документе, но при этом плохо справляться с тем, чтобы не придумывать факты. Это разные метрики, и между ними нет надёжной корреляции. Нельзя предполагать, что если модель хорошо делает retrieval, то она меньше галлюцинирует.
172 млрд токенов. 35 моделей.
Вывод у всех один и тот же.
Передача LLM самого документа не решает проблему галлюцинаций. Она лишь меняет форму их проявления.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤26👍14🤯4
Всегда используйте подготовленные выражения, чтобы предотвратить SQL-инъекции.
Вот пример кода, который делает вашу программу уязвимой к малым атакам:
Когда вы пишете код таким образом, опасность заключается в том, как формируется SQL-запрос до того, как он попадет в базу данных. Прежде чем база данных увидит запрос, Python вставляет ввод пользователя напрямую в SQL-строку. База данных получает уже готовое SQL-выражение и просто выполняет его. У базы данных нет способа понять, какая часть — это данные, а какая — SQL-логика. Риск в том, что данные могут изменить логику программы.
Когда вы используете подготовленные выражения:
Вы отделяете SQL-запрос от входных данных. Вместо того чтобы вставлять значения прямо в строку запроса, вы разделяете SQL-логику и ввод пользователя. Теперь база данных воспринимает ввод как данные, а не как выполняемый SQL-код. Вот в чем заключается суть защиты.
👉 @PythonPortal
Вот пример кода, который делает вашу программу уязвимой к малым атакам:
user_input = request.form['username']
query = f"SELECT * FROM users WHERE username = '{user_input}'"
cursor.execute(query)
Когда вы пишете код таким образом, опасность заключается в том, как формируется SQL-запрос до того, как он попадет в базу данных. Прежде чем база данных увидит запрос, Python вставляет ввод пользователя напрямую в SQL-строку. База данных получает уже готовое SQL-выражение и просто выполняет его. У базы данных нет способа понять, какая часть — это данные, а какая — SQL-логика. Риск в том, что данные могут изменить логику программы.
Когда вы используете подготовленные выражения:
user_input = request.form['username']
query = "SELECT * FROM users WHERE username = ?"
cursor.execute(query, (user_input,))
Вы отделяете SQL-запрос от входных данных. Вместо того чтобы вставлять значения прямо в строку запроса, вы разделяете SQL-логику и ввод пользователя. Теперь база данных воспринимает ввод как данные, а не как выполняемый SQL-код. Вот в чем заключается суть защиты.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤23🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Как на самом деле работают LLM
Недавно прошёл 2-часовой вебинар на эту тему.
42 слайда — делюсь с вами
https://paraschopra.github.io/how-llms-work/
(стрелки влево и вправо на компьютере, свайп влево и вправо на мобильном устройстве)
👉 @PythonPortal
Недавно прошёл 2-часовой вебинар на эту тему.
42 слайда — делюсь с вами
https://paraschopra.github.io/how-llms-work/
(стрелки влево и вправо на компьютере, свайп влево и вправо на мобильном устройстве)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍6
Самые быстрорастущие проекты на GitHub в этом месяце:
1. openclaw/openclaw (122K stars)
ваш собственный персональный AI-ассистент, работает 24/7 на любой ОС
2. obra/superpowers (30.7K stars)
фреймворк agentic-skills. plug-and-play инструменты для AI-агентов
3. ruvnet/RuView (30.4K stars)
превращает обычные Wi-Fi сигналы в определение позы человека в реальном времени
без камер, без датчиков — только Wi-Fi
4. 666ghj/MiroFish (17K stars)
движок swarm intelligence, который предсказывает что угодно
5. moeru-ai/airi (16K stars)
self-hosted AI-компаньон с голосовым чатом в реальном времени
работает на вашей машине — вы полностью его контролируете
6. shanraisshan/claude-code-best-practice (11.8K stars)
репозиторий с лучшими практиками разработки с Claude Code
7. badlogic/pi-mono (11.8K stars)
полный toolkit для AI-агентов: CLI, единый LLM API, web-интерфейс, Slack-бот
8. bytedance/deer-flow (10.4K stars)
open-source SuperAgent от ByteDance — самостоятельно исследует, пишет код и создаёт
9. shareAI-lab/learn-claude-code (9K stars)
создание клона Claude Code с нуля — нужен только bash
10. p-e-w/heretic (7.6K stars)
автоматически убирает guardrails у любой языковой модели
👉 @PythonPortal
1. openclaw/openclaw (122K stars)
ваш собственный персональный AI-ассистент, работает 24/7 на любой ОС
2. obra/superpowers (30.7K stars)
фреймворк agentic-skills. plug-and-play инструменты для AI-агентов
3. ruvnet/RuView (30.4K stars)
превращает обычные Wi-Fi сигналы в определение позы человека в реальном времени
без камер, без датчиков — только Wi-Fi
4. 666ghj/MiroFish (17K stars)
движок swarm intelligence, который предсказывает что угодно
5. moeru-ai/airi (16K stars)
self-hosted AI-компаньон с голосовым чатом в реальном времени
работает на вашей машине — вы полностью его контролируете
6. shanraisshan/claude-code-best-practice (11.8K stars)
репозиторий с лучшими практиками разработки с Claude Code
7. badlogic/pi-mono (11.8K stars)
полный toolkit для AI-агентов: CLI, единый LLM API, web-интерфейс, Slack-бот
8. bytedance/deer-flow (10.4K stars)
open-source SuperAgent от ByteDance — самостоятельно исследует, пишет код и создаёт
9. shareAI-lab/learn-claude-code (9K stars)
создание клона Claude Code с нуля — нужен только bash
10. p-e-w/heretic (7.6K stars)
автоматически убирает guardrails у любой языковой модели
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20👍7🔥5
Python медленный, потому что его динамическая архитектура требует runtime-dispatch при выполнении каждой операции.
В этой статье много хороших разборов, которые помогают лучше понять, как работает Python. Очень хорошая работа!
👉 @PythonPortal
В этой статье много хороших разборов, которые помогают лучше понять, как работает Python. Очень хорошая работа!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍3
Представили browser-whisper
Транскрибация аудио в текст, которая работает нативно прямо в браузере.
Использует WebCodecs и WebGPU под капотом.
Особенности:
- без настройки backend
- не требуется API-ключ
- 100% приватно и работает офлайн
- всего 3 строки кода, чтобы встроить
Установка:
GitHub-репозиторий ↓
https://github.com/tanpreetjolly/browser-whisper
👉 @PythonPortal
Транскрибация аудио в текст, которая работает нативно прямо в браузере.
Использует WebCodecs и WebGPU под капотом.
Особенности:
- без настройки backend
- не требуется API-ключ
- 100% приватно и работает офлайн
- всего 3 строки кода, чтобы встроить
Установка:
npm i browser-whisper
GitHub-репозиторий ↓
https://github.com/tanpreetjolly/browser-whisper
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15
Media is too big
VIEW IN TELEGRAM
Python Tip: Перегрузка операторов
Это очень важная концепция в Python.
Задумывались ли вы, как Python понимает, что означает оператор
Перегрузка операторов означает задание специального поведения для операторов (
👉 @PythonPortal
Это очень важная концепция в Python.
Задумывались ли вы, как Python понимает, что означает оператор
+? Для чисел — это сложение; для строк — конкатенация; для списков — объединение. Это и есть перегрузка операторов в действии.Перегрузка операторов означает задание специального поведения для операторов (
+, -, *, == и т. д.) в ваших пользовательских классах. Вы определяете, как эти операторы должны работать с вашими объектами.Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍4
Alibaba показали, что AI в кодинге не отнимает работу — он пишет легаси, которое ты будешь чинить ближайшие 10 лет 🤣
Пройти кодинг-тест один раз — легко. Поддерживать этот код 8 месяцев, чтобы он не развалился? Для AI почти невозможно.
Alibaba протестировали 18 AI-агентов на 100 реальных кодовых базах в течение 233 дней. Смотрели не на «быстрые фиксы», а на долгосрочную стабильность.
Результаты впечатлили:
— 75% моделей ломали уже работающий код в процессе поддержки
— Только Claude Opus 4.5/4.6 держали >50% zero-regression rate
— Все остальные накапливали техдолг, который в итоге «ронял» кодовую базу
Проблема в том, что мы до сих пор ориентировались на snapshot-бенчмарки вроде HumanEval — «работает ли сейчас?»
Новый бенчмарк SWE-CI задаёт другой вопрос:
Большинство AI-агентов - это quick-fix артисты:
код проходит тесты сегодня, но завтра превращается в боль поддержки.
Они не строят софт, они скорее строят карточный домик.
Нарратив стал честнее: писать код могут почти все модели. поддерживать - почти ни одна.
👉 @PythonPortal
Пройти кодинг-тест один раз — легко. Поддерживать этот код 8 месяцев, чтобы он не развалился? Для AI почти невозможно.
Alibaba протестировали 18 AI-агентов на 100 реальных кодовых базах в течение 233 дней. Смотрели не на «быстрые фиксы», а на долгосрочную стабильность.
Результаты впечатлили:
— 75% моделей ломали уже работающий код в процессе поддержки
— Только Claude Opus 4.5/4.6 держали >50% zero-regression rate
— Все остальные накапливали техдолг, который в итоге «ронял» кодовую базу
Проблема в том, что мы до сих пор ориентировались на snapshot-бенчмарки вроде HumanEval — «работает ли сейчас?»
Новый бенчмарк SWE-CI задаёт другой вопрос:
«А будет ли это работать через 8 месяцев эволюции?»
Большинство AI-агентов - это quick-fix артисты:
код проходит тесты сегодня, но завтра превращается в боль поддержки.
Они не строят софт, они скорее строят карточный домик.
Нарратив стал честнее: писать код могут почти все модели. поддерживать - почти ни одна.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤39👍15😁1
Какие-то гении выложили в open source полноценный набор инструментов для отслеживания спутников и декодирования их радиосигналов локально.
Тебе даже не нужен интернет — используется SDR (software-defined radio), чтобы напрямую принимать погодные снимки и сырые данные из космоса прямо на твой жёсткий диск.
100% open source.
👉 @PythonPortal
Тебе даже не нужен интернет — используется SDR (software-defined radio), чтобы напрямую принимать погодные снимки и сырые данные из космоса прямо на твой жёсткий диск.
100% open source.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34🤔4❤1
Фильтр Калмана оценивает истинное состояние системы на основе шумных измерений.
Он работает, объединяя две вещи:
• модель эволюции системы
• неточные показания датчиков
Алгоритм выполняется в цикле из двух шагов.
1. predict (предсказание)
- используется модель системы для оценки следующего состояния.
- на выходе получаем предсказанное состояние и неопределённость.
2. update (обновление)
- поступает новое измерение.
- оно сравнивается с предсказанием.
- оценка корректируется.
Коррекция взвешивается с помощью коэффициента Калмана (Kalman Gain):
• больше доверия модели → небольшая коррекция
• больше доверия датчику → сильная коррекция
Неопределённость отслеживается с помощью ковариационной матрицы (Covariance Matrix).
Со временем оценка сходится.
Шум отфильтровывается.
Проявляется истинное состояние.
Используется в:
• локализации в робототехнике
• беспилотных автомобилях
• дронах и системах управления полётом
• GPS-трекинге
• объединении данных с датчиков (sensor fusion)
Это рекурсивная система, которая непрерывно уточняет своё представление о состоянии мира в условиях неопределённости.
👉 @PythonPortal
Он работает, объединяя две вещи:
• модель эволюции системы
• неточные показания датчиков
Алгоритм выполняется в цикле из двух шагов.
1. predict (предсказание)
- используется модель системы для оценки следующего состояния.
- на выходе получаем предсказанное состояние и неопределённость.
2. update (обновление)
- поступает новое измерение.
- оно сравнивается с предсказанием.
- оценка корректируется.
Коррекция взвешивается с помощью коэффициента Калмана (Kalman Gain):
• больше доверия модели → небольшая коррекция
• больше доверия датчику → сильная коррекция
Неопределённость отслеживается с помощью ковариационной матрицы (Covariance Matrix).
Со временем оценка сходится.
Шум отфильтровывается.
Проявляется истинное состояние.
Используется в:
• локализации в робототехнике
• беспилотных автомобилях
• дронах и системах управления полётом
• GPS-трекинге
• объединении данных с датчиков (sensor fusion)
Это рекурсивная система, которая непрерывно уточняет своё представление о состоянии мира в условиях неопределённости.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤6🔥3
Перестаньте использовать Python-код для построения «пирамид» или «стрелок»
Если у вас слишком много уровней вложенных😄
Посмотрите:
Это называется «антипаттерн стрелки» (Arrow Anti-Pattern) или «пирамида смерти» (Pyramid of Doom). Основной сценарий спрятан в самом низу. Чтобы понять, что делает код, приходится держать в голове 4+ уровней вложенности.
А вот этот вариант гораздо лучше:
Это линейный стиль «сверху вниз», а не «вглубь и обратно». Ошибки явно обрабатываются в начале, а основная логика выделена в конце. Если данные некорректны — происходит ранний выход из функции (early return).
👉 @PythonPortal
Если у вас слишком много уровней вложенных
if, код перестаёт быть читаемым и удобным для поддержки — вы строите пирамиду. Посмотрите:
def process_user(user_data):
if user_data:
if 'name' in user_data:
if user_data['name']:
if 'email' in user_data:
if validate_email(user_data['email']):
return save_user(user_data)
else:
return "Invalid email"
else:
return "Email missing"
else:
return "Name empty"
else:
return "Name missing"
else:
return "No data"
Это называется «антипаттерн стрелки» (Arrow Anti-Pattern) или «пирамида смерти» (Pyramid of Doom). Основной сценарий спрятан в самом низу. Чтобы понять, что делает код, приходится держать в голове 4+ уровней вложенности.
А вот этот вариант гораздо лучше:
def process_user(user_data):
# Сначала обрабатываем все ошибки
if not user_data:
return "No data"
if 'name' not in user_data:
return "Name missing"
if not user_data['name']:
return "Name empty"
if 'email' not in user_data:
return "Email missing"
if not validate_email(user_data['email']):
return "Invalid email"
return save_user(user_data)
Это линейный стиль «сверху вниз», а не «вглубь и обратно». Ошибки явно обрабатываются в начале, а основная логика выделена в конце. Если данные некорректны — происходит ранний выход из функции (early return).
Please open Telegram to view this post
VIEW IN TELEGRAM
❤28👍11😁3🤝2
Код на Python:
Каков результат выполнения этого кода?
👉 @PythonPortal
print('Yes' if all([]) or any([]) else 'No')Каков результат выполнения этого кода?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12😁2
Кто-то выложил в open source компьютер, который работает даже тогда, когда весь интернет отключен.
Он называется Project N.O.M.A.D.
Это автономный офлайн-сервер для выживания с AI, Википедией, картами, медицинскими справочниками и полноценными образовательными курсами.
Никакого интернета. Никакого облака. Никаких подписок. Он просто работает.
Вот что внутри:
→ Локальный AI-ассистент на базе Ollama (полностью офлайн)
→ Вся Википедия, доступная для скачивания и поиска
→ Офлайн-карты любого выбранного региона
→ Медицинские справочники и гайды по выживанию
→ Полные курсы Khan Academy с отслеживанием прогресса
→ Инструменты шифрования и анализа данных через CyberChef
→ Загрузка документов с семантическим поиском (локальный RAG)
И вот самая интересная часть:
Солнечная панель, аккумулятор, мини-ПК и Wi-Fi-точка доступа. Всё. Это и есть твоя автономная офлайн-станция знаний. Потребление — от 15 до 65 Вт. Работает из хижины, автодома, парусной лодки или бункера.
Компании продают «prepper-накопители» со статичными PDF за $185. А здесь ты получаешь полноценный AI-мозг, целую энциклопедию и реальные курсы — бесплатно.
Одна команда для установки.
100% open source. Лицензия Apache 2.0.
👉 @PythonPortal
Он называется Project N.O.M.A.D.
Это автономный офлайн-сервер для выживания с AI, Википедией, картами, медицинскими справочниками и полноценными образовательными курсами.
Никакого интернета. Никакого облака. Никаких подписок. Он просто работает.
Вот что внутри:
→ Локальный AI-ассистент на базе Ollama (полностью офлайн)
→ Вся Википедия, доступная для скачивания и поиска
→ Офлайн-карты любого выбранного региона
→ Медицинские справочники и гайды по выживанию
→ Полные курсы Khan Academy с отслеживанием прогресса
→ Инструменты шифрования и анализа данных через CyberChef
→ Загрузка документов с семантическим поиском (локальный RAG)
И вот самая интересная часть:
Солнечная панель, аккумулятор, мини-ПК и Wi-Fi-точка доступа. Всё. Это и есть твоя автономная офлайн-станция знаний. Потребление — от 15 до 65 Вт. Работает из хижины, автодома, парусной лодки или бункера.
Компании продают «prepper-накопители» со статичными PDF за $185. А здесь ты получаешь полноценный AI-мозг, целую энциклопедию и реальные курсы — бесплатно.
Одна команда для установки.
100% open source. Лицензия Apache 2.0.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤40👍19🤣5🤔1
Самые быстрорастущие проекты на GitHub за эту неделю:
1. msitarzewski/agency-agents (+23.2K stars)
полноценное AI-агентство у вас под рукой: фронтенд-волшебники, комьюнити-ниндзя, «проверяльщики реальности».
2. obra/superpowers (+19.2K stars)
фреймворк agentic-навыков, который только что достиг 100K звёзд. plug-and-play инструменты для разработки с AI-агентами.
3. 666ghj/MiroFish (+17.6K stars)
движок роевого интеллекта, который умеет предсказывать что угодно. простой, универсальный, с открытым исходным кодом.
4. volcengine/OpenViking (+10.2K stars)
open-source база контекста для AI-агентов. объединяет память, ресурсы и навыки.
5. lightpanda-io/browser (+9.9K stars)
headless-браузер, созданный для AI и автоматизации. без Chrome, без лишнего. написан на Zig.
6. pbakaus/impeccable (+6.4K stars)
дизайн-язык, который прокачивает ваш AI-harness в плане дизайна. делает vibe-coded UI более осмысленным и целостным.
7. alibaba/page-agent (+6.2K stars)
in-page GUI-агент на JavaScript от Alibaba. позволяет управлять любым веб-интерфейсом с помощью обычного языка.
8. andrewyng/context-hub (+5.2K stars)
слой управления контекстом для AI-агентов от Andrew Ng.
9. langchain-ai/deepagents (+4.9K stars)
agent-harness с планированием, файловым backend’ом и возможностью спавнить сабагентов.
10. microsoft/BitNet (+4.8K stars)
официальный фреймворк Microsoft для 1-битных LLM. полная производительность при почти нулевых вычислительных затратах.
👉 @PythonPortal
1. msitarzewski/agency-agents (+23.2K stars)
полноценное AI-агентство у вас под рукой: фронтенд-волшебники, комьюнити-ниндзя, «проверяльщики реальности».
2. obra/superpowers (+19.2K stars)
фреймворк agentic-навыков, который только что достиг 100K звёзд. plug-and-play инструменты для разработки с AI-агентами.
3. 666ghj/MiroFish (+17.6K stars)
движок роевого интеллекта, который умеет предсказывать что угодно. простой, универсальный, с открытым исходным кодом.
4. volcengine/OpenViking (+10.2K stars)
open-source база контекста для AI-агентов. объединяет память, ресурсы и навыки.
5. lightpanda-io/browser (+9.9K stars)
headless-браузер, созданный для AI и автоматизации. без Chrome, без лишнего. написан на Zig.
6. pbakaus/impeccable (+6.4K stars)
дизайн-язык, который прокачивает ваш AI-harness в плане дизайна. делает vibe-coded UI более осмысленным и целостным.
7. alibaba/page-agent (+6.2K stars)
in-page GUI-агент на JavaScript от Alibaba. позволяет управлять любым веб-интерфейсом с помощью обычного языка.
8. andrewyng/context-hub (+5.2K stars)
слой управления контекстом для AI-агентов от Andrew Ng.
9. langchain-ai/deepagents (+4.9K stars)
agent-harness с планированием, файловым backend’ом и возможностью спавнить сабагентов.
10. microsoft/BitNet (+4.8K stars)
официальный фреймворк Microsoft для 1-битных LLM. полная производительность при почти нулевых вычислительных затратах.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11
Разберись с Multi-Stage Docker Builds - пригодится на собеседовании.
Что такое Multi-Stage Build?
Это способ использовать несколько инструкций
Зачем использовать Multi-Stage Builds?
- Чтобы не тащить в продакшен инструменты сборки и исходный код.
- Существенно уменьшить размер образа.
- Повысить безопасность и производительность.
Ниже пример Multi-Stage Dockerfile для Node.js
Пояснение:
- Первый этап: установка зависимостей и сборка приложения.
- Второй этап: используется лёгкий образ NGINX для раздачи собранных статических файлов.
В финальный образ попадает только результат сборки.
Плюсы:
- Меньший размер итогового образа.
- Чёткое разделение ответственности (build vs runtime).
- Работает с любым языком и фреймворком.
👉 @PythonPortal
Что такое Multi-Stage Build?
Это способ использовать несколько инструкций
FROM в Dockerfile, чтобы собирать чистые, компактные и готовые к продакшену образы. Позволяет разделить этапы сборки и выполнения .Зачем использовать Multi-Stage Builds?
- Чтобы не тащить в продакшен инструменты сборки и исходный код.
- Существенно уменьшить размер образа.
- Повысить безопасность и производительность.
Ниже пример Multi-Stage Dockerfile для Node.js
# Stage 1: Build
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# Stage 2: Serve
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html
EXPOSE 80
Пояснение:
- Первый этап: установка зависимостей и сборка приложения.
- Второй этап: используется лёгкий образ NGINX для раздачи собранных статических файлов.
В финальный образ попадает только результат сборки.
Плюсы:
- Меньший размер итогового образа.
- Чёткое разделение ответственности (build vs runtime).
- Работает с любым языком и фреймворком.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4
Наткнулся на портфолио одного сеньор-разраба
использует Linux с 1999
27 лет опыта
C/C++ (27 лет), JS (24 года), Python (20 лет), Java (22 года), Go, Rust…
чел в одном языке имеет больше опыта, чем многие из нас вообще живут
совсем другая лига
портфолио → http://kamilnowicki.com
👉 @PythonPortal
использует Linux с 1999
27 лет опыта
C/C++ (27 лет), JS (24 года), Python (20 лет), Java (22 года), Go, Rust…
чел в одном языке имеет больше опыта, чем многие из нас вообще живут
совсем другая лига
портфолио → http://kamilnowicki.com
Please open Telegram to view this post
VIEW IN TELEGRAM
😁34🤯17❤2👍2