gam-agentic-memory
Original:🇺🇸 English
Translated
Build structured hierarchical memory systems for LLM agents using GAM (General Agentic Memory) with support for text, video, and agent trajectories
11installs
Sourcearadotso/ai-agent-skills
Added on
NPX Install
npx skill4agent add aradotso/ai-agent-skills gam-agentic-memoryTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →GAM (General Agentic Memory) Skill
Skill by ara.so — AI Agent Skills collection.
GAM is a modular agentic file system framework that provides structured memory and operating environments for Large Language Models. It automatically chunks content, generates memory summaries, and organizes them hierarchically. Supports text documents, long videos, and agent trajectories with access via Python SDK, CLI, REST API, and Web interface.
Installation
bash
# Full installation with all features
pip install -e ".[all]"
# Basic installation (text only)
pip install -e .
# With specific features
pip install -e ".[video]" # Video support
pip install -e ".[api]" # REST API support
pip install -e ".[web]" # Web interface supportConfiguration
GAM uses environment variables for LLM configuration. Set these to avoid passing API keys in code:
bash
# GAM Agent (for memory building)
export GAM_API_KEY="sk-your-api-key"
export GAM_MODEL="gpt-4o-mini"
export GAM_API_BASE="https://api.openai.com/v1"
# Chat Agent (for Q&A) — optional, falls back to GAM Agent config
export GAM_CHAT_API_KEY="sk-your-chat-api-key"
export GAM_CHAT_MODEL="gpt-4o"
export GAM_CHAT_API_BASE="https://api.openai.com/v1"Python SDK Usage
Basic Workflow API
The class is the primary high-level interface:
Workflowpython
from gam import Workflow
# Create a text workflow
wf = Workflow(
task_type="text",
gam_dir="./my_gam",
model="gpt-4o-mini", # Optional if GAM_MODEL is set
api_key=None # Uses GAM_API_KEY env var
)
# Add content to GAM
wf.add(input_file="research_paper.pdf")
# Query the memory
result = wf.request("What is the main conclusion of this paper?")
print(result.answer)
print(result.context) # Retrieved memory contextIncremental Memory Building
Add new content to existing GAM without rebuilding:
python
from gam import Workflow
wf = Workflow("text", gam_dir="./knowledge_base")
# Add initial document
wf.add(input_file="doc1.pdf")
# Later, add more documents incrementally
wf.add(input_file="doc2.pdf")
wf.add(input_file="doc3.txt")
# Query across all added documents
result = wf.request("Summarize the key points from all documents")Video Memory Workflow
python
from gam import Workflow
# Create video workflow
wf = Workflow(
task_type="video",
gam_dir="./video_gam",
model="gpt-4o-mini"
)
# Add video content
wf.add(input_file="lecture.mp4")
# Query video content
result = wf.request("What topics were covered in the first 10 minutes?")
print(result.answer)Long-Horizon Agent Trajectory
python
from gam import Workflow
# Create long-horizon workflow for agent trajectories
wf = Workflow(
task_type="long-horizon",
gam_dir="./agent_memory",
model="gpt-4o-mini"
)
# Add agent trajectory data
wf.add(input_file="agent_trace.jsonl")
# Query trajectory
result = wf.request("What tool was used to solve the math problem?")Advanced Component Usage
For more control, use individual components:
python
from gam.text.core import TextGAM
from gam.text.chat import TextChatAgent
# Initialize GAM with custom config
gam = TextGAM(
gam_dir="./custom_gam",
model="gpt-4o-mini",
api_key=None, # Uses env var
chunk_size=2000,
max_workers=4
)
# Build memory from text
gam.add(input_file="document.pdf")
# Initialize chat agent with different model
chat_agent = TextChatAgent(
gam_dir="./custom_gam",
model="gpt-4o", # More powerful model for Q&A
api_key=None,
top_k=10, # Number of memory chunks to retrieve
rerank=True # Enable reranking
)
# Query
response = chat_agent.chat("What are the main findings?")
print(response)CLI Usage
Adding Content to GAM
bash
# Add text document
gam-add --type text --gam-dir ./my_gam --input paper.pdf
# Add with custom model
gam-add --type text --gam-dir ./my_gam --input paper.pdf --model gpt-4o
# Add video
gam-add --type video --gam-dir ./video_gam --input lecture.mp4
# Add agent trajectory
gam-add --type long-horizon --gam-dir ./agent_gam --input trace.jsonlQuerying GAM
bash
# Basic query
gam-request --type text --gam-dir ./my_gam --question "What is the main conclusion?"
# Query with custom chat model
gam-request --type text --gam-dir ./my_gam --question "Explain the methodology" \
--model gpt-4o --top-k 15
# Video query
gam-request --type video --gam-dir ./video_gam --question "Summarize the lecture"
# Long-horizon query
gam-request --type long-horizon --gam-dir ./agent_gam --question "What actions were taken?"CLI with Environment Variables
bash
# Set once
export GAM_API_KEY="sk-your-key"
export GAM_MODEL="gpt-4o-mini"
# Then use without specifying credentials
gam-add --type text --gam-dir ./my_gam --input doc.pdf
gam-request --type text --gam-dir ./my_gam --question "Summary?"REST API Usage
Starting the API Server
python
# examples/run_api.py
from gam.api import create_app
import uvicorn
app = create_app()
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=5001)bash
# Start server
python examples/run_api.py --port 5001
# Interactive API docs at http://localhost:5001/docsREST API Client Example
python
import requests
BASE_URL = "http://localhost:5001"
# Add content via API
add_response = requests.post(
f"{BASE_URL}/add",
json={
"task_type": "text",
"gam_dir": "./api_gam",
"input_file": "document.pdf",
"model": "gpt-4o-mini"
}
)
print(add_response.json())
# Query via API
query_response = requests.post(
f"{BASE_URL}/request",
json={
"task_type": "text",
"gam_dir": "./api_gam",
"question": "What are the key findings?",
"model": "gpt-4o",
"top_k": 10
}
)
result = query_response.json()
print(result["answer"])
print(result["context"])REST API Endpoints
- - Add content to GAM
POST /add - - Query GAM memory
POST /request - - Health check
GET /health - - Interactive API documentation
GET /docs
Web Interface Usage
Starting the Web Platform
python
# examples/run_web.py
from gam.web import app
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)bash
# Start with environment variables
export GAM_MODEL="gpt-4o-mini"
export GAM_API_KEY="sk-your-key"
python examples/run_web.py
# Or pass directly
python examples/run_web.py --model gpt-4o-mini --api-key sk-your-key --port 5000Access at for visual GAM management and querying.
http://localhost:5000Common Patterns
Multi-Document Knowledge Base
python
from gam import Workflow
# Create knowledge base
kb = Workflow("text", gam_dir="./knowledge_base")
# Add multiple documents
documents = ["finance.pdf", "legal.pdf", "tech.pdf"]
for doc in documents:
kb.add(input_file=doc)
# Query across all documents
result = kb.request("What are the legal implications mentioned in any document?")Video Analysis Pipeline
python
from gam import Workflow
# Process video lectures
wf = Workflow("video", gam_dir="./lectures")
# Add multiple lectures
wf.add(input_file="lecture1.mp4")
wf.add(input_file="lecture2.mp4")
# Ask questions about content
topics = wf.request("What are all the topics covered?")
timeline = wf.request("When was machine learning discussed?")Agent Memory with Search/Recall
python
from gam import Workflow
# Agent trajectory memory
agent_mem = Workflow("long-horizon", gam_dir="./agent_traces")
# Add agent execution trace
agent_mem.add(input_file="execution_log.jsonl")
# Recall specific actions
result = agent_mem.request("What was the sequence of tool calls for solving the problem?")
# Search for patterns
patterns = agent_mem.request("How many times did the agent retry failed operations?")Custom Memory Configuration
python
from gam.text.core import TextGAM
from gam.text.chat import TextChatAgent
# High-performance memory building
gam = TextGAM(
gam_dir="./optimized_gam",
model="gpt-4o-mini",
chunk_size=3000, # Larger chunks
max_workers=8, # More parallel workers
embedding_model="text-embedding-3-large"
)
gam.add(input_file="large_corpus.txt")
# Precision-focused retrieval
chat = TextChatAgent(
gam_dir="./optimized_gam",
model="gpt-4o",
top_k=20, # Retrieve more candidates
rerank=True, # Enable reranking
temperature=0.0 # Deterministic responses
)
response = chat.chat("Find all mentions of quantum computing")Docker Workspace Support
python
from gam import Workflow
# Create GAM in Docker container workspace
wf = Workflow(
task_type="text",
gam_dir="/workspace/gam", # Container path
model="gpt-4o-mini"
)
# Works seamlessly in containerized environments
wf.add(input_file="/workspace/data/document.pdf")
result = wf.request("Summarize the document")Troubleshooting
API Key Issues
If you get authentication errors:
python
# Check environment variables
import os
print(os.getenv("GAM_API_KEY"))
print(os.getenv("GAM_MODEL"))
# Or pass explicitly
wf = Workflow("text", gam_dir="./gam", model="gpt-4o-mini", api_key="sk-your-key")Missing Dependencies
bash
# If video processing fails
pip install -e ".[video]"
# If API server fails
pip install -e ".[api]"
# If web interface fails
pip install -e ".[web]"
# Install everything
pip install -e ".[all]"Memory Not Found
python
# Ensure GAM directory exists and has content
import os
gam_dir = "./my_gam"
if not os.path.exists(gam_dir):
print("GAM directory not found. Run add() first.")
if not os.path.exists(f"{gam_dir}/chunks"):
print("No chunks found. GAM may be empty.")Slow Performance
python
# Increase parallel workers for faster building
from gam.text.core import TextGAM
gam = TextGAM(
gam_dir="./gam",
max_workers=16, # More workers
chunk_size=2500 # Adjust chunk size
)
# Use smaller, faster model for building
gam = TextGAM(gam_dir="./gam", model="gpt-4o-mini")
# Use larger model only for querying
from gam.text.chat import TextChatAgent
chat = TextChatAgent(gam_dir="./gam", model="gpt-4o")Model Configuration
python
# Use different models for different stages
from gam import Workflow
# Fast model for memory building
wf = Workflow("text", gam_dir="./gam", model="gpt-4o-mini")
wf.add(input_file="doc.pdf")
# Advanced model for complex queries
from gam.text.chat import TextChatAgent
chat = TextChatAgent(gam_dir="./gam", model="gpt-4o")
response = chat.chat("Complex analytical question?")Directory Structure
After building a GAM, the structure looks like:
./my_gam/
├── chunks/ # Segmented content chunks
├── memories/ # Generated memory summaries
├── taxonomy/ # Hierarchical organization
├── embeddings/ # Vector embeddings for retrieval
└── metadata.json # GAM configurationResearch Codebase
For academic research and benchmarking:
bash
cd research
pip install -e .python
from gam_research import MemoryAgent, ResearchAgent
# Dual-agent implementation from paper
memorizer = MemoryAgent(gam_dir="./research_gam")
researcher = ResearchAgent(gam_dir="./research_gam")
# Run benchmarks (LoCoMo, HotpotQA, RULER, NarrativeQA)
# See research/README.md for detailsKey Concepts
- GAM Directory: File system location where memory is stored
- Chunks: Semantically segmented pieces of content
- Memories: LLM-generated summaries with TLDR for each chunk
- Taxonomy: Hierarchical directory structure organizing memories
- Workflow: High-level API combining add and request operations
- Incremental Addition: Add new content without rebuilding existing memory