# Собираем настоящего AI-агента: от задачи до готового проекта

- Site: VeraPoint News
- Section: Гайды
- Date: 2026-05-27
- Canonical: https://verapointmedia.com/guides/ai-agent-build-from-scratch/
- Markdown: https://verapointmedia.com/guides/ai-agent-build-from-scratch.md
- Summary: 💡 Хватит игрушечных примеров. Сегодня мы соберём настоящего агента, который делает реальную работу: ищет новости, анализирует их и сохраняет отчёт. Полный проект с нуля — вы сможете запустить его у себя и переделать п...
- Target queries: создать ai агента python полный туториал; как написать ai агента самому; агент python готовый код проект; ai агент мониторинг новостей код; построить ai агента с нуля 2026
- Tags: #ai-agents #guide #tutorial #python #project #practical #full-stack #russian
- Image: https://verapointmedia.com/static/content-assets/guides/ai-agent-build-from-scratch/cover.webp

## Sources

- https://api.coindesk.com/v1/bpi/currentprice.json
- https://api.hh.ru/vacancies?text={query}
- https://openai.github.io/openai-agents-python/
- https://www.anthropic.com/engineering/building-effective-agents
- https://docs.crewai.com/

---

## Короткий ответ

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

![](https://verapointmedia.com/static/content-assets/guides/ai-agent-build-from-scratch/slide-01.webp)


---

## Что будем делать

Агент-аналитик новостей. Вы говорите тему — он:
1. Находит последние новости
2. Анализирует и составляет краткую сводку
3. Сохраняет результат в файл

Можете заменить «новости» на «цену биткоина», «погоду в вашем городе» или «вакансии на HeadHunter» — принцип тот же.

---


![](https://verapointmedia.com/static/content-assets/guides/ai-agent-build-from-scratch/slide-02.webp)

## Структура проекта

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

Вот как будет выглядеть наш проект:

```
news_agent_project/           # папка проекта
├── .env                      # здесь будут ключи (API-ключи)
├── main.py                   # главный файл — запуск агента
├── tools.py                  # инструменты — то, чем агент будет пользоваться
├── requirements.txt          # список библиотек, которые нужно установить
└── data/                     # папка для результатов
```

Ничего сложного. Каждый файл отвечает за своё:
- `main.py` — управляет агентом, запускает его, обрабатывает ошибки
- `tools.py` — содержит функции, которые агент может вызывать
- `.env` — хранит секретные ключи отдельно от кода
- `data/` — сюда агент будет сохранять отчёты

---

## Шаг 1. Готовим окружение

Создайте папку проекта:

```bash
mkdir news_agent_project
cd news_agent_project
```

Создайте файл `requirements.txt` — в нём мы перечислим, какие библиотеки нужны:

```
openai-agents
python-dotenv
```

Первая — сам фреймворк. Вторая — для удобной работы с .env файлом.

Установите:

```bash
pip install -r requirements.txt
```

Теперь создайте файл `.env` и запишите туда ваш ключ OpenAI:

```
OPENAI_API_KEY=ваш_ключ
```

**Почему в .env, а не прямо в коде?** Потому что .env файл можно добавить в `.gitignore` и случайно не опубликовать ключ на GitHub. Никогда не храните ключи в коде.

Создайте папку для результатов:

```bash
mkdir data
```

---

## Шаг 2. Пишем инструменты (`tools.py`)

Инструменты — это функции, которые агент может вызывать. Давайте сделаем два:

1. `get_news_from_web` — ищет новости по теме
2. `save_report` — сохраняет результат в файл

Создайте файл `tools.py`:

```python
import datetime
import os

def get_news_from_web(topic: str) -> str:
    """
    Ищет последние новости по заданной теме в интернете.
    
    Используй этот инструмент, когда нужно найти свежие новости.
    Принимает тему запроса (например, 'AI-агенты', 'технологии', 'биткоин').
    Возвращает список новостей с кратким описанием.
    """
    # В реальном проекте здесь был бы запрос к API новостей
    # (например, NewsAPI, или парсинг через requests + BeautifulSoup)
    # Но для примера вернём учебные данные
    
    return (
        f"Новости по теме '{topic}' на {datetime.date.today()}:\n"
        "1. Anthropic выпустила руководство по созданию эффективных AI-агентов\n"
        "2. OpenAI представила обновлённый SDK для разработки агентов\n"
        "3. MCP становится стандартом для подключения внешних сервисов к AI\n"
        "4. Google запустила соревнование по агентному AI"
    )

def save_report(content: str, filename: str) -> str:
    """
    Сохраняет текст отчёта в файл в папку data/.
    
    Вызывай этот инструмент, когда нужно сохранить результат анализа.
    Принимает:
    - content: текст для сохранения
    - filename: имя файла (например, 'report_2026-05-18.txt')
    
    Важно: файл сохраняется в папку data/ автоматически,
    не нужно указывать полный путь.
    """
    filepath = os.path.join("data", filename)
    try:
        with open(filepath, "w", encoding="utf-8") as f:
            f.write(content)
        return f"Готово! Отчёт сохранён в {filepath}"
    except Exception as e:
        return f"Ошибка при сохранении: {str(e)}"
```

**Что здесь важно:**

1. **Описания (`"""..."""`)** — это не просто комментарии. Модель читает их и решает, когда вызывать инструмент. Чем точнее описание, тем реже агент ошибается.
2. **Типы параметров** — `topic: str` и `content: str` — модель их учитывает и подставляет данные правильного типа.
3. **Обработка ошибок** — `try...except` — если что-то пошло не так, агент получит сообщение об ошибке и сможет попробовать другой путь.

---

## Шаг 3. Пишем главный файл (`main.py`)

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

Создайте `main.py`:

```python
import os
from dotenv import load_dotenv
from agents import Agent, Runner

load_dotenv()

from tools import get_news_from_web, save_report

news_analyst = Agent(
    name="NewsAnalyst",
    instructions=(
        "Ты — эксперт по анализу новостей. Твоя задача:\n"
        "1. Найти последние новости по теме, которую указал пользователь.\n"
        "2. Проанализировать их и составить краткую сводку — 3-5 предложений.\n"
        "3. Обязательно сохранить отчёт в файл с помощью save_report.\n"
        "4. Если новостей мало — так и скажи, ничего не выдумывай.\n"
        "5. Если инструмент вернул ошибку — сообщи пользователю."
    ),
    tools=[get_news_from_web, save_report]
)

def main():
    # Запрос пользователя (в реальности можно заменить на input())
    user_query = "Последние новости в мире AI-агентов"
    
    print(f"🤖 Запускаю агента...")
    print(f"📋 Задача: {user_query}")
    print()
    
    try:
        # Запускаем агента — он сам решает, какие инструменты вызывать
        result = Runner.run_sync(news_analyst, user_query)
        
        print("✅ Агент завершил работу!")
        print()
        print("📄 Ответ агента:")
        print(result.final_output)
        
    except Exception as e:
        print(f"❌ Критическая ошибка: {e}")
        print("Проверьте, что ключ API правильный и в .env файле.")

if __name__ == "__main__":
    # Убеждаемся, что папка data существует
    os.makedirs("data", exist_ok=True)
    main()
```

**Разберём, что тут происходит по порядку:**

1. `load_dotenv()` — загружает переменные из файла `.env`. Агент найдёт ключ `OPENAI_API_KEY` и сможет общаться с моделью.
2. `Agent(name="NewsAnalyst", ...)` — создаём агента с именем и инструкцией. Обратите внимание на инструкцию: она написана как список шагов, а не как общее пожелание. Чем конкретнее — тем лучше.
3. `tools=[get_news_from_web, save_report]` — передаём инструменты. Сами функции лежат в другом файле (`tools.py`), но мы их импортировали (взяли) оттуда.
4. `Runner.run_sync(...)` — запускаем. Агент сам решает, в каком порядке вызывать инструменты.
5. `try...except` — если что-то пойдёт не так (например, ключ неправильный), мы не упадём с ошибкой, а вежливо сообщим пользователю.

---

## Шаг 4. Запускаем!

Вернитесь в терминал (убедитесь, что вы в папке `news_agent_project`) и выполните:

```bash
python main.py
```

Если всё правильно, вы увидите:

```
🤖 Запускаю агента...
📋 Задача: Последние новости в мире AI-агентов

✅ Агент завершил работу!

📄 Ответ агента:
Вот сводка последних новостей в мире AI-агентов...

[а здесь будет сам ответ]
```

А в папке `data/` появится файл с отчётом.

---


![](https://verapointmedia.com/static/content-assets/guides/ai-agent-build-from-scratch/slide-03.webp)

## Шаг 5. Что происходит «под капотом»

Когда вы запускаете агента, происходит вот что:

```
Вы: "Найди новости про AI-агентов"
  ↓
  Агент получает задачу
  ↓
  Агент: "Мне нужно вызвать get_news_from_web с темой 'AI-агенты'"
  ↓
  Инструмент возвращает новости
  ↓
  Агент: "Теперь нужно сохранить отчёт. Вызываю save_report"
  ↓
  Инструмент сохраняет файл
  ↓
  Агент формулирует ответ для вас
```

Runner (исполнитель) сам управляет этим циклом. Он вызывает модель, проверяет, не хочет ли она использовать инструмент, если хочет — выполняет инструмент, отправляет результат обратно модели, и так по кругу, пока задача не будет решена.

---

## Как переделать под свою задачу

Этот проект — шаблон. Вот как его изменить для других задач:

### Мониторинг цен
Замените `get_news_from_web` на функцию, которая запрашивает цену через API криптобиржи:
```python
def get_bitcoin_price() -> str:
    """Возвращает текущую цену биткоина."""
    # Здесь requests.get("https://api.coindesk.com/v1/bpi/currentprice.json")
    return "Цена биткоина: $67,432"
```

### Поиск вакансий
Замените на запрос к HeadHunter API:
```python
def search_vacancies(query: str) -> str:
    """Ищет вакансии по запросу."""
    # requests.get(f"https://api.hh.ru/vacancies?text={query}")
    return "Найдено 5 вакансий: ..."
```

### Сбор данных из интернета
Добавьте `requests` и `BeautifulSoup` для настоящего парсинга, а не учебных данных.

---

## Про сборку и деплой — коротко

Самый простой способ «запустить и забыть»:

1. **Git + сервер.** Залейте проект на GitHub, настройте сервер (например, дешёвый VPS за $5/мес), запустите скрипт через `cron` — он будет выполняться по расписанию.
2. **GitHub Actions.** Можно настроить автоматический запуск раз в день — бесплатно.
3. **Telegram-бот.** Прикрутите отправку результата в Telegram (простая библиотека `python-telegram-bot`).

Подробнее про деплой — в одном из следующих гайдов.

---

## Чек-лист: что вы сегодня сделали

- [ ] Создали структуру проекта
- [ ] Написали два инструмента (поиск новостей, сохранение в файл)
- [ ] Создали агента с инструкцией
- [ ] Запустили и получили результат
- [ ] Поняли, как переделать под свою задачу

---

## Что дальше?

У нас есть работающий агент. Но у него нет памяти — он не помнит, что делал в прошлый раз. В следующем гайде я научу вас **добавлять агенту память**: краткосрочную (для диалога) и долгосрочную (чтобы помнить между сессиями).

👉 [Читать: Память для AI-агентов →](https://t.me/verapavlova_ai)

Пропустили предыдущие гайды?

👉 [Что такое AI-агент →](https://verapointmedia.com/guides/ai-agent-what-is/)
👉 [Типы AI-агентов →](https://verapointmedia.com/guides/ai-agent-types/)
👉 [Сравнение AI-фреймворков →](https://verapointmedia.com/guides/ai-agent-frameworks-comparison/)
👉 [OpenAI SDK: первый агент →](https://verapointmedia.com/guides/ai-agent-openai-sdk-first-agent/)
👉 [Claude + MCP →](https://verapointmedia.com/guides/ai-agent-claude-mcp-agent/)
👉 [Проектирование AI-агента →](https://verapointmedia.com/guides/ai-agent-design-methodology/)

---


![](https://verapointmedia.com/static/content-assets/guides/ai-agent-build-from-scratch/slide-04.webp)

## Источники

- [OpenAI Agents SDK — документация](https://openai.github.io/openai-agents-python/)
- [Building Effective Agents — Anthropic](https://www.anthropic.com/engineering/building-effective-agents)
- [CrewAI — документация](https://docs.crewai.com/)

---

*Подписывайтесь на канал — каждый день новый гайд по AI-агентам.*

#aiagents #guide #tutorial #python #fullproject #deploy

Смежные материалы:
- [AI-агенты](/topics/ai-agents/)
- [MCP простыми словами](https://verapointmedia.com/guides/mcp-prostymi-slovami/)
- [Как бизнесу использовать AI-агентов без самообмана](https://verapointmedia.com/guides/kak-biznesu-ispolzovat-ai-agentov-bez-samoobmana/)
## Частые вопросы

### Что важно понять про тему «Собираем настоящего AI-агента: от задачи до готового проекта»?

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

### Чем это отличается от обычного чат-бота?

Чат-бот в основном отвечает на запрос. Агентный подход работает как процесс: он может читать контекст, вызывать инструменты и вести задачу по шагам.

### Когда такой подход реально нужен?

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

### С чего лучше начать новичку?

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