Managing Agent Memory

AI Agents with Hugging Face smolagents

Adel Nehme

VP of AI Curriculum, DataCamp

AI Agents with Hugging Face smolagents

Stateless by Default

Each .run() call is a fresh start.

  • Example:
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?
AI Agents with Hugging Face smolagents

Retaining Memory Between Interactions

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.
  • Pass 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
...
AI Agents with Hugging Face smolagents

Memory Helps You Debug, Too

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

Inspect what happened in the agent's run:

  • Reviewing all code the agent generated
  • Tracing its reasoning, actions, and tool usage
  • Debugging incorrect answers or broken logic
AI Agents with Hugging Face smolagents

What Code Did the Agent Run?

The .return_full_code() method lets you see all executed code.

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

salary = 80000  # <- hardcoded?

# script continues...
AI Agents with Hugging Face smolagents

What Was the Agent Thinking?

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},
  ...
}
AI Agents with Hugging Face smolagents

Save Agent Sessions for Analysis

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)

Logs can help with:

  • Post-hoc analysis
  • Regression testing
  • Improving agent behavior over time
AI Agents with Hugging Face smolagents

Fixing Agent Failures: What to Adjust

  • Memory issues: Use reset=False or reset intentionally
  • Reasoning problems: Try a stronger model
  • Inconsistent behavior: Improve system prompt
  • Tool confusion: Clarify tool docstrings
AI Agents with Hugging Face smolagents

Let's practice!

AI Agents with Hugging Face smolagents

Preparing Video For Download...