Большинство команд, которые делают data-агентов, городят целый зоопарк из роутеров, fine-tune моделей и RAG-пайплайнов поверх нескольких LLM.
OpenAI сделала иначе.
Их data-агент работает на одной модели и всего с 13 инструментами, при этом умеет ориентироваться в 1,5 эксабайта данных и 90 000 таблиц.
По словам команды, архитектура получилась на удивление простой.
Недавно OpenAI рассказала, как всё устроено под капотом:
• архитектура data-агента
• 6 уровней контекста, которые позволяют одной LLM уверенно работать с 90 000 таблиц
• 3 реальных сценария использования Codex внутри OpenAI
• 5 практических выводов для тех, кто строит собственных агентов под конкретную предметную область
• куда будет развиваться дата-платформа OpenAI дальше
Интересно, что главный вывод не про очередной сложный агентный фреймворк, а скорее про то, как далеко можно зайти с одной моделью, если правильно организовать контекст и инструменты.
👉 Java Portal
OpenAI сделала иначе.
Их data-агент работает на одной модели и всего с 13 инструментами, при этом умеет ориентироваться в 1,5 эксабайта данных и 90 000 таблиц.
По словам команды, архитектура получилась на удивление простой.
Недавно OpenAI рассказала, как всё устроено под капотом:
• архитектура data-агента
• 6 уровней контекста, которые позволяют одной LLM уверенно работать с 90 000 таблиц
• 3 реальных сценария использования Codex внутри OpenAI
• 5 практических выводов для тех, кто строит собственных агентов под конкретную предметную область
• куда будет развиваться дата-платформа OpenAI дальше
Интересно, что главный вывод не про очередной сложный агентный фреймворк, а скорее про то, как далеко можно зайти с одной моделью, если правильно организовать контекст и инструменты.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Паттерн Circuit Breaker не пытается бесконечно достучаться до упавшего сервиса. Он понимает, когда пора остановиться.
Closed → Open → Half-Open → Closed
Как работает:
• Closed — запросы проходят нормально, ошибки отслеживаются.
• Open — после достижения порога ошибок новые запросы сразу отклоняются без попытки обратиться к сервису.
• Half-Open — через некоторое время пропускается несколько тестовых запросов.
• Closed — если сервис восстановился, трафик возвращается в штатный режим.
Что это даёт:
• защищает систему от каскадных сбоев;
• снижает нагрузку на проблемный сервис;
• уменьшает задержки для клиентов;
• ускоряет восстановление после инцидентов.
Защищай. Быстро отказывай. Восстанавливайся. Повторяй.
#SystemDesign #SoftwareArchitecture #Microservices #DevOps #BackendDevelopment
👉 Java Portal
Closed → Open → Half-Open → Closed
Как работает:
• Closed — запросы проходят нормально, ошибки отслеживаются.
• Open — после достижения порога ошибок новые запросы сразу отклоняются без попытки обратиться к сервису.
• Half-Open — через некоторое время пропускается несколько тестовых запросов.
• Closed — если сервис восстановился, трафик возвращается в штатный режим.
Что это даёт:
• защищает систему от каскадных сбоев;
• снижает нагрузку на проблемный сервис;
• уменьшает задержки для клиентов;
• ускоряет восстановление после инцидентов.
Защищай. Быстро отказывай. Восстанавливайся. Повторяй.
#SystemDesign #SoftwareArchitecture #Microservices #DevOps #BackendDevelopment
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Многие пишут SQL-запросы сверху вниз и думают, что СУБД выполняет их в том же порядке.
Но SQL работает иначе.
Фактический порядок выполнения выглядит так:
1. FROM
2. JOIN
3. WHERE
4. GROUP BY
5. HAVING
6. SELECT
7. ORDER BY
8. LIMIT
Именно поэтому алиасы из SELECT нельзя использовать в WHERE, а ошибки в агрегатах часто оказываются не там, где их ищут.
Понимание порядка выполнения помогает:
• быстрее отлаживать запросы;
• правильно использовать агрегации;
• избегать логических ошибок;
• писать более предсказуемый SQL.
Если запрос ведёт себя странно, проверь не то, как он написан, а то, как его выполняет движок базы данных.
👉 Java Portal
Но SQL работает иначе.
Фактический порядок выполнения выглядит так:
1. FROM
2. JOIN
3. WHERE
4. GROUP BY
5. HAVING
6. SELECT
7. ORDER BY
8. LIMIT
Именно поэтому алиасы из SELECT нельзя использовать в WHERE, а ошибки в агрегатах часто оказываются не там, где их ищут.
Понимание порядка выполнения помогает:
• быстрее отлаживать запросы;
• правильно использовать агрегации;
• избегать логических ошибок;
• писать более предсказуемый SQL.
Если запрос ведёт себя странно, проверь не то, как он написан, а то, как его выполняет движок базы данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4
В Docker можно поднять полноценный Android-эмулятор одной командой.
Без установки Android Studio, ручной настройки AVD и прочей возни.
Что есть из коробки:
• аппаратное ускорение через GPU
• поддержка KVM для более высокой производительности
• headless-режим для CI/CD и автоматизации
• запуск полностью внутри Docker-контейнера
Удобная штука для тестирования Android-приложений, мобильной автоматизации и агентных сценариев.
Бесплатно и с открытым исходным кодом
https://github.com/HQarroum/docker-android
👉 Java Portal
Без установки Android Studio, ручной настройки AVD и прочей возни.
Что есть из коробки:
• аппаратное ускорение через GPU
• поддержка KVM для более высокой производительности
• headless-режим для CI/CD и автоматизации
• запуск полностью внутри Docker-контейнера
Удобная штука для тестирования Android-приложений, мобильной автоматизации и агентных сценариев.
Бесплатно и с открытым исходным кодом
https://github.com/HQarroum/docker-android
Please open Telegram to view this post
VIEW IN TELEGRAM
Два backend-разработчика решали одну и ту же задачу.
Вариант A:
Вариант B:
Какой запрос отправится в прод?
Многие выбирают B, потому что он выглядит надёжнее. Пользователь может ввести
Но есть нюанс.
В большинстве СУБД вызов
На 100 строках разницы не видно.
На 10 миллионах пользователей разница становится очень заметной.
Поэтому в проде обычно используют один из вариантов:
• хранить email в нормализованном виде (например, всегда lowercase);
• использовать case-insensitive collation;
• создать функциональный индекс на
Самая опасная часть запроса часто выглядит как самая безобидная.
👉 Java Portal
Вариант A:
SELECT *
FROM users
WHERE email = ?
Вариант B:
SELECT *
FROM users
WHERE LOWER(email) = LOWER(?)
Какой запрос отправится в прод?
Многие выбирают B, потому что он выглядит надёжнее. Пользователь может ввести
John@Example.com, а в базе лежит john@example.com.Но есть нюанс.
В большинстве СУБД вызов
LOWER() над колонкой ломает использование обычного индекса. Вместо быстрого Index Seek база часто уходит в полный скан таблицы.На 100 строках разницы не видно.
На 10 миллионах пользователей разница становится очень заметной.
Поэтому в проде обычно используют один из вариантов:
• хранить email в нормализованном виде (например, всегда lowercase);
• использовать case-insensitive collation;
• создать функциональный индекс на
LOWER(email).Самая опасная часть запроса часто выглядит как самая безобидная.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2
Spring Boot 4.1 получит поддержку ленивого получения JDBC-соединений
DataSource будет оборачиваться в🔥
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.1.0-RC1-Release-Notes
👉 Java Portal
DataSource будет оборачиваться в
LazyConnectionDataSourceProxy, а физическое соединение из пула станет запрашиваться только в тот момент, когда приложению действительно потребуется выполнить JDBC-запрос. https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-4.1.0-RC1-Release-Notes
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Spring Boot 4.1.0 RC1 Release Notes
Spring Boot helps you to create Spring-powered, production-grade applications and services with absolute minimum fuss. - spring-projects/spring-boot
🤯4
Лучшие практики Spring Boot REST API
Часть 1: Реализация API Get Collection
Часть 2: Реализация API Create и Update
Часть 3: Реализация FindById и DeleteById API
Часть 4: Обработка исключений в REST API
👉 Java Portal
Часть 1: Реализация API Get Collection
Часть 2: Реализация API Create и Update
Часть 3: Реализация FindById и DeleteById API
Часть 4: Обработка исключений в REST API
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
💡 Java: Используйте default-методы в интерфейсах для сохранения обратной совместимости (начиная с Java 8).
Если добавить новый default-метод в интерфейс, существующие реализации не придётся менять. Они автоматически получат реализацию по умолчанию.
#Java #Interfaces
👉 Java Portal
Если добавить новый default-метод в интерфейс, существующие реализации не придётся менять. Они автоматически получат реализацию по умолчанию.
#Java #Interfaces
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
10 июня(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
📂 Виктор Анохин, старший разработчик из WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Виктор будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Виктору
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Java: По возможности не возвращайте из методов изменяемые внутренние коллекции, чтобы:
Не раскрывать внутреннее состояние объекта, повышая безопасность.
Иметь возможность менять реализацию без риска сломать другие части приложения.
#Java #JavaDev
👉 Java Portal
Не раскрывать внутреннее состояние объекта, повышая безопасность.
Иметь возможность менять реализацию без риска сломать другие части приложения.
#Java #JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5