Михаил Омельченко | AI&IT
5.28K subscribers
976 photos
192 videos
4 files
713 links
ИИ в работе, разработка, веб. Агенты, автоматизация, инструменты. Веду я, Михаил Омельченко, внешний технический директор по ИИ и ментор.

Менторство, реклама и сотрудничество: djwoms.ru
Telegram - @DJWOMS
YouTube - https://www.youtube.com/c/DjangoSchool
Download Telegram
Стартовал четвертый сезон в клубе по веб разработке

С 14.07.25 до 19.07.25 есть возможность попасть в четвертый сезон.

Завершаем наполнение команд. Ондбординг участников в проект.

Так же можно присоединиться без участия в сезоне.

Как присоединиться?

🔹 Переходите в телеграм бот клуба
🔹 Выбирайте подходящий тариф и способ оплаты
🔹 Присоединитесь к нашему чату в Telegram
🔹 Принимаешь участие в большом проекте

Про клуб можно почитать тут.

Если у вас будут вопросы можете написать мне @DJWOMS

#club
🔥5
Частый вопрос и проблема в проектах Django, как делить на приложения и как не делать сильно связанные приложения.

Видел разное, но то, что делает LLM это топ.

Сделала импорт views из другого приложения и наследовала его.

"Здесь наши полномочия всё"
😁8👍1
Михаил Омельченко | AI&IT
Photo
Последний день до активной разработки в сезоне.

В клубе сформировали две команды. Новые ребята знакомиться с проектом.

Клуб по программированию был объединён с клубом по веб разработке. Если вы учите питон, то тоже можете присоединиться.

Если у вас есть свой пет проект или ищите такой, можете постараться найти команду или проект в клубе.

Ждём вас.
🔥6
Google представила Gemini CLI — инструмент командной строки, который подключает пользователей напрямую к модели Gemini 2.5 Pro. Решение распространяется как open-source (лицензия Apache 2.0) и доступно бесплатно при входе через личный аккаунт Google.

Контекстное окно до 1 млн токенов и суточный лимит 1 000 запросов (до 60 запросов в минуту). Для расширенных сценариев поддерживаются ключи Google AI Studio, Vertex AI и платные планы Gemini Code Assist.

CLI клиент выполняет задачи анализа и генерации кода, работы с файлами и запуска shell-команд. Функции расширяются с помощью MCP или встроенные расширения. Запросы можно использовать в неинтерактивных скриптах. При необходимости агент подгружает актуальные данные из Google Search.

Gemini CLI разделяет тех. базу с Gemini Code Assist, один и тот же движок доступен в VS Code, и в терминале.

Ссылка на GitHub

#ai #gemini #tools
🔥11
CrewAI когда и зачем использовать

Что такое CrewAI
CrewAI это оркестратор многоагентных пайплайнов. Он помогает формализовать:
- роли (agents) с чёткими целями и инструментами,
- задачи (tasks) для этих ролей,
- процесс (process), по которому всё это исполняется.

CrewAI нужен, когда вы:
▪️ хотите разделить ответственность: Writer / Editor / Critic / Planner / Coder / DevOps
▪️ используете инструменты (tools): БД, веб-поиск, Telegram Bot API, RAG и т.д.
▪️ делаете планирование и самопроверку (self-critique, debate, manager/worker),
▪️ готовите масштабируемые и поддерживаемые пайплайны (CI/CD, тесты, Docker).

Если у вас одна линейная задача, например, "сгенерь текст", то LLM SDK + одна функция почти всегда быстрее, дешевле и проще.

Базовые сущности (очень коротко)
Agent — роль с goal, backstory, инструментами и моделью.
Task — конкретная работа, которая назначается агенту.
Crew — собирает агентов и задачи; отвечает за процесс выполнения.
Process — стратегия исполнения sequential, hierarchical, и др.

Когда CrewAI — это оверкилл
У тебя 1 запрос к модели → просто вызови SDK (OpenAI, Gemini, Ollama). Отсутсвуют инструменты, память, проверка качества, планирование. Нет нужды в поддерживаемом пайплайне (не продакшен, не CI/CD, не тесты).

#crewai
🔥7
Минимальный рабочий пример Crew AI

# если пользуешься uv
uv tool install crewai

# или классика
python -m venv .venv
source .venv/bin/activate # (Windows: .venv\Scripts\activate)
pip install crewai


# file: main.py
from crewai import Agent, Task, Crew, Process, LLM


def run():
llm = LLM(model="ollama/gemma3:latest", base_url="http://localhost:11434")

TOPIC = "локальные LLM: как выбрать между Ollama, vLLM и LM Studio (для новичков)"

writer = Agent(
role="Writer",
goal="Писать краткие, технически точные посты для Telegram",
backstory="""Ты технический автор и разработчик.
Пишешь коротко, без воды, даёшь минимально достаточный код/аргументы.""",
verbose=True,
llm=llm,
)

task = Task(
description=f"Сделай пост для Telegram на тему: {TOPIC}",
expected_output="""Структурированный пост до 2500 символов, с TL;DR (3 буллета), и коротким выводом. Без упоминания CrewAI.""",
agent=writer,
)

crew = Crew(agents=[writer], tasks=[task])
print(crew.kickoff())


Запуск
uv run crewai run




#crewai
🔥9
Частые ошибки новичков в CrewAI

✔️ Не привязали Task к Agent → ValidationError. Всегда указывай agent в задаче или в YAML.

✔️ Неописанный backstory.

✔️ Смешивают промпт задачи в агенте. Роль и цель → в Agent; что сделать → в Task.

✔️ Нет expected_output. Формализуй формат результата (форма, длина, ключевые секции).

✔️ Процесс не указан, поведение неочевидно. Явно ставь process=Process.sequential (или другой), чтобы было ясно, как исполняются задачи.

#crewai
👍8
Агенты ищут в интернете, анализируют и пишут статьи.
Часть 2. Архитектура CrewAI: Agent, Task, Crew, Process

Зачем вообще разбирать архитектуру
Если не разделить роли и зоны ответственности, вы получаете "одного большого промпт-монстра", который сложно поддерживать, тестировать, масштабировать и объяснять заказчику. CrewAI вводит четыре базовые сущности: Agent, Task, Crew, Process и вся магия начинается только тогда, когда вы начинаете мыслить ими как отдельными блоками.

🔸 Agent тот, кто делает работу. Роль с целью, предысторией, инструментами и тоном. Это персонаж, которого можно многократно переиспользовать.

🔸 Task то, что именно сейчас нужно сделать. Конкретное задание для конкретного агента, с чётким форматом ожидаемого результата.

🔸 Crew это оркестратор. Он собирает агентов и задачи в один рабочий процесс.

🔸 Process это стратегия исполнения задач. Например, по порядку (sequential) или с менеджментом иерархии (hierarchical).


Представьте продакшн команду
🔹 Agent = роль: автор, редактор, аналитик, менеджер, исполнитель.

🔹 Task = поручение: “написать драфт”, “проверить факты”, “сделать итоговый отчёт”.

🔹 Crew = команда проекта: вы собрали нужные роли и расписали, кто что делает.

🔹 Process = регламент: идём строго по шагам или менеджер сначала строит план, а потом раздаёт задачи.

#crewai
2🔥8👍1
Что обязательно должно быть у Agent
Role это короткое имя роли (Writer, Critic, Manager…).
Goal это зачем роль существует, какой результат она должна обеспечивать в принципе.
Backstory это контекст, стиль, ограничения, принципы.
Tools (если есть) — чем агент может пользоваться: веб‑поиск, БД, RAG, Telegram Bot API и т.п.
Модель какая LLM стоит за агентом (локальная/облачная и т.д.).

Важно: Агент не описывает конкретную текущую задачу, он описывает поведение роли в целом.


Что обязательно должно быть у Task
Description это то, что именно нужно сделать сейчас, конкретно.
Expected output это формат результата: длина, структура, стиль, ограничения, файл и т.д.
Agent это тот, кто выполняет задачу.
Сontext (опционально) на каких данных/предыдущих шагах основана эта задача.

Важно: отсутствие expected_output почти гарантирует расплывчатый результат.


Crew отвечает за то, чтобы:
🔸 собрать набор агентов и задач,
🔸 определить process (как они будут исполняться),
🔸 запустить их в нужной последовательности,
🔸 обеспечивать передачу контекста между задачами, если задано процессом/конфигурацией.


Process
Sequential (последовательный) простая линейная цепочка шагов. Хорош, когда план заранее понятен, и нам просто нужно пройти от А до Я. Дешевле в настройке, легче объяснить.

Когда выбирать: есть чёткий pipeline: Writer → Critic → Publisher.


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

Когда выбирать: задача расплывчата (сделать продуктовое исследование) и вам нужен планировщик.


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

#crewai
👍5
Часть 3. Инструменты (tool) для агентов

Что такое tool в контексте агентной системы
Под инструментом будем понимать описанную и ограниченную способность агента вызывать внешний мир. Это может быть веб поиск, обращение в БД, RAG, отправка сообщения в Telegram, получение расшифровки видео и т.д.

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


Работа с файлами и локальными данными
Базовые операции чтение/запись фалов. Поверх них идут специализированные RAG: PDF/DOCX/JSON/CSV/XML/MDX/TXT.

Для навигации по проекту есть DirectoryReadTool облегчает чтение и обработку структур каталогов, и их содержимого. DirectorySearchTool инструмент RAG для поиска в каталогах, полезный для навигации по файловым системам.

Web Scraping и управление браузером
Для парсинга подойдёт ScrapeWebsiteToo, если нужны точечные элементы по CSS селектору, то ScrapeElementFromWebsiteTool.

Динамические сайты с JS отрабатывают через SeleniumScrapingTool. Для больших объёмов и обхода антибот доступны интеграции уровня Firecrawl и Scrapfly, есть и Spider быстрый краулер.

Когда требуется управлять облачными headless браузерами и сложными сценариями, пригодятся BrowserbaseLoadTool, HyperbrowserLoadTool и обёртка Stagehand для пошаговой автоматизации.

Поиск и исследование
Чтобы искать по всему интернету, используются: SerperDevTool, TavilySearchTool, EXASearchTool. Есть и приватный BraveSearchTool.

Для RAG внутри конкретных ресурсов предусмотрен WebsiteSearchTool, а также инструменты для YouTube (YoutubeVideoSearchTool) поиск по каналу и по видео с извлечением релевантных фрагментов.

Для инженерных задач полезны GithubSearchTool поиск по репозиториям и CodeDocsSearchTool поиск по документации SDK/библиотек.

SQL и векторные БД
Когда данные лежат в БД, пригодятся PGSearchTool и MySQLSearchTool. Для преобразования естественного языка в SQL запросы — NL2SQLTool.

Если речь о семантическом поиске по embedding, есть интеграции с Weaviate и Qdrant.

RAG, интерпретатор кода, изображения и зрение
RagTool динамическая база знаний, наполняемая вашими источниками.

CodeInterpreterTool позволяет агентам CrewAI выполнять код Python, который они генерируют автономно. Эта функция особенно ценна, поскольку позволяет агентам создавать код, выполнять его, получать результаты и использовать эту информацию для принятия последующих решений и действий.

DallETool для генерации изображений в DALL‑E и Vision инструменты для извлечения текста с изображений.

MCP подключение внешних инструментов
CrewAI умеет использовать серверы по Model Context Protocol (MCP) как источники инструментов. Это открывает доступ к целым экосистемам действий, которые можно прикрепить к агенту практически без кода вокруг API.

Это не все возможности CrewAI, у фреймворка богатая библиотека инструментов. Также есть возможность писать свои инструменты.

#crewai
🔥7👍2
Часть 4. Память, контекст и рассуждение в CrewAI

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

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

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

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

Настройка памяти
В CrewAI память включается непосредственно при создании Crew и автоматически включает три уровня:
🔸 Short‑Term Memory, в рамках одного запуска
🔸 Long‑Term Memory, персистентная база SQLite по умолчанию
🔸 Entity Memory, структура фактов о сущностях с RAG

Пример:
crew = Crew(
agents=[writer, critic],
tasks=[...],
process=Process.sequential,
memory=True,# включает все уровни памяти
verbose=True
)

По умолчанию используются локальные хранилища ChromaDB для short-term, SQLite для long-term. Можно переопределить путь через CREWAI_STORAGE_DIR или подключить свой LongTermMemory/ShortTermMemory.

Рассуждение
С включённым параметром reasoning, агент заранее оценивает задачу, может построить внутренний план или критически переосмыслить само решение. Можно комбинировать с агентом критиком, который анализирует результат.

Пример:
agent = Agent(
role="Writer",
goal="...",
backstory="...",
reasoning=True,# включает рассуждение
max_reasoning_attempts=2,# сколько попыток на анализ
verbose=True
)


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


Как это работает
memory=True сохраняет результаты задач, промежуточные тексты, сущности и позволяет последующим task'ам / агентам учесть историю.

reasoning=True позволяет агенту сначала проанализировать задачу, возможно переопределить стратегию, прежде чем приступать к приведению результата.

Вместе они обеспечивают: цепочку контекста + возможность самопроверки и планирования.

Частые ошибки
Просто reasoning=True, но нет max_reasoning_attempts → агент может зациклиться на анализе.

Переопределён бекенд памяти вручную, но storage не сериализует нужные объекты → возможны ошибки.

Ожидать полноценной самокритики от агента. Чтобы не было поверхностного планирования: включите reasoning=True и добавьте отдельно агента критика для проверки результата.


#crewai
🔥7