DZone.com Feed на русском Заметка

DZone.com Feed на русском

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

Трэд заметок

На протяжении всей моей карьеры системы наблюдаемости и мониторинга играли очень важную роль в обеспечении стабильности, доступности и масштабируемости систем при их проектировании, независимо от того, обрабатывает ли система миллионы или миллиарды событий в день. Разрабатывая основную инфраструктуру для коммуникационных платформ, конвейеров соответствия корпоративным требованиям и высокопроизводительных транзакционных систем, я неоднократно видел, как фоновая инструментация может незаметно стать узким местом при высокой производственной нагрузке.Телеметрия и наблюдаемость сопряжены со своими собственными проблемами. Инструментация телеметрии без снижения производительности бизнес-приложений в реальном времени, увеличения задержки запросов или раздувания облачных расходов часто изначально отодвигается на второй план, но становится очень важной по мере масштабирования системы. Более того, это гораздо более сложная проблема, чем обработка самих доменных событий в производственной среде.
Одна из моих любимых вещей в гонках Формулы-1 — это данные, которые за ними стоят. Автомобили Формулы-1 — самые сложные и передовые в любом гоночном чемпионате. Они собирают огромные объемы телеметрических данных. Трассы также собирают данные во время мероприятий, и инженеры-гонщики анализируют их неделю за неделей. Они изучают все: от погоды и температуры шин до скорости на выходе из поворота. Данные в значительной степени продвигают этот вид спорта вперед.Изучая графовые базы данных и Neo4j, я понял, что это идеальный инструмент для ответа на вопрос, который меня интересовал. Мы все видели или слышали о "Шести степенях Кевина Бейкона", где почти любого актера можно проследить до звезды фильма "Свободные". Мне стало интересно: может ли это работать для пилотов Формулы-1? По сравнению с этим, это гораздо меньший набор данных, чем у известных актеров.
Программное обеспечение, сгенерированное ИИ, требует происхождения, которое сохраняется за пределами временных взаимодействий. Существующие проверки кода не раскрывают исходную модель, влияющие на нее подсказки или контекст выполнения. Происхождение устраняет этот пробел, рассматривая генерацию кода как событие в отслеживаемой цепочке поставок. Эта концепция соответствует установленным стандартам, таким как W3C PROV для моделирования происхождения и SLSA для проверки производства программных артефактов. Ключевой принцип заключается в отделении авторства от происхождения, поскольку происхождение описывает истоки, а не владение. Юридическое владение контентом, сгенерированным ИИ, определяется законом об авторском праве и договорными соглашениями, а не только процессом генерации. Бюро по авторскому праву США подчеркивает необходимость значительного человеческого авторства для возможности защиты авторским правом. Происхождение служит доказательством для атрибуции и подотчетности. Оно поддерживает аудиты и проверки, предоставляя проверяемую историю. В конечном итоге, происхождение обеспечивает прозрачность в жизненном цикле разработки программного обеспечения с использованием ИИ.
Системы агентов все чаще делятся на специализированные сервисы: планирующий агент делегирует исследование, исследовательский агент вызывает извлечение и синтез, а агент по соблюдению требований проверяет результат перед разрешением действия. Открытые стандарты, такие как A2A, формализуют связь между независимыми агентами, но совместимость транспорта — лишь часть производственной проблемы. Запросы могут быть потеряны после принятия, повторные попытки могут привести к дублированию дорогостоящей работы, вызывающие стороны могут исчезнуть, пока удаленные задачи продолжаются, а цепочки из нескольких агентов могут стать трудными для восстановления.Temporal Nexus решает другую проблему. Он соединяет приложения Temporal через надежные контракты обслуживания, позволяя возможности агента вести себя менее как хрупкая передача по HTTP и более как надежная распределенная операция.
Самовосстанавливающийся SQL-конвейер не должен означать автономную генерацию SQL с последующим привилегированным выполнением. На практике более безопасная интерпретация уже, где языковая модель предлагает исправление, а детерминированные средства контроля решают, является ли это исправление синтаксически корректным, семантически правдоподобным, операционно безопасным и пригодным для выполнения. Это различие важно, поскольку тот же механизм, который исправляет переименованный столбец, может также генерировать непреднамеренное удаление (DELETE), расширять соединение (join) или сканировать неожиданно большой набор данных.Функции структурированного вывода могут ограничивать ответ LLM определенной схемой, но соответствие схеме не эквивалентно корректности базы данных или авторизации. Structured Outputs от OpenAI предназначен для того, чтобы сгенерированный вывод соответствовал предоставленным JSON-схемам, и не проверяет семантику SQL или безопасность выполнения.
Хост изолирован. Вредоносный процесс остановлен. Скомпрометированные учетные данные отозваны до того, как злоумышленник сможет использовать их снова. Обнаружение и реагирование сработали точно так, как задумано: автоматически, правильно и быстро.То, что следует за этим, обычно менее упорядочено. Злоумышленник может быть устранен, но лазейка, которую он использовал, может остаться открытой, ожидая следующей попытки. Отчет Veracode "Состояние безопасности программного обеспечения" дает представление о масштабах проблемы. Критическая техническая задолженность выросла на 20% по сравнению с прошлым годом, а количество уязвимостей высокого риска, считающихся одновременно серьезными и легко эксплуатируемыми, увеличилось на 36%. Обнаружение достигло прогресса, но быстрое выявление проблемы и внедрение исправлений явно не одно и то же.
В большинстве конвейеров "RAG поверх PDF" есть шаг, о котором мало кто говорит: что-то должно превратить отсканированный счет, многоколоночный договор или сфотографированный чек в текст, над которым модель может реально рассуждать. В стеке Microsoft этим чем-то обычно является SDK Document Intelligence, ранее Form Recognizer, и его стоит понимать самому по себе, а не рассматривать как черный ящик, который работает до начала интересной части.Это практическое углубленное изучение именно этого SDK. Не обзор всех SDK Foundry Tools — Vision, Speech и Content Safety заслуживают отдельного рассмотрения, а реальная сборка с использованием Document Intelligence: извлечение макета в виде чистого markdown, извлечение структурированных полей из известного типа документа, классификация документов перед их маршрутизацией и обучение пользовательской модели извлечения на ваших собственных размеченных данных.
Пакетная обработка остается жизненно важной, поскольку многие бизнес-операции не подходят для интерактивных запросов. Такие задачи, как пересчет цен, сверка транзакций, миграция записей, генерация отчетов, обработка счетов, переклассификация клиентов или применение правил к миллионам записей, могут потребовать значительного времени. Обработка их как стандартных запросов приводит к хрупким системам, увеличению времени ожидания пользователей, частым тайм-аутам, сложным повторным попыткам и возможным несоответствиям данных.Пакетная модель обрабатывает большие рабочие нагрузки предсказуемо, инкрементально и с контролем над прогрессом и восстановлением. Вместо обработки массивной операции как единого цикла, пакетная обработка использует задания, шаги, блоки, контрольные точки, фильтрацию и возможность перезапуска. Этот подход отделяет длительные задачи обработки данных от пользовательского опыта, обеспечивая при этом структурированную модель выполнения. В этой статье мы сосредоточимся на Jakarta Batch и рассмотрим его неизменную актуальность для современных корпоративных приложений.
Многошаговые процессы распространены в UX, включая онбординг, оформление заказа, настройку учетной записи, процессы утверждения, мастера конфигурации и административные задачи. Они требуют от пользователей перемещения по нескольким экранам, сохраняя при этом согласованное рабочее состояние. Задача состоит в том, чтобы поддерживать это состояние активным в течение всего взаимодействия, но не дольше. Область действия запроса слишком коротка, в то время как область действия сеанса часто выходит за рамки потребностей бизнес-процесса.Jakarta Faces решает эту проблему с помощью @FlowScoped, который управляет состоянием на основе жизненного цикла потока, а не одной страницы или всего сеанса. В этой статье используется приложение для сегментации клиентов, чтобы продемонстрировать, как поток может направлять пользователей через настройку, предварительный просмотр и подтверждение, сохраняя при этом состояние на каждом этапе. Такой подход создает более чистую модель для UX в стиле мастера: область действия начинается, когда пользователь входит в поток, сохраняется во время навигации и заканчивается при выходе.
Большие промпты агентов часто начинаются как практическое упрощение: политики, правила домена, описания инструментов, примеры, процедуры восстановления и заметки по интеграции помещаются в одно системное сообщение, чтобы каждая возможность была всегда доступна. Такой подход перестает масштабироваться, как только агент накапливает десятки инструментов и специализированных рабочих процессов. Определения инструментов и инструкции потребляют контекст на каждом шаге, нерелевантный материал конкурирует с релевантным задаче материалом, и каждая интеграция увеличивает общий промпт, который становится труднее тестировать и версионировать.Текущие рекомендации платформ все чаще сходятся к другой модели: сначала раскрывать компактные метаданные возможностей, загружать подробные инструкции только после установления релевантности и выполнять специализированную логику в контролируемых границах инструментов или песочниц. Anthropic описывает это как прогрессивное раскрытие для навыков агентов, в то время как OpenAI поддерживает как навыки, так и отложенное обнаружение инструментов.
Производственные ошибки часто поступают с недостаточным количеством доказательств. Скриншот фиксирует конечное визуальное состояние, отчет о сбое идентифицирует стек, вызывающий ошибку, а заявка в службу поддержки описывает, что, по-видимому, произошло. Ни один из них не объясняет надежно последовательность, которая привела к сбою. Современные приложения представляют собой асинхронные системы, управляемые навигацией, сетевыми ответами, функциональными флагами, фоновой работой, локальным сохранением данных и изменяющимся состоянием пользовательского интерфейса. Поэтому полезный отчет о производственной ошибке требует большего, чем финальный кадр. Ему нужна ограниченная, безопасная для конфиденциальности история выполнения, которая реконструирует путь, ведущий к сбою.Основой воспроизводимого отчета об ошибке является семантический поток событий. Непрерывная видеозапись является дорогостоящей, ее трудно искать, и она, вероятно, будет захватывать информацию, не относящуюся к диагностике. Структурированные события меньше и напрямую описывают значимые переходы. Изменения навигации, действия кнопок, мутации состояния, сетевые исходы, оценки функциональных флагов, переходы жизненного цикла и сбои сохранения данных могут использовать общую модель событий.
Мобильные сети печально известны своей ненадежностью. Распространенный сценарий: пользователь нажимает "Оплатить сейчас" в приложении, запрос на оплату достигает сервера и обрабатывается, но ответ сети никогда не доходит до телефона. Клиент предполагает, что запрос не удался, и повторяет попытку, что приводит к двойному списанию средств. Именно такого рода ошибку решает идемпотентность.Идемпотентность означает, что повторение той же операции не имеет дополнительных эффектов, и вторая попытка должна распознать, что это дубликат, и не делать ничего нового. На практике мобильные разработчики должны рассматривать API платежей или заказов как идемпотентные, прикрепляя уникальные идентификаторы операций к запросам и дедуплицируя их на стороне сервера. С таким подходом, даже если сеть потеряет ответ или пользователь дважды нажмет кнопку, с пользователя будет списана сумма только один раз.
ИИ-агент редко следует долгосрочному плану точно так, как он был первоначально предложен. Результаты использования инструментов выявляют недостающие факты, внешние системы меняются, политики поступают через человеческий ввод, и модель может обнаружить, что ранее сделанное предположение было неверным. Агенты в стиле ReAct были специально разработаны вокруг этого чередования рассуждений, действий, наблюдений и обновлений плана, а не одного неизменного плана. Инженерная сложность начинается, когда эти действия имеют необратимые побочные эффекты.В Temporal завершенное Действие (Activity) — это не намерение, которое можно исключить из пересмотренного плана; его завершение и результат являются частью Истории Событий Рабочего Процесса (Workflow Event History). Поэтому перепланирование должно примирить новое решение с уже реально произошедшим прошлым.
Когда многие разработчики думают о рекомендательных системах, они думают о машинном обучении: моделях коллаборативной фильтрации, матричной факторизации, векторах вложений и конвейерах обучения. Что удивляет многих, так это то, что можно построить действительно полезную рекомендательную систему, используя не более чем графовую базу данных и несколько запросов Cypher. Никакого scikit-learn, никакого TensorFlow, никакого обучения моделей. Просто естественная структура данных делает свою работу.В этой статье мы построим рекомендательную систему продуктов на базе Neo4j Aura, используя два блокнота Jupyter. Первый сгенерирует реалистичный синтетический набор данных и загрузит его в Aura. Второй выполнит четыре рекомендательных запроса непосредственно в Cypher и визуализирует результаты с помощью Plotly. Все будет работать локально в виртуальном окружении Python против бесплатного облачного экземпляра Neo4j.
Качество программного обеспечения — это привычки. Качество наших релизов зависит от качества наших привычек. Никто не выпускает релиз, изобилующий дефектами, потому что не хотел качества. Скорее всего, они выпускают его потому, что мелкие ежедневные действия, которые могли бы его предотвратить — мелкие привычки — тихо прекратились. Один пропущенный тест, один PR, одобренный без прочтения, одно "исправим позже" за раз.Эта статья представляет собой краткое введение в эти привычки, малые и большие. Она объясняет, как малые привычки со временем становятся большими и как хорошие и плохие привычки накапливаются. Я также обсуждаю конкретную опасность, которую, по моему мнению, мы недооцениваем: что ИИ, используемый без понимания и суждения, не просто не способствует формированию привычек высокого качества. Он может активно разрушать те, которые у нас уже могут быть.
Инвентаризация рабочих процессов с использованием ИИ — это важнейший инструмент для понимания того, как команда фактически использует ИИ. Хотя отдельные сотрудники могут знать о своих собственных способах использования ИИ, это может создать ложное ощущение полного знания. Когда их просят объединить эти индивидуальные практики, команда часто осознает, насколько фрагментировано их коллективное понимание. Инвентаризация служит централизованным списком, документирующим каждую повторяющуюся задачу, выполняемую с помощью ИИ. Затем каждая задача классифицируется по предварительным категориям. Эта классификация помогает подготовить команду к принятию обоснованных решений о делегировании задач ИИ. Автор активно использует ИИ для различных задач, рассматривая его как производственный инструмент. Однако он подчеркивает, что ИИ не заменяет человеческое критическое мышление. В конечном итоге, инвентаризация рабочих процессов с использованием ИИ направлена на переход от размытого понимания к конкретным, действенным выводам об интеграции ИИ.
Объединение Temporal и LangGraph порождает обманчиво простой вопрос: какой рантайм владеет состоянием агента? Оба сохраняют прогресс выполнения, но сохраняют разные виды прогресса. Temporal реконструирует состояние Workflow из истории событий и повторно использует записанные результаты Activity во время воспроизведения. LangGraph сохраняет состояние графа в пределах области видимости потока как контрольные точки и возобновляет работу с границ супершагов. Рассмотрение этих механизмов как взаимозаменяемых создает неоднозначную семантику восстановления. Поэтому производственная интеграция требует явного определения ответственности за бизнес-прогресс, рабочее состояние агента и передачу между ними. Язык развертывания, бэкенд хранения, поставщик модели и топология хостинга остаются неуказанными предположениями.Текущая интеграция Temporal LangGraph сужает проблему. Его плагин Python в публичной предварительной версии может запускать узлы LangGraph как Temporal Activity или детерминированный код Workflow, в то время как Temporal обеспечивает долговечность; документация рекомендует контрольную точку LangGraph в памяти, а не отдельную контрольную точку PostgreSQL или Redis. Continue-As-New может переносить кэшированные результаты задач в следующий запуск Workflow.
Каждый корпоративный разговор об искусственном интеллекте в конечном итоге сводится к одному и тому же неудобному вопросу: что происходит с нашими данными, когда они покидают наш периметр? Независимо от того, подключаете ли вы большую языковую модель к конвейеру обработки претензий, создаете систему генерации с дополненной выборкой (RAG) для внутреннего поиска знаний или позволяете агентурному рабочему процессу выполнять автономные действия против производственных систем, ответ определяет, станет ли ваша инициатива в области ИИ конкурентным преимуществом или потенциальным инцидентом соответствия требованиям.В этой статье представлен многоуровневый подход с глубокой эшелонированной защитой для обеспечения безопасности корпоративных данных на протяжении всего жизненного цикла ИИ — от классификации данных и контроля доступа, через передачу и хранение, контракты с поставщиками, гигиену запросов, архитектурные шаблоны и сопоставление соответствия требованиям. Она написана для архитекторов, технических руководителей и инженеров-менеджеров, которые уже прошли этап обсуждения "следует ли нам использовать ИИ" и теперь живут в реальности "как нам сделать это безопасно в масштабе".
Представьте себе простую архитектуру. Кандидат отвечает на вопросы собеседования. Модель извлекает признаки из каждого ответа и обновляет текущую оценку. Между вопросами кандидат может задавать вопросы о должности, структуре команды, льготах и о том, что будет дальше. Это делает процесс человечным. Поэтому вы направляете эти вопросы той же разговорной модели, которая проводит собеседование, потому что у нее уже есть весь контекст. Одна модель, одно контекстное окно, один конвейер. Отправляйте.Теперь проследите, что вы только что построили. Логика оценки и логика вопросов и ответов разделяют состояние. Они разделяют контекстное окно. Они могут разделять запрос. Признаки, которые влияют на оценку кандидата, вычисляются в том же месте, где генерируются дружелюбные ответы об отпуске по уходу за ребенком. Нет никакой стены между "этот текст является свидетельством о кандидате" и "этот текст является ответом службы поддержки". Вы не спроектировали утечку. Вы спроектировали систему, в которой нет причин не допускать утечки.
Генерация с дополненным поиском стала стандартным шаблоном для привязки больших языковых моделей к корпоративным данным. Типичная реализация преобразует документы во вложения, сохраняет их в векторной базе данных, извлекает наиболее похожие фрагменты для запроса и добавляет эти фрагменты в подсказку модели. Это хорошо работает для поиска документов, поиска политик, справочного контента и других задач, где основным требованием является семантическое сходство. Однако корпоративные знания редко организованы как изолированные фрагменты. Они распределены по приложениям, базам данных, API, документам, иерархиям владения, каталогам продуктов и операционным записям. Как только вопросы требуют отношений, происхождения, времени или многошаговых рассуждений, одного только векторного поиска становится недостаточно.Следовательно, следующий этап корпоративного ИИ зависит от объединения RAG с корпоративными графами знаний.
Я помню, как сидел в "военной комнате" за три дня до крупного релиза. Мы были уверены: наш статический линтер доступности (a11y) проходил тесты, а наши юнит-тесты локализации (l10n), которые выполняли простое сравнение строк, показывали зеленый свет. Затем бета-пользователь сообщил, что нажать на кнопку primary_submit_action было физически невозможно, потому что наш файл локализации увеличил длину подписи кнопки, вытолкнув область касания за пределы экрана.Наши тесты не провалились, потому что они не смотрели на экран. Они смотрели на текстовые файлы. В тот момент я понял, что наша зависимость от хрупкого сравнения строк и базового статического линтинга уперлась в глухую стену при масштабировании. Нам нужен был новый подход, который не просто проверял бы наличие подписи, но и подтверждал бы семантическое соответствие между макетом и пользователем.
Каждая инженерная команда, о которой я читал, построившая непрерывное соответствие требованиям правильным образом, сообщает одно и то же: подготовка к аудиту сокращается с недель до часов, запросы на доказательства удовлетворяются с помощью запроса, а не суматохи, и команда по обеспечению соответствия перестает быть группой, с которой все боятся разговаривать.Стек, который приведет вас туда в 2026 году, больше не является экспериментальным. Каждый компонент имеет производственное качество, в основном является открытым исходным кодом, а шаблон задокументирован в достаточном количестве общедоступных инженерных блогов, чтобы вы могли скопировать его, ничего не изобретая заново. Это пошаговое руководство по тому, как на самом деле выглядит этот стек, что делает каждый уровень и какую конкретную выгоду приносит каждый из них.