Neste tutorial, construímos um sistema operacional de agente persistente no estilo EverMem. Combinamos o contexto conversacional de curto prazo (STM) com a memória vetorial de longo prazo usando FAISS para que o agente possa relembrar informações passadas relevantes antes de gerar cada resposta. Além da memória semântica, também armazenamos registros estruturados em SQLite para persistir metadados como carimbos de data/hora, pontuações de importância e sinais de memória (preferência, fato, tarefa, decisão). À medida que interagimos com o agente, vemos que ele forma novas memórias, recupera as mais relevantes para a consulta atual e mantém um comportamento consistente ao longo das interações. Copiar Código Copiado Usar um navegador diferente !pip -q install -U transformers sentence-transformers faiss-cpu accelerate import os, time, json, math, sqlite3, hashlib from dataclasses import dataclass from typing import List, Dict, Any, Optional import numpy as np import faiss import torch from sentence_transformers import SentenceTransformer from transformers import AutoTokenizer, AutoModelForSeq2SeqLM def _now_ts(): return int(time.time()) def _sha(s: str) -> str: return hashlib.sha256(s.encode("utf-8", errors="ignore")).hexdigest()[:16] def _ensure_dir(p: str): os.makedirs(p, exist_ok=True) def _safe_clip(text: str, max_chars: int = 1800) -> str: text = (text or "").strip() if len(text) <= max_chars: return text return text[:max_chars].rstrip() + " …" @dataclass class MemoryItem: mid: str role: str text: str created_ts: int importance: float tokens_est: int meta: Dict[str, Any] Configuramos o ambiente completo instalando as bibliotecas necessárias e importando todas as dependências necessárias para memória, embeddings, geração e persistência. Definimos funções auxiliares de utilidade para hashing, carimbos de data/hora, recorte seguro e gerenciamento de diretórios para suportar uma base estável para o sistema operacional do agente. Também introduzimos a dataclass MemoryItem, que serve como a unidade estruturada central que representa cada item de memória armazenado em nosso sistema. Copiar Código Copiado Usar um navegador diferente class EverMemAgentOS: def __init__( self, workdir: str = "/content/evermem_agent_os", db_name: str = "evermem.sqlite", embedding_model: str = "sentence-transformers/all-MiniLM-L6-v2", gen_model: str = "google/flan-t5-small", stm_max_turns: int = 10, ltm_topk: int = 6, consolidate_every: int = 8, consolidate_trigger_tokens: int = 1400, compress_target_chars: int = 420, seed: int = 7, ): self.workdir = workdir _ensure_dir(self.workdir) self.db_path = os.path.join(self.workdir, db_name) self.embedder = SentenceTransformer(embedd
Fonte: MarkTechPost
Publicado em 2026-03-04