Spaces:
				
			
			
	
			
			
		Sleeping
		
	
	
	
			
			
	
	
	
	
		
		
		Sleeping
		
	Commit 
							
							·
						
						b6dfa57
	
1
								Parent(s):
							
							2b7c617
								
Correção do time out e evolução para troca do sonnet pelo grok no processamento do merge
Browse files- Dockerfile +1 -1
 - app.py +6 -6
 - config.py +3 -3
 - templates/index.html +1 -1
 
    	
        Dockerfile
    CHANGED
    
    | 
         @@ -23,4 +23,4 @@ COPY . . 
     | 
|
| 23 | 
         
             
            CMD ["gunicorn", "--bind", "0.0.0.0:7860", "app:app"]
         
     | 
| 24 | 
         | 
| 25 | 
         
             
            # Adiciona o parâmetro --timeout 300 para aumentar o tempo limite para 300 segundos (5 minutos)
         
     | 
| 26 | 
         
            -
            CMD ["gunicorn", "--bind", "0.0.0.0:7860", "--timeout", " 
     | 
| 
         | 
|
| 23 | 
         
             
            CMD ["gunicorn", "--bind", "0.0.0.0:7860", "app:app"]
         
     | 
| 24 | 
         | 
| 25 | 
         
             
            # Adiciona o parâmetro --timeout 300 para aumentar o tempo limite para 300 segundos (5 minutos)
         
     | 
| 26 | 
         
            +
            CMD ["gunicorn", "--bind", "0.0.0.0:7860", "--timeout", "1300", "app:app"]
         
     | 
    	
        app.py
    CHANGED
    
    | 
         @@ -99,7 +99,7 @@ def process(): 
     | 
|
| 99 | 
         
             
                                yield f"data: {json.dumps({'progress': 33, 'message': 'Agora, o Claude Sonnet está aprofundando o texto...', 'partial_result': {'id': 'grok-output', 'content': grok_html}})}\n\n"
         
     | 
| 100 | 
         | 
| 101 | 
         
             
                                prompt_sonnet = PromptTemplate(template=PROMPT_HIERARQUICO_SONNET, input_variables=["solicitacao_usuario", "texto_para_analise"])
         
     | 
| 102 | 
         
            -
                                claude_with_max_tokens = claude_llm.bind(max_tokens= 
     | 
| 103 | 
         
             
                                chain_sonnet = LLMChain(llm=claude_with_max_tokens, prompt=prompt_sonnet)
         
     | 
| 104 | 
         
             
                                resposta_sonnet = chain_sonnet.invoke({"solicitacao_usuario": solicitacao_usuario, "texto_para_analise": resposta_grok})['text']
         
     | 
| 105 | 
         
             
                                if not resposta_sonnet or not resposta_sonnet.strip(): raise ValueError("Falha no serviço Claude Sonnet: Sem resposta.")
         
     | 
| 
         @@ -118,7 +118,7 @@ def process(): 
     | 
|
| 118 | 
         | 
| 119 | 
         
             
                return Response(generate_stream(mode, form_data, temp_file_paths), mimetype='text/event-stream')
         
     | 
| 120 | 
         | 
| 121 | 
         
            -
            # --- ROTA DE MERGE ATUALIZADA PARA  
     | 
| 122 | 
         
             
            @app.route('/merge', methods=['POST'])
         
     | 
| 123 | 
         
             
            def merge():
         
     | 
| 124 | 
         
             
                data = request.get_json()
         
     | 
| 
         @@ -129,10 +129,10 @@ def merge(): 
     | 
|
| 129 | 
         | 
| 130 | 
         
             
                        prompt_merge = PromptTemplate(template=PROMPT_ATOMICO_MERGE, input_variables=["solicitacao_usuario", "texto_para_analise_grok", "texto_para_analise_sonnet", "texto_para_analise_gemini"])
         
     | 
| 131 | 
         | 
| 132 | 
         
            -
                         
     | 
| 133 | 
         
            -
                        chain_merge = LLMChain(llm= 
     | 
| 134 | 
         | 
| 135 | 
         
            -
                        yield f"data: {json.dumps({'progress': 50, 'message': 'Enviando textos para o  
     | 
| 136 | 
         | 
| 137 | 
         
             
                        resposta_merge = chain_merge.invoke({
         
     | 
| 138 | 
         
             
                            "solicitacao_usuario": data.get('solicitacao_usuario'),
         
     | 
| 
         @@ -142,7 +142,7 @@ def merge(): 
     | 
|
| 142 | 
         
             
                        })['text']
         
     | 
| 143 | 
         | 
| 144 | 
         
             
                        if not resposta_merge or not resposta_merge.strip():
         
     | 
| 145 | 
         
            -
                            raise ValueError("Falha no serviço de Merge ( 
     | 
| 146 | 
         | 
| 147 | 
         
             
                        merge_html = markdown2.markdown(resposta_merge, extras=["fenced-code-blocks", "tables"])
         
     | 
| 148 | 
         | 
| 
         | 
|
| 99 | 
         
             
                                yield f"data: {json.dumps({'progress': 33, 'message': 'Agora, o Claude Sonnet está aprofundando o texto...', 'partial_result': {'id': 'grok-output', 'content': grok_html}})}\n\n"
         
     | 
| 100 | 
         | 
| 101 | 
         
             
                                prompt_sonnet = PromptTemplate(template=PROMPT_HIERARQUICO_SONNET, input_variables=["solicitacao_usuario", "texto_para_analise"])
         
     | 
| 102 | 
         
            +
                                claude_with_max_tokens = claude_llm.bind(max_tokens=12000)
         
     | 
| 103 | 
         
             
                                chain_sonnet = LLMChain(llm=claude_with_max_tokens, prompt=prompt_sonnet)
         
     | 
| 104 | 
         
             
                                resposta_sonnet = chain_sonnet.invoke({"solicitacao_usuario": solicitacao_usuario, "texto_para_analise": resposta_grok})['text']
         
     | 
| 105 | 
         
             
                                if not resposta_sonnet or not resposta_sonnet.strip(): raise ValueError("Falha no serviço Claude Sonnet: Sem resposta.")
         
     | 
| 
         | 
|
| 118 | 
         | 
| 119 | 
         
             
                return Response(generate_stream(mode, form_data, temp_file_paths), mimetype='text/event-stream')
         
     | 
| 120 | 
         | 
| 121 | 
         
            +
            # --- ROTA DE MERGE ATUALIZADA PARA USAR GROK ---
         
     | 
| 122 | 
         
             
            @app.route('/merge', methods=['POST'])
         
     | 
| 123 | 
         
             
            def merge():
         
     | 
| 124 | 
         
             
                data = request.get_json()
         
     | 
| 
         | 
|
| 129 | 
         | 
| 130 | 
         
             
                        prompt_merge = PromptTemplate(template=PROMPT_ATOMICO_MERGE, input_variables=["solicitacao_usuario", "texto_para_analise_grok", "texto_para_analise_sonnet", "texto_para_analise_gemini"])
         
     | 
| 131 | 
         | 
| 132 | 
         
            +
                        # ATUALIZAÇÃO: O merge agora será feito pelo GROK
         
     | 
| 133 | 
         
            +
                        chain_merge = LLMChain(llm=grok_llm, prompt=prompt_merge)
         
     | 
| 134 | 
         | 
| 135 | 
         
            +
                        yield f"data: {json.dumps({'progress': 50, 'message': 'Enviando textos para o GROK para consolidação...'})}\n\n"
         
     | 
| 136 | 
         | 
| 137 | 
         
             
                        resposta_merge = chain_merge.invoke({
         
     | 
| 138 | 
         
             
                            "solicitacao_usuario": data.get('solicitacao_usuario'),
         
     | 
| 
         | 
|
| 142 | 
         
             
                        })['text']
         
     | 
| 143 | 
         | 
| 144 | 
         
             
                        if not resposta_merge or not resposta_merge.strip():
         
     | 
| 145 | 
         
            +
                            raise ValueError("Falha no serviço de Merge (GROK): Sem resposta.")
         
     | 
| 146 | 
         | 
| 147 | 
         
             
                        merge_html = markdown2.markdown(resposta_merge, extras=["fenced-code-blocks", "tables"])
         
     | 
| 148 | 
         | 
    	
        config.py
    CHANGED
    
    | 
         @@ -61,7 +61,7 @@ Com base na solicitação original do usuário e no texto gerado pelo primeiro e 
     | 
|
| 61 | 
         
             
            ---
         
     | 
| 62 | 
         | 
| 63 | 
         
             
            **Suas Instruções:**
         
     | 
| 64 | 
         
            -
            1.  **Valide se o texto atingiu a quantidade de palavras mínimas (4000 palavras)**.
         
     | 
| 65 | 
         
             
            2.  **Analise o texto:** Verifique a coesão, coerência e profundidade dos argumentos.
         
     | 
| 66 | 
         
             
            3.  **Aprofunde e Detalhe:** Identifique pontos que podem ser mais explorados. Adicione detalhes, exemplos e nuances que enriqueçam o conteúdo original.
         
     | 
| 67 | 
         
             
            4.  **Faça Correções:** Corrija eventuais imprecisões conceituais ou argumentativas.
         
     | 
| 
         @@ -88,7 +88,7 @@ Você é o revisor final. Sua função é polir e aperfeiçoar o texto que já p 
     | 
|
| 88 | 
         | 
| 89 | 
         
             
            **Suas Instruções:**
         
     | 
| 90 | 
         
             
            1.  **Análise Crítica Final:** Leia o texto atentamente, buscando a máxima qualidade, clareza e profundidade.
         
     | 
| 91 | 
         
            -
            2.  **Valide se o texto atingiu a quantidade de palavras mínimas (4000 palavras) 
     | 
| 92 | 
         
             
            3.  **Correções e Complementos Finais:** Adicione os toques finais. Melhore a fluidez entre os parágrafos, enriqueça o vocabulário e adicione insights que possam ter sido omitidos.
         
     | 
| 93 | 
         
             
            4.  **Não Resuma ou Reduza:** Assim como o revisor anterior, seu papel é adicionar valor e profundidade, não remover conteúdo.
         
     | 
| 94 | 
         
             
            5.  **Garantia de Qualidade:** Assegure que o texto final atende a todos os requisitos da solicitação original do usuário de forma exemplar.
         
     | 
| 
         @@ -168,7 +168,7 @@ Com base na solicitação original do usuário e nos textos-base fornecidos, sua 
     | 
|
| 168 | 
         | 
| 169 | 
         
             
            **Suas Instruções:**
         
     | 
| 170 | 
         
             
            - **Estrutura:** Analise e escolha a melhor estrutura de seções entre os 3 textos e aplique no texto consolidado. A melhor estrutura de seções é aquela que melhor entendeu o objetivo da solicitação do usuário e que mais conseguir se aprofundar na abordagem do tema.
         
     | 
| 171 | 
         
            -
            - **Valide se o texto atingiu a quantidade de palavras mínimas (4000 palavras) 
     | 
| 172 | 
         
             
            - **Analise o texto:** Verifique a coesão, coerência e profundidade dos argumentos.
         
     | 
| 173 | 
         
             
            - **Consolidação:** Identifique os pontos fortes de cada texto e gere um texto final consolidado. Cuide para o que texto não fique redundante. Ou seja, voltando nos mesmos assuntos e conceitos.
         
     | 
| 174 | 
         
             
            - **Faça Correções:** Corrija eventuais imprecisões conceituais ou argumentativas.
         
     | 
| 
         | 
|
| 61 | 
         
             
            ---
         
     | 
| 62 | 
         | 
| 63 | 
         
             
            **Suas Instruções:**
         
     | 
| 64 | 
         
            +
            1.  **Valide se o texto atingiu a quantidade de palavras mínimas (4000 palavras) e máxima (5000 palavras)**.
         
     | 
| 65 | 
         
             
            2.  **Analise o texto:** Verifique a coesão, coerência e profundidade dos argumentos.
         
     | 
| 66 | 
         
             
            3.  **Aprofunde e Detalhe:** Identifique pontos que podem ser mais explorados. Adicione detalhes, exemplos e nuances que enriqueçam o conteúdo original.
         
     | 
| 67 | 
         
             
            4.  **Faça Correções:** Corrija eventuais imprecisões conceituais ou argumentativas.
         
     | 
| 
         | 
|
| 88 | 
         | 
| 89 | 
         
             
            **Suas Instruções:**
         
     | 
| 90 | 
         
             
            1.  **Análise Crítica Final:** Leia o texto atentamente, buscando a máxima qualidade, clareza e profundidade.
         
     | 
| 91 | 
         
            +
            2.  **Valide se o texto atingiu a quantidade de palavras mínimas (4000 palavras) e máxima (5000 palavras)**.
         
     | 
| 92 | 
         
             
            3.  **Correções e Complementos Finais:** Adicione os toques finais. Melhore a fluidez entre os parágrafos, enriqueça o vocabulário e adicione insights que possam ter sido omitidos.
         
     | 
| 93 | 
         
             
            4.  **Não Resuma ou Reduza:** Assim como o revisor anterior, seu papel é adicionar valor e profundidade, não remover conteúdo.
         
     | 
| 94 | 
         
             
            5.  **Garantia de Qualidade:** Assegure que o texto final atende a todos os requisitos da solicitação original do usuário de forma exemplar.
         
     | 
| 
         | 
|
| 168 | 
         | 
| 169 | 
         
             
            **Suas Instruções:**
         
     | 
| 170 | 
         
             
            - **Estrutura:** Analise e escolha a melhor estrutura de seções entre os 3 textos e aplique no texto consolidado. A melhor estrutura de seções é aquela que melhor entendeu o objetivo da solicitação do usuário e que mais conseguir se aprofundar na abordagem do tema.
         
     | 
| 171 | 
         
            +
            - **Valide se o texto atingiu a quantidade de palavras mínimas (4000 palavras) e máxima (5000 palavras)**.
         
     | 
| 172 | 
         
             
            - **Analise o texto:** Verifique a coesão, coerência e profundidade dos argumentos.
         
     | 
| 173 | 
         
             
            - **Consolidação:** Identifique os pontos fortes de cada texto e gere um texto final consolidado. Cuide para o que texto não fique redundante. Ou seja, voltando nos mesmos assuntos e conceitos.
         
     | 
| 174 | 
         
             
            - **Faça Correções:** Corrija eventuais imprecisões conceituais ou argumentativas.
         
     | 
    	
        templates/index.html
    CHANGED
    
    | 
         @@ -104,7 +104,7 @@ 
     | 
|
| 104 | 
         
             
                        mockContainer.style.display = this.checked ? 'block' : 'none';
         
     | 
| 105 | 
         
             
                    });
         
     | 
| 106 | 
         
             
                    processingModeSwitch.addEventListener('change', function() {
         
     | 
| 107 | 
         
            -
                        document.getElementById('flow-description').textContent = this.checked ? "GROK | Claude Sonnet | Gemini 
     | 
| 108 | 
         
             
                    });
         
     | 
| 109 | 
         | 
| 110 | 
         
             
                    // --- Lógica de Upload ---
         
     | 
| 
         | 
|
| 104 | 
         
             
                        mockContainer.style.display = this.checked ? 'block' : 'none';
         
     | 
| 105 | 
         
             
                    });
         
     | 
| 106 | 
         
             
                    processingModeSwitch.addEventListener('change', function() {
         
     | 
| 107 | 
         
            +
                        document.getElementById('flow-description').textContent = this.checked ? "GROK | Claude Sonnet | Gemini" : "GROK ➔ Claude Sonnet ➔ Gemini";
         
     | 
| 108 | 
         
             
                    });
         
     | 
| 109 | 
         | 
| 110 | 
         
             
                    // --- Lógica de Upload ---
         
     |