Pular para conteúdo

App: agents

Gerencia agentes de IA, documentos, pipeline RAG, skills e MCP servers.

Models

Agent

Agente vinculado 1:1 a um curso: - name, personality, system_prompt, behavior_instructions - credits_per_student -- creditos por aluno por periodo de faturamento (padrao: 50) - suggested_prompts -- lista estática no formato JSON de sugestões iniciais customizadas do Agente (aparecem no start do chat). - enable_follow_up_suggestions -- flag de geração preditiva da IA baseada na resposta com chamadas automáticas de perguntas curtas. - is_trained -- True apos treinamento RAG bem-sucedido - is_active -- True por padrao; quando False, agente fica oculto para alunos - faiss_index_path -- propriedade que retorna o caminho do indice em disco - access_request_token -- token público (UUIDv4) para envio do link externo a fim de alunos solicitarem acesso ao Agente.

AgentDocument

Arquivo enviado para treinar o agente: - Suporta: PDF, Markdown, TXT, CSV, XLSX, DOCX, SRT - is_processed -- True apos inclusao no FAISS

AgentSkill

Skill de IA configurada para um agente. Implementada como tool do LangChain.

  • agent -- FK para Agent
  • name, description
  • skill_type -- builtin (padrao do sistema) ou custom (criada pela escola)
  • config -- JSONField com configuracao (para builtins, armazena builtin_type)
  • is_active -- ativa/desativa a skill
  • created_by -- FK para User (quem criou)

AgentMCPServer

MCP Server vinculado a um agente. Conecta o agente a servicos externos.

  • agent -- FK para Agent
  • name, description, server_url
  • transport_type -- stdio, sse ou streamable_http
  • config -- JSONField (headers de autenticacao, etc.)
  • is_active, created_by

StudentSkillOverride

Override de skill por aluno: permite desativar/reativar skills do agente individualmente.

  • student -- FK para User
  • skill -- FK para AgentSkill
  • is_active -- se a skill esta ativa para este aluno
  • Constraint unica: (student, skill)

StudentMCPServer

MCP Server personalizado adicionado pelo aluno para um agente especifico.

  • student -- FK para User
  • agent -- FK para Agent
  • name, description, server_url
  • transport_type -- usa as mesmas opcoes de AgentMCPServer
  • config, is_active

AccessRequest

Solicitação de acesso pendente enviada por um aluno através da landing page secreta do agente (access_request_token). - agent, full_name, email, whatsapp - status: pending, approved, denied - reviewed_by: FK para admin escolar.

StudentSkill

Skill personalizada criada pelo aluno para um agente especifico.

  • student -- FK para User
  • agent -- FK para Agent
  • name, description (instrucao)
  • is_active

Pipeline RAG (agents/rag.py)

def train_agent(agent):
    docs = []
    for doc in agent.documents.all():
        loader = get_loader(doc)
        docs.extend(loader.load())

    splits = RecursiveCharacterTextSplitter(
        chunk_size=1000, chunk_overlap=200
    ).split_documents(docs)

    vector_store = FAISS.from_documents(splits, OpenAIEmbeddings())
    vector_store.save_local(agent.faiss_index_path)

    agent.is_trained = True
    agent.save()

Skills Engine (agents/skills_engine.py)

Modulo responsavel por construir as tools do LangChain a partir das skills e MCP servers do agente.

  • build_tools_for_agent(agent, student) -- monta a lista de tools combinando skills do agente, overrides do aluno, skills do aluno e MCP servers (do agente + do aluno)
  • _fetch_mcp_tools(server_url, headers, label) -- conecta a um MCP server e retorna as tools disponiveis
  • test_mcp_connection(mcp) -- testa conexao com um MCP server existente
  • BUILTIN_SKILL_TYPES -- dicionario de skills padrao disponiveis no sistema

Views

Views do Admin (escola)

View Descricao
AgentListView Listar agentes da escola
AgentCreateView Criar agente para um curso
AgentUpdateView Editar configuracao do agente
AgentDetailView Detalhes com documentos, skills e MCPs
AgentToggleView Ativar/desativar agente
AgentTrainView Iniciar treinamento RAG
DocumentUploadView Upload de documento
DocumentRemoveView Remover documento
AgentSkillAddView Adicionar skill (builtin ou custom)
AgentSkillEditView Editar skill
AgentSkillRemoveView Remover skill
AgentSkillToggleView Ativar/desativar skill
AgentMCPAddView Adicionar MCP server
AgentMCPEditView Editar MCP server
AgentMCPRemoveView Remover MCP server
AgentMCPToggleView Ativar/desativar MCP server
AgentMCPTestView Testar conexao com MCP server existente
AgentMCPTestConnectionView Testar conexao antes de salvar
AccessRequestFormView View pública para envio da request de acesso de alunos não matriculados
AccessRequestSuccessView Página de confirmação public
AccessRequestListView Painel da escola para gerenciar e enxergar leads que enviaram a request de acesso a agentes
AccessRequestApproveView Aprovar request do aluno vinculando-o ao Agent
AccessRequestDenyView Negar a request ocultando-a.

Desativacao de Agente

O admin pode desativar um agente via AgentToggleView. Agentes inativos (is_active=False) ficam ocultos no dashboard do aluno e nao podem ser acessados para chat.

Verificacao de Trial

Antes de treinar, AgentTrainView verifica se o trial expirou:

if school.subscription.is_trial_expired:
    messages.error(request, 'Trial expirado...')
    return redirect('subscriptions:upgrade')