victorafarias commited on
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
Files changed (4) hide show
  1. Dockerfile +1 -1
  2. app.py +6 -6
  3. config.py +3 -3
  4. 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", "900", "app:app"]
 
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=8000)
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 STREAMING ---
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
- claude_with_max_tokens = claude_llm.bind(max_tokens=12000)
133
- chain_merge = LLMChain(llm=claude_with_max_tokens, prompt=prompt_merge)
134
 
135
- yield f"data: {json.dumps({'progress': 50, 'message': 'Enviando textos para o Claude Sonnet para consolidação...'})}\n\n"
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 (Claude Sonnet): Sem resposta.")
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 (Paralelo)" : "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 ---