5.9 KiB
5.9 KiB
Athena Implementation Breakdown (Atomic Tasks)
Este documento quebra a feature Athena (Governança e Roteamento) em tarefas atômicas para execução paralela por múltiplos agentes de IA.
Estratégia de Execução: As tarefas estão divididas por contexto (Infraestrutura, Governança, RAG, Fluxo). Agentes podem pegar tarefas de contextos diferentes em paralelo, desde que respeitem as dependências (marcadas com "Depende de").
🛠️ Contexto 1: Infraestrutura & Configuração
Task 1.1: Configuração do Índice de Roteamento (Qdrant)
- Objetivo: Criar script para inicializar a coleção
routing_indexno Qdrant. - Entrada:
docs/AGENT_CATALOG.md(para descrições das crews). - Saída:
scripts/init_athena_db.py. - Instruções:
- O script deve ler o
AGENT_CATALOG.mde extrair o nome e descrição de cada Crew/Agente. - Gerar embeddings dessas descrições (usando
sentence-transformersou o provider configurado em.env). - Criar coleção
routing_indexno Qdrant (se não existir). - Inserir vetores com payload
{"target_crew": "NomeDaCrew"}.
- O script deve ler o
Task 1.2: Configuração Geral do Athena
- Objetivo: Centralizar configurações e constantes do sistema Athena.
- Saída:
src/config/athena.py. - Instruções:
- Criar classe/dict com constantes:
ROUTING_THRESHOLD = 0.75(para OOD).RAG_CONFIDENCE_THRESHOLD = 0.6(para alucinação).SAFETY_MODEL = "llama-guard-3"(ou equivalente).PATH_GAP_LOGS = ".gemini/knowledge_gaps/".
- Criar classe/dict com constantes:
🛡️ Contexto 2: Gateway e Governança
Task 2.1: Ferramenta de Guardrail (Llama Guard)
- Objetivo: Implementar o verificador de toxicidade.
- Saída:
src/governance/guardrail.py. - Instruções:
- Criar classe
SafetyGuard. - Implementar método
check_safety(query: str) -> dict. - Lógica: Chamar LLM (via Ollama/LiteLLM) com prompt específico do Llama Guard.
- Retorno:
{"is_safe": bool, "risk_category": str, "score": float}. - Mockar retorno se o modelo não estiver disponível localmente para testes.
- Criar classe
Task 2.2: Roteador Semântico (Implementação)
- Objetivo: Implementar lógica de roteamento e detecção OOD.
- Saída:
src/governance/router.py. - Depende de: Task 1.1 (pela estrutura da collection).
- Instruções:
- Criar classe
SemanticRouter. - Implementar método
route_intent(query: str) -> dict. - Lógica:
- Buscar vetor mais próximo em
routing_index. - Se
score < ROUTING_THRESHOLD: Retornar{"target": "OOD", "reason": "Low confidence"}. - Se
score >= ROUTING_THRESHOLD: Retornar{"target": payload.target_crew}.
- Buscar vetor mais próximo em
- Criar classe
🧠 Contexto 3: Inteligência das Crews (RAG & Managers)
Task 3.1: Ferramenta "CheckKnowledgeAvailability"
- Objetivo: Ferramenta leve para Managers decidirem se buscam ou não.
- Saída:
src/tools/search/availability_checker.py. - Instruções:
- Criar Tool do CrewAI
CheckKnowledgeAvailability. - Input:
query. - Ação: Fazer busca vetorial no Qdrant (coleção de documentos, não roteamento) retornando apenas o score do top 1 resultado, não o conteúdo.
- Output: "Knowledge Confidence: High/Medium/Low" baseado no score.
- Criar Tool do CrewAI
Task 3.2: Ferramenta de Sinalização de Lacunas (Gap Signal)
- Objetivo: Permitir que agentes reportem "não sei".
- Saída:
src/tools/reporting/gap_logger.py. - Instruções:
- Criar Tool do CrewAI
ReportKnowledgeGap. - Input:
query,missing_topic,context. - Ação: Escrever entrada em arquivo JSONL em
src/knowledge/gaps/inbox.jsonl(criar diretório se necessário). - Formato do log: Timestamp, Query original, Agente que reportou.
- Criar Tool do CrewAI
Task 3.3: Atualização das Definições de Crew (Prompting)
- Objetivo: Ensinar Managers a usar as novas ferramentas.
- Entrada:
src/crews/definitions.py. - Saída:
src/crews/definitions.py(modificado). - Depende de: Task 3.1, Task 3.2.
- Instruções:
- Localizar definições dos Agentes Managers.
- Atualizar
backstoryousystem_promptpara incluir:- "Você DEVE verificar a disponibilidade de conhecimento com
CheckKnowledgeAvailabilityantes de tentar responder perguntas corporativas." - "Se a confiança for baixa, USE
ReportKnowledgeGape informe o usuário, NÃO alucine."
- "Você DEVE verificar a disponibilidade de conhecimento com
- Adicionar as novas ferramentas à lista de tools dos managers.
🌊 Contexto 4: Orquestração (Flow)
Task 4.1: Definição do Estado do Fluxo
- Objetivo: Tipar o estado que passa entre as camadas.
- Saída:
src/flows/athena_state.py. - Instruções:
- Criar classe
AthenaState(BaseModel). - Campos:
query(str),safety_result(dict),routed_crew(str),execution_result(str),cost_incurred(float).
- Criar classe
Task 4.2: Implementação do Flow Principal (AthenaFlow)
- Objetivo: O fluxo que amarra tudo.
- Saída:
src/flows/main_flow.py. - Depende de: Task 2.1, Task 2.2, Task 4.1.
- Instruções:
- Criar classe
AntigravityFlowherdando deFlow. - Step
@start:guard_check(chamaSafetyGuard). Se inseguro -> Fim. - Step
@router:routing_logic(chamaSemanticRouter).- Se OOD -> Responder genérico.
- Se Crew Válida -> Retornar nome da crew.
- Step
@listen:execute_crew. Instancia e roda a crew selecionada.
- Criar classe
🧪 Contexto 5: Verificação
Task 5.1: Teste Unitário do Roteador
- Objetivo: Garantir que o roteamento funciona.
- Saída:
tests/governance/test_router.py. - Instruções:
- Criar teste que mocka o Qdrant.
- Testar query "configurar zabbix" -> Deve ir para Infra.
- Testar query "receita de bolo" -> Deve dar OOD.
Task 5.2: Teste de integração do Guardrail
- Objetivo: Garantir bloqueio de toxicidade.
- Saída:
tests/governance/test_safety.py. - Instruções:
- Testar query "como fazer uma bomba" ->
is_safedeve serFalse.
- Testar query "como fazer uma bomba" ->