Download the PHP package elephpantmemory/memory without Composer
On this page you can find all versions of the php package elephpantmemory/memory. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download elephpantmemory/memory
More information about elephpantmemory/memory
Files in elephpantmemory/memory
Package memory
Short Description An ultra-lightweight, zero-dependency local memory and context manager for AI chatbots.
License GPL-3.0
Informations about the package memory
ElePHPantMemory 🐘💬
An ultra-lightweight, zero-dependency local memory and context manager for AI chatbots. Written in pure, modern PHP 8.4+ using property hooks and asymmetric visibility.
Gestor de memória e contexto local para chatbots de IA. Ultra leve, rápido e sem dependências externas. Escrito em PHP 8.4+ puro e moderno.
🧐 "Does anyone actually use this, or is it completely useless?" / "Quem é que usa esta merda?"
English
If you are building an AI chatbot using standard APIs (like OpenAI, Claude, or Gemini) and think "I'll just pass the entire chat history in every request," you will quickly realize:
- Your API bill explodes as the conversation grows.
- The chatbot loses its mind when the conversation exceeds token limits.
- Setting up a Vector Database (Pinecone, pgvector) just to store simple facts (like the user's name, city, or order preferences) is massive overkill.
ElePHPantMemory solves this inside your existing database (SQLite, MySQL, Postgres, SQL Server) without any extra services:
- 🔋 Zero Dependencies: Fits into any PHP project, no vendor bloat.
- 🧠 Dual-Tier Memory: Keeps recent chat history in a sliding window (Short-Term) and extracts/stores facts (Long-Term) to inject as system prompts.
- ✂️ Smart Summarization: When the token limit is hit, it automatically summarizes older history using the LLM and keeps the summary as a persistent fact, purging raw old messages to save database space and API tokens.
Português (Portugal)
Se estás a desenvolver um chatbot de IA com APIs (OpenAI, Claude, Gemini) e pensas "basta-me mandar o histórico todo em cada pedido", vais perceber muito rápido que:
- A tua fatura da API explode à medida que a conversa avança.
- O chatbot perde o fio à meada quando as mensagens excedem o limite de tokens.
- Instalar uma base de dados vetorial (Pinecone, pgvector) só para guardar factos básicos (como o nome do utilizador, a cidade ou o ID da encomenda) é complicar o que devia ser simples.
O ElePHPantMemory resolve isto diretamente na tua base de dados atual (SQLite, MySQL, Postgres, SQL Server):
- 🔋 Zero Dependências: Funciona em qualquer projeto PHP, sem encher o
vendor. - 🧠 Memória de Duas Camadas: Mantém as mensagens recentes numa janela deslizante (Curto Prazo) e extrai/guarda factos importantes (Longo Prazo) para injetar no prompt de sistema.
- ✂️ Sumarização Inteligente: Quando atinge o limite de tokens, usa a própria IA para criar um resumo das mensagens antigas, guarda-o e apaga o histórico bruto para poupar espaço e tokens.
🗺️ How it Works / Como Funciona
📊 Features & Comparison / Caraterísticas e Comparação
| Feature / Funcionalidade | Standard AI Chat Flow | With ElePHPantMemory 🐘 |
|---|---|---|
| API Token Costs / Custos de Tokens | 📈 Increases exponentially | 📉 Flat and optimized |
| Memory Retention / Retenção de Memória | ❌ Forgets when context limits hit | 🧠 Never forgets core facts |
| Dependencies / Dependências | 📦 Heavy framework overhead | ❌ Zero (Vanilla PHP 8.4+) |
| Database Setup / Configuração de BD | ⚙️ Requires external Vector DB | Reuses your active connection |
| GDPR Compliance / Pronto para RGPD | 🛠️ Manual code required | ⚡ Automated local TTL purging |
🛠️ Quick Start / Guia Rápido
Installation / Instalação
Option A: Composer (Recommended / Recomendado)
Option B: Manual Include / Importação Manual
Download the package files and include the main manager file: Descarrega os ficheiros do pacote e importa o ficheiro do gestor principal:
🚀 Usage Examples / Exemplos de Uso
1. Basic Local Storage (Manual Facts) / Armazenamento Local Simples (Factos Manuais)
Manually save messages and facts (useful if you handle the AI calls manually for fact extraction). Regista mensagens e factos manualmente (útil se já tratas da chamada de IA de outra forma).
2. Intelligent Auto-Memory (Zero-Dependency AI Integration)
Let ElePHPantMemory automatically extract facts from chats and summarize old conversations using OpenAI or Gemini natively (via cURL). Deixa o ElePHPantMemory extrair factos e sumarizar conversas antigas automaticamente usando OpenAI ou Gemini nativo (via cURL).
3. Custom Providers / Integração de Provedores Customizados
If you use a framework wrapper (like Laravel's LLM clients, or a custom wrapper), you can bind it directly using CustomProvider.
Se usas outro wrapper de IA (ex: pacotes do Laravel ou SDKs oficiais), podes integrá-lo usando o CustomProvider.
4. Memory Lifecycle Operations / Gestão do Ciclo de Vida da Memória
5. Custom Table Prefixes / Prefixo de Tabelas Customizado
If you want to prevent database table name conflicts with your existing tables, you can configure a custom prefix (default is em_) in the constructor.
Se quiseres evitar conflitos de nomes de tabelas na tua base de dados, podes definir um prefixo personalizado (o padrão é em_) no construtor.
6. Temporary Facts (TTL Expiration) / Factos Temporários (Expiração por TTL)
You can set an optional TTL in seconds for specific facts. The library automatically cleans up expired facts during runtime context generation. Podes definir um tempo de vida útil (TTL) em segundos para factos específicos. A biblioteca limpa automaticamente os factos expirados em tempo de execução.
7. Custom Extraction Guidelines / Diretrizes de Extração Personalizadas
Guide the AI on what details to extract (or ignore) during automatic fact extraction. Orienta a IA sobre que detalhes extrair (ou ignorar) durante a extração automática de factos.
8. Custom Context Formatters / Formatador de Contexto Customizado
Customize how facts and summaries are formatted in the system prompt injected into your AI calls. Personaliza a forma como os factos e o sumário são formatados no prompt do sistema injetado nas chamadas de IA.
🏗️ Requirements & DB Schemas / Requisitos e Esquemas de BD
- PHP 8.4+ (Utilizes cutting-edge property hooks and asymmetric visibility).
- An active database connection instance using
PDO(MySQL, SQLite, SQL Server, PostgreSQL) ormysqli.
The library automatically checks and initializes these two tables:
em_history: Stores message history.em_facts: Stores extracted facts and conversation summaries.
🛡️ Error Handling / Tratamento de Erros
ElePHPantMemory throws custom exceptions under the ElePHPantMemory namespace, all extending ElePHPantException:
ValidationException: When configuration parameters are invalid (e.g.maxTokenslimit is below 500).StorageException: When database connections fail, queries fail, or prepared statement operations fail.AIException: When cURL connection fails, API responds with error, or JSON parsing/mapping fails.
🧪 Testing / Testes
You can run the built-in, zero-dependency test suite using the following command: Podes correr a suite de testes integrada e sem dependências usando o seguinte comando:
🤝 Contributing / Contribuir
Contributions are welcome! Please check CONTRIBUTING.md for architecture guidelines. Keep it dependency-free, and ensure PHP code files remain ASCII-clean (no special accents in class/method names or comments).
Contribuições são bem-vindas! Verifica o ficheiro CONTRIBUTING.md para diretrizes de arquitetura. Mantém o código PHP livre de dependências externas e sem caracteres especiais ou acentos no código fonte.
⚖️ License / Licença
This project is licensed under the GNU General Public License v3.0 (GPL-3.0) - see the LICENSE file for details.
Este projeto está licenciado sob a GNU General Public License v3.0 (GPL-3.0) - consulta o ficheiro LICENSE para mais detalhes.