SoftwareAI Library Web
Aplicação web construída em Flask que funciona como hub para gerenciar e expor agents e tools da biblioteca SoftwareAI.
- Visão Geral
- Principais Funcionalidades
- Pré-requisitos
- Instalação
- Configuração
- Como Executar
- Endpoints da API
- Estrutura do Projeto
- Variáveis de Ambiente
- Logs
- Contribuição
- Licença
Este projeto disponibiliza via web um conjunto de serviços para listar, consultar e versionar agents
e tools
da biblioteca SoftwareAI. A interface renderiza páginas estáticas e templates em Jinja, enquanto a API RESTful oferece JSON para consumo por frontends ou outros serviços.
- Listagem de agents e tools armazenados no Firebase
- Recuperação de metadados, tutoriais e versões históricas
- Download em ZIP de códigos fonte (Integration.py, metadata.json, .py das tools)
- Exposição de docker-compose YAML do hub
- Sistema de logging configurável
- Suporte a CORS em todas as rotas
- Sessões seguras com tempo de vida configurável
Rota | Método | Descrição |
---|---|---|
/ ou /index.html |
GET | Página inicial |
/tools ou /tools.html |
GET | Lista de tools |
/tools/<tool_id> |
GET | Detalhe de uma tool específica |
/agents ou /agent.html |
GET | Página de agents |
Rota | Método | Descrição |
---|---|---|
/api/agents |
GET | Lista todos os agents com metadados e status |
/api/agents/<agent_id> |
GET | Retorna tutorial e dados básicos do agent |
/api/agents/history?agent_id=<id> |
GET | Histórico de versões do agent, ordenado por timestamp decrescente |
/api/compose |
GET | Retorna o arquivo softwareai-compose.yml |
/api/agent-metadata/<ids> |
GET | Metadados de um ou múltiplos agents (vírgula-separados) |
/api/tool-metadata/<tool_id> |
GET | Metadados e código de uma tool |
/api/list-tools |
GET | Lista todas as tools disponíveis |
/api/get-tools-by-id |
POST | Recebe JSON com tool_ids e retorna dados das tools |
/api/tool-code/<tool_ids> |
GET | Download em ZIP do código Python de tools especificadas |
/api/agent-code/<agent_ids> |
GET | Download em ZIP de Integration.py e metadata.json de agents |
/api/submit-tool-output |
POST | Endpoint de callback para submissão de saída de ferramenta |
├── Agents/ # Diretório de agents locais
├── FunctionsAndTools/ # Ferramentas e funções auxiliares
│ ├── Functions/ # Código das tools
│ └── __init__Functions.py # Registro das funções
├── Keys/ # Credenciais e chaves (não versionadas)
├── modules/ # Módulos internos (load, hash, register)
├── static/ # Arquivos estáticos (CSS, JS, imagens)
├── templates/ # Templates Jinja para páginas
├── softwareai-compose.yml # Compose de demonstração do hub
├── library_hub_app.py # Aplicação Flask principal
├── requirements.txt # Dependências Python
└── README.md # Este arquivo
OPENAI_API_KEY
— chave da API OpenAIFIREBASE_CREDENTIALS
— caminho para JSON de credenciais FirebaseFIREBASE_URL
— URL do Realtime DatabaseSECRET_KEY
— chave secreta Flask para sessões
O logger app_logger
está configurado para nível DEBUG e direcionado ao stdout. Formato: [YYYY-MM-DD HH:MM:SS] LEVEL in module: mensagem
.
- Fork do projeto
- Crie uma branch (
git checkout -b feature/nova-funcionalidade
) - Commit suas alterações (
git commit -m 'Adiciona nova funcionalidade'
) - Push para a branch (
git push origin feature/nova-funcionalidade
) - Abra um Pull Request
Se o repositório usa main
como a branch principal, você precisa fazer o commit na main
, e não na master
. Para corrigir isso, faça o seguinte:
- Troque para a branch
main
:
git checkout main
- Atualize a branch
main
com as últimas alterações do repositório remoto:
git pull origin main
- Volte para a sua branch de trabalho:
git checkout master # ou outra branch de trabalho
- Rebase as alterações na
main
(ou apenas usegit merge
):
git rebase main # ou git merge main
- Suba a branch novamente:
git push origin master
Agora, você pode tentar criar o PR novamente:
gh pr create --base main --head master --title "Título do PR" --body "Descrição do PR"
- Python 3.9+
- Docker (opcional, se quiser containerizar)
- Conta e credenciais Firebase
- Chave de API OpenAI válida
# Clone o repositório
git clone https://github.com/seu-usuario/SoftwareAI-Library-Web.git
cd SoftwareAI-Library-Web
# Crie e ative um ambiente virtual
python3 -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
# Instale as dependências
pip install -r requirements.txt
Renomeie o arquivo .env.example
para .env
e preencha:
OPENAI_API_KEY=suachaveopenai
FIREBASE_CREDENTIALS=/caminho/para/appcompany.json
FIREBASE_URL=https://seu-projeto.firebaseio.com
SECRET_KEY=uma_chave_secreta_para_sessions
export FLASK_APP=library_hub_app.py # ou defina no Windows
export FLASK_ENV=development # opcional
flask run --host=0.0.0.0 --port=821
Ou diretamente:
python library_hub_app.py
Após isso, acesse http://localhost:821
.
MIT © Seu Nome