Forwarded from Всеволод Викулин
10 паттернов разработки надежных LLM приложений.
Начинаю серию публикаций по LLM System Design.
Если осилите все 10 паттернов - сможете разрабатывать надежные LLM-приложения, которые не сломаются от наплыва счастливых пользователей.
Поехали.
Паттерн 1. LLM приложение это просто граф
Считайте, что вы разрабатываете обычный софт. Используете микросервисную архитектуру. Сервис 1 ждет ответа от Сервиса 2, если ответ = X, то идет в Сервис 3 и тд.
Только теперь у вас некоторые сервисы это не просто код. Может быть вызов LLM-классификатора, в зависимости от вердикта вызываться какой-то другой код. Или вызов LLM-суммаризатора, ответ которого запишется в NOSQL базу данных.
Получается такой недетерминированный граф, который может решать поразительные задачи. Которые не мог решать обычный софт.
Перечислим часто используемые элементы в этом графе:
- Код бизнес логики. Не пытайтесь отдать это на LLM. Читайте про это статью. Туда же я отношу другие элементы разработки - реляционные базы данных, очереди сообщений и тд.
- Вызов LLM. Они могут соединяться различным образом: идти последовательно, параллельно, при выполнения условия и тд. Строго читать статью
- Внешние инструменты. Например, поисковый движок. Похоже на код, но инструменты не делают бизнес логики. Результат инструментов подается на вход в LLM. Разберем в "Паттерн 3. Все есть инструмент".
- Внешняя база знаний. Так делается RAG. Лучший способ заложить внешние знания в LLM. Подробнее обсудим в "Паттерн 4. Всегда используйте in context learning" и "Паттерн 5. Не переусложняйте RAG".
- Не-LLM модели. Обычно это бырты/сверточные сети или бустинги над деревьями. Очень быстры и дешевы. Как правило, обучаются дистилляцией. Поговорит про это в "Паттерн 10. Дистилируйте."
- Guardrails. Модели, которая оценивает качество ответа. Если качество плохое, лучше такое никому не показывать. Обсудим в "Паттерн 8. Human-in-the-loop"
- Человек. У него нужно уточнить, когда непонятно, что делать дальше. У него нужно спросить, когда хотим сделать рискованное действие. Подробнее в "Паттерн 8. Human-in-the-loop"
- Автономные агенты. Редкий зверь, но будет чаще встречаться. Почему редкий. Обсудим в "Паттерн 9. Когда нужны автономные агенты."
Литература для изучения
- Строго mustread пост от Anthropic
- Подробная схема LLM-приложений от Chip Huyen
- Пост, почему надо разделять LLM и бизнес логику
- 500 реальных кейсов LLM-приложений
- Подробный гайд с большим числом деталей
- Принципы проектирования агентов (многое можно почерпнуть и для неагентов)
Как обычно, любые вопросы жду в комментариях. Все разберем.
Начинаю серию публикаций по LLM System Design.
Если осилите все 10 паттернов - сможете разрабатывать надежные LLM-приложения, которые не сломаются от наплыва счастливых пользователей.
Поехали.
Паттерн 1. LLM приложение это просто граф
Считайте, что вы разрабатываете обычный софт. Используете микросервисную архитектуру. Сервис 1 ждет ответа от Сервиса 2, если ответ = X, то идет в Сервис 3 и тд.
Только теперь у вас некоторые сервисы это не просто код. Может быть вызов LLM-классификатора, в зависимости от вердикта вызываться какой-то другой код. Или вызов LLM-суммаризатора, ответ которого запишется в NOSQL базу данных.
Получается такой недетерминированный граф, который может решать поразительные задачи. Которые не мог решать обычный софт.
Перечислим часто используемые элементы в этом графе:
- Код бизнес логики. Не пытайтесь отдать это на LLM. Читайте про это статью. Туда же я отношу другие элементы разработки - реляционные базы данных, очереди сообщений и тд.
- Вызов LLM. Они могут соединяться различным образом: идти последовательно, параллельно, при выполнения условия и тд. Строго читать статью
- Внешние инструменты. Например, поисковый движок. Похоже на код, но инструменты не делают бизнес логики. Результат инструментов подается на вход в LLM. Разберем в "Паттерн 3. Все есть инструмент".
- Внешняя база знаний. Так делается RAG. Лучший способ заложить внешние знания в LLM. Подробнее обсудим в "Паттерн 4. Всегда используйте in context learning" и "Паттерн 5. Не переусложняйте RAG".
- Не-LLM модели. Обычно это бырты/сверточные сети или бустинги над деревьями. Очень быстры и дешевы. Как правило, обучаются дистилляцией. Поговорит про это в "Паттерн 10. Дистилируйте."
- Guardrails. Модели, которая оценивает качество ответа. Если качество плохое, лучше такое никому не показывать. Обсудим в "Паттерн 8. Human-in-the-loop"
- Человек. У него нужно уточнить, когда непонятно, что делать дальше. У него нужно спросить, когда хотим сделать рискованное действие. Подробнее в "Паттерн 8. Human-in-the-loop"
- Автономные агенты. Редкий зверь, но будет чаще встречаться. Почему редкий. Обсудим в "Паттерн 9. Когда нужны автономные агенты."
Литература для изучения
- Строго mustread пост от Anthropic
- Подробная схема LLM-приложений от Chip Huyen
- Пост, почему надо разделять LLM и бизнес логику
- 500 реальных кейсов LLM-приложений
- Подробный гайд с большим числом деталей
- Принципы проектирования агентов (многое можно почерпнуть и для неагентов)
Как обычно, любые вопросы жду в комментариях. Все разберем.
Forwarded from Data Secrets
Что спрашивают на собеседовании в OpenAI
Мы тут бороздили Интернет и нашли золото: инженер, который только что вышел на работу в OpenAI, написал огромный блог-пост про процесс отбора в стартап. И выглядит это как ультимативный гайд по тому, как прокачаться в прохождении собесов на любую ML-роль.
Итак, пересказываем максимально кратко:
1 этап – Recruiter intro (15–30 мин).
Это просто базовый скрин: вам рассказывают про команду, этапы, сроки, правила прохождения интервью и тд. Вы рассказываете о себе. Обязательно нужно подготовиться, порепетировать с друзьями, быть кратким, задать вопросы и все записать.
2 этап – Hiring Manager chat. Вопросы в духе почему вы подходите этой команде и тд. На этом этапе уже важно понимать цели компании, показать предметный интерес и соблюдать баланс скромности и уверенности.
3 этап – Кодинг.
Начинается самое интересное. Вот что могут спросить, например:
– дебаггинг трансформера (ошибка может быть в механизме внимания, например, или в форме тензоров)
– реализация KV-cache, BPE или обратного распространения с нуля
– классика алгоритмов: Дейкстра, кучи, сортировки, бинарный поиск
Автор пишет, что тут важнее делать быстро, чем идеально качественно. Лучше оставлять #todo и assert, чем путаться и тормозить. Ну а с подготовкой все просто: 100+ часов на LeetCode и столько же на чтение и имплементацию статей.
4 этап – ML.
Проверяют фундамент + какие-то актуальные знания. Например, могут спросить: supervised vs unsupervised, математика линейной регрессии, как обучить модель с контекстом 10М токенов, GRPO vs PPO, методы интерпретируемости. Тут опять же: читаем много статей и базовые книги.
5 этап – Поведенческое интервью.
Проверяют, как вы действуете в сложных ситуациях. К этому интервью тоже не забываем готовиться и отвечаем всегда по методу STAR(I): Situation, Task, Action, Result, Insight. Отдельно готовимся к вопросам про провал и конфликты, они будут обязательно.
Вот так как-то, за деталями – в сам блогпост. Там еще кучу полезного можно найти: инсайты, полезные ресурсы, советы по тому, как выбивать себе зп и так далее.
Уловом с утра – довольны 🍯
Мы тут бороздили Интернет и нашли золото: инженер, который только что вышел на работу в OpenAI, написал огромный блог-пост про процесс отбора в стартап. И выглядит это как ультимативный гайд по тому, как прокачаться в прохождении собесов на любую ML-роль.
Итак, пересказываем максимально кратко:
1 этап – Recruiter intro (15–30 мин).
Это просто базовый скрин: вам рассказывают про команду, этапы, сроки, правила прохождения интервью и тд. Вы рассказываете о себе. Обязательно нужно подготовиться, порепетировать с друзьями, быть кратким, задать вопросы и все записать.
2 этап – Hiring Manager chat. Вопросы в духе почему вы подходите этой команде и тд. На этом этапе уже важно понимать цели компании, показать предметный интерес и соблюдать баланс скромности и уверенности.
3 этап – Кодинг.
Начинается самое интересное. Вот что могут спросить, например:
– дебаггинг трансформера (ошибка может быть в механизме внимания, например, или в форме тензоров)
– реализация KV-cache, BPE или обратного распространения с нуля
– классика алгоритмов: Дейкстра, кучи, сортировки, бинарный поиск
Автор пишет, что тут важнее делать быстро, чем идеально качественно. Лучше оставлять #todo и assert, чем путаться и тормозить. Ну а с подготовкой все просто: 100+ часов на LeetCode и столько же на чтение и имплементацию статей.
4 этап – ML.
Проверяют фундамент + какие-то актуальные знания. Например, могут спросить: supervised vs unsupervised, математика линейной регрессии, как обучить модель с контекстом 10М токенов, GRPO vs PPO, методы интерпретируемости. Тут опять же: читаем много статей и базовые книги.
5 этап – Поведенческое интервью.
Проверяют, как вы действуете в сложных ситуациях. К этому интервью тоже не забываем готовиться и отвечаем всегда по методу STAR(I): Situation, Task, Action, Result, Insight. Отдельно готовимся к вопросам про провал и конфликты, они будут обязательно.
Вот так как-то, за деталями – в сам блогпост. Там еще кучу полезного можно найти: инсайты, полезные ресурсы, советы по тому, как выбивать себе зп и так далее.
Уловом с утра – довольны 🍯
🤮1💩1🤡1