Работа с многошаговыми агентами

ИИ-агенты с Hugging Face smolagents

Adel Nehme

VP of AI Curriculum, DataCamp

ИИ-агенты с Hugging Face smolagents

Пример: ассистент по путешествиям

ИИ-агенты с Hugging Face smolagents

Интервалы планирования: пересмотр стратегии агента

agent = CodeAgent(
    tools=[document_search_tool],
    model=model,
    planning_interval=3,
    max_steps=12
)
  • planning_interval=3: агент делает паузу каждые 3 шага.
ИИ-агенты с Hugging Face smolagents

Работа агента с интервалами планирования

«Спланируй семейный отпуск в Европе на 2 недели: исторические места для взрослых и развлечения для детей, бюджет — до $5000.»

[Шаг 1] Поиск «отели в Париже» -> Найдены отели класса люкс (~$4000 итого)

[Шаг 2] Поиск «достопримечательности Парижа для семей» -> Найдены Эйфелева башня, Лувр, билеты в тематический парк

[Шаг 3] Пауза и пересмотр плана (интервал планирования) Отели слишком дорогие -> бюджет превышен. Нужно найти более дешёвые варианты + активности для детей.

[Шаг 4] Поиск «доступные семейные отели в Европе» -> Найдены варианты среднего класса в нескольких городах

ИИ-агенты с Hugging Face smolagents

Колбэки: точки входа в процесс агента

ИИ-агенты с Hugging Face smolagents

Базовая функция колбэка

def callback_function(agent_step, agent):
    # Do something with the agent step or the agent itself
    pass
  • agent_step: информация о шаге (план, номер шага и др.)
  • agent: полный объект агента (состояние + методы)
ИИ-агенты с Hugging Face smolagents

Колбэки шага планирования

def planning_callback(agent_step, agent):
    print("AGENT PLANNING")
    print("=" * 50)
    print(agent_step.plan[:300])
    if len(agent_step.plan) > 300:
        print("\n... (plan truncated)")
    print("=" * 50)
AGENT PLANNING
==================================================
Search affordable hotels + kid activities
Then create balanced itinerary...
... (plan truncated)
==================================================
ИИ-агенты с Hugging Face smolagents

Колбэки шага действия

def action_callback(agent_step, agent):
    step_num = agent_step.step_number
    print(f"Step {step_num}: Taking action")

    if agent_step.is_final_answer:
        total_tokens = agent_step.token_usage.total_tokens
        print(f"Total tokens used: {total_tokens}")
Step 2: Taking action!
Step 3: Taking action!
Step 4: Taking action!
Total tokens used: 4,218
ИИ-агенты с Hugging Face smolagents

Добавление колбэков к агентам

from smolagents import ActionStep, PlanningStep

agent = CodeAgent(
    tools=[document_search_tool],
    model=model,
    step_callbacks={PlanningStep: planning_callback, ActionStep: action_callback}
)
ИИ-агенты с Hugging Face smolagents

Что можно делать с колбэками?

  • Логировать поисковые запросы, чтобы понять, что ищут пользователи
  • Добавлять контрольные точки с одобрением человека
  • Отправлять обновления прогресса на дашборды или в приложения
  • Корректировать поведение агента в процессе работы
  • И многое другое...
ИИ-агенты с Hugging Face smolagents

Давайте потренируемся!

ИИ-агенты с Hugging Face smolagents

Preparing Video For Download...