Skip to main content
Glama
tree_structure_control.md7.52 kB
# Controle de Estrutura da Árvore Este documento descreve os parâmetros de controle de estrutura da árvore de aprendizagem implementados no MCP Server v1.0.6. ## Visão Geral O MCP Server agora permite um controle mais preciso sobre a estrutura das árvores de aprendizagem geradas, através de quatro novos parâmetros: - `min_width`: Largura mínima da árvore (nós no primeiro nível) - `max_width`: Largura máxima em qualquer nível da árvore - `min_height`: Altura mínima da árvore (profundidade) - `max_height`: Altura máxima da árvore (profundidade) Estes parâmetros permitem gerar árvores com diferentes formas, desde árvores largas e rasas até árvores estreitas e profundas, dependendo do tópico e das preferências do usuário. ## Parâmetros de Controle ### 1. Controle de Largura #### `min_width` (Largura Mínima) - **Descrição**: Define o número mínimo de nós no primeiro nível da árvore (filhos diretos do nó raiz). - **Valor Padrão**: 3 - **Valor Mínimo**: 2 - **Valor Máximo**: 10 - **Uso**: Útil para garantir que a árvore tenha uma diversidade mínima de subtópicos principais. #### `max_width` (Largura Máxima) - **Descrição**: Define o número máximo de nós em qualquer nível da árvore. - **Valor Padrão**: 5 - **Valor Mínimo**: 3 - **Valor Máximo**: 15 - **Uso**: Útil para evitar que a árvore fique muito larga, o que pode dificultar a visualização. ### 2. Controle de Altura #### `min_height` (Altura Mínima) - **Descrição**: Define a profundidade mínima da árvore (número mínimo de níveis). - **Valor Padrão**: 3 - **Valor Mínimo**: 2 - **Valor Máximo**: 8 - **Uso**: Útil para garantir que a árvore tenha uma profundidade mínima, explorando os tópicos em detalhes. #### `max_height` (Altura Máxima) - **Descrição**: Define a profundidade máxima da árvore (número máximo de níveis). - **Valor Padrão**: 7 - **Valor Mínimo**: 3 - **Valor Máximo**: 12 - **Uso**: Útil para evitar que a árvore fique muito profunda, o que pode tornar o caminho de aprendizagem muito longo. ## Exemplos de Uso ### Árvore Larga e Rasa ``` GET /generate_mcp?topic=python&min_width=5&max_width=8&min_height=2&max_height=4 ``` Esta configuração gera uma árvore com muitos nós no primeiro nível (5-8) e poucos níveis de profundidade (2-4), resultando em uma árvore larga e rasa. Ideal para tópicos que podem ser divididos em muitos subtópicos independentes. ### Árvore Estreita e Profunda ``` GET /generate_mcp?topic=python&min_width=2&max_width=3&min_height=5&max_height=10 ``` Esta configuração gera uma árvore com poucos nós no primeiro nível (2-3) e muitos níveis de profundidade (5-10), resultando em uma árvore estreita e profunda. Ideal para tópicos que seguem uma progressão linear de aprendizagem. ### Árvore Balanceada ``` GET /generate_mcp?topic=python&min_width=3&max_width=5&min_height=3&max_height=7 ``` Esta é a configuração padrão, que gera uma árvore balanceada com uma largura e profundidade moderadas. Adequada para a maioria dos tópicos. ## Implementação A implementação do controle de estrutura da árvore foi feita no arquivo `path_generator.py`, modificando a função `create_node_structure` para usar os novos parâmetros ao criar a estrutura da árvore. ```python async def create_node_structure( topic: str, subtopics: List[str], resources: List[Resource], min_nodes: int = 15, max_nodes: int = 28, min_width: int = 3, max_width: int = 5, min_height: int = 3, max_height: int = 7, language: str = "pt" ) -> Tuple[Dict[str, Node], List[str]]: # ... ``` ## Integração com Flutter Para integrar o controle de estrutura da árvore em aplicativos Flutter, você pode adicionar controles na interface do usuário para permitir que os usuários personalizem a estrutura da árvore: ```dart // Exemplo de interface para controlar a estrutura da árvore Widget _buildTreeStructureControls() { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text("Estrutura da Árvore", style: TextStyle(fontWeight: FontWeight.bold)), Row( children: [ Expanded( child: TextField( controller: _minWidthController, decoration: InputDecoration(labelText: "Largura Mínima"), keyboardType: TextInputType.number, ), ), SizedBox(width: 16), Expanded( child: TextField( controller: _maxWidthController, decoration: InputDecoration(labelText: "Largura Máxima"), keyboardType: TextInputType.number, ), ), ], ), Row( children: [ Expanded( child: TextField( controller: _minHeightController, decoration: InputDecoration(labelText: "Altura Mínima"), keyboardType: TextInputType.number, ), ), SizedBox(width: 16), Expanded( child: TextField( controller: _maxHeightController, decoration: InputDecoration(labelText: "Altura Máxima"), keyboardType: TextInputType.number, ), ), ], ), ], ); } ``` Ou você pode oferecer opções predefinidas para simplificar a experiência do usuário: ```dart // Opções predefinidas para a estrutura da árvore enum TreeStructure { balanced, // Balanceada (padrão) wideShallow, // Larga e rasa narrowDeep, // Estreita e profunda } // Mapeamento de opções para parâmetros Map<TreeStructure, Map<String, int>> treeStructureParams = { TreeStructure.balanced: { 'min_width': 3, 'max_width': 5, 'min_height': 3, 'max_height': 7 }, TreeStructure.wideShallow: { 'min_width': 5, 'max_width': 8, 'min_height': 2, 'max_height': 4 }, TreeStructure.narrowDeep: { 'min_width': 2, 'max_width': 3, 'min_height': 5, 'max_height': 10 }, }; ``` ## Benefícios 1. **Personalização**: Os usuários podem personalizar a estrutura da árvore de acordo com suas preferências e necessidades. 2. **Adaptação ao Tópico**: Diferentes tópicos podem se beneficiar de diferentes estruturas de árvore. 3. **Melhor Experiência de Aprendizagem**: Uma estrutura de árvore adequada pode facilitar a compreensão e a navegação pelo conteúdo. 4. **Visualização Otimizada**: Controlar a largura e a altura da árvore pode melhorar a visualização em diferentes dispositivos e tamanhos de tela. ## Limitações Atuais 1. **Aleatoriedade**: Ainda há um elemento de aleatoriedade na geração da árvore, o que significa que os parâmetros são usados como guias, mas a estrutura exata pode variar. 2. **Dependência do Tópico**: A estrutura da árvore também depende do tópico e dos recursos disponíveis, o que pode limitar o controle preciso. ## Trabalhos Futuros 1. **Visualização Prévia**: Implementar uma visualização prévia da estrutura da árvore antes de gerar o conteúdo completo. 2. **Mais Opções de Personalização**: Adicionar mais opções de personalização, como controle sobre a distribuição de recursos e quizzes. 3. **Algoritmos de Layout Avançados**: Implementar algoritmos de layout mais avançados para gerar árvores com estruturas específicas. 4. **Feedback do Usuário**: Coletar feedback dos usuários sobre as estruturas de árvore geradas para melhorar os algoritmos.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cabrit0/mcp_server_reuneMacacada'

If you have feedback or need assistance with the MCP directory API, please join our Discord server