Интересное что-то
554 subscribers
2.79K photos
253 videos
140 files
4.59K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
Оркестратор AI-агента. 5 типов и инструкция по их применению.

В прошлом посте мы разобрали, из каких ингредиентов состоят агенты. Сегодня поговорим про оркестратор, который управляет процессом решения задачи и связывает все компоненты воедино.

От выбора оркестратора зависит, будет ли агент вашим надежным другом или галлюцинирующим кошмаром. Мы разберем 5 базовых типов (см. 5 картинок), которые нужно применять к разным задачам.

1. LLM-Workflow (Детерминированное исполнение)

Самый надежный и распространенный вариант в продакшене. Порядок действий жестко задан разработчиком в коде. LLM здесь используется как функция внутри жесткого графа: например, суммаризует ответ, извлекает сущности или классифицирует тексты.

Плюсы: надежно, предсказуемо, дешево.
Минусы: нужно этот граф написать руками. Для творческих процессов не подходит совсем.
Когда использовать: для процессов с высокими рисками и понятным регламентом. Например, умный документооборот, ответы на вопросы клиентов.

2. ReAct (Рассуждение и выбор действия)

Базовый вариант автономного агента. Процесс заранее не зафиксирован. Модель работает в цикле: "Подумал → Выбрал инструмент → Получил результат". Здесь уже сама LLM решает, какой инструмент вызвать и когда остановиться.

Плюсы: гибкость. Может выбирать разные действия под ситуацию.
Минусы: часто ломается в долгих задачах (застревает в цикле или забывает цель).
Когда использовать: для простых коротких задач с небольшим числом инструментов (например, «найди курс валюты и отправь в Slack»).

3. Reflexion (Рефлексия)

Умная надстройка над ReAct. В цикл добавляется этап "Рефлексии". Агент получает результат от инструмента, но не бежит дальше, а оценивает: "А то ли я сделал?". Если нет — пересматривает ответ. И так может делать несколько раз для одного действия. Мой любимый паттерн, я тоже мнительный :)

Плюсы: критически поднимает качество в задачах, где результат можно валидировать (код, математика).
Минусы: мнительность ест много токенов и замедляет работу.
Когда использовать: когда фидбек инструмента максимально полезен. Например, программирование, где фидбек — ошибка выполнения программы.

4. Plan-and-Execute (Планирование и исполнение)

Сначала LLM составляет план, затем шаг за шагом другой оркестратор (например, Reflexion) этот план исполняет. Всё работает в едином контекстном окне. Как только план выполнен, LLM проверяет: задача решена или нужно составить новый план?

Плюсы: рабочий вариант решения долгих задач без LLM-Workflow.
Минусы: страдает от "распухания" контекста. В истории накапливается столько мусора, что модель ломается.
Когда использовать: для длинных цепочек действий, где шаги жестко зависят друг от друга (любая последовательная аналитика).

5. Plan-and-Execute + Мультиагентность

План создается как в прошлом пункте, но каждую задачу изолированно решает отдельный оркестратор (субагент). У каждого субагента — своя узкая задача и только необходимая для неё информация, они не делятся контекстом.

Плюсы: мощь планирования + надежность исполнения
Минусы: можно использовать только для узкого класса задач
Когда использовать: всегда, когда задачу можно разбить на независимые блоки. Например, написание большого отчета (мы разбирали DeepResearch).

Резюме

Это 5 базовых паттернов. На практике мы их комбинируем. Ваш «агент мечты» может выглядеть как надежный LLM-Workflow, в узлах которого вызываются более автономные агенты для сложных задач.

Главное правило выбора: берите самую простую архитектуру, способную решить вашу задачу. Если вы можете написать детерминированный Workflow — напишите и забудьте. За каждую каплю автономности вы платите надежностью и рисками.
Forwarded from Math for Impact
Последовательная проверка SRM

TL;DR
Позволяет во время эксперимента проверять корректность долей выборок. Эффективен при длинных тестах.

Почему обсуждается?
Мы хотим останавливать эксперимент как можно раньше, если в нём есть ошибки. Один из простых индикаторов таких проблем — Sample Ratio Mismatch (SRM). Это сильное расхождение между планируемыми и фактическими долями участников в группах. SRM позволяет выявить сбои в рандомизации, ошибки в фильтрации и сетевые эффекты.

Проблема
Нужно принимать решение о наличии SRM без ожидания конца эксперимента и накопления всей выборки.

Предположения
1. Распределение пользователей по группам случайное, сетевые эффекты отсутствуют.

Решение
Фиксируем:
– вероятность ошибки α,
– ожидаемые доли групп p(1), …, p(k),
– параметры априорного распределения b(1), …, b(k).

Часто b(i) = 1 или B·p(i), где B > 0. Эти параметры влияют на баланс между мощностью и скоростью принятия решения.

Во время теста:
1. Добавляем наблюдение — номер группы, в которую попал новый пользователь.
2. Обновляем наблюдаемые доли групп q = (q(1), …, q(k)).
3. Считаем байесовское отношение правдоподобий O(q).
4. Если O(q) > 1 / α → считаем, что SRM присутствует; иначе — продолжаем.

Достоинства
– Быстрее останавливает тест в случае SRM.
– Статистика критерия и граница считаются по простым формулам.
– Для запуска достаточно зафиксировать всего один параметр — уровень значимости. Параметры априорного распределения можно задать равными единице.

Ограничения
– Обладает меньшей мощностью в сравнении с применением критерия хи-квадрат в конце эксперимента.
– Критерий консервативен: фактическая вероятность ошибки обычно ниже заданного α, из-за чего немного снижается мощность.
– Если данные поступают раз в день, их нужно случайно упорядочить перед подачей в критерий.
– Выбор параметров априорного распределения не всегда очевиден — требует экспертной настройки или моделирования.

Библиография
Основная статья:
Lindon M., Malek A. Anytime-valid inference for multinomial count data //Advances in Neural Information Processing Systems. – 2022. – Т. 35. – С. 2817-2831.
Популярное изложение:
A Better Way to Test for Sample Ratio Mismatches (SRMs) and Validate Experiment Implementations
На русском:
Как оценить валидность A/B-тестов. SRM и другие критерии
Forwarded from Artificial stupidity
#libraries

Еще одна интересная библиотека. В этот раз со всякими интерпретируемыми ML моделями.

imodels - sklearn-style библиотека с целым зоопарком методов интерпетируемого ML (авторы обещают там SoTA методы). Набор методов выглядит внушительно (но надо бы поковыряться).

Выглядит полезным тем, кто хочет поизвлекать правила из моделек или попробовать что-то более или менее современное из интерпретируемого ML.

Пример кода для одного из методов (а на картинке визуализация метода)
from sklearn.model_selection import train_test_split
from imodels import get_clean_dataset, HSTreeClassifierCV # import any imodels model here

# prepare data (a sample clinical dataset)
X, y, feature_names = get_clean_dataset('csi_pecarn_pred')
X_train, X_test, y_train, y_test = train_test_split(
X, y, random_state=42)

# fit the model
model = HSTreeClassifierCV(max_leaf_nodes=4) # initialize a tree model and specify only 4 leaf nodes
model.fit(X_train, y_train, feature_names=feature_names) # fit model
preds = model.predict(X_test) # discrete predictions: shape is (n_test, 1)
preds_proba = model.predict_proba(X_test) # predicted probabilities: shape is (n_test, n_classes)
print(model) # print the model
Forwarded from Artificial stupidity
#paper

По запросам трудящихся (@tech_priestess), поковырялся в не очень старой, но и такой уж молодой (февраль 2022) статье от авторов из весьма уважаемого университета UC Berkley: "Hierarchical Shrinkage: improving the accuracy and interpretability of tree-based methods".

Текста получилось много, потому будет заметка будет в telegraph.

P.S. Разбирал быстро, так что если видите косяки - пишите, я буду докидывать апдейты к посту.
Elements of Programming Interviews in Python: The Insiders' Guide by Adnan Aziz, Tsung-Hsien Lee and Amit Prakash

EPI is your comprehensive guide to interviewing for software development roles.

The core of EPI is a collection of over 250 problems with detailed solutions. The problems are representative of interview questions asked at leading software companies. The problems are illustrated with 200 figures, 300 tested programs, and 150 additional variants.

The book begins with a summary of the nontechnical aspects of interviewing, such as strategies for a great interview, common mistakes, perspectives from the other side of the table, tips on negotiating the best offer, and a guide to the best ways to use EPI. We also provide a summary of data structures, algorithms, and problem solving patterns.

Coding problems are presented through a series of chapters on basic and advanced data structures, searching, sorting, algorithm design principles, and concurrency. Each chapter stars with a brief introduction, a case study, top tips, and a review of the most important library methods. This is followed by a broad and thought-provoking set of problems.

Links:
Amazon
Free Sample

Navigational hashtags: #armknowledgesharing #armbooks
General hashtags: #programming #python #algorithms #datastructures #interviewpreparation #interviewprep #interview

@data_science_weekly
Forwarded from Андрей Созыкин (Andrey Sozykin)
Протокол TLS

В новом видео по компьютерным сетям разбираемся как работает протокол TLS. Он описывает, как совместно использовать шифрование, MAC и сертификаты для обеспечения безопасной передачи данных по небезопасным сетям.

TLS находится на транспортном уровне стека TCP/IP. Для передачи данных TLS использует протокол TCP. 

TLS устроен достаточно сложно и включает несколько протоколов, разбитых на два уровня. В основе протокол записей (record protocol). Именно на уровне протокола записей производится шифрование и обеспечение целостности.

Поверх протокола записей в TLS работают несколько протоколов: протокол установки соединения (handshake protocol), оповещений (alert protocol), передачи данных (application data) и смены шифра (change cipher). В лекции подробно рассматриваем, как они устроены.

В следующем видео будем расшифровывать пакеты TLS в WireShark.

Если плохо работает YouTube, то можно смотреть в Дзен или VK.

Поддержать создание курса можно на Boosty или CloudTips.
Forwarded from Андрей Созыкин (Andrey Sozykin)
В новом видео по компьютерным сетям на практике с помощью Wireshark анализируем протокол TLS.

Начинаем с просмотра зашифрованных пакетов TLS. В таком виде доступно всего три поля заголовка Record Layer: тип протокола TLS следующего уровня, версия TLS и длина данных. Все остальное зашифровано, посмотреть это нельзя.

Чтобы расшифровать данные, которые передаются по TLS, нужно получить ключи шифрования. Для этого можно установить переменную окружения SSLKEYLOGFILE, в которую прописать путь к файлу. В этот файл будут записываться ключи шифрования TLS. Так работают популярные библиотеки TLS: NSS, OpenSSL и boringssl. Именно эти библиотеки используют большинство браузеров. В видео я использую браузер Chrome. Полная инструкция по настройке расшифровки пакетов TLS есть на сайте Wireshark.

После настройки Wireshark начинает показывать расшифрованные пакеты TLS. Мы можем видеть не только заголовки Record Layer, но и данные, которые ранее были зашифрованы. В видео это запросы HTTP к сайту для практических занятий курса.

Если плохо работает YouTube, то можно смотреть в Дзен или VK.

Поддержать создание курса можно на Boosty или CloudTips.
Forwarded from Андрей Созыкин (Andrey Sozykin)
https://youtu.be/kIjt0Jt94nI

Запускаю новый курс по протоколу Model Context Protocol (MCP). Этот протокол позволяет подключать к языковым моделям внешние источники данных и инструменты (tools).

MCP важен, т.к. является открытым стандартным протоколом, поэтому с его помощью можно подключить к вашему ИИ-приложению большое количество готовых сервисов. В этом MCP похож на семейство протоколов TCP/IP для интернета.

Протокол MCP разработала компания Anthropic, но в декабре 2025 года она передала его в Linux Foundation. Теперь это действительно открытый протокол, развиваемый большим сообществом без привязки к конкретному вендору.

В лекции рассмотрена архитектура MCP и возможности MCP-серверов. В следующем видео научимся использовать MCP Inspector для изучения работы существующих MCP-серверов.

Если плохо работает YouTube, то можно смотреть в Дзен или VK.

Поддержать создание курса можно на Boosty или CloudTips.
Forwarded from Андрей Созыкин (Andrey Sozykin)
https://youtu.be/LYzKRCBwJqk

Продолжаю записывать курс по MCP, в этот раз практика по MCP Inspector. Это бесплатная программа с открытыми исходными кодами для тестирования и отладки MCP серверов.

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

В видео вызываем инструменты (tools) Context7 сначала из MCP Inspector, а потом из Cursor. Также смотрим, как данные передаются от клиента к серверу в формате JSON. Но подробно работу протокола MCP будем изучать далее в курсе.

Если плохо работает YouTube, то можно смотреть в Дзен или VK.

Поддержать создание курса можно на Boosty или CloudTips.
Forwarded from Андрей Созыкин (Andrey Sozykin)
В новой лекции по компьютерным сетям рассказываю, как выполняется установка соединения в протоколе TLS. Перед тем как передавать данные по TLS, клиент и сервер должны выполнить несколько предварительных действий:
- Договориться, какой набор шифров TLS будет использоваться для защиты данных.
- Проверить подлинность сервера, к которому подключается клиент (иногда сервер дополнительно проверяет подлинность клиента).
- Обменяться ключами симметричного шифрования и MAC.
Именно эти действия и выполняются в процессе соединения.

В лекции рассказываю, как устроена установка соединения в современной версии TLS 1.3. Для этого в TLS есть специальный Handshake Protocol, который работает поверх протокола записей (Record Protocol).

Также в TLS 1.3 есть сокращенный процесс установки соединения 0-RTT, который нужен для восстановления существующей сессии TLS. Если клиент и сервер ранее уже устанавливали соединения и обменивались ключами симметричного шифрования, то с помощью 0-RTT можно переиспользовать эти ключи и сразу в первом же сообщении отправлять зашифрованные данные. Однако это негативно влияет на безопасность.

Чтобы корректно закрыть соединение, клиент и сервер должны отправить друг другу сообщения close_notify протокола оповещений (Alert Protocol). В случае ошибки соединение разрывается в одностороннем порядке, при этом нужно отправить сообщение об ошибке Error Alert.

Если плохо работает YouTube, то можно смотреть в Дзен или VK.

Поддержать создание курса можно на Boosty или CloudTips.