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

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

Чтобы определить правильный подход для вашего конкретного случая, следуйте этой пошаговой схеме оценки.
​
Шаг 1: Оцените сложность
Оцените сложность вашего приложения по шкале от 1 до 10, приняв во внимание:

1) Сколько различных операций (шагов) требуется?
- 1-3 шага: Низкая сложность (1-3)
- 4-7 шагов: Средняя сложность (4-7)
- 8+ шагов: Высокая сложность (8-10)

2) Насколько взаимосвязаны различные части?
- Мало зависимостей: низкая сложность (1-3)
- Некоторые зависимости: Средняя сложность (4-7)
- Множество сложных зависимостей: Высокая сложность (8-10)

3) Условная логика: сколько ветвлений и принятия решений необходимо?
- Линейный процесс: низкая сложность (1-3)
- Некоторое ветвление: Средняя сложность (4-7)
- Сложные деревья решений: Высокая сложность (8-10)

4) Знание предметной области: насколько специализированы требуемые знания?
- Общие знания: Низкая сложность (1-3)
- Некоторые специальные знания: Средняя сложность (4-7)
- Глубокие познания в различных областях: Высокая сложность (8-10)

Рассчитайте свой средний балл, чтобы определить общую сложность.
​
Шаг 2: Оценка требований к точности
Оцените ваши требования к точности по шкале от 1 до 10, приняв во внимание:

1) Насколько структурированным должен быть выходной сигнал?
- Текст свободной формы: низкая точность (1-3)
- Полуструктурированный: Средняя точность (4-7)
- Строго отформатировано (JSON, XML): Высокая точность (8-10)

2) Насколько важна фактическая точность?
- Творческий контент: Низкая точность (1-3)
- Информативность: Средняя точность (4-7)
- Критическая информация: Высокая точность (8-10)

3) Воспроизводимость: насколько последовательными должны быть результаты при разных запусках?
- Допустимое отклонение: низкая точность (1-3)
- Необходима некоторая последовательность: средняя точность (4-7)
- Требуется точная воспроизводимость: высокая точность (8-10)

4) Устойчивость к ошибкам: каково влияние ошибок?
- Низкое воздействие: Низкая точность (1-3)
- Умеренное воздействие: средняя точность (4-7)
- Высокая ударопрочность: высокая точность (8-10)

Рассчитайте средний балл, чтобы определить общие требования к точности.
​
Шаг 3: Сопоставьте с матрицей
Отобразите оценки сложности и точности на матрице:
▫️ Низкая сложность (1-4), низкая точность (1-4): простые crew
▫️ Низкая сложность (1–4), высокая точность (5–10): flow с прямыми вызовами LLM
▫️ Высокая сложность (5-10), низкая точность (1-4): сложные crew
▫️ Высокая сложность (5-10), высокая точность (5-10): flow, организующие crew
​
Шаг 4: Рассмотрите дополнительные факторы
Помимо сложности и точности, примите во внимание:

1) Время разработки: команды часто быстрее создают прототипы.

2) Потребности в обслуживании: Потоки обеспечивают лучшую долгосрочную ремонтопригодность.

3) Опыт команды: примите во внимание знакомство вашей команды с различными подходами.

4) Требования к масштабируемости: потоки обычно лучше масштабируются для сложных приложений.

5) Потребности интеграции: продумайте, как решение будет интегрироваться с существующими системами.


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

Источник

#crewai
👍1
Недавно решал одну задачу на CrewAI для стримера.

Суть задачи
Нужно собирать новости компьютерных игр на текущую дату. Формировать пост для телеграм и отправлять боту в ТГ. Посты всегда должны быть одного формата.
Нужны были не просто новости, а новые игры, dlc, патчи, обновления и только на платформу PC.

Так же одним из требований было, минимальные затраты на использование. Т.е. дешёвый сервер и дешёвый API LLM. Если с сервером проблем нет, то вот с LLM как бы есть.

Агентская система
В проекте два агента. Один ищет новости, фильтрует и сортирует их по заданным требованиям. Даёт краткое описание по заданной структуре.

Второй агент, на основе этих данных формирует пост для телеграм + хештеги.
После завершения задач, скрипт отправляет пост боту в ТГ.

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

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

Использовать API хороших LLM нет возможности.
Было принято решение в бета версии использовать локальную LLM. По результатам тестов остановился на qwen3:8b. Выдает достойный результат и подходит под ресурсы ПК.

На результат работы можно посмотреть в Телеграм канале стримера.


#crewai
👍9🤔4🔥3
Описание, хештеги и таймкоды для видео на YouTube

На днях решал задачу, чтобы LLM делала описание, хештеги и таймкоды для видео на YouTube.
На первый взгляд задача не сложная. Но столкнулся с рядом проблем.

В CrewAI есть инструмент YoutubeVideoSearchTool предназначенный для семантического поиска в видео YouTube с использованием RAG. Но вот беда, этот инструмент выдает 400 ошибку и не работает. Проблема в том, что он основан на библиотеке pytube, которая давно не обновлялась. Установка либы pytubefix не дало результата.

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

Решил написать не большой скрипт, для получения транскрипта видео с помощью библиотеки youtube_transcript_api. Заработало.

Как работает
При запуске crew спрашиваю url видео. В url нахожу id видео.
Если еще не получали транскрипт видео, то получаю транскрипт и записываю в файл. Запускается crew для анализа и составления описания, хештегов и таймкодов.

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

В самом crew используется один агент с одной задачей.

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

#crewai
👍8🔥1
Михаил Омельченко | AI&IT
Недавно решал одну задачу на CrewAI для стримера. Суть задачи Нужно собирать новости компьютерных игр на текущую дату. Формировать пост для телеграм и отправлять боту в ТГ. Посты всегда должны быть одного формата. Нужны были не просто новости, а новые игры…
В этом посте 👆 рассказывал как сделал сбор новостей компьютерных игр.

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

Сначала было предложение сделать поиск с помощью SerperDevTool. Но он находил новости в которых мельком упоминалась нужная тема и эти новости были не валидны.
С уточнённым промптом начали отсеивать не нужные новости и сайты (газеты и телеканалы). Но поиск увеличился во времени.

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

Для этого в CrewAI есть инструмент ScrapeWebsiteTool. Этот инструмент, предназначенный для извлечения и чтения содержимого сайта. Он способен обрабатывать различные типы веб-страниц, выполняя HTTP запросы и анализируя полученный HTML.

Проблемы с которыми столкнулся
А их не было. В этот раз всё нормально отработало. Главное правильно сделанные промпты.

Агентская система
В проекте 3 агента. Рисерчер ищет новости в нужной тематике. Писатель, который на основе найденных данных пишет статью в нужном формате. И редактор, который проверяет работу писателя.
После статья публикуется на сайте как черновик.

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

Для этой задачи взял Gemini Flash 2.

#crewai
👍6🔥2
Сделал пример проекта на CrewAI для поиска и написание новостей в IT тематику.

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

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

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

Агенты проверены на Gemini Flash 2 и Qwen3 8b.

#crewai
👍7
Как настроить переменные окружения .env для локальной работы с ollama в CrewAI.

Устанавливаем ollama открываем терминал и скачиваем нужную модель, например qwen3
ollama pull qwen3:8b


В фале .env прописываем настройки
MODEL=ollama/qwen3:8b
API_BASE=http://localhost:11434


#crewai
👍8
Часть 9. Knowledge в CrewAI

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

Knowledge (Знания) помогают агентам
🔸 Предоставлять информацию для конкретной предметной области.
🔸 Принимать решения на реальных данных.
🔸 Делать ответы более точными и основанными на достоверных данных.

CrewAI поддерживает разные источники данных: обычный текст, текстовые файлы (.txt), PDF, CSV, Excel, JSON.

Knowledge можно настроить на двух уровнях.
На уровне команды (crew-level): знания, доступные и используемые всеми агентами в команде.
На уровне агента (agent-level): знания, специфичные для одного конкретного агента.

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

Знания на уровне агента независимые.
Пример c PDF для одного агента
from crewai import Agent, Task, Crew
from crewai.knowledge.source.pdf_knowledge_source import PDFKnowledgeSource

pdf_source = PDFKnowledgeSource(
file_paths=["document.pdf", "another.pdf"]
)

specialist_agent = Agent(
role="Technical Specialist",
goal="Provide technical expertise",
backstory="Expert in specialized technical domains",
knowledge_sources=[specialist_knowledge] # Занния для агента
)

task = Task(
description="Answer technical questions",
agent=specialist_agent,
expected_output="Technical answer"
)

crew = Crew(
agents=[specialist_agent],
tasks=[task]
)

result = crew.kickoff()


Файлы нужно положить в директорию knowledge в проекте.

Пример, knowledge для всего crew
crew = Crew(
agents=[specialist, generalist],
tasks=[...],
knowledge_sources=[crew_knowledge] # Знания для всего crew
)


Настройка векторной базы
По умолчанию используется встраиваемые решения OpenAI ( text-embedding-3-small).

Можно переопределить провайдера.
specialist_agent = Agent(
role="Technical Specialist",
goal="Provide technical expertise",
backstory="Expert in specialized technical domains",
knowledge_sources=[specialist_knowledge],
embedder={"provider": "ollama", "config": {"model": "mxbai-embed-large"}} # Используем ollama
)



#crewai
🔥9👍2
Команда для обсуждения идей на CrewAI

Команда состоит из 4 агентов: критик, прагматик, представитель пользователей, генератор идей (Оптимист).

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

Подготовка
1) Установите crewai по инструкции из документации.

2) Создайте Crew
crewai create crew team

При установке выберите своего поставщика API и модель, укажите API ключ.

Если вы используете локальную LLM, например ollama, выберите ollama и любую модель. Затем в файле .env укажите нужную вам модель, например:
MODEL=ollama/qwen3:8b
API_BASE=http://localhost:11434


4) Перейдите в директорию с проектом.
5) Активируйте виртуальное окружение.
Linux\Mac
.venv/Scripts/bin

Windows
.venv\Scripts\activate


6) Установите crewai
crewai install


#crewai
🔥8👍4
Пример реализации команды агентов


Файл config/agents.yaml
critic:
role: >
Критик
goal: >
Анализировать идеи критически, выявлять слабые места и потенциальные проблемы
backstory: >
Опытный аналитик с острым умом, который всегда находит недостатки и риски в любых предложениях

pragmatist:
role: >
Прагматик
goal: >
Оценивать практическую реализуемость идей и предлагать конкретные шаги
backstory: >
Практичный специалист, который фокусируется на том, как реально воплотить идеи в жизнь

user_advocate:
role: >
Представитель пользователей
goal: >
Защищать интересы пользователей и оценивать идеи с их точки зрения
backstory: >
Эксперт по пользовательскому опыту, который всегда думает о потребностях и удобстве конечных пользователей

idea_generator:
role: >
Генератор идей (Оптимист)
goal: >
Развивать и улучшать идеи, находить новые возможности и перспективы
backstory: >
Креативный мыслитель-оптимист, который видит потенциал в любой идее и умеет её развить



Файл config/tasks.yaml
discussion_task:
description: >
Проведите коллективное обсуждение идеи: {idea}

ВАЖНО: Это должна быть настоящая дискуссия с диалогом между участниками!

Процесс:
1. Критик высказывает свои опасения
2. Генератор идей отвечает на критику и предлагает решения
3. Прагматик оценивает предложенные решения
4. Представитель пользователей добавляет свою точку зрения
5. Все участники обсуждают спорные моменты
6. Приходят к общему выводу

Каждый участник должен реагировать на мнения других и вести диалог!
Организуйте настоящий диалог, а не просто сбор мнений!
expected_output: >
Всестороннее обсуждение идеи с выводами от каждого агента
agent: idea_generator
human_input: true


#crewai
👍5🔥4
Файл crew.py
from typing import List

from crewai import Agent, Crew, Process, Task
from crewai.project import CrewBase, agent, crew, task
from crewai.agents.agent_builder.base_agent import BaseAgent


@CrewBase
class Team:
"""Команда для обсуждения идей с разными ролями"""

agents: List[BaseAgent]
tasks: List[Task]

@agent
def critic(self) -> Agent:
return Agent(
config=self.agents_config['critic'],
verbose=True
)

@agent
def pragmatist(self) -> Agent:
return Agent(
config=self.agents_config['pragmatist'],
verbose=True
)

@agent
def user_advocate(self) -> Agent:
return Agent(
config=self.agents_config['user_advocate'],
verbose=True
)

@agent
def idea_generator(self) -> Agent:
return Agent(
config=self.agents_config['idea_generator'],
verbose=True
)

@task
def discussion_task(self) -> Task:
return Task(
config=self.tasks_config['discussion_task']
)

@crew
def crew(self) -> Crew:
return Crew(
agents=self.agents,
tasks=self.tasks,
process=Process.sequential,
verbose=True
)



Файл
main.py
import warnings

from team.crew import Team


warnings.filterwarnings("ignore", category=SyntaxWarning, module="pysbd")


def run():
"""Run the crew."""
idea = input("Ваш запрос (например, 'Открыть кофейню'): ")
try:
Team().crew().kickoff(inputs={"idea": idea})
except Exception as e:
raise Exception(f"An error occurred while running the crew: {e}")


Запустить проект
crewai run


#crewai
🔥7👍4
😎 В клубе по нейросетям выложил пример кода "Команда для обсуждения идей" с web интерфейсом на streamlit.

👉 Вступить в клуб

#crewai
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
Чтобы удобнее было воспользоваться кодом команды для обсуждения идей.

Ссылка на GitHub

#crewai
🔥7
Стрим сегодня в 19:00 по мск.

Начну погружение в тему создание агентов на фреймворке CrewAI.

UPD:
Запись стрима в частном клубе

#crewai #ai
🔥11👍4❤‍🔥2
MDXSearchTool CrewAI

Инструмент MDX позволяет эффективно искать и извлекать релевантную информацию из файлов MD с помощью поиска на основе запросов.
Этот инструмент незаменим для анализа данных, управления информацией, оптимизирует процесс поиска нужной информации в больших коллекциях документов.

from crewai_tools import MDXSearchTool

# Инициализируйте инструмент для поиска любого MDX контента, полученного во время выполнения
tool = MDXSearchTool()

# ИЛИ

# Инициализируйте инструмент с указанием конкретного пути к MDX файлу для поиска в этом документе
tool = MDXSearchTool(mdx='path/to/your/document.mdx')


По умолчанию инструмент использует OpenAI. Для настройки используйте словарь конфигурации.
Пример с локальной моделью в ollama.
tool = MDXSearchTool(
mdx='knowledge/my_file.md',
config=dict(
embedder=dict(
provider="ollama",
config=dict(
model="nomic-embed-text",
base_url="http://localhost:11434"
),
),
)
)


#crewai
👍4
LangChain vs CrewAI

LangChain и CrewAI — популярные фреймворки для работы с LLM. Разбираемся, чем они отличаются!

LangChain
Фокус на гибкости и кастомизации. Подходит для анализа текста, сложных workflow и RAG. Много интеграций, более 600. Минус, требует опыта и написания кода, поэтому лучше для разработчиков, которым нужен полный контроль.

CrewAI
Фокус на командах AI-агентов с ролями и делегированием, упрощает создание multi-agent систем. Позволяет быстро прототипировать, меньше кода, удобно для симуляции команд в маркетинге, HR, автоматизации и т.д. Минус, менее гибок для общих задач, но отлично подходит новичкам.


💡 Лайфхак: их можно комбинировать! CrewAI работает с инструментами LangChain.

#AI #LangChain #CrewAI
👍9🔥1
Создание AI агентов на CrewAI


Что в видео:
- Покажу не только результат, но и код агентов.
- Увидим, как AI-команда генерирует стратегический план для “кофейни для брутальных пацанов” и “чайной для программистов”.
- Разберем, как подключение памяти позволяет агентам учиться на предыдущих диалогах и становиться “умнее”.

- - -
Смотреть видео на YouTube

Смотреть видео на RuTube
- - -


Мой клуб по нейросетям

#crewai
👍11🔥6🎉2
Создание AI-агентов на CrewAI с нуля | часть 1

Разберём фреймворк CrewAI.
Напишем агента и запустим локально, Ollama и Gemma 3 12B.

Пройдём по всей структуре проекта: конфиги agents и tasks, класс crew и передача данных через inputs.

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

➡️ Смотреть на YouTube

➡️ Смотреть на RuTube

Поддержать автора и получить доступ к закрытому клубу.

#crewai #ai_агенты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤‍🔥2
Создание AI-агентов на CrewAI с нуля | часть 2

Добавлю второго агента тестировщика, который проверяет работу первого и даёт конструктивную обратную связь.

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

Покажу режим, где агент ждёт вашего ответа и дорабатывает результат на его основе.

➡️ Смотреть на YouTube

➡️ Смотреть на RuTube

Поддержать автора и получить доступ к закрытому клубу.

#crewai #ai_агенты
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍7
CrewAI создание AI-агентов | часть 3

Продолжаем разбирать CrewAI. В этой части доработаем агентов: используем встроенный AI-ассистент из документации CrewAI, чтобы улучшить роль, цель и backstory.

Разберём, почему "старший специалист с опытом 5 лет" в описании агента - это рабочий приём из промпт-инжиниринга.

➡️ Смотреть на YouTube

➡️ Смотреть на RuTube

➡️ Смотреть на VK


Поддержать автора и получить доступ к закрытому клубу.

#crewai #ai_агенты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥5
CrewAI создание AI-агентов | часть 4

Продолжаем разбирать CrewAI.
В этой части убираем лишних агентов и проверяем: можно ли получить тот же результат с одним агентом и одной задачей?


➡️ Смотреть на YouTube

➡️ Смотреть на RuTube


👉 Поддержать автора

#crewai #ai_агенты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥1