Python Agents RAG LLM Docker

Архитектура агента и граф

  • Расскажите про граф агента: что является нодами, что рёбрами, где entry point?
  • Чем планировщик отличается от роутера, выбирающего следующий шаг? Это одна нода или разные?
  • Как называется паттерн «вызвать инструмент → проанализировать результат → при необходимости повторить вызов с другими параметрами»?
  • Когда нужен граф из нескольких узлов с подграфами и циклами, а когда достаточно простого ReAct?
  • Что даёт разбиение на узлы для трейсов и отладки?
  • Что такое structured output и где он уже используется неявно (вызов инструмента)?
  • Как обязать LLM соблюдать структуру ответа: описанием в промпте или ограничением на уровне декодинга? В чём разница?
  • Что такое JSON-схема в клиенте LLM и чем она отличается от описания формата в промпте?

RAG: чанкинг и извлечение

  • Как выбирать стратегию чанкинга? Почему рекурсивное разбиение по разделителям лучше нарезки по фиксированному числу символов?
  • Как использовать структуру документа (заголовки, подзаголовки, абзацы) при чанкинге и почему нельзя рвать абзац посередине?
  • Что делать, если семантически схожие фрагменты лежат в разных разделах большого документа (налоговый кодекс, медицинские справочники)? Какие метаданные хранить у чанка?
  • Зачем хранить у чанка родительский документ и его номер в документе?
  • Что такое HyDE и когда его применять?
  • Зачем гибридный поиск с реранкингом поверх ванильного ретривала?

Деплой и Docker

  • Как веса локальной модели попадают в Docker-образ?
  • Что такое Docker volume и когда он нужен вместо копирования в образ?

Python: веб-фреймворки

  • Чем FastAPI отличается от Flask? Что для каких задач лучше подходит?
  • Что такое Depends в FastAPI и как работает инъекция зависимостей?

Python: многозадачность

  • Какие виды многозадачности существуют в Python?
  • Чем асинхронность отличается от многопоточности и многопроцессности?
  • Что такое GIL? Чем он мешает и зачем он нужен?
  • Как можно обойти или отключить GIL (несколько интерпретаторов, флаги интерпретатора, C-расширения, free-threaded сборки)?
  • Если GIL отключён и потоки работают с общей памятью, как синхронизировать доступ? Какие примитивы синхронизации существуют?

Python: объектная модель

  • Что такое ссылочная модель в Python?
  • Какие типы данных изменяемые, а какие неизменяемые?
  • Что произойдёт со списком во внешней функции, если изменить его во вложенной? А со строкой?
  • Что такое множество? Какая сложность проверки вхождения, добавления и удаления?
  • Что будет, если добавить в множество одно и то же значение несколько раз?
  • Какие ограничения на типы данных, которые могут лежать в множестве, и чем они вызваны устройством хеш-таблицы?
  • Какой метод должен реализовать кастомный класс, чтобы стать ключом словаря или элементом множества?

Python: контекстные менеджеры и декораторы

  • Что такое контекстный менеджер и зачем он нужен?
  • Как написать кастомный контекстный менеджер через класс? Какие два метода нужны?
  • Как написать контекстный менеджер через генератор? Какой декоратор для этого используется и какую роль играет yield?
  • Как сделать асинхронный контекстный менеджер? Какие методы нужны вместо __enter__ / __exit__?
  • Что такое декоратор? Он изменяет саму функцию или дополняет её поведение?
  • Что произойдёт с именем и сигнатурой функции после декорирования? Как сохранить метаданные оригинальной функции?
  • Как параметризовать декоратор (например, retry с числом попыток и задержкой)? Почему «просто добавить аргументов» не работает?