Uma Implementação de Código para Projetar um Agente Tutor com Estado, Memória de Longo Prazo, Recup…

Neste tutorial, construímos um agente tutor pessoal totalmente com estado que vai além das interações de chat de curta duração e aprende continuamente ao longo do tempo. Projetamos o sistema para persistir as preferências do usuário, rastrear áreas de aprendizado fracas e recuperar seletivamente apenas o contexto passado relevante ao responder. Combinando armazenamento durável, recuperação semântica e prompting adaptativo, demonstramos como um agente pode se comportar mais como um tutor de longo prazo do que um chatbot sem estado. Além disso, nos concentramos em manter o agente auto-gerenciado, sensível ao contexto e capaz de melhorar sua orientação sem exigir que o usuário repita informações. Copiar Código Copiado Use um navegador diferente!pip -q install "langchain>=0.2.12" "langchain-openai>=0.1.20" "sentence-transformers>=3.0.1" "faiss-cpu>=1.8.0.post1" "pydantic>=2.7.0" import os, json, sqlite3, uuid from datetime import datetime, timezone from typing import List, Dict, Any import numpy as np import faiss from pydantic import BaseModel, Field from sentence_transformers import SentenceTransformer from langchain_core.messages import SystemMessage, HumanMessage, AIMessage from langchain_core.language_models.chat_models import BaseChatModel from langchain_core.outputs import ChatGeneration, ChatResult DB_PATH="/content/tutor_memory.db" STORE_DIR="/content/tutor_store" INDEX_PATH=f"{STORE_DIR}/mem.faiss" META_PATH=f"{STORE_DIR}/mem_meta.json" os.makedirs(STORE_DIR, exist_ok=True) def now(): return datetime.now(timezone.utc).isoformat() def db(): return sqlite3.connect(DB_PATH) def init_db(): c=db(); cur=c.cursor() cur.execute("""CREATE TABLE IF NOT EXISTS events( id TEXT PRIMARY KEY,user_id TEXT,session_id TEXT,role TEXT,content TEXT,ts TEXT)""") cur.execute("""CREATE TABLE IF NOT EXISTS memories( id TEXT PRIMARY KEY,user_id TEXT,kind TEXT,content TEXT,tags TEXT,importance REAL,ts TEXT)""") cur.execute("""CREATE TABLE IF NOT EXISTS weak_topics( user_id TEXT,topic TEXT,mastery REAL,last_seen TEXT,notes TEXT,PRIMARY KEY(user_id,topic))""") c.commit(); c.close() Configuramos o ambiente de execução e importamos todas as bibliotecas necessárias para construir um agente com estado. Também definimos caminhos centrais e funções utilitárias para manipulação de tempo e conexões de banco de dados. Isso estabelece a infraestrutura fundamental na qual o restante do sistema se baseia. Copiar Código Copiado Use um navegador diferente!class MemoryItem(BaseModel): kind:str content:str tags:List[str]=Field(default_factory=list) importance:float=Field(0.5,ge=0,le=1) class WeakTopicSigna

Fonte: MarkTechPost

Publicado em 2026-02-16

Notícias relacionadas

Continue explorando