
Перед вами не обычный курс по ИИ, а курс, благодаря которому вы сможете создать ИИ-агента.
I. «Что такое агент?»
(Источник: What is an Agent?)
Введение
В этой секции вы познакомитесь с понятием агента и его применениями в искусственном интеллекте.
Пример: агент Альфред
Представьте, что Альфред — это агент. Когда вы говорите:
«Альфред, принесите мне кофе»,
Альфред сначала понимает запрос, затем планирует свои действия:
- Пойти на кухню
- Использовать кофемашину
- Приготовить кофе
- Принести кофе обратно

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

Агент — это система, использующая ИИ-модель для взаимодействия с окружающей средой с целью достижения заданной пользователем цели. Она объединяет рассуждение, планирование и выполнение действий (часто посредством вызова внешних инструментов).
У агента выделяются две основные составляющие:
- Мозг (ИИ-модель): отвечает за размышления и планирование.
- Тело (набор возможностей и инструментов): определяет, что агент умеет делать.

Модель использовала инструмент генерации изображений для создания этого изображения.
Подробнее об инструментах мы узнаем в разделе «Инструменты».
Какие задачи может выполнять агент?
Агент может выполнять любую задачу, которую мы реализуем с помощью инструментов для осуществления действий.
Например, если я напишу агента, который будет выступать в роли моего личного помощника (например, как Siri) на моем компьютере, и попрошу его «отправить электронное письмо моему менеджеру с просьбой перенести сегодняшнюю встречу», я могу предоставить ему некоторый код для отправки писем. Это станет новым инструментом, который агент сможет использовать всякий раз, когда потребуется отправить электронное письмо. Мы можем написать его на Python:
pythonCopydef send_message_to(recipient, message):
"""Полезная функция для отправки электронного письма получателю"""
...
Как мы увидим, большая языковая модель (LLM) сгенерирует код для выполнения этого инструмента, когда это будет необходимо, и таким образом выполнит поставленную задачу.
pythonCopysend_message_to("Manager", "Can we postpone today's meeting?")
Дизайн инструментов имеет большое значение и существенно влияет на качество работы вашего агента. Для некоторых задач потребуется разработать очень специфические инструменты, в то время как другие могут быть решены с помощью универсальных средств, например, «web_search».
Обратите внимание, что действия (Actions) не то же самое, что инструменты. Например, одно действие может включать использование нескольких инструментов для его выполнения.
Предоставление агенту возможности взаимодействовать с окружающей средой открывает реальные возможности для использования как компаниями, так и отдельными пользователями.
Пример 1: Личные виртуальные помощники
Виртуальные помощники, такие как Siri, Alexa или Google Assistant, работают как агенты, когда они взаимодействуют с пользователями в их цифровой среде.
Они принимают запросы пользователей, анализируют контекст, извлекают информацию из баз данных и предоставляют ответы или инициируют действия (например, устанавливают напоминания, отправляют сообщения или управляют умными устройствами).
Пример 2: Чат-боты службы поддержки
Многие компании развертывают чат-боты, которые действуют как агенты, общаясь с клиентами на естественном языке.
Эти агенты могут отвечать на вопросы, направлять пользователей при устранении неполадок, создавать заявки в внутренних базах данных или даже завершать транзакции.
Их заранее заданные цели могут включать улучшение удовлетворенности клиентов, сокращение времени ожидания или повышение коэффициента конверсии продаж. Путем прямого взаимодействия с клиентами, изучения диалогов и адаптации своих ответов со временем, они демонстрируют основные принципы работы агента.
Пример 3: Неперсонажный ИИ в видеоигре
ИИ-агенты, работающие на основе LLM, могут сделать неперсонажных персонажей (NPC) более динамичными и непредсказуемыми.
Вместо того чтобы следовать жестким схемам поведения, они могут реагировать в зависимости от контекста, адаптироваться к взаимодействиям с игроками и генерировать более тонкие диалоги. Такая гибкость помогает создавать более живых и увлекательных персонажей, которые развиваются вместе с действиями игрока.
В итоге
Агент — это система, которая использует ИИ-модель (обычно LLM) в качестве своего основного механизма рассуждения для того, чтобы:
- Понимать естественный язык: интерпретировать и отвечать на инструкции человека осмысленно.
- Рассуждать и планировать: анализировать информацию, принимать решения и разрабатывать стратегии для решения задач.
- Взаимодействовать с окружающей средой: собирать информацию, выполнять действия и наблюдать за результатами этих действий.
Теперь, когда у вас сложилось прочное понимание того, что такое агенты, давайте закрепим эти знания с помощью небольшой неоценочной викторины. После этого мы углубимся в «мозг агента»: большие языковые модели (LLM).
II. «Что такое LLM?»
(Источник: What are LLMs?)

Основные сведения о LLM
В предыдущем разделе было сказано, что каждому агенту необходима ИИ-модель, и наиболее часто для этих целей используются большие языковые модели (LLM). Здесь вы узнаете, что такое LLM и как они работают.
Определение LLM:
Большая языковая модель (LLM) — это тип ИИ-модели, которая отлично понимает и генерирует человеческий язык. Она обучается на огромном количестве текстовых данных, изучая закономерности, структуру и нюансы языка. Обычно такие модели имеют миллионы (а зачастую миллиарды) параметров и основаны на архитектуре Transformer, впервые популяризированной после выхода модели BERT в 2018 году.
- Энкодеры: принимают текст на входе и создают плотное представление (эмбеддинг). Пример — BERT.
- Декодеры: генерируют последовательность токенов один за другим. Пример — LLaMA.
- Seq2Seq (энкодер–декодер): сначала обрабатывают входную последовательность, а затем генерируют выход. Примеры — T5, BART.

Принцип работы LLM:
Цель модели — предсказать следующий токен, учитывая предыдущую последовательность. «Токен» можно рассматривать как часть слова (не всегда целое слово). Например, вместо 600 000 слов модель может использовать словарь из 32 000 токенов.
Также у LLM есть специальные токены, которые используются для обозначения начала и конца последовательности, сообщений или других структурных элементов. Эти специальные токены различаются у разных моделей (например, у GPT-4 это <|endoftext|>
, у Llama — <|eot_id|>
).
Декодирование:
Модель последовательно генерирует текст до тех пор, пока не встретит специальный токен конца последовательности (EOS). При этом могут использоваться стратегии, такие как выбор токена с максимальным счётом или beam search, когда оценивается несколько вариантов.

LLM обучаются методом автогрессии (выход одной итерации становится входом следующей) и сначала обучаются на предсказании следующего токена, а затем могут дообучаться для решения конкретных задач.
Важно правильно формулировать запросы к LLM
Учитывая, что единственная задача LLM — предсказывать следующий токен, анализируя каждый входной токен и определяя, какие из них являются «важными», формулировка вашего входного текста имеет решающее значение.
Входная последовательность, которую вы предоставляете LLM, называется «промтом». Тщательная проработка промта облегчает направление генерации LLM к желаемому результату.
Как LLM используются в AI-агентах?
LLM являются ключевым компонентом AI-агентов, обеспечивая основу для понимания и генерации человеческого языка.
Они способны интерпретировать пользовательские инструкции, поддерживать контекст в диалогах, формировать план и определять, какие инструменты использовать.
Подведем итоги
Мы рассмотрели основы того, что такое LLM, как они функционируют и какую роль играют в обеспечении работы AI-агентов.
Теперь, когда мы понимаем, как работают LLM, пришло время посмотреть, как они структурируют свою генерацию в формате диалога.
III. «Сообщения и специальные токены»
(Источник: Messages and Special Tokens)
Структурирование диалогов
При общении с такими системами, как ChatGPT или HuggingChat, пользователь обменивается сообщениями, а не одним длинным запросом. Однако на самом деле все сообщения объединяются в единый промт перед подачей в модель.
Вопрос: Но... когда я общаюсь с ChatGPT или Hugging Chat, я веду диалог, используя чат-сообщения, а не одну длинную последовательность промта.
Ответ: Верно! Но это всего лишь абстракция пользовательского интерфейса. Прежде чем подать данные в LLM, все сообщения из разговора объединяются в один единый промт. Модель не «запоминает» весь диалог — она читает его целиком каждый раз.

До сих пор мы обсуждали промты как последовательность токенов, которые подаются в модель. Однако, когда вы общаетесь с такими системами, как ChatGPT или HuggingChat, вы на самом деле обмениваетесь сообщениями. За кулисами эти сообщения объединяются и форматируются в промт, который модель способна понять.
UI и реальный промт:
– Пользователь видит отдельные сообщения, но за кулисами все они конкатенируются в один текст, который получает модель.
– Для структурирования этого процесса используются так называемые чат-шаблоны (chat templates), которые задают формат для сообщений (например, разделение ролей: system, user, assistant).
Пример использования системного сообщения:
pythonCopysystem_message = {
"role": "system",
"content": "Вы — профессиональный агент службы поддержки. Всегда будьте вежливы и полезны."
}
Такое сообщение влияет на поведение модели.
Структура разговора:
Разговор состоит из последовательных сообщений от пользователя и помощника. Чат-шаблон преобразует список сообщений в единый строковый промт с использованием специальных токенов (например, <|im_start|>
, <|im_end|>
для SmolLM2 или другие для Llama).
pythonCopyconversation = [
{"role": "user", "content": "Мне нужна помощь с заказом"},
{"role": "assistant", "content": "Конечно, предоставьте, пожалуйста, номер заказа."},
{"role": "user", "content": "ORDER-123"}
]
Этот список затем преобразуется в текст, который подается в модель.
IV. «Что такое инструменты?»
(Источник: What are Tools?)
Роль инструментов в агентах
Инструменты (Tools) – это функции, предоставляемые LLM, позволяющие агенту выполнять действия, выходящие за рамки генерации чистого текста.
- Поиск в интернете: позволяет получать актуальную информацию.
- Генерация изображений: создает картинки по текстовому описанию.
- Вызов API: для взаимодействия с внешними сервисами (GitHub, YouTube и т. д.).
Хороший инструмент дополняет возможности LLM. Например, для выполнения арифметических операций лучше использовать отдельный калькулятор, чем полагаться на модель.
Как работают инструменты:
LLM генерирует текст, который представляет вызов функции (например, в виде JSON-объекта), описывающий, какой инструмент и с какими параметрами нужно использовать. Затем специальное приложение (агент) анализирует этот вывод, выполняет вызов функции и возвращает результат обратно в диалог.
Пример текстового описания инструмента:
jsonCopy{
"action": "get_weather",
"action_input": {"location": "New York"}
}
Чтобы описать инструмент, важно указать его название, описание, типы входных аргументов и тип результата.
Автоформатирование:
Благодаря возможностям Python (например, с использованием декораторов и модуля inspect
), можно автоматически генерировать описание инструмента из кода функции.
V. «Понимание AI-агентов через цикл: мысль – действие – наблюдение»
(Источник: Understanding AI Agents through the Thought-Action-Observation Cycle)
Основные компоненты процесса
Агенты работают в непрерывном цикле, состоящем из трёх этапов:
- Мысль (Thought): модель определяет следующий шаг.
- Действие (Action): агент выполняет действие (например, вызывает инструмент).
- Наблюдение (Observation): агент получает обратную связь и анализирует результат.
Пример на базе агента Альфреда (агент для проверки погоды):
– Мысль: «Пользователю нужна информация о погоде в Нью-Йорке. Нужно вызвать инструмент get_weather.»
– Действие: агент формирует JSON-запрос для вызова инструмента, передавая параметр «location»: «New York».
– Наблюдение: агент получает данные, например, «Погода в Нью-Йорке: переменная облачность, 15°C, влажность 60%».
– Обновленная мысль: на основе наблюдения агент формирует окончательный ответ.
Таким образом, цикл «мысль → действие → наблюдение» позволяет агенту итеративно уточнять свои действия до достижения цели.
VI. «Мысль: внутреннее рассуждение и подход Re-Act»
(Источник: Thought: Internal Reasoning and the Re-Act Approach)
Внутреннее рассуждение агента
В этой секции описывается, как агент «думает» — то есть, как он анализирует информацию, разбивает сложные задачи на шаги и принимает решения.
- Планирование: «Нужно разбить задачу на три шага: собрать данные, проанализировать тенденции, составить отчёт.»
- Анализ: «Судя по сообщению об ошибке, проблема в параметрах подключения к базе данных.»
- Принятие решения: «С учетом бюджета пользователя, следует рекомендовать средний вариант.»
- Решение проблемы: «Чтобы оптимизировать код, сначала нужно провести профилирование.»
- Интеграция памяти: «Пользователь ранее упоминал, что предпочитает Python, поэтому приведу примеры на Python.»
- Саморефлексия: «Мой предыдущий подход не сработал, стоит попробовать другой метод.»
- Постановка целей: «Для завершения задачи необходимо сначала установить критерии приемки.»
- Приоритезация: «Сначала нужно устранить уязвимость в безопасности, а потом добавлять новые функции.»
Подход Re-Act:
Метод Re-Act объединяет рассуждение («Reasoning») с действием («Acting»). Добавление фразы «Давайте подумаем пошагово» помогает модели разбивать задачу на подпроцессы, что снижает число ошибок.
Некоторые модели специально дообучаются так, чтобы генерировать отдельные секции рассуждений, заключенные в специальные токены (например, <think>
и </think>
).
VII. «Действия: обеспечение взаимодействия агента с окружением»
(Источник: Actions: Enabling the Agent to Engage with Its Environment)
Что такое действия?
Действия – это конкретные шаги, которые агент выполняет для взаимодействия с внешней средой. Они могут быть представлены в структурированном формате (например, JSON или исполняемом коде).
- Сбор информации: выполнение веб-поиска, запрос данных из базы.
- Использование инструментов: вызов API, выполнение расчётов, запуск кода.
- Взаимодействие с окружением: управление цифровыми интерфейсами или физическими устройствами.
- Общение: ответы пользователю, передача данных другим агентам.
Метод «Stop and Parse»
Ключевой подход при реализации действий:
- Агент выводит действие в заранее определённом формате (например, JSON).
- После завершения генерации агент останавливается, чтобы не добавить лишнего текста.
- Внешний парсер считывает вывод и извлекает название действия и аргументы.
jsonCopy{
"action": "get_weather",
"action_input": {"location": "New York"}
}
Также существуют «Code Agents», которые генерируют исполняемый код (например, на Python) для выполнения сложных операций.
VIII. «Наблюдение: интеграция обратной связи для анализа и адаптации»
(Источник: Observe: Integrating Feedback to Reflect and Adapt)
Роль наблюдений
Наблюдения – это обратная связь, получаемая агентом после выполнения действия. Они позволяют:
- Получить данные о результате выполненного действия.
- Добавить новую информацию в текущий контекст (обновить «память»).
- Адаптировать последующие шаги на основе полученных данных.
Пример:
Если API погоды возвращает «переменная облачность, 15°C, влажность 60%», агент добавляет эту информацию в свою историю и использует её для формирования окончательного ответа.
Наблюдения могут включать системные сообщения, данные об изменениях, результаты вычислений и т. д.
- Разобрать действие и выполнить его.
- Получить результат и добавить его как наблюдение.
- Использовать наблюдение для корректировки дальнейших шагов.
IX. «Библиотека Dummy Agent»
(Источник: Dummy Agent Library)
Назначение Dummy Agent Library
Чтобы не отвлекаться на особенности конкретных фреймворков, в этом блоке используется библиотека «Dummy Agent Library». Цель – сосредоточиться на базовых концепциях агентства, а не на тонкостях реализации.
- Используется простая серверлесс API для доступа к LLM.
- Приводится пример использования встроенных Python-пакетов (например,
datetime
,os
) для создания простых инструментов. - Демонстрируется, как с помощью текстового промта можно описывать инструменты, циклы (мысль → действие → наблюдение) и получать итоговый ответ.
Пример кода показывает, как объединить базовый системный промт с вызовом функции для получения, например, погоды или других данных. В дальнейшем можно будет перейти к использованию более продвинутых библиотек, таких как LangChain, LangGraph и LlamaIndex.
X. «Давайте создадим нашего первого агента с использованием smolagents»
(Источник: Let’s Create Our First Agent Using smolagents)
Введение в smolagents
В этом уроке вы создадите своего первого агента, который сможет выполнять действия (например, генерация изображений, веб-поиск, проверка часового пояса и многое другое) и будет опубликован в Hugging Face Space для демонстрации.
Что такое smolagents?
Это лёгкая библиотека, предназначенная для упрощения разработки агентов. Она абстрагирует многие детали и позволяет сконцентрироваться на поведении агента.
Пошаговое создание агента
- Дублирование шаблона Space:
Вам предложено создать копию шаблона по ссылке, чтобы работать в своём профиле. - Модификация файла
app.py
:
В этом файле вы будете добавлять инструменты и настраивать агента. - Примеры инструментов:
- Пример «my_custom_tool», который можно доработать под свои задачи.
- Инструмент
get_current_time_in_timezone
, возвращающий текущее время для заданного часового пояса.
- Настройка агента:
Агент создаётся с использованием классаCodeAgent
из smolagents. Вы задаёте модель (например, Qwen/Qwen2.5-Coder-32B-Instruct) через классHfApiModel
, список инструментов, максимальное число шагов и шаблоны промтов (загружаемые из YAML-файла).
Пример полного файла app.py
:
(В шаблоне приведён полный исходный код, включая импорты, определение инструментов, создание модели и запуск GradioUI.)
В конце урока вас приглашают экспериментировать: добавляйте новые инструменты, пробуйте другие модели, модифицируйте код и делитесь результатами в канале Discord.
Заключение
В данном переводе представлены все разделы Unit 1 курса Hugging Face Agents Course, начиная от базовых концепций (что такое агент, LLM, сообщения и инструменты) до более сложных процессов (цикл мысль – действие – наблюдение, внутреннее рассуждение, действия, наблюдения) и завершая практическим созданием агента с использованием библиотеки smolagents.
Этот материал даёт фундамент для дальнейшего изучения и создания AI-агентов. Рекомендуется внимательно изучить каждый раздел, опробовать примеры кода и экспериментировать с инструментами, чтобы закрепить полученные знания.
Добавить комментарий