Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the rank-math domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/botbit.tech/wp-includes/functions.php on line 6121
Курс по созданию AI-агентов от Hugging Face (1-я часть) - BOTBIT Курс по созданию AI-агентов от Hugging Face (1-я часть) - BOTBIT

Курс по созданию AI-агентов от Hugging Face (1-я часть)

photo 2025 02 23 00 19 48

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

I. «Что такое агент?»

(Источник: What is an Agent?)

Введение

В этой секции вы познакомитесь с понятием агента и его применениями в искусственном интеллекте.

Пример: агент Альфред
Представьте, что Альфред — это агент. Когда вы говорите:

«Альфред, принесите мне кофе»,
Альфред сначала понимает запрос, затем планирует свои действия:

  1. Пойти на кухню
  2. Использовать кофемашину
  3. Приготовить кофе
  4. Принести кофе обратно
3109b58f 0f45 404f 9cce 04a331553234

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

cee87a64 3dcb 4950 ac34 9126b2d9d984

Формальное определение:

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

У агента выделяются две основные составляющие:

  1. Мозг (ИИ-модель): отвечает за размышления и планирование.
  2. Тело (набор возможностей и инструментов): определяет, что агент умеет делать.
9ed7bf56 cfdc 484b 855a 65846c111c96

Модель использовала инструмент генерации изображений для создания этого изображения.
Подробнее об инструментах мы узнаем в разделе «Инструменты».

Какие задачи может выполнять агент?

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

Например, если я напишу агента, который будет выступать в роли моего личного помощника (например, как 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?)

e694e3d5 b8a3 4660 9643 86584f20b904

Основные сведения о LLM

В предыдущем разделе было сказано, что каждому агенту необходима ИИ-модель, и наиболее часто для этих целей используются большие языковые модели (LLM). Здесь вы узнаете, что такое LLM и как они работают.

Определение LLM:
Большая языковая модель (LLM) — это тип ИИ-модели, которая отлично понимает и генерирует человеческий язык. Она обучается на огромном количестве текстовых данных, изучая закономерности, структуру и нюансы языка. Обычно такие модели имеют миллионы (а зачастую миллиарды) параметров и основаны на архитектуре Transformer, впервые популяризированной после выхода модели BERT в 2018 году.

Типы архитектур Transformer:

  1. Энкодеры: принимают текст на входе и создают плотное представление (эмбеддинг). Пример — BERT.
  2. Декодеры: генерируют последовательность токенов один за другим. Пример — LLaMA.
  3. Seq2Seq (энкодер–декодер): сначала обрабатывают входную последовательность, а затем генерируют выход. Примеры — T5, BART.
e9844a05 61a8 4248 992d 2d7f1a8ad6b4

Принцип работы LLM:
Цель модели — предсказать следующий токен, учитывая предыдущую последовательность. «Токен» можно рассматривать как часть слова (не всегда целое слово). Например, вместо 600 000 слов модель может использовать словарь из 32 000 токенов.

Также у LLM есть специальные токены, которые используются для обозначения начала и конца последовательности, сообщений или других структурных элементов. Эти специальные токены различаются у разных моделей (например, у GPT-4 это <|endoftext|>, у Llama — <|eot_id|>).

Декодирование:
Модель последовательно генерирует текст до тех пор, пока не встретит специальный токен конца последовательности (EOS). При этом могут использоваться стратегии, такие как выбор токена с максимальным счётом или beam search, когда оценивается несколько вариантов.

7326ff9f 327a 4396 8d80 09e078723b93

LLM обучаются методом автогрессии (выход одной итерации становится входом следующей) и сначала обучаются на предсказании следующего токена, а затем могут дообучаться для решения конкретных задач.

Важно правильно формулировать запросы к LLM
Учитывая, что единственная задача LLM — предсказывать следующий токен, анализируя каждый входной токен и определяя, какие из них являются «важными», формулировка вашего входного текста имеет решающее значение.

Входная последовательность, которую вы предоставляете LLM, называется «промтом». Тщательная проработка промта облегчает направление генерации LLM к желаемому результату.

Как LLM используются в AI-агентах?
LLM являются ключевым компонентом AI-агентов, обеспечивая основу для понимания и генерации человеческого языка.

Они способны интерпретировать пользовательские инструкции, поддерживать контекст в диалогах, формировать план и определять, какие инструменты использовать.

Подведем итоги
Мы рассмотрели основы того, что такое LLM, как они функционируют и какую роль играют в обеспечении работы AI-агентов.

Теперь, когда мы понимаем, как работают LLM, пришло время посмотреть, как они структурируют свою генерацию в формате диалога.

III. «Сообщения и специальные токены»

(Источник: Messages and Special Tokens)

Структурирование диалогов

При общении с такими системами, как ChatGPT или HuggingChat, пользователь обменивается сообщениями, а не одним длинным запросом. Однако на самом деле все сообщения объединяются в единый промт перед подачей в модель.

Вопрос: Но... когда я общаюсь с ChatGPT или Hugging Chat, я веду диалог, используя чат-сообщения, а не одну длинную последовательность промта.

Ответ: Верно! Но это всего лишь абстракция пользовательского интерфейса. Прежде чем подать данные в LLM, все сообщения из разговора объединяются в один единый промт. Модель не «запоминает» весь диалог — она читает его целиком каждый раз.

478efe30 a93a 4214 ae53 1a23aa4654d0

До сих пор мы обсуждали промты как последовательность токенов, которые подаются в модель. Однако, когда вы общаетесь с такими системами, как 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)

Основные компоненты процесса

Агенты работают в непрерывном цикле, состоящем из трёх этапов:

  1. Мысль (Thought): модель определяет следующий шаг.
  2. Действие (Action): агент выполняет действие (например, вызывает инструмент).
  3. Наблюдение (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»

Ключевой подход при реализации действий:

  1. Агент выводит действие в заранее определённом формате (например, JSON).
  2. После завершения генерации агент останавливается, чтобы не добавить лишнего текста.
  3. Внешний парсер считывает вывод и извлекает название действия и аргументы.

Пример действия:

jsonCopy{
  "action": "get_weather",
  "action_input": {"location": "New York"}
}

Также существуют «Code Agents», которые генерируют исполняемый код (например, на Python) для выполнения сложных операций.


VIII. «Наблюдение: интеграция обратной связи для анализа и адаптации»

(Источник: Observe: Integrating Feedback to Reflect and Adapt)

Роль наблюдений

Наблюдения – это обратная связь, получаемая агентом после выполнения действия. Они позволяют:

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

Пример:
Если API погоды возвращает «переменная облачность, 15°C, влажность 60%», агент добавляет эту информацию в свою историю и использует её для формирования окончательного ответа.

Наблюдения могут включать системные сообщения, данные об изменениях, результаты вычислений и т. д.

Процесс:

  1. Разобрать действие и выполнить его.
  2. Получить результат и добавить его как наблюдение.
  3. Использовать наблюдение для корректировки дальнейших шагов.

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?
Это лёгкая библиотека, предназначенная для упрощения разработки агентов. Она абстрагирует многие детали и позволяет сконцентрироваться на поведении агента.

Пошаговое создание агента

  1. Дублирование шаблона Space:
    Вам предложено создать копию шаблона по ссылке, чтобы работать в своём профиле.
  2. Модификация файла app.py:
    В этом файле вы будете добавлять инструменты и настраивать агента.
  3. Примеры инструментов:
    • Пример «my_custom_tool», который можно доработать под свои задачи.
    • Инструмент get_current_time_in_timezone, возвращающий текущее время для заданного часового пояса.
  4. Настройка агента:
    Агент создаётся с использованием класса CodeAgent из smolagents. Вы задаёте модель (например, Qwen/Qwen2.5-Coder-32B-Instruct) через класс HfApiModel, список инструментов, максимальное число шагов и шаблоны промтов (загружаемые из YAML-файла).

Пример полного файла app.py:
(В шаблоне приведён полный исходный код, включая импорты, определение инструментов, создание модели и запуск GradioUI.)

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


Заключение

В данном переводе представлены все разделы Unit 1 курса Hugging Face Agents Course, начиная от базовых концепций (что такое агент, LLM, сообщения и инструменты) до более сложных процессов (цикл мысль – действие – наблюдение, внутреннее рассуждение, действия, наблюдения) и завершая практическим созданием агента с использованием библиотеки smolagents.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *