Год назад я был типичным DevOps-инженером: настраивал CI/CD, деплоил микросервисы, оптимизировал инфраструктуру. Сегодня я строю AI-агентов для автоматизации бизнес-процессов, и мои клиенты экономят сотни часов в месяц.
Эта статья — не про "как я выучил Python за неделю", а про реальный инженерный путь: от первых экспериментов с ChatGPT API до production-ready систем, которые обрабатывают тысячи запросов в день. Я расскажу про конкретные проекты, инструменты, пайплайны и главное — про ошибки, которые стоили мне времени и денег.
В этой статье:
Как я начал: от простых скриптов до MCP Protocol
Три реальных проекта с кодом и метриками
Инструменты и стек, который работает в production
Ошибки, которые я бы не повторил
Пайплайн разработки AI-агента от идеи до деплоя
С чего всё началось: от DevOps к AI
Проект 1: AI-агент для обработки заявок (первый production)
Проект 2: MCP Protocol и интеграция с CRM
Проект 3: Telegram-бот с автоответами на основе контекста
Инструменты и стек: что реально работает
Пайплайн разработки: от идеи до production
Ошибки и уроки: что я бы сделал по-другому
Что дальше: куда двигаться начинающему AI-инженеру
Я работал DevOps-инженером в компании, которая делала кибер-разведку для банков. Наш продукт собирал данные из открытых источников, анализировал их и генерировал отчёты. Всё шло по накатанной, пока не появился закон.
Проблема: Аналитики тратили 4-6 часов в день на рутинную работу:
Поиск информации о компаниях в разных источниках
Форматирование данных для отчётов
Проверка дублей и очистка данных
Я подумал: "А что, если ChatGPT будет делать это автоматически?"
Первая попытка была наивной: я просто скопировал промпт из ChatGPT в Python-скрипт и запустил через API. Результат? Галлюцинации, неверные данные, потеря контекста. Но я понял главное: AI работает, но нужен правильный подход.
Я начал с простого: автоматизация генерации email-ответов для поддержки. Не критично, если ошибка, но экономия времени — реальная.
Что я использовал:
OpenAI API (GPT-3.5-turbo)
Python + FastAPI
PostgreSQL для хранения шаблонов
Результат: Поддержка стала отвечать в 3 раза быстрее. Это был первый успех.
Но настоящий прорыв случился, когда я узнал про MCP Protocol (Model Context Protocol). Это стандарт от Anthropic для интеграции LLM с внешними системами. Вместо того чтобы писать костыли с промптами, можно было использовать готовый протокол.
Компания получала 40-50 заявок в день через форму на сайте. Менеджеры тратили 5-7 минут на каждую:
Поиск информации о компании
Квалификация лида (горячий/холодный)
Создание карточки в CRM
Назначение ответственного
Проблема: Менеджеры не успевали, приоритетные лиды терялись.
Я построил AI-агента, который:
Получает заявку через webhook
Анализирует текст (о чём запрос, срочность, бюджет)
Обогащает данные (ищет компанию в Google, LinkedIn, Spark)
Квалифицирует лид (приоритет A/B/C)
Создаёт карточку в CRM через API
# Основные компоненты - FastAPI (веб-сервер) - OpenAI API (GPT-4 для анализа) - LangChain (оркестрация) - PostgreSQL (хранение данных) - Redis (кэширование) - Celery (асинхронные задачи)
Webhook → FastAPI → LangChain Agent → OpenAI API ↓ PostgreSQL ↓ CRM API (AmoCRM)
from langchain.agents import initialize_agent, Tool from langchain.llms import OpenAI from langchain.chains import LLMChain import requests class LeadProcessor: def __init__(self): self.llm = OpenAI(temperature=0) self.tools = [ Tool( name="search_company", func=self.search_company, description="Ищет информацию о компании в интернете" ), Tool( name="create_crm_card", func=self.create_crm_card, description="Создаёт карточку в CRM" ) ] self.agent = initialize_agent( self.tools, self.llm, agent="zero-shot-react-description" ) def process_lead(self, lead_data): prompt = f""" Проанализируй заявку: Имя: {lead_data['name']} Компания: {lead_data['company']} Сообщение: {lead_data['message']} Задачи: 1. Найди информацию о компании 2. Определи приоритет (A - горячий, B - тёплый, C - холодный) 3. Создай карточку в CRM """ result = self.agent.run(prompt) return result def search_company(self, query): # Поиск через Google Search API # ... pass def create_crm_card(self, data): # Интеграция с AmoCRM API # ... pass
До автоматизации:
Время обработки: 5-7 минут на заявку
Обрабатывалось: 25-30 заявок из 50
Потеря лидов: ~40%
После автоматизации:
Время обработки: 10-15 секунд
Обрабатывается: 100% заявок
Потеря лидов: <5%
Экономия времени: ~20 часов в неделю
ROI: Окупилось за 2 недели (экономия 1 FTE менеджера).
Проблема 1: Галлюцинации
AI иногда "придумывал" информацию о компаниях, которой не было.
Решение: Добавил валидацию через несколько источников и флаг "requires_review" для сомнительных случаев.
Проблема 2: Дорого
GPT-4 стоит дорого. При 50 заявках в день расходы были ~$50/день.
Решение:
Использую GPT-3.5-turbo для простых задач
GPT-4 только для сложной квалификации
Кэширование похожих запросов
Итог: расходы снизились до $15/день
Проблема 3: Таймауты
OpenAI API иногда отвечал медленно (10-15 секунд).
Решение: Асинхронная обработка через Celery + retry механизм.
После первого проекта я понял: нужен стандартный способ интеграции AI с внешними системами. Так я узнал про MCP Protocol.
MCP (Model Context Protocol) — это открытый стандарт от Anthropic для подключения LLM к внешним системам. Вместо того чтобы писать промпты "найди в CRM клиента с именем X", можно использовать готовые инструменты (tools).
Поддержка MCP:
✅ Claude (Anthropic) — нативная поддержка из коробки
✅ Grok (xAI) — частичная поддержка через API
⚠️ GPT-4 — требует дополнительных обёрток
Claude AI ← MCP Server ← CRM API ↓ PostgreSQL
MCP Server — это промежуточный слой, который:
Предоставляет инструменты для LLM (например, "get_customer", "create_task")
Обрабатывает запросы от LLM
Возвращает структурированные данные
Я написал MCP Server на Python, который подключается к AmoCRM:
from mcp import Server, Tool import requests class CRMMCPServer: def __init__(self): self.server = Server("crm-mcp-server") self.crm_api = AmoCRMAPI() # Регистрируем инструменты self.server.add_tool( Tool( name="get_customer", description="Получает информацию о клиенте из CRM", input_schema={ "type": "object", "properties": { "customer_id": {"type": "string"} } }, handler=self.get_customer ) ) self.server.add_tool( Tool( name="create_task", description="Создаёт задачу в CRM", input_schema={ "type": "object", "properties": { "customer_id": {"type": "string"}, "task_text": {"type": "string"} } }, handler=self.create_task ) ) def get_customer(self, customer_id): return self.crm_api.get_customer(customer_id) def create_task(self, customer_id, task_text): return self.crm_api.create_task(customer_id, task_text)
Стандартизация: Один протокол для всех LLM (Claude, Grok, GPT-4, и т.д.)
Безопасность: Контроль доступа на уровне инструментов
Переиспользование: Один MCP Server для разных проектов
Отладка: Легко логировать все запросы
Гибкость: Можно использовать Claude для сложных задач, Grok для анализа трендов, GPT-4 для генерации текста
Время разработки интеграции: с 2 недель до 3 дней
Переиспользование кода: 70% кода можно использовать в других проектах
Стабильность: меньше ошибок благодаря стандартизации
Компания получала 100+ вопросов в день в Telegram. Большинство — типовые:
"Какие у вас тарифы?"
"Как подключиться?"
"Есть ли скидки?"
Поддержка отвечала вручную, тратя 2-3 минуты на каждый вопрос.
Я создал Telegram-бота на aiogram, который:
Получает сообщение от пользователя
Ищет похожие вопросы в базе знаний
Генерирует ответ через GPT-3.5-turbo
Отправляет ответ пользователю
Если ответ не подходит — передаёт человеку
- aiogram (Telegram Bot framework) - OpenAI API (GPT-3.5-turbo) - PostgreSQL (база знаний) - pgvector (векторный поиск для похожих вопросов) - Redis (кэширование частых вопросов)
Telegram → aiogram → FastAPI → OpenAI API ↓ PostgreSQL + pgvector ↓ Redis (кэш)
from aiogram import Bot, Dispatcher, types from aiogram.filters import Command import openai from pgvector.psycopg2 import register_vector import psycopg2 class TelegramAIBot: def __init__(self): self.bot = Bot(token=TELEGRAM_TOKEN) self.dp = Dispatcher() self.openai_client = openai.OpenAI() self.db = self.init_db() # Регистрируем обработчики self.dp.message.register(self.handle_message, types.Message) async def handle_message(self, message: types.Message): user_question = message.text # Ищем похожий вопрос в базе знаний similar_question = self.find_similar_question(user_question) if similar_question and similar_question['similarity'] > 0.85: # Используем готовый ответ answer = similar_question['answer'] else: # Генерируем новый ответ answer = await self.generate_answer(user_question) # Сохраняем в базу знаний self.save_to_knowledge_base(user_question, answer) await message.answer(answer) def find_similar_question(self, question): # Векторный поиск через pgvector query = """ SELECT question, answer, embedding <=> %s::vector as similarity FROM knowledge_base WHERE embedding <=> %s::vector < 0.3 ORDER BY similarity LIMIT 1 """ question_embedding = self.get_embedding(question) cursor = self.db.cursor() cursor.execute(query, (question_embedding, question_embedding)) result = cursor.fetchone() if result: return { 'question': result[0], 'answer': result[1], 'similarity': 1 - result[2] # pgvector возвращает расстояние } return None async def generate_answer(self, question): # Используем GPT-3.5-turbo для генерации ответа response = self.openai_client.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "Ты помощник поддержки. Отвечай кратко и по делу."}, {"role": "user", "content": question} ], temperature=0.7, max_tokens=200 ) return response.choices[0].message.content def get_embedding(self, text): # Получаем embedding через OpenAI response = self.openai_client.embeddings.create( model="text-embedding-ada-002", input=text ) return response.data[0].embedding
До автоматизации:
Время ответа: 2-3 минуты
Обрабатывалось: 60-70 вопросов из 100
Нагрузка на поддержку: высокая
После автоматизации:
Время ответа: 2-5 секунд
Обрабатывается: 85-90% вопросов автоматически
Нагрузка на поддержку: снизилась на 80%
Экономия: ~15 часов в неделю
Точность ответов: 92% (проверено на 500 вопросах).
За год я перепробовал кучу инструментов. Вот что осталось в production:
OpenAI API:
✅ GPT-4: для сложных задач (квалификация, анализ)
✅ GPT-3.5-turbo: для простых задач (генерация текста, ответы)
✅ text-embedding-ada-002: для векторного поиска
💰 Стоимость: ~$0.002 за 1K токенов (GPT-3.5)
Anthropic Claude:
✅ Лучше для длинных контекстов (до 200K токенов)
✅ MCP Protocol из коробки
✅ Отличное качество рассуждений и анализа
✅ Хорошо работает с кодом и техническими задачами
💰 Дороже, но качество выше
xAI Grok:
✅ Доступ к актуальной информации через X (Twitter)
✅ Хорошо подходит для анализа трендов и новостей
✅ Более "живой" и менее формальный стиль ответов
✅ Полезен для мониторинга соцсетей и анализа публичных данных
💰 Конкурентная цена
Open-source альтернативы:
Llama 2/3 (Meta): можно запустить локально, но нужна мощная GPU
Mistral: хороший баланс цена/качество
LangChain:
✅ Оркестрация цепочек
✅ Интеграция с инструментами
⚠️ Может быть избыточным для простых задач
LlamaIndex:
✅ Отлично для RAG (Retrieval-Augmented Generation)
✅ Работа с документами
Haystack:
✅ Хорош для поиска и QA систем
PostgreSQL + pgvector:
✅ Векторный поиск из коробки
✅ Хранение embeddings
✅ Стабильность и производительность
Redis:
✅ Кэширование промптов и ответов
✅ Очереди задач
LangSmith (от LangChain):
✅ Трейсинг промптов
✅ Отладка цепочек
💰 Платный, но очень полезен
Custom решение:
Логирование всех запросов в PostgreSQL
Метрики через Prometheus + Grafana
Docker + Docker Compose:
✅ Простота развёртывания
✅ Изоляция окружений
Kubernetes:
✅ Для масштабирования
⚠️ Избыточно для небольших проектов
За год я выработал чёткий процесс разработки AI-агента:
Определить задачу:
Что автоматизируем?
Какой критерий успеха?
Допустимы ли ошибки?
Простой скрипт:
Минимальный промпт
Тест на 5-10 примерах
Оценка качества
Решение: стоит ли продолжать?
Если качество <70% → пересмотреть задачу
Если >70% → идём дальше
Базовая архитектура:
API endpoint
Интеграция с LLM
Простое логирование
Тестирование:
50-100 тестовых случаев
Метрики: точность, время ответа, стоимость
Итерации:
Улучшение промптов
Добавление контекста
Обработка ошибок
Обработка ошибок:
Retry механизм
Fallback стратегии
Логирование всех ошибок
Оптимизация:
Кэширование
Асинхронная обработка
Снижение стоимости (выбор модели)
Мониторинг:
Метрики качества
Стоимость запросов
Время ответа
Документация:
API документация
Руководство по использованию
Runbook для поддержки
[ ] Обработка всех типов ошибок
[ ] Retry механизм для API
[ ] Логирование всех запросов
[ ] Мониторинг метрик
[ ] Документация
[ ] Тесты (минимум 80% покрытие)
[ ] Load testing (если ожидается нагрузка)
Было: Промпт на 500+ токенов с кучей инструкций.
Проблема: LLM терялся, качество падало.
Решение: Разбить на несколько простых промптов. Цепочка из 3 простых промптов работает лучше, чем 1 сложный.
Было: Использовал GPT-4 для всех задач.
Проблема: Расходы $100+/день.
Решение:
GPT-3.5-turbo для 80% задач
GPT-4 только для критичных
Кэширование похожих запросов
Итог: расходы снизились в 5 раз
Было: Если API упал — вся система падала.
Проблема: Пользователи получали ошибки.
Решение:
Retry с экспоненциальной задержкой
Fallback на более простую модель
Очередь задач через Celery
Было: Не знал, насколько хорошо работает система.
Проблема: Качество деградировало незаметно.
Решение:
Логирование всех ответов
Периодическая проверка человеком (10% случаев)
Метрики: точность, время ответа, стоимость
Было: Каждый запрос обрабатывался изолированно.
Проблема: AI не помнил предыдущие сообщения.
Решение:
Хранение истории в Redis
Передача последних 5-10 сообщений в контекст
Использование RAG для базы знаний
Если вы хотите повторить мой путь, вот план:
Изучите Python:
Базовый синтаксис
Работа с API (requests, httpx)
Асинхронность (asyncio)
Попробуйте OpenAI API:
Простые запросы
Работа с промптами
Понимание токенов и стоимости
Сделайте первый проект:
Простой бот или скрипт
Автоматизация одной задачи
Опубликуйте на GitHub
Изучите LangChain:
Цепочки (chains)
Агенты (agents)
Инструменты (tools)
Работа с векторными БД:
pgvector
Embeddings
RAG (Retrieval-Augmented Generation)
Второй проект:
Что-то более сложное
С интеграцией с внешними системами
С мониторингом и логированием
Изучите MCP Protocol:
Создайте свой MCP Server
Интеграция с Claude (нативная поддержка)
Интеграция с Grok (через API)
Сравнение разных LLM для разных задач
Оптимизация:
Снижение стоимости (выбор модели: Claude для анализа, Grok для трендов, GPT-3.5 для простых задач)
Улучшение качества
Масштабирование
Третий проект:
Production-ready система
С документацией
С метриками и мониторингом
С использованием нескольких LLM для разных задач
Курсы:
LangChain для LLM приложений (LangChain docs)
OpenAI API курс (официальная документация)
Сообщества:
LangChain Discord
r/LangChain (Reddit)
AI Engineering (Telegram)
Книги:
"Building LLM Applications" (O'Reilly)
"Prompt Engineering Guide" (GitHub)
За год я прошёл путь от DevOps-инженера до AI-инженера. Главные выводы:
AI работает, но нужен правильный подход: Не пытайтесь автоматизировать всё подряд. Начните с простых задач.
Инструменты важны: LangChain, MCP Protocol, pgvector — это не просто модные слова, а реально работающие инструменты.
Мониторинг критичен: Без метрик вы не поймёте, работает ли система хорошо.
Стоимость имеет значение: GPT-4 дорогой. Используйте его только там, где нужно. Claude отлично подходит для анализа, Grok — для работы с актуальными данными, GPT-3.5 — для простых задач.
Итерации — это нормально: Первая версия всегда будет плохой. Улучшайте постепенно.
Если у вас есть вопросы или хотите обсудить конкретный проект — пишите в комментарии. Буду рад помочь!
Теги: #Искусственный интеллект #Сезон ИИ в разработке #Python #LangChain #MCP Protocol #AI Engineering #Machine Learning
Автор: Алан Форестер
GitHub: @AlanForester
Сайт: forester.pro
Источник


