5.9 KiB
5.9 KiB
🔧 Referência de API & Código
Referência técnica para o código do Antigravity Brain.
📦 Módulos Principais
src/config.py
Hub central de configuração.
from src.config import Config
# Obter configuração LLM
llm_config = Config.get_llm_config(mode="smart") # ou "fast"
# Retorna: {"model": "gemini/...", "temperature": 0.7, "api_key": "..."}
# Obter configuração de Memória
mem_config = Config.get_mem0_config()
# Retorna: {"llm": {...}, "embedder": {...}, "vector_store": {...}}
# Obter token do Telegram
token = Config.get_telegram_token()
src/agents/factory.py
Criação de agentes a partir de arquivos de persona.
from src.agents.factory import AgentFactory
# Criar agente com ferramentas padrão
agent = AgentFactory.create_agent("arthur-mendes", model_tier="smart")
# Criar agente com ferramentas específicas
from src.tools.zabbix import ZabbixValidatorTool
agent = AgentFactory.create_agent(
"arthur-mendes",
specific_tools=[ZabbixValidatorTool()],
model_tier="smart"
)
# Listar personas disponíveis
personas = AgentFactory.list_available_personas()
# Retorna: ["persona-arthur-mendes", "persona-gus-fring", ...]
# Carregar conhecimento corporativo
knowledge = AgentFactory.load_knowledge_base()
# Retorna string concatenada de todos os arquivos standards/*.md
src/crews/definitions.py
Montagem e gerenciamento de crews.
from src.crews.definitions import CrewDefinitions
# Obter crews disponíveis
crews = CrewDefinitions.get_available_crews()
# Retorna: ["Engenharia de Infra (Zabbix)", "Auditoria de Segurança", ...]
# Montar uma crew
crew = CrewDefinitions.assemble_crew(
crew_name="Engenharia de Infra (Zabbix)",
inputs={"topic": "Validar este template"}
)
# Executar crew
result = crew.kickoff(inputs={"topic": "Sua tarefa aqui"})
src/router.py
Roteamento inteligente de requisições usando LLM.
from src.router import SmartRouter
# Rotear requisição de usuário para crew apropriada
crew_name = SmartRouter.route("Verificar saúde do servidor")
# Retorna: "Engenharia de Infra (Zabbix)"
crew_name = SmartRouter.route("Criar um novo agente")
# Retorna: "RH & Evolução"
src/memory/wrapper.py
Ferramentas de memória com rate limiting.
from src.memory.wrapper import SearchMemoryTool, SaveMemoryTool, MemoryWrapper
# Obter cliente de memória
client = MemoryWrapper.get_client()
# Usar como ferramentas (tipicamente atribuídas a agentes)
search_tool = SearchMemoryTool()
result = search_tool._run(query="O que sabemos sobre Zabbix?")
save_tool = SaveMemoryTool()
result = save_tool._run(fact="O servidor roda na porta 8000")
🔧 Ferramentas Disponíveis
Ferramentas de Memória (src/memory/wrapper.py)
| Ferramenta | Entrada | Saída |
|---|---|---|
SearchMemoryTool |
query: str |
Memórias encontradas ou "Nenhuma informação relevante" |
SaveMemoryTool |
fact: str |
"Salvo com sucesso" ou erro |
Ferramentas de Evolução (src/tools/evolution.py)
| Ferramenta | Entrada | Saída |
|---|---|---|
SpawnAgentTool |
filename, name, role, goal, backstory, llm_preference |
Caminho para arquivo criado |
LearnPolicyTool |
title, content, category |
Caminho para política salva |
Ferramentas Zabbix (src/tools/zabbix.py)
| Ferramenta | Entrada | Saída |
|---|---|---|
ZabbixValidatorTool |
file_path: str |
Relatório de validação |
UUIDFixerTool |
file_path: str |
Caminho do arquivo corrigido |
🎭 Formato de Arquivo de Persona
---
description: Descrição curta
llm_config:
provider: default # openai, gemini, ollama, default
---
# 👤 Persona: Nome
**Papel:** Cargo
**Objetivo:** Objetivo principal
## 🧠 História
Texto de personalidade e histórico...
Campos Parseados
| Campo | Fonte | Fallback |
|---|---|---|
name |
Primeiro # Heading |
"Agente Desconhecido" |
role |
Linha **Papel:** |
"Agente de Suporte" |
goal |
**Objetivo:** ou **Especialidade:** |
"Executar tarefas relacionadas a {role}" |
backstory |
Conteúdo completo do corpo | - |
llm_config |
Frontmatter YAML | {} |
🌐 Variáveis de Ambiente
| Variável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
LLM_PROVIDER |
Sim | openai |
gemini, openai, anthropic, ollama |
LLM_MODEL_FAST |
Sim | gpt-3.5-turbo |
Modelo para tarefas rápidas |
LLM_MODEL_SMART |
Sim | gpt-4o |
Modelo para raciocínio complexo |
GEMINI_API_KEY |
Se gemini | - | Chave de API Google AI |
OPENAI_API_KEY |
Se openai | - | Chave de API OpenAI |
ANTHROPIC_API_KEY |
Se anthropic | - | Chave de API Anthropic |
OLLAMA_BASE_URL |
Se ollama | http://localhost:11434 |
URL do servidor Ollama |
MEMORY_PROVIDER |
Não | mem0 |
qdrant (local) ou mem0 (nuvem) |
MEMORY_EMBEDDING_PROVIDER |
Não | openai |
local, openai, gemini |
QDRANT_HOST |
Se qdrant | localhost |
Host Qdrant |
QDRANT_PORT |
Se qdrant | 6333 |
Porta Qdrant |
MEMORY_PROJECT_ID |
Não | default_project |
Namespace de memória |
🔄 Constantes de Rate Limiting
Em src/memory/wrapper.py:
MAX_RETRIES = 3 # Máximo de tentativas em 429
RETRY_DELAY_SECONDS = 2.0 # Delay inicial (dobra a cada retry)
MAX_CALLS_PER_MINUTE = 50 # Limite conservador de API
🐳 Serviços Docker
| Serviço | Porta | Propósito |
|---|---|---|
app |
8000 | Interface web Chainlit |
qdrant |
6333 | Banco de dados vetorial |
telegram_listener |
- | Bot Telegram (opcional) |
📝 Logs
import logging
logger = logging.getLogger("AntigravityMemory") # Módulo de memória
logger = logging.getLogger("AntigravityConfig") # Módulo de configuração
Logs aparecem no Docker: docker logs antigravity_brain -f