Добавить в корзинуПозвонить
Найти в Дзене
Нейропотокс AI

Как создать AI-агента с нуля, если боитесь начать

Год назад Максим, разработчик из Екатеринбурга, написал мне в личку: «Все вокруг говорят про AI агентов, а я даже не понимаю, с чего начать. Это вообще реально сделать самому?» Максим не был джуном — пять лет опыта в Python, хороший бэкенд. Но тема казалась ему космосом.
Я ответил ему тогда: «Ты уже умеешь всё, что нужно. Просто никто не объяснил по-человечески». Через три недели он запустил
Оглавление

Год назад Максим, разработчик из Екатеринбурга, написал мне в личку: «Все вокруг говорят про AI агентов, а я даже не понимаю, с чего начать. Это вообще реально сделать самому?» Максим не был джуном — пять лет опыта в Python, хороший бэкенд. Но тема казалась ему космосом.

Я ответил ему тогда: «Ты уже умеешь всё, что нужно. Просто никто не объяснил по-человечески». Через три недели он запустил своего первого агента, который автоматически разбирал его рабочую почту и создавал задачи в Notion.

Эта статья — для таких, как Максим. И для тех, кто не хочет тратить месяц на теорию, а хочет сделать рабочую вещь за выходные.

Современный разработчик сиди за ноутбуком
Современный разработчик сиди за ноутбуком

Что такое AI агент и чем он отличается от обычного ChatGPT

Это первое, что путает всех. Объясню на пальцах.

Когда вы открываете ChatGPT и пишете «Напиши мне письмо», — это просто чат. Вы спросили, он ответил. Всё. Один вопрос — один ответ. Потом вы снова пишете, снова он отвечает. Вы — оператор, ChatGPT — инструмент.

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

Ключевое отличие: у агента есть инструменты (tools) и он умеет рассуждать — решать, какой инструмент использовать в каждый момент. Это называется паттерн ReAct: Reason + Act. Подумал — сделал — посмотрел на результат — подумал снова.

Вот простая схема:

━━━━━━━━━━━━━━

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

━━━━━━━━━━━━━━

Цель (ваш запрос) → Мозг агента (LLM: GPT-4, Claude, Gemini) → Планирование шагов → Выбор инструмента → Выполнение действия → Оценка результата → Следующий шаг или завершение

━━━━━━━━━━━━━━

Звучит сложно? На деле это 50–100 строк Python-кода. Давайте разберём.

Что вам понадобится: минимальный набор

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

— Python 3.9+ (уже стоит у большинства) — API-ключ OpenAI или Anthropic (оба дают бесплатный кредит при регистрации) — Библиотека LangChain или OpenAI Agents SDK — выберете одну — Пара часов времени и желание разобраться

Я буду использовать OpenAI Agents SDK — он появился в 2025 году и заметно проще старого LangChain для старта. Если у вас нет карты для OpenAI, Claude API от Anthropic работает аналогично.

Про выбор инструментов есть отдельный разбор — AI агенты в 2026: какой фреймворк выбрать. Рекомендую прочитать после этой статьи.

Схема архитектуры AI агента
Схема архитектуры AI агента

Шаг 1. Устанавливаем окружение

Открываем терминал и делаем всё по порядку. Не торопитесь — каждый шаг важен.

# Создаём виртуальное окружение

python -m venv agent_env

source agent_env/bin/activate # Windows: agent_env\Scripts\activate

# Устанавливаем зависимости

pip install openai python-dotenv requests

Создаём файл .env в корне проекта:

OPENAI_API_KEY=ваш_ключ_здесь

Никогда не вставляйте ключ прямо в код. Через месяц забудете, загрузите проект на GitHub — и ключ уйдёт в открытый доступ. Это классическая ошибка новичков, которая стоит реальных денег.

Шаг 2. Пишем первого агента — поисковика

Начнём с простого: агент, который умеет искать информацию в интернете и отвечать на вопросы со ссылками на источники.

import os

from openai import OpenAI

import requests

from dotenv import load_dotenv

import json

load_dotenv()

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# Определяем инструменты агента

def search_web(query: str) -> str:

"""Поиск информации в интернете"""

# Используем бесплатный API DuckDuckGo

url = f"https://api.duckduckgo.com/?q={query}&format=json&no_html=1"

response = requests.get(url)

data = response.json()

results = []

for topic in data.get("RelatedTopics", [])[:3]:

if "Text" in topic:

results.append(topic["Text"])

return "\n".join(results) if results else "Результаты не найдены"

# Описание инструментов для модели

tools = [

{

"type": "function",

"function": {

"name": "search_web",

"description": "Поиск информации в интернете по запросу",

"parameters": {

"type": "object",

"properties": {

"query": {

"type": "string",

"description": "Поисковый запрос"

}

},

"required": ["query"]

}

}

}

]

def run_agent(user_query: str) -> str:

messages = [

{

"role": "system",

"content": "Ты полезный ассистент. Используй поиск для актуальной информации."

},

{"role": "user", "content": user_query}

]

# Цикл рассуждения агента

while True:

response = client.chat.completions.create(

model="gpt-4o-mini",

messages=messages,

tools=tools,

tool_choice="auto"

)

message = response.choices[0].message

# Если агент решил использовать инструмент

if message.tool_calls:

messages.append(message)

for tool_call in message.tool_calls:

if tool_call.function.name == "search_web":

args = json.loads(tool_call.function.arguments)

result = search_web(args["query"])

messages.append({

"role": "tool",

"tool_call_id": tool_call.id,

"content": result

})

else:

# Агент дал финальный ответ

return message.content

# Запускаем

answer = run_agent("Какие AI агентные фреймворки популярны в 2026 году?")

print(answer)

Запустите это. Агент сам решит, нужен ли поиск, выполнит его и даст ответ. Именно этот цикл while True — сердце любого агента. Он крутится до тех пор, пока модель не решит, что задача выполнена.

Понимаете, что происходит? Вы не говорите «сначала сделай X, потом Y». Вы даёте цель — агент сам планирует шаги. Это принципиальное отличие от обычного скрипта.

Шаг 3. Добавляем память — без неё агент как Дори из «В поисках Немо»

По умолчанию каждый запрос к агенту — это чистый лист. Он не помнит, что вы говорили пять минут назад. Для простых задач это нормально. Для серьёзных — проблема.

Самый простой способ добавить память — хранить историю диалога:

class AgentWithMemory:

def __init__(self):

self.conversation_history = [

{

"role": "system",

"content": "Ты полезный ассистент с памятью о предыдущих разговорах."

}

]

def chat(self, user_message: str) -> str:

self.conversation_history.append({

"role": "user",

"content": user_message

})

response = client.chat.completions.create(

model="gpt-4o-mini",

messages=self.conversation_history,

tools=tools,

tool_choice="auto"

)

assistant_message = response.choices[0].message

self.conversation_history.append(assistant_message)

return assistant_message.content

agent = AgentWithMemory()

print(agent.chat("Меня зовут Максим, я разрабатываю финтех-приложение"))

print(agent.chat("Что ты знаешь обо мне?")) # Агент вспомнит имя и контекст

Это работает, но есть проблема: контекст имеет ограниченный размер (контекстное окно). При длинных диалогах старые сообщения надо удалять или сжимать. Об этом — в статье про продвинутые техники работы с памятью агентов.

Реальные истории: что пошло не так у первопроходцев

История первая. Антон, бэкенд-разработчик, решил сделать агента, который автоматически отвечает на письма клиентов. Запустил в пятницу вечером, ушёл на выходные. В понедельник обнаружил, что агент отправил 340 писем — включая несколько десятков одному клиенту по кругу. Причина: агент вошёл в бесконечный цикл, потому что Антон не поставил лимит на количество итераций. Клиенты были недовольны.

Урок: всегда ставьте max_iterations и тестируйте на изолированном окружении.

История вторая. Наташа, аналитик данных, написала агента для сбора данных с сайтов. Код работал идеально на тестах. На продакшне агент начал делать по 500 запросов в минуту — и её IP заблокировали три крупных сайта. Она не добавила паузы между запросами.

Урок: rate limiting — это не опция, это обязательство.

История третья — моя собственная. Я сделал агента, который анализировал вакансии и составлял резюме. Дал ему доступ к файловой системе для сохранения результатов. Агент решил «оптимизировать» работу и начал перемещать файлы. Потерял три часа работы.

Урок: давайте агенту минимально необходимые права. Принцип наименьших привилегий работает и здесь.

Экран с кодом PYTHON
Экран с кодом PYTHON

Типичные ошибки при создании AI агента

━━━━━━━━━━━━━━

Ошибки новичков и как их избежать

━━━━━━━━━━━━━━

Нет лимита итераций

Симптом: агент крутится вечно или делает тысячи запросов Последствие: огромный счёт за API, бан IP Решение: добавьте max_iterations = 10 в цикл агента

━━━━━━━━━━━━━━

Плохой системный промпт

Симптом: агент делает странные вещи, игнорирует ограничения Последствие: непредсказуемое поведение Решение: чётко опишите роль, ограничения и формат ответа

━━━━━━━━━━━━━━

Слишком много инструментов сразу

Симптом: агент путается, выбирает не тот инструмент Последствие: плохое качество работы Решение: начните с 2–3 инструментами, добавляйте постепенно

━━━━━━━━━━━━━━

Нет обработки ошибок

Симптом: агент ломается при первой проблеме с API Последствие: задача не выполнена, нет логов Решение: оберните каждый инструмент в try/except с логированием

━━━━━━━━━━━━━━

Нет тестирования

Симптом: агент ведёт себя непредсказуемо в продакшне Последствие: как у Антона из истории выше Решение: тестируйте на sandbox-окружении минимум неделю

━━━━━━━━━━━━━━

Шаг 4. Делаем агента надёжным

Вот улучшенная версия основного цикла с защитой от типичных проблем:

import logging

import time

logging.basicConfig(level=logging.INFO)

logger = logging.getLogger(__name__)

def run_agent_safe(user_query: str, max_iterations: int = 10) -> str:

messages = [

{

"role": "system",

"content": """Ты полезный ассистент. Правила:

1. Используй поиск только когда нужна актуальная информация

2. Давай конкретные ответы, без лишней воды

3. Если не уверен — скажи об этом"""

},

{"role": "user", "content": user_query}

]

iteration = 0

while iteration < max_iterations:

iteration += 1

logger.info(f"Итерация {iteration}/{max_iterations}")

try:

response = client.chat.completions.create(

model="gpt-4o-mini",

messages=messages,

tools=tools,

tool_choice="auto",

timeout=30 # Таймаут запроса

)

except Exception as e:

logger.error(f"Ошибка API: {e}")

return f"Ошибка при обращении к API: {str(e)}"

message = response.choices[0].message

if message.tool_calls:

messages.append(message)

for tool_call in message.tool_calls:

try:

if tool_call.function.name == "search_web":

args = json.loads(tool_call.function.arguments)

# Пауза между запросами — важно!

time.sleep(1)

result = search_web(args["query"])

logger.info(f"Поиск выполнен: {args['query'][:50]}...")

messages.append({

"role": "tool",

"tool_call_id": tool_call.id,

"content": result

})

except Exception as e:

logger.error(f"Ошибка инструмента: {e}")

messages.append({

"role": "tool",

"tool_call_id": tool_call.id,

"content": f"Ошибка: {str(e)}"

})

else:

logger.info("Агент завершил работу")

return message.content

return "Достигнут лимит итераций. Задача не завершена."

Разница с первой версией — в деталях. Логирование, таймаут, пауза между запросами, обработка ошибок на каждом уровне. Это не перфекционизм — это минимум для нормальной работы.

Что делать дальше: куда расти

Вы сделали первого агента. Это честно круто. Но это только начало. Вот карта дальнейшего пути:

Уровень 1 (вы здесь): один агент, простые инструменты, базовая память.

Уровень 2: Multi-agent системы — несколько агентов, каждый со своей специализацией. Один ищет, другой анализирует, третий пишет отчёт. Они общаются между собой. Это уже серьёзная архитектура.

Уровень 3: Агенты с долгосрочной памятью через векторные базы данных (Chroma, Pinecone). Агент помнит всё, что делал месяц назад.

Уровень 4: Автономные агенты с планировщиком задач, которые работают 24/7 без вашего участия.

Про заработок на агентах — отдельная тема. Есть люди, которые строят на этом бизнес. Разбор реальных кейсов — как зарабатывают на AI агентах в 2026.

Визуализация мультиагентной системы
Визуализация мультиагентной системы

Блок «Что чаще всего делают неправильно»

Я видел сотни попыток сделать первого агента. Вот три паттерна, которые повторяются снова и снова.

Первое: пытаются сделать всё сразу. «Хочу агента, который ищет вакансии, составляет резюме, отправляет заявки и отвечает на письма рекрутеров». Такое не работает с первой попытки. Начните с одной задачи. Доведите до рабочего состояния. Потом расширяйте.

Второе: игнорируют системный промпт. Он кажется неважным — просто текст. На деле это самая критичная часть агента. Плохой системный промпт = непредсказуемое поведение. Потратьте на него столько же времени, сколько на код.

Третье: не логируют ничего. Когда агент делает что-то странное, вы не понимаете, почему. Добавьте логирование с первой итерации — это сэкономит часы отладки.

Если хотите понять, как автоматизировать рабочие процессы через агентов без глубокого погружения в код — почитайте разбор Make.com для автоматизации с AI. Там другой подход — через no-code, но принципы те же.

FAQ: вопросы, которые задают чаще всего

Вопрос 1: Сколько стоит запускать агента? Для тестирования и небольших задач — копейки. Запрос к gpt-4o-mini стоит около $0.00015 за 1000 токенов. Агент делает 5–10 запросов за задачу. Итого — меньше цента за выполненную задачу. Серьёзные нагрузки считайте отдельно.

Вопрос 2: Можно ли без OpenAI? Карты нет. Да. Claude API от Anthropic принимает карты многих стран. Есть также бесплатные локальные модели через Ollama (Llama, Mistral) — они слабее, но работают полностью офлайн и бесплатно.

Вопрос 3: LangChain или OpenAI Agents SDK? Для старта — OpenAI Agents SDK, он проще. LangChain мощнее и гибче, но у него крутая кривая обучения. Когда освоитесь — переходите.

Вопрос 4: Агент галлюцинирует. Что делать? Нормально — все модели иногда «придумывают». Решения: давайте агенту инструменты для проверки фактов, просите указывать источники, добавляйте в промпт «если не уверен — скажи об этом».

Вопрос 5: Как безопасно давать агенту доступ к реальным системам? Принцип наименьших привилегий: только те права, которые необходимы для конкретной задачи. Создайте отдельные API-ключи с ограниченным доступом. Никогда не давайте агенту доступ к продакшн-базам без тестирования.

Итог: что вы теперь умеете

За одну статью мы прошли путь от «что такое агент» до рабочего кода с обработкой ошибок и памятью. Это не игрушка — это реальный инструмент, который можно применять в работе уже сейчас.

Главное, что нужно запомнить: агент — это LLM плюс инструменты плюс цикл. Всё остальное — детали реализации.

Начните с малого. Сделайте агента, который решает одну конкретную вашу проблему. Автоматизирует один рутинный процесс. Это даст понимание принципов лучше, чем любая теория.

Мир разработки меняется быстро. Те, кто начнёт работать с агентами сейчас, через год будут на голову выше тех, кто ждёт «правильного момента». Правильный момент — это сегодня.

Читайте также:

Как автоматизировать рутину с помощью AI в 2026 году

Топ инструментов для создания AI агентов без кода

Как заработать на AI автоматизации: реальные кейсы

Больше полезных материалов, разборов кода и реальных кейсов с AI агентами — в других статьях нашего блога.

А теперь вопрос к вам: какую задачу вы бы первым делом автоматизировали с помощью AI агента? Напишите в комментариях — интересно посмотреть, что у людей болит больше всего. Самые популярные идеи разберу в следующей статье.

Если статья была полезной — подпишитесь на канал. Здесь только практика, никакой воды и хайпа.