Yuriy Gavrilov

Welcome to my personal place for love, peace and happiness 🤖

Анализ книги – построение эволюционных архитектур

Полная версия тут

Краткое содержание

Книга “Построение эволюционных архитектур” Нила Форда, Ребекки Парсонс и Патрика Куа рассматривает подход к разработке программных систем, которые легко адаптируются к изменениям и новым требованиям. Книга подчеркивает важность постепенных изменений, объективных критериев оценки архитектуры (fitness-функций) и разумной связанности между компонентами. Авторы подробно описывают принципы, практики и антипаттерны эволюционного подхода, чтобы помочь читателям создавать гибкие и устойчивые системы.

Основные тезисы и выводы

  • Эволюционная архитектура – это не просто методология, это философия:** Подход к построению систем, которые “учатся” и адаптируются к изменениям, в отличие от жёстких, заранее спланированных архитектур.
  • Изменения неизбежны и к ним надо готовиться:** Современный мир разработки требует гибкости. Эволюционные архитектуры призваны облегчить внесение изменений, а не предотвращать их.
  • Fitness-функции – это компас для эволюции:** Объективные критерии оценки архитектуры, которые помогают защитить важные её характеристики в процессе изменений (производительность, безопасность, масштабируемость и т.д.).
  • Постепенность и малые изменения – основа успеха:** Небольшие инкрементальные изменения легче контролировать, тестировать и развертывать, чем крупные реструктуризации. Большие изменения происходят из маленьких шагов.
  • Связанность должна быть разумной и осознанной:** Чрезмерная связанность (coupling) затрудняет изменения. Необходимо стремиться к минимальной связанности, необходимой для решения бизнес-задач и функциональной целостности. Разумная связанность должна обеспечивать масштабируемость и надежность.
  • Команда и культура важны не меньше, чем технологии:** Успешное внедрение эволюционной архитектуры требует кросс-функциональной команды с культурой экспериментов и автоматизации (DevOps).
  • Инструменты и автоматизация – основа практики:** Автоматизированные процессы и конвейеры развертывания (deployment pipelines) позволяют быстро и надежно вносить изменения и оценивать их влияние на архитектуру. Автоматизация позволяет снизить цену изменений.

Заключение

Книга “Построение эволюционных архитектур” предоставляет ценную методологию для разработки программных систем, способных адаптироваться к постоянным изменениям. Книга будет полезной для архитекторов, разработчиков и руководителей, стремящихся создавать гибкие, устойчивые и конкурентоспособные решения. Эта книга – практическое руководство по эволюции программного обеспечения, а не попытка навязать еще один “серебряный шар”.

Рекомендации

  1. Начните с анализа текущей архитектуры: Определите узкие места, критические зависимости и области, требующие большей гибкости.
  2. Определите ключевые fitness-функции: Какие характеристики архитектуры наиболее важны для бизнеса? Установите объективные критерии их оценки.
  3. Постепенно внедряйте конвейеры развертывания (deployment pipelines): Автоматизируйте процессы сборки, тестирования и развертывания небольших изменений.
  4. Поддерживайте культуру экспериментов: Поощряйте небольшие, контролируемые эксперименты с новыми технологиями и подходами.
  5. Используйте потребительски ориентированные контакты: Отслеживайте требования потребителей и используйте feedback для постоянного совершенствования архитектуры.
  6. Создавайте небольшую, но эффективную команду: Кросс-функциональная команда с необходимыми навыками будет залогом успешной эволюции архитектуры.
  7. Учитывайте организационные факторы: Адаптируйте структуру команды, процессы бюджетирования и управления изменениями, чтобы поддерживать эволюционный подход.
  8. Применяйте на практике теорию Эрика Эванса в книге “Домен управляемый дизайн”: Эффективные архитектурные решения будут приниматься с учетом предметной области.

План действий согласно книге

  1. Оценка текущей ситуации:
    • Анализ архитектуры: Определение проблемных мест, связей, которые необходимо уменьшить.
    • Оценка зрелости команды: Анализ навыков, процессов и культуры разработки.
  2. Определение целей и стратегии:
    • Определение ключевых бизнес-целей: Что должна обеспечивать архитектура? Чего ожидает бизнес? Какова ключевая ценность?
    • Выбор стиля архитектуры: Учитывая ограничения и требования, выбрать подходящий стиль архитектуры (микросервисы, SOA, монолит с модульной структурой и т.д.).
  3. Внедрение изменений:
    • Разработка fitness-функций: Для защиты архитектуры с новыми возможностями.
    • Постепенные изменения с использованием deployment pipelines: Автоматизация процессов сборки, тестирование, изменение
    • Создание Cross-функциональной команды: Поместите все необходимые ресурсы в команду, чтобы уменьшить препятствия.
  4. Непрерывное совершенствование:
    • Анализ метрик и feedback: Постоянный сбор информации о работе системы и ее воздействии на бизнес.
    • Регулярный пересмотр архитектуры и fitness-функций: Адаптация к изменяющимся требованиям и технологиям.

Практическое руководство построения Агентов ИИ

Инструкция оригинал тут

Потом еще свой код покажу, но он работает в версии 1.65, надо бы обновить.

Документ представляет собой руководство по разработке автономных систем (агентов) на базе языковых моделей (LLM). Основные темы:

Определение агентов: системы, выполняющие задачи от имени пользователя с высокой степенью автономии.
Ключевые компоненты: модели LLM, инструменты (API, функции), инструкции, защитные механизмы (guardrails).
Оркестрация: подходы к управлению агентами (одиночные и мультиагентные системы).
Guardrails: механизмы безопасности для контроля рисков.
Практические рекомендации: выбор моделей, проектирование инструментов, обработка исключений, интеграция с людьми.

Ниже не полный перевод. Раздел Guardrails очень интересный!


Практическое руководство по созданию агентов

Автор: OpenAI

---

Содержание
  1. Введение
  2. Что такое агент?
  3. Когда следует создавать агента?
  4. Основы проектирования агентов
  5. Выбор моделей
  6. Определение инструментов
  7. Конфигурация инструкций
  8. Оркестрация
    • 8.1. Системы с одним агентом
    • 8.2. Мультиагентные системы
  9. Защитные механизмы (Guardrails)
  10. Заключение

---

1. Введение

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

Это руководство предназначено для продуктовых и инженерных команд, изучающих создание своих первых агентов. В нём собраны практические рекомендации, основанные на опыте внедрения агентов в различных проектах.

После прочтения вы узнаете:

  • Как выбирать подходящие сценарии использования.
  • Как проектировать логику агентов и управлять их взаимодействием.
  • Как обеспечивать безопасность и предсказуемость работы.

---

2. Что такое агент?

Агенты — системы, которые самостоятельно выполняют задачи от имени пользователя.

Ключевые характеристики:
  1. Использование LLM
    • Управление рабочими процессами.
    • Корректировка действий при ошибках.
  2. Доступ к инструментам
    • Взаимодействие с API, базами данных, внешними системами.

Примеры задач:

  • Обработка запросов в службе поддержки.
  • Бронирование ресторана.
  • Генерация отчётов.

Не являются агентами:

  • Простые чат-боты.
  • Системы без управления рабочими процессами.

---

3. Когда следует создавать агента?

Агенты подходят для задач, где традиционные правила и детерминированные системы неэффективны.

Сценарии для внедрения:
Категория Примеры задач
Сложные решения Одобрение возврата средств.
Сложные правила Проверка безопасности поставщиков.
Неструктурированные данные Анализ страховых случаев.

Перед созданием агента:

  • Убедитесь, что задача требует неоднозначных решений.
  • Если задача простая, используйте детерминированные методы.

---

4. Основы проектирования агентов

Агент состоит из трёх компонентов:

Компонент Описание
Модель LLM для логики и принятия решений.
Инструменты API, базы данных, внешние системы.
Инструкции Правила и ограничения поведения.

Пример кода (Agents SDK):

weather_agent = Agent(  
    name="Weather agent",  
    instructions="Вы помощник, который отвечает на вопросы о погоде.",  
    tools=[get_weather],  
)

---

5. Выбор моделей

Рекомендации:

  1. Начните с самой мощной модели для базового уровня производительности.
  2. Заменяйте её на более лёгкие модели, где это возможно.

Примеры задач:

  • Простые запросы → Маленькие модели (например, `gpt-3.5`).
  • Сложные решения → Мощные модели (например, `gpt-4`).

---

6. Определение инструментов

Инструменты расширяют возможности агентов через API.

Типы инструментов:
Тип Примеры
Данные Запросы к CRM, чтение PDF.
Действия Отправка email, обновление CRM.
Оркестрация Агент возвратов, исследовательский агент.

Пример кода:

search_agent = Agent(  
    name="Search agent",  
    instructions="Помогите пользователю искать в интернете.",  
    tools=[WebSearchTool(), save_results],  
)

---

7. Конфигурация инструкций

Рекомендации:

  • Используйте существующие документы (например, инструкции службы поддержки).
  • Разбивайте задачи на шаги.
  • Определяйте чёткие действия для каждого шага.
  • Учитывайте крайние случаи.

Пример генерации инструкций:

prompt = """  
Вы эксперт по созданию инструкций для агентов.  
Преобразуйте документ в нумерованный список без неоднозначностей.  
Документ: {{help_center_doc}}  
"""

---

8. Оркестрация

8.1. Системы с одним агентом
  • Один агент управляет всеми задачами.
  • Простота внедрения и обслуживания.

Пример работы:

await Runner.run(agent, [UserMessage("Столица США?")])
8.2. Мультиагентные системы
  • Менеджер-агент координирует специализированных агентов.
  • Децентрализованные агенты передают задачи друг другу.

Пример менеджер-агента:

manager_agent = Agent(  
    name="Менеджер переводов",  
    tools=[spanish_agent, french_agent],  
)

---

9. Защитные механизмы (Guardrails)

Цель: Предотвращение рисков (утечки данных, вредоносные запросы).

Типы защит:
  • Классификатор релевантности → Фильтрация не относящихся к делу запросов.
  • Фильтр PII → Защита персональных данных.
  • Модерация → Блокировка вредоносного контента.

Пример кода:

@input_guardrail  
async def churn_detection(ctx, input):  
    # Проверка риска оттока клиентов  
    ...

---

10. Заключение

Ключевые принципы:

  • Начинайте с простых агентов.
  • Используйте защитные механизмы.
  • Планируйте вмешательство человека для критических задач.

Агенты открывают новые возможности для автоматизации сложных рабочих процессов.

OpenAI — компания, занимающаяся разработкой ИИ. Наша миссия — обеспечить, чтобы искусственный интеллект приносил пользу человечеству.

 1 comment   5 d   Agents   AI   LLM

Свежее по классификации подвезли – mistral

🔥 Classifier Factory от Mistral

Classifier Factory — это интуитивно понятное руководство для создания и обучения собственных моделей классификации на базе компактных LLM от Mistral AI.

С его помощью — как через веб‑интерфейс La Plateforme, так и через API — можно быстро разворачивать решения для модерации контента, детекции намерений, анализа тональности, кластеризации данных, обнаружения мошенничества, фильтрации спама, рекомендательных систем и других задач

Таким образом, Classifier Factory упрощает весь цикл работы с custom‑классификаторами: от подготовки данных до развёртывания готовой модели в продакшене.

Еще они обнвоили доку.

🔜 Docs
🔜Cookbook: Moderation Classifier
🔜Cookbook: Intent Classification
🔜Cookbook: Classification of Food

@ai_machinelearning_big_data

#Mistral #api

 No comments   9 d   AI   LLM

Как навести порядок в хаосе данных: стратегия для бизнеса

Любопытная статья про порядок и знания. Раньше к этому стремились большие компании, может даже инвестиционные, а сегодня это под силу даже мелким.

Основное это RAG, втаскивание смысловых значение и аккумулирование всего в виде FAQ.

https://telegra.ph/Kak-navesti-poryadok-v-haose-dannyh-strategiya-dlya-biznesa-03-31

chat.z.ai – три модельки open source

Регистрироваться не нужно. Работают огонь. Особенно последняя мощная. Прямо технические выкладки делает и рассуждает. Долго конечно, но потом как мини исследование пишет.

https://chat.z.ai/ – пробуем тут

https://bigmodel.cn/ – или тут

https://huggingface.co/collections/THUDM/glm-4-0414-67f3cbcb34dd9d252707cb2e или сами запускаем отсюда.

Zhipu AI открывает код своих моделей: в 8 раз быстрее конкурентов с уникальной технологией размышления

🔍 Что произошло?
Zhipu AI объявила о полном открытии кода своей технологической цепочки, включая:
• GLM-4-32B-0414 — базовая модель с улучшенной работой инструментов (код, поиск)
• GLM-Z1-32B-0414 — рекордная эффективность (аналог 671B модели на 32B параметрах)
• GLM-Z1-Rumination — первый ИИ с полным циклом исследования (поиск → анализ → проверка)

  • Также доступны облегчённые 9B-версии (GLM-4-9B-0414, GLM-Z1-9B-0414)

Все модели распространяются по лицензии MIT.

💡 Что умеет “Размышляющая” модель:

  • Самостоятельно ищет информацию
  • Анализирует данные
  • Проверяет гипотезы
  • Формирует выводы

Например, модель можно запросить сформировать отчет о рынке серверных операционных систем в Китае.

⚙️ Технические детали:
▸ Рекордная скорость генерации до 200 токенов/сек
▸ Сопоставимая с DeepSeek-R1 производительность при меньшем размере
▸ Поддержка HTML/CSS/JS/SVG с интерактивным выполнением кода прямо в чате
▸ Оптимизация для consumer-GPU (например, RTX 4090)
▸ Три версии API: скоростная, бюджетная и бесплатна

Такие модельки не сильно прожорливые и думаю вполне себе потянет такая железка OrangePi AIPro (20T) 24Гб за 40тс рублей https://onpad.ru/catalog/cubie/orange_pi/orage_pi/3698.html

AI да Китай

Вопрос: А и Б сидели на трубе, А упала Б пропала, кто остался на требе?

Ответ:

“А и Б сидели на трубе”: История, смысл и решение старинной русской загадки

Введение

Старинные русские загадки, передающиеся из уст в уста, представляют собой не только забавную головоломку, но и отражение народной мудрости, языковых тонкостей и культуры. Одна из самых известных и популярных загадок, которая流传 в русскоязычной среде, звучит так: “А и Б сидели на трубе, А упала, Б пропала, кто остался на трубе?” В данном исследовании我们将深入探讨 эту загадку, её происхождение, смысл и, конечно, правильный ответ.

История загадки

Загадка “А и Б сидели на трубе” имеет давнюю историю и является классическим примером языковой головоломки, которая проверяет внимательность и сообразительность. Она передаётся из поколения в поколение, оставаясь актуальной и популярной в русскоязычной культуре. Эта загадка относится к категории загадок, которые кажутся сложными на первый взгляд, но имеют простое решение, основывающееся на игре с языком.

Смысл загадки

Для понимания смысла загадки有必要 разобрать её по частям:

  1. “А и Б сидели на трубе” – здесь подразумеваются три элемента: А, “и” (что в русском языке означает “и”), и Б.
  2. “А упала” – подразумевает исчезновение или удаление первого элемента.
  3. “Б пропала” – подразумевает исчезновение или удаление третьего элемента.
  4. “Кто остался на трубе?” – вопрос, который задаётся для определения, что осталось после исчезновения А и Б.

Решение загадки

Правильный ответ на загадку “А и Б сидели на трубе, А упала, Б пропала, кто остался на трубе?” – это “и” (что в русском языке означает “и”).

Этот ответ можно объяснить следующим образом:

  • В оригинальной фразе “А и Б сидели на трубе” присутствуют три символа: А, “и”, Б.
  • Если А “упала” (то есть исчезла), а Б “пропала” (также исчезла), то на трубе остается только “и”.
  • В русском языке “и” – это отдельное слово, обозначающее “и”, и именно это слово остается на трубе после исчезновения А и Б.

Этот ответ подтверждается несколькими источниками:

Вариации загадки

В русскоязычной культуре существуют различные вариации этой загадки, которые сохраняют её суть, но меняют детали:

  1. “А, И, Б сидели на трубе. А упала. Б пропала. Кто остался на трубе?” [[10](https://proza.ru/2016/10/06/1316)]
  1. “А и Б сидели на трубе. А упало, Б пропало, что осталось на трубе?” [[13](https://otvet.mail.ru/question/54546059)]
  1. “А и Б сидели на трубе, А уехал за границу, Б чихнул и... кто остался на трубе?” [[15](https://uchi.ru/otvety/questions/a-i-b-sideli-na-trube-a-uehal-za-granitsu-b-chihnul-i-lyog-v-bolnitsu-kto-ostalsya-na-tru)]

Эти вариации демонстрируют гибкость загадки и её способность адаптироваться к разным контекстам, сохраняя при этом суть.

Языковые особенности

Эта загадка демонстрирует несколько интересных языковых особенностей русского языка:

  1. Игра с буквами: Загадка основана на игре с отдельными буквами русского алфавита (А, И, Б).
  1. Символическое представление: Каждая буква представляется как отдельное существо, которое может “сидеть”, “упасть” или “пропасть”.
  1. Слогovость: Русский язык, будучи слоговым, позволяет такую игру с отдельными буквами, что делает загадку возможной.
  1. Краткость и изящность: Ответ на загадку – всего одна буква “и”, что делает его особенно элегантным и удивительным.

Cultural context

Эта загадка отражает народную мудрость и любовь к языкознанию в русскоязычной культуре. Она часто используется для развития логического мышления и внимательности у детей, а также для развлечения взрослых. Загадка демонстрирует, как важны детали и как有时候 решение может быть проще, чем кажется.

Modern interpretations and references

Эта загадка продолжает использоваться в современном контексте:

  • В детских садах и школах её используют для развития языковых навыков
  • В интернет-форумах и социальных сетях она часто появляется в разделах с загадками
  • В некоторых видеороликах для детей эта загадка используется как образец традиционной русской головоломки [[12](https://www.youtube.com/watch?v=ZhVvZn6vkzc)]

Conclusion

Загадка “А и Б сидели на трубе, А упала, Б пропала, кто остался на трубе?” представляет собой яркий пример традиционной русской головоломки, основывающейся на игре с буквами. Её суть заключается в том, чтобы понять, что после исчезновения А и Б на трубе остаётся “и”. Этот простой, но изящный ответ демонстрирует тонкости русского языка и народной мудрости.

Эта загадка не только забавляет, но и развивает языковое мышление, что делает её ценным элементом русскоязычной культуры. Она напоминает нам о важности деталей и о том, как有时候 решение может быть проще, чем кажется.

References

[10] А и Б сидели на трубе... (Исаков Олег) / Проза.ру. https://proza.ru/2016/10/06/1316

[11] а и б сидели на трубе. а упало б пропало кто остался на трубе?. https://uchi.ru/otvety/questions/a-i-b-sideli-na-trube-a-upalo-b-propalo-kto-ostalsya-na-trube

[12] Считалочка – загадка – А и Б сидели на трубе – YouTube. https://www.youtube.com/watch?v=ZhVvZn6vkzc

[13] А и Б сидели на трубе А упала, Б пропала, что осталось на трубе?. https://otvet.mail.ru/question/54546059

[15] А И Б СИДЕЛИ НА ТРУБЕ А УЕХАЛ ЗА ГРАНИЦУ Б ЧИХНУЛ И ... https://uchi.ru/otvety/questions/a-i-b-sideli-na-trube-a-uehal-za-granitsu-b-chihnul-i-lyog-v-bolnitsu-kto-ostalsya-na-tru

 No comments   10 d   AI

Основные тезисы статьи “AI Index 2025: State of AI in 10 Charts

Основные тезисы статьи “AI Index 2025: State of AI in 10 Charts” :

  1. Улучшение небольших моделей ИИ
    • Модели с меньшим числом параметров достигают уровня крупных. Например, Microsoft Phi-3-mini (3.8 млрд параметров) в 2024 году показала результаты, сравнимые с моделью PaLM (540 млрд параметров) 2022 года. Это сокращение параметров в 142 раза за два года.
  1. Снижение стоимости использования ИИ
    • Стоимость обработки запросов для моделей уровня GPT-3.5 упала с $20 до $0.07 за миллион токенов (снижение в 280 раз за 18 месяцев). Цены на оборудование снижаются на 30% ежегодно, а энергоэффективность растет на 40%.
  1. Китай сокращает разрыв с США
    • США создали 40 значимых моделей ИИ в 2024 году, Китай — 15. Однако разрыв в качестве между американскими и китайскими моделями сократился до минимума на тестах MMLU и HumanEval. Китай лидирует по публикациям и патентам в области ИИ.
  1. Рост проблемных инцидентов с ИИ
    • Зафиксировано 233 инцидента, связанных с ИИ (+56.4% за год), включая дипфейки и случаи кибербуллинга.
  1. Прогресс ИИ-агентов
    • В коротких задачах (2 часа) ИИ превосходит людей в 4 раза, но при увеличении времени до 32 часов люди демонстрируют вдвое лучшие результаты.
  1. Рекордные инвестиции в ИИ
    • 78% компаний внедрили ИИ в 2024 году (рост с 55% в 2023). Частные инвестиции США составили $109.1 млрд, Китая — $9.3 млрд.
  1. Медицинские устройства с ИИ
    • FDA одобрило 223 ИИ-устройства в 2023 году против 6 в 2015.
  1. Регуляторная активность в США
    • Число законов штатов, связанных с ИИ, выросло до 131 в 2024 году (в 2016 — 1).
  1. Региональный оптимизм
    • В Китае, Индонезии и Таиланде более 77% населения видят в ИИ больше пользы, чем вреда. В США, Канаде и Нидерландах этот показатель ниже 40%.
  1. Глобализация разработки ИИ
    • Модели создаются в новых регионах: Ближний Восток, Латинская Америка, Юго-Восточная Азия.

---

Синтез

Статья демонстрирует динамичное развитие ИИ в 2024 году:

  • Технологический прогресс: Малые модели стали эффективнее, а стоимость их использования резко снизилась, что делает ИИ доступнее .
  • Интеграция в общество: ИИ активно применяется в медицине, транспорте (например, 150 тыс. поездок Waymo в неделю) и бизнесе, где 78% компаний используют технологии для повышения продуктивности .
  • Инвестиции и геополитика: США сохраняют лидерство, но Китай усиливает позиции. Глобальные инвестиции в генеративный ИИ достигли $33.9 млрд .
  • Этические вызовы: Рост инцидентов и нехватка стандартов оценки безопасности ИИ требуют усиления регулирования. Правительства, включая ЕС и ООН, разрабатывают новые рамки .

---

Выводы

  1. Доступность и эффективность ИИ растут, но сохраняется разрыв между регионами в инфраструктуре и образовании (например, 81% учителей в США не готовы преподавать ИИ) .
  2. Регулирование отстает от технологий: несмотря на рост законов, стандарты оценки рисков остаются редкими .
  3. Оптимизм vs. скептицизм: В Азии выше доверие к ИИ, тогда как на Западе преобладают опасения, связанные с этикой и заменой рабочих мест .
  4. Будущее за гибридными решениями: ИИ-агенты уже превосходят людей в узких задачах, но для сложных когнитивных процессов требуется симбиоз с человеком .

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

 No comments   16 d   AI

Apache SeaTunnel MCP Server

SeaTunnel MCP Server – это интеллектуальный мост, соединяющий инструменты программирования ИИ и SeaTunnel. С помощью SeaTunnel MCP Server разработчики могут выполнять следующие задачи через помощников AI: реализовывать вызовы интерфейса RESTfulAPI V2 на основе взаимодействия с пользователем. Что касается более мощных задач, которые ИИ может выполнять через этот интерфейс данных документов, пожалуйста, используйте свое воображение и воображение вашей команды 😜.

Утиные истории с DuckDB 🦆

1. DuckDB для потоковой обработки данных https://github.com/turbolytics/sql-flow

  • Суть:** SQLFlow — это движок потоковой обработки данных, построенный на базе DuckDB и Apache Arrow. Он позволяет пользователям определять конвейеры данных с использованием SQL для высокопроизводительных преобразований и агрегаций данных в реальном времени.

SQLFlow принимает данные из различных источников, таких как Kafka и WebSockets, обрабатывает их с помощью DuckDB, обеспечивая выполнение SQL-запросов, и выводит результаты в различные приемники, включая PostgreSQL, Kafka и облачные хранилища. В архитектуре SQLFlow ключевую роль играют: источники входных данных, обработчики (реализующие SQL-выполнение через DuckDB) и приемники выходных данных. SQLFlow предлагает широкий спектр сценариев использования, таких как преобразования потоковых данных (например,

basic.agg.mem.yml

), обогащение потока данных (например,

enrich.yml

), агрегация данных в реальном времени и интеграция с внешними сервисами, включая Bluesky Firehose и Iceberg catalogs.

  • Вывод:** SQLFlow позволяет пользователям DuckDB эффективно использовать SQL для определения конвейеров данных в реальном времени, представляя собой облегченную альтернативу традиционным системам потоковой обработки. Это особенно полезно в сценариях, где важна низкая задержка и интеграция с существующей инфраструктурой DuckDB.

2. Создание гибридной базы данных векторного поиска с помощью Arrow и DuckDB

  • Суть:** Томас представляет Quiver, базу данных гибридного векторного поиска, разработанную на языке Go. Quiver сочетает в себе HNSW (Hierarchical Navigable Small World) для быстрого векторного поиска, DuckDB для фильтрации метаданных на основе SQL-запросов и Apache Arrow для эффективной передачи данных между компонентами.

Quiver является open-source проектом, предлагающим полную поддержку SQL и столбцовое хранилище, оптимизированное для аналитических нагрузок благодаря использованию DuckDB. Это устраняет необходимость использования тяжеловесной внешней базы данных для хранения метаданных. Томас подробно рассматривает реализацию гибридного поиска, включая стратегии предварительной фильтрации (сначала SQL, затем векторный поиск) и постобработки (сначала векторный поиск, затем SQL), и объясняет, как выбирать оптимальный подход в зависимости от специфики запроса.

  • Важно отметить, что использование Apache Arrow в связке с Arrow Database Connectivity (ADBC) позволяет осуществлять передачу данных между компонентами без копирования, что значительно повышает эффективность. Если вас интересует эта тема, обратите внимание на более глубокий анализ векторных технологий для AI: Расширение существующей инфраструктуры данных тут https://motherduck.com/blog/vector-technologies-ai-data-stack

3. Нет полосы пропускания? Не проблема: почему локальный кеш отлично подходит для DuckDB

  • Суть:** Расширение `cache_httpfs` для DuckDB позволяет ускорить чтение данных из объектного хранилища за счет локального кеширования, существенно повышая производительность.

Расширение `cache_httpfs` решает проблемы, связанные со стоимостью полосы пропускания, задержками при доступе к данным и надежностью при запросе данных из объектного хранилища. Оно поддерживает несколько режимов работы: кеширование в памяти, сохранение кеша на диск и полное отключение кеширования. Выбор режима осуществляется через настройку

SET cache_httpfs_type='noop'

. Использование `cache_httpfs` может значительно улучшить пользовательский опыт, сокращая время выполнения запросов, например, со 100 до 40 секунд. Расширение использует встроенные оптимизации DuckDB, включая фильтры Блума Parquet, для минимизации объема данных, передаваемых из объектного хранилища. Поддерживаются параллельное чтение и профилирование работы расширения, сохраняется совместимость с `httpfs` DuckDB. `cache_httpfs` поддерживает доступ к Hugging Face (`hf:`), Amazon S3 (`S3:`) и Cloudflare R2 (`R2://`).

  • Практический вывод:** Использование `cache_httpfs` позволяет пользователям снизить затраты на доступ к S3 и ускорить выполнение запросов DuckDB, требуя при этом минимальных изменений в конфигурации. Репозиторий расширения доступен на GitHub:
dentiny/duck-read-cache-fs

тут: https://github.com/dentiny/duck-read-cache-fs

4. DuckDB Local UI

  • Суть:** Недавно представленный DuckDB UI представляет собой удобный пользовательский интерфейс для локальных экземпляров DuckDB, значительно повышающий удобство работы благодаря таким функциям, как интерактивные блокноты и возможность удобного просмотра структуры таблиц, что упрощает управление данными и их анализ. Подробнее тут: https://duckdb.org/2025/03/12/duckdb-ui.html

DuckDB UI реализован в стиле блокнота и доступен локально. Он был разработан в результате тесного сотрудничества между MotherDuck и командой DuckDB Labs. Начиная с версии DuckDB v1.2.1, пользователи могут запустить UI из командной строки с помощью команды

duckdb -ui

или через SQL-запрос

CALL start_ui();

. Пользовательский интерфейс предлагает подсветку синтаксиса для SQL-кода и функцию автозавершения. Встроенный проводник по столбцам позволяет быстро анализировать структуру таблиц и результаты запросов. UI поддерживает локальное выполнение запросов и опциональную интеграцию с MotherDuck для работы с облачным хранилищем данных. UI хранит блокноты в базе данных DuckDB (`ui.db`) в каталоге `.duckdb`. Для работы пользовательского интерфейса запускается HTTP-сервер на localhost, а для обновления интерфейса используются server-sent events (SSE), что обеспечивает минимальные задержки при взаимодействии с пользователем.

  • Ознакомиться с работой DuckDB UI можно в видеоуроке на YouTube. Duckdb-ui является проектом с открытым исходным кодом (open-source) и доступен на GitHub.

5. DuckDB: Обработка данных где угодно, От ноутбуков до серверов

  • Суть:** В рамках доклада на FOSDEM 2024 была продемонстрирована высокая производительность DuckDB при работе с большими наборами данных, а также потенциал для снижения затрат на облачные вычисления. Доклад был высоко оценен участниками конференции. Все. доклады тут: https://www.techtalksweekly.io/p/100-most-watched-software-engineering

Габор продемонстрировал, что DuckDB может загрузить 15 ГБ CSV-данных всего за 11 секунд и выполнять сложные аналитические запросы за миллисекунды на обычном ноутбуке. В своем докладе он объяснил принципы столбцового хранения данных, векторизованного выполнения запросов и использования zone maps для эффективной индексации. Габор также подчеркнул высокую переносимость DuckDB, обеспеченную благодаря использованию C++11 и минимальному количеству внешних зависимостей. DuckDB может работать в веб-браузерах, используя WebAssembly.

6. Предварительный просмотр: таблицы Amazon S3 в DuckDB

  • Суть:** DuckDB теперь поддерживает каталоги Apache Iceberg REST, что обеспечивает возможность простого и быстрого подключения к таблицам Amazon S3 и SageMaker Lakehouse. Тут подробнее: https://duckdb.org/2025/03/14/preview-amazon-s3-tables.html

Новая функция предварительного просмотра в расширении Iceberg позволяет подключаться к каталогам Iceberg REST, используя команду

ATTACH

. Для использования этой возможности требуется установить bleeding edge версии расширений из репозитория

core_nightly

. Учетные данные AWS могут быть сконфигурированы с использованием Secrets Manager, как с использованием credential_chain, так и путем явного указания ключа, секрета и региона. Подключение к таблицам S3 осуществляется с использованием ARN таблиц S3, например,

ATTACH 'arn:aws:s3tables:us-east-1:111122223333:bucket/bucket_name' AS s3_tables_db (TYPE iceberg, ENDPOINT_TYPE s3_tables);

.

  • В качестве альтернативы можно использовать конечную точку каталога Amazon SageMaker Lakehouse (AWS Glue Data Catalog) Iceberg REST:
ATTACH 'account_id:s3tablescatalog/namespace_name' AS (TYPE iceberg, ENDPOINT_TYPE glue);

. Расширение также поддерживает evolution schema в Iceberg, позволяя отслеживать изменения в структуре таблиц. Эта функциональность особенно полезна при работе с evolving datasets.

7. Защита DuckDB, ускорение запуска и работа в автономном режиме

  • Суть:** Статическая компиляция DuckDB позволяет повысить безопасность, сократить время запуска и обеспечить возможность автономной работы за счет встраивания необходимых расширений непосредственно в исполняемый файл. Смотрим тут: https://blog.colinbreck.com/securing-duckdb-improving-startup-time-and-working-offline

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

icu

,

parquet

и

sqlite_scanner

, непосредственно в двоичный файл DuckDB, что устраняет необходимость их загрузки во время выполнения программы. Это достигается с помощью команды сборки:

DISABLE_EXTENSION_LOAD=1 CORE_EXTENSIONS='icu;parquet;sqlite_scanner' GEN=ninja make

. Такой подход обеспечивает мгновенную загрузку расширений и исключает задержки, связанные с динамической загрузкой. Кроме того, использование флага

DISABLE_EXTENSION_LOAD

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

8. Хитрости DuckDB – Переименование полей в SELECT * по таблицам

  • Суть:** Представлены быстрые советы по переименованию полей в запросе
SELECT *

при работе с несколькими таблицами в DuckDB, что позволяет разрешить конфликты, возникающие при наличии одинаковых имен полей в разных таблицах. Тут: https://rmoff.net/2025/02/27/duckdb-tricks-renaming-fields-in-a-select-across-tables

Робин рассматривает ситуацию, когда после операции

JOIN

нужно четко различать поля, происходящие из разных таблиц, а использование простого

SELECT *

приводит к неоднозначности. Он предлагает использовать выражение `COLUMNS` в DuckDB для добавления префикса к именам столбцов, эффективно создавая псевдонимы на основе имени таблицы. Например, запрос

describe select columns(t1.*) as "t1_\0", columns(t2.*) as "t2_\0" from t1 inner join t2 on t1.X = t2.X;

добавляет префиксы

t1_

и

t2_

к столбцам из таблиц

t1

и

t2

соответственно.

  • Вывод:** Это удобный прием, позволяющий повысить продуктивность при работе со сложными запросами
JOIN

, избегая трудоемкого ручного переименования каждого столбца.

9. Плагин Yazi, использующий DuckDB для предварительного просмотра файлов данных

  • Суть:** `duckdb.yazi` – это плагин для файлового менеджера Yazi, использующий DuckDB для быстрого предварительного просмотра и создания summary файлов данных, что значительно упрощает навигацию по файлам непосредственно из терминала. Гит тут: https://github.com/wylie102/duckdb.yazi

Плагин позволяет практически мгновенно просматривать содержимое файлов в форматах

.csv

,

.json

,

.parquet

и

.tsv

прямо внутри Yazi. Yazi, если вы еще не знакомы с ним, представляет собой быструю альтернативу Ranger, файловый менеджер, написанный на языке Rust с использованием асинхронного ввода-вывода. Он позволяет просматривать изображения, а теперь и файлы с данными, которые можно сразу же изучить и проанализировать.

10. Освоение DuckDB, когда вы привыкли к Pandas или Polars

  • Суть:** В статье описывается, как реализовать распространенные операции, выполняемые с помощью pandas/Polars, в DuckDB с использованием SQL, что предоставляет надежную и стандартизированную альтернативу DataFrame API. тут: https://labs.quansight.org/blog/duckdb-when-used-to-frames

Марко демонстрирует, как переводить операции pandas/Polars в эквивалентные SQL-запросы для DuckDB, уделяя особое внимание оконным функциям для решения таких задач, как центрирование данных (

a - MEAN(a) OVER () AS a_centered

) или изменение частоты дискретизации временных рядов путем использования функций усечения даты и арифметики интервалов (

DATE_TRUNC('week', date - INTERVAL 2 DAYS) + INTERVAL 2 DAYS AS week_start

). Он также кратко рассматривает альтернативные Python API для DuckDB, такие как SQLFrame, Relational API DuckDB, Narwhals и Ibis, описывая их возможности и ограничения.

  • Также рекомендуется ознакомиться с другой статьей, в которой рассматривается использование DuckDB вместо Pandas/Polars.

Growth Engineering: Искусство взрывного роста компании через код

На основе: https://newsletter.pragmaticengineer.com/p/what-is-growth-engineering

Что такое Growth Engineering?

В современном мире технологического бизнеса, где конкуренция ощущается на каждом шагу, компании постоянно ищут способы взрывного роста. На стыке разработки продукта и маркетинга возникла область, получившая название Growth Engineering. Это не просто написание кода – это стратегическое применение инженерных навыков для максимизации прибыли компании, оптимизируя каждый этап взаимодействия с пользователем. Алексей Комиссарук, бывший руководитель Growth Engineering в MasterClass, говорит об этом просто: “Growth Engineering – это написание кода, который помогает компании зарабатывать больше денег”.

Зачем компаниям Growth-инженеры?

Десять лет назад о Growth Engineering мало кто знал. Сегодня, когда стартапы стремятся масштабироваться, а публичные технологические компании – защищать свои позиции, команды с Growth-инженерами стали необходимостью. Они, словно хирурги, препарируют существующие продукты или услуги, выявляя точки роста и реализуют их, зачастую минимальными, но точными изменениями.

Growth-инженеры особенно востребованы в компаниях, осуществляющих продажи потребителям или работающих по модели SaaS, на этапе Series B и далее. Именно тогда компания имеет достаточно трафика и ресурсов, чтобы проводить A/B-тесты и инвестировать в команду, которая будет заниматься исключительно вопросами роста.

Чем занимаются Growth-инженеры? Три ключевых направления

Работа Growth-инженера лежит в трёх основных плоскостях:

  • Работа, непосредственно влияющая на бизнес:** Это сердце Growth Engineering. Здесь Growth-инженеры, вооружившись A/B-тестами и аналитическими инструментами, оптимизируют ключевые бизнес-метрики. Примеры задач:
    • Оптимизация воронки регистрации:** Снижение барьеров для новых пользователей, упрощение форм, добавление социальных логинов, улучшение онбординга.
    • Персонализация рекомендаций:** Разработка алгоритмов, которые предлагают пользователям наиболее релевантный контент или продукты, повышая вовлеченность и вероятность покупки.
    • A/B-тестирование цен и пакетов услуг:** Проверка различных ценовых стратегий для максимизации дохода, включая тестирование скидок, пробных периодов и различных комбинаций функций в платных планах.
    • Оптимизация рекламных посадочных страниц:** Создание и A/B-тестирование целевых страниц, адаптированных к конкретным рекламным кампаниям, чтобы повысить конверсию посетителей в лиды или клиентов.
  • Предоставление возможностей для роста:** Задача Growth-инженера – расширить возможности команды маркетинга и других специалистов, предоставив им инструменты, которые позволяют самостоятельно реализовывать идеи и экспериментировать без постоянного участия разработчиков. Это включает в себя:
    • Интеграцию с платформами автоматизации маркетинга (например, HubSpot, Marketo), автоматизируя e-mail маркетинг и работу с пользователями.
    • Создание инструментов для работы с CDP (Customer Data Platform) для сегментации пользователей, таргетинга и персонализированных предложений.
    • Настройку систем атрибуции для отслеживания источников трафика и оценки эффективности маркетинговых каналов, позволяя максимально точно определять ROI (Return on Investment) маркетинговых активностей.
  • Работа с платформой:** Чтобы команда Growth могла двигаться максимально быстро, необходима надежная платформа, включающая в себя:
    • Микросервисную архитектуру, позволяющую командам независимо развертывать эксперименты и избегать конфликтов.
    • Создание инструментов для автоматической интеграции с маркетинговыми платформами, упрощающими процесс подключения новых сервисов.
    • Централизованные системы ведения логов и аналитики, обеспечивающие доступ ко всем необходимым данным для мониторинга и анализа результатов экспериментов.
    • Централизованную A/B платформу, которая позволяет удобно проводить и анализировать результаты экспериментов.

Почему Growth-инженеры работают быстрее, чем Product-инженеры?

Ключевое различие между Growth и Product Engineering кроется в философии и подходе к работе. Product-инженеры *разрабатывают*, чтобы создать продукт. Growth-инженеры *разрабатывают*, чтобы учиться. Growth Engineer быстрее принимает решения, потому что их цель – проверять гипотезы, а не создавать идеальный продукт сразу. Они быстрее оптимизируют свою работу, чтобы можно было проводить как можно больше экспериментов.

Представьте себе строительство. Product Engineering – это возведение небоскреба: основательно, долговечно, но требует огромного количества времени и ресурсов. Growth Engineering – это скорее установка палатки: быстро, дешево и легко. Палатка не предназначена для жизни на века, но она позволяет быстро проверить, подходит ли это место для более основательного строительства.

Пример из практики: Masterclass и ценовые планы

В Masterclass команда Growth Engineering столкнулась с необходимостью протестировать новую модель ценообразования. Разработка полноценного многоуровневого решения заняла бы месяцы и потребовала привлечения множества команд. Вместо этого, Growth-инженеры реализовали “фейковую дверь” – показали пользователям страницу с различными тарифными планами, которые на тот момент еще не были реализованы. Анализ данных показал, что переход на новую модель ценообразования может значительно увеличить доход компании. Это позволило убедить руководство инвестировать в полноценную разработку.

Инструменты Growth-инженера: Технологический стек

Для эффективной работы Growth-инженеру необходим обширный набор инструментов, охватывающих разработку, аналитику и автоматизацию маркетинга:

  • Языки программирования:** Python, JavaScript, TypeScript и другие, в зависимости от специфики проекта.
  • Feature Flags:** LaunchDarkly, Optimizely – для быстрого включения и выключения функциональности и проведения A/B-тестов.
  • Продуктовая аналитика:** Amplitude, Mixpanel – для отслеживания поведения пользователей и оценки эффективности изменений.
  • Экспериментальные платформы:** AB Tasty, VWO – для автоматизации A/B-тестирования и анализа результатов.
  • Системы мониторинга и алертинга:** Datadog, Grafana, Prometheus – для оперативного выявления проблем и оповещения о критических ситуациях.
  • Платформы автоматизации маркетинга:** HubSpot, Marketo, Iterable – для автоматизации коммуникаций с пользователями и персонализации маркетинговых кампаний.
  • CDP (Customer Data Platform):** Segment, mParticle – для управления данными о клиентах и создания персонализированных предложений.

Кто такой Growth-инженер: Необходимые навыки и качества

Чтобы преуспеть в Growth Engineering, необходимо обладать не только техническими навыками, но и определенным складом ума:

  • Любознательность:** Желание постоянно учиться новому, исследовать и экспериментировать. Умение смотреть на все глазами пользователя и анализировать причины тех или иных действий.
  • “Строительство ради обучения”:** Готовность быстро прототипировать, проводить эксперименты и учиться на ошибках.
  • “Мастер на все руки”:** Обширный набор навыков, позволяющий решать задачи, лежащие на стыке разработки, аналитики и маркетинга.
  • Аналитическое мышление:** Умение анализировать данные, выявлять тренды и делать обоснованные выводы.

Организация команды Growth: Где размещаются Growth-инженеры?

Обычно Growth-инженеры входят в состав отдела разработки, но их работа тесно связана с маркетингом и аналитикой. Существуют разные модели организации команды:

  • Модель “владельца”:** Команда Growth полностью отвечает за определенный участок работы, например, за оптимизацию воронки регистрации.
  • Модель “автостопщика”:** Команда Growth оказывает помощь другим командам, предоставляя экспертизу и реализуя их идеи, действуя как внутренний консультант.

Стать Growth-инженером: Путь к карьерному росту

Growth Engineering – отличный старт для тех, кто мечтает о карьере основателя компании или руководителя продукта. Работа в Growth предоставляет уникальную возможность увидеть бизнес изнутри, понять взаимосвязи между различными отделами и приобрести навыки, необходимые для принятия стратегических решений. Если вы хотите ускорить свой карьерный рост и получить ценный опыт, который пригодится в любой сфере деятельности, Growth Engineering – это ваш выбор.

В заключение

Growth Engineering – это быстро развивающаяся область, требующая сочетания технических навыков, аналитического мышления и креативности. Это искусство взрывного роста компании через код, путем непрерывных экспериментов и пристального внимания к данным. Если вы готовы к вызовам и стремитесь к постоянному развитию, Growth Engineering может стать вашей дорогой к успеху.

Earlier Ctrl + ↓