1. ИИ‑агенты: что это, где полезны и как устроены
ИИ‑агенты: что это, где полезны и как устроены
ИИ‑агент — это программа, которая использует LLM (большую языковую модель) не только чтобы отвечать текстом, но и чтобы действовать: вызывать инструменты, собирать данные, принимать решения по шагам и доводить задачу до результата.
В этом курсе мы будем делать таких агентов на Python и запускать LLM локально через Ollama.
Чем агент отличается от чат-бота
Обычный чат-бот:
ИИ‑агент:
| Сценарий | Чат-бот | ИИ‑агент | |---|---|---| | “Сформируй письмо клиенту” | Пишет письмо | Пишет письмо | | “Найди ошибки в логе и предложи фикс” | Объясняет, что искать | Парсит лог, извлекает ошибки, формирует вывод и список действий | | “Собери отчёт из нескольких источников” | Описывает как сделать | Сам читает источники, объединяет данные, выдаёт отчёт |
Где агенты полезны в работе программиста
Агенты особенно хорошо работают там, где задача:
Типичные кейсы:
Важно: агент не обязан быть “автономным до конца”. На практике часто лучше полуавтоматический режим: агент предлагает план и выполняет шаги, а человек подтверждает критичные действия.
Базовая архитектура ИИ‑агента
ИИ‑агент почти всегда сводится к циклу: подумал → сделал → посмотрел результат → продолжил.
Компоненты агента
Ниже — “скелет”, который мы будем реализовывать на Python.
| Компонент | За что отвечает | Пример | |---|---|---| | Цель | Что нужно получить в итоге | “Собери сводку по ошибкам за сутки” | | LLM | Генерация шагов и решений | Локальная модель в Ollama | | Инструменты | Действия во внешнем мире | Python-функции, чтение файлов, HTTP-запросы | | Память | Контекст и знания | История диалога, заметки, результаты прошлых шагов | | Контроль цикла | Когда остановиться | Лимит шагов, проверка “готово/не готово” |
Инструменты: ключевое отличие агента
Инструменты — это обычный код. В агенте они оформляются так, чтобы LLM могла:
Примеры инструментов в курсе:
read_file(path)list_dir(path)http_get(url)search_notes(query)run_sql(query)Память: краткосрочная и долговременная
Практически полезно разделять память на 2 типа:
В начале курса мы будем обходиться краткосрочной памятью (история сообщений). Долговременную подключим позже, когда появится необходимость.
Контроль: почему агенту нужны границы
Без ограничений агент легко превращается в бесконечный цикл:
Поэтому обычно вводят:
Почему в курсе упор на Ollama
Ollama — это удобный способ запускать LLM локально:
Полезные ссылки:
Минимальный пример: вызвать LLM через Ollama из Python
Ниже — самый простой вызов модели. Он не “агентский”, но это база: уметь отправить запрос и получить ответ.
Перед стартом:
ollama pull llama3.1;Пример через HTTP API (без дополнительных библиотек, кроме requests):
Что здесь происходит:
model — имя локальной модели в Ollama.prompt — текст запроса.stream: False — просим вернуть ответ одним JSON (так проще для первых шагов).Минимальный агент: LLM выбирает инструмент, Python выполняет
Сделаем упрощённый вариант: модель будет возвращать либо финальный ответ, либо команду вызвать инструмент.
Идея протокола (очень простая):
TOOL: tool_name | аргументы
FINAL: ...Код инструментов
Что делает этот пример:
sum, а когда upper.Почему это уже агент, а не просто генерация текста:
Ограничения примера:
Но как стартовая точка он показывает суть.
Типичные ошибки при создании агентов
Что будет дальше в курсе
В следующих статьях мы последовательно улучшим основу: