Управление памятью агента

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

Adel Nehme

VP of AI Curriculum, DataCamp

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

Отсутствие состояния по умолчанию

Каждый вызов .run() начинается заново.

  • Пример:
career_advisor.run("What career skills should I highlight?")
You should highlight Python, SQL, data visualization, 
machine learning fundamentals, and communication skills tailored to business outcomes.
career_advisor.run("Can you format those skills as bullet points?")
Sorry, I'm not sure which skills you're referring to. Could you clarify?
ИИ-агенты с Hugging Face smolagents

Сохранение памяти между взаимодействиями

career_advisor.run("What career skills should I highlight?")
You should highlight Python, SQL, data visualization, 
machine learning fundamentals, and communication skills tailored to business outcomes.
  • Передайте reset=False:
career_advisor.run("Can you format those skills as bullet points?", reset=False)
Sure! Here are the skills as bullet points:
- Python
- SQL
- Data visualization
...
ИИ-агенты с Hugging Face smolagents

Память помогает и при отладке

User: What's the expected salary?
Agent: It's $80,000
User: Wait, that seems wrong...
Agent: Sorry, I'm not sure what you mean

Изучите, что происходило в ходе работы агента:

  • Просмотр всего сгенерированного кода
  • Отслеживание рассуждений, действий и вызовов инструментов
  • Отладка неверных ответов и сбоев в логике
ИИ-агенты с Hugging Face smolagents

Какой код выполнял агент?

Метод .return_full_code() позволяет просмотреть весь выполненный код.

executed_code = career_advisor.memory.return_full_code()
print(executed_code)
# ...other steps omitted for brevity

salary = 80000  # <- hardcoded?

# script continues...
ИИ-агенты с Hugging Face smolagents

Как рассуждал агент?

conversation_steps = career_advisor.memory.get_succinct_steps()
print(conversation_steps[5])
{
  "step_number": 5,
  "tool_calls": [
    {"function": {"name": "python_interpreter"}},
    {"function": {"name": "web_search"}}
  ],
  "code_action": "import requests\nskills = requests.get('api.jobsearch.com').json()",
  "observations": "resume_agent found 15 relevant skills for transition",
  "token_usage": {"total_tokens": 334},
  ...
}
ИИ-агенты с Hugging Face smolagents

Сохранение сессий агента для анализа

import json

def save_agent_memory(agent):
    with open("agent_memory.json", "w") as f:
        json.dump(agent.memory.get_succinct_steps(), f, indent=2, default=str)

# Save memory to a file
save_agent_memory(career_advisor)

Журналы полезны для:

  • Ретроспективного анализа
  • Регрессионного тестирования
  • Улучшения поведения агента со временем
ИИ-агенты с Hugging Face smolagents

Устранение сбоев агента: что настраивать

  • Проблемы с памятью: используйте reset=False или выполняйте сброс намеренно
  • Ошибки в рассуждениях: попробуйте более мощную модель
  • Непоследовательное поведение: улучшите системный промпт
  • Путаница с инструментами: уточните документацию инструментов
ИИ-агенты с Hugging Face smolagents

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

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

Preparing Video For Download...