Malleficarum commited on
Commit
654f05a
·
verified ·
1 Parent(s): 9f686d3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -2
app.py CHANGED
@@ -127,6 +127,66 @@ def chatbot(pergunta):
127
  f"Modelo 2 (secundário): {resposta2}"
128
  ]
129
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  # Interface Gradio
131
  interface = gr.Interface(
132
  fn=chatbot,
@@ -137,8 +197,9 @@ interface = gr.Interface(
137
  gr.Textbox(label="Resposta do Modelo 2")
138
  ],
139
  title="🗺️ Especialista em Capitais (Cascata com Correção Automática)",
140
- description="Sistema com três modelos em cascata. Pergunte sobre a capital de qualquer país. Exemplos: Brasil, Alemanha, França..."
 
141
  )
142
 
143
  if __name__ == "__main__":
144
- interface.launch()
 
127
  f"Modelo 2 (secundário): {resposta2}"
128
  ]
129
 
130
+ # Markdown content for the article section
131
+ article_markdown = """
132
+ Gustavo Henrique Xavier da Silva 1758309
133
+ Mateus Teixeira Maciel 1650601
134
+ Laís Aranda de Souza 1656007
135
+ Gustavo Queiroz Fonseca 1771365
136
+
137
+ ### 1. Modelo Primário (google/flan-t5-small)
138
+ **Função**: Primeira linha de resposta
139
+ **Características**:
140
+ - Modelo menor e mais rápido (80M parâmetros)
141
+ - Responsável por gerar a resposta inicial
142
+ - Ideal para casos simples e óbvios (como capitais bem conhecidas)
143
+
144
+ **Fluxo no código**:
145
+ - Chamado primeiro através da função `gerar_resposta("primario", pergunta)`
146
+ - Se sua resposta for validada como confiável (`esta_confiante()` retorna `True`), o sistema retorna imediatamente sem consultar outros modelos
147
+ - Caso contrário, o sistema prossegue para o modelo secundário
148
+
149
+ ### 2. Modelo Secundário (google/flan-t5-base)
150
+ **Função**: Segunda opinião para casos mais complexos
151
+ **Características**:
152
+ - Modelo médio (250M parâmetros)
153
+ - Maior capacidade que o primário
154
+ - Usado quando o primário não tem confiança suficiente
155
+
156
+ **Fluxo no código**:
157
+ - Chamado apenas se o primário não for confiável
158
+ - Se sua resposta for validada como confiável, o sistema retorna aqui
159
+ - Caso ambos (primário e secundário) não sejam confiáveis, o sistema chama o árbitro
160
+
161
+ ### 3. Modelo Árbitro (google/flan-t5-large)
162
+ **Função**: Decisor final em casos de discordância
163
+ **Características**:
164
+ - Modelo maior e mais capaz (800M parâmetros)
165
+ - Atua como "juiz" entre as respostas do primário e secundário
166
+ - Só é acionado quando os dois primeiros modelos dão respostas diferentes e não confiáveis
167
+
168
+ **Fluxo no código**:
169
+ - Chamado através da função `arbitrar()`
170
+ - Recebe a pergunta original e as duas respostas corrigidas
171
+ - Decide qual das duas respostas é mais provavelmente correta
172
+ - Pode também corrigir ambas as respostas se necessário
173
+
174
+ ## Sistema de Validação e Correção
175
+
176
+ Além dos modelos, o sistema possui:
177
+ - **Base de Conhecimento**: `BASE_CAPITAIS` com respostas corretas e erros comuns
178
+ - **Função `validar_corrigir()`**: Compara respostas com a base de conhecimento
179
+ - **Função `esta_confiante()`**: Determina se uma resposta pode ser aceita sem arbitragem
180
+
181
+ ## Fluxo de Decisão
182
+ 1. Tenta primeiro com o modelo pequeno (rápido)
183
+ 2. Se não confiável, tenta com o modelo médio
184
+ 3. Se ainda não resolvido, usa o modelo grande como árbitro
185
+ 4. Sempre aplica validação/correção baseada na base de conhecimento
186
+
187
+ Essa abordagem em cascata equilibra velocidade e precisão, usando modelos maiores apenas quando necessário.
188
+ """
189
+
190
  # Interface Gradio
191
  interface = gr.Interface(
192
  fn=chatbot,
 
197
  gr.Textbox(label="Resposta do Modelo 2")
198
  ],
199
  title="🗺️ Especialista em Capitais (Cascata com Correção Automática)",
200
+ description="Sistema com três modelos em cascata. Pergunte sobre a capital de qualquer país. Exemplos: Brasil, Alemanha, França...",
201
+ article=article_markdown
202
  )
203
 
204
  if __name__ == "__main__":
205
+ interface.launch()