GalvaoFilho commited on
Commit
c8aecba
·
verified ·
1 Parent(s): 0535ef7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -14
app.py CHANGED
@@ -2,7 +2,13 @@ import os
2
  import gradio as gr
3
  from crewai import Task, Agent, LLM
4
  from youtube import pesquisar_videos_youtube
5
- import time # Para simular a progressão
 
 
 
 
 
 
6
 
7
  GROQ_API_KEY_01 = os.getenv("GROQ_API_KEY_01")
8
  groqllm = LLM(
@@ -20,14 +26,17 @@ def processar_topicos(topicos_str):
20
  return [t.strip() for t in topicos_str.split(',') if t.strip()]
21
 
22
  def executar_equipe_interface(disciplina, assunto, topicos_str, horas, dias):
23
-
24
  topicos = processar_topicos(topicos_str)
25
-
26
  solicitacao = f"Disciplina: {disciplina}\nAssunto: {assunto}\nTópicos: {topicos}\n"
27
 
 
28
  yield "Buscando vídeos no YouTube...", gr.update(value=10)
29
  entradaYoutube = pesquisar_videos_youtube(solicitacao)
30
 
 
 
 
 
31
  # Motivação
32
  yield "Criando mensagem motivacional...", gr.update(value=30)
33
  agentMotivador = Agent(
@@ -38,9 +47,8 @@ def executar_equipe_interface(disciplina, assunto, topicos_str, horas, dias):
38
  verbose=True
39
  )
40
  taskMotivador = Task(
41
- description = (
42
  "Escreva uma mensagem motivacional para o estudante, formatada em Markdown.\n\n"
43
- "A mensagem deve conter:\n"
44
  "## Mensagem Motivacional 🎯\n\n"
45
  "- Um parágrafo inicial incentivando o estudante a seguir seus estudos.\n"
46
  "- Frases inspiradoras para manter o foco e a disciplina.\n"
@@ -62,7 +70,7 @@ def executar_equipe_interface(disciplina, assunto, topicos_str, horas, dias):
62
  verbose=True
63
  )
64
  taskGuia = Task(
65
- description = (
66
  f"Crie um Guia de Estudos para {disciplina}, abordando {assunto} e os tópicos {topicos}. "
67
  "O guia deve seguir a seguinte estrutura e formatação:\n\n"
68
  "## Guia de Estudos: {disciplina}\n\n"
@@ -97,7 +105,7 @@ def executar_equipe_interface(disciplina, assunto, topicos_str, horas, dias):
97
  verbose=True
98
  )
99
  taskPlano = Task(
100
- description = (
101
  f"Crie um Plano de Estudos para {disciplina}, cobrindo {assunto} e os tópicos {topicos}. "
102
  f"O aluno tem {horas} horas por dia e {dias} dias para estudar.\n\n"
103
  "O plano deve seguir esta estrutura e formatação:\n\n"
@@ -141,7 +149,7 @@ def executar_equipe_interface(disciplina, assunto, topicos_str, horas, dias):
141
  verbose=True
142
  )
143
  taskYoutube = Task(
144
- description = (
145
  f"Lista do Youtube: {entradaYoutube} "
146
  "Você receberá uma lista de vídeos extraída da API do YouTube. Sua tarefa é classificar e organizar os vídeos "
147
  "por categorias, formatando-os em Markdown. As categorias devem ser baseadas no título do vídeo.\n\n"
@@ -161,26 +169,54 @@ def executar_equipe_interface(disciplina, assunto, topicos_str, horas, dias):
161
  )
162
  saidaYoutube = agentYoutube.execute_task(taskYoutube)
163
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  yield "Processo concluído!", gr.update(value=100)
165
 
166
  saidaCompleta = f"""
167
  # 🎯 Motivação
168
  {saidaMotivador}
169
-
170
  ---
171
-
172
  # 📖 Guia de Estudos
173
  {saidaGuia}
174
-
175
  ---
176
-
177
  # 📅 Plano de Estudos
178
  {saidaPlano}
179
-
180
  ---
181
-
182
  # 🎥 Vídeos Educacionais
183
  {saidaYoutube}
 
 
 
184
  """
185
 
186
  yield saidaCompleta, gr.update(value=100)
 
2
  import gradio as gr
3
  from crewai import Task, Agent, LLM
4
  from youtube import pesquisar_videos_youtube
5
+ from wikipedia import pesquisar_wikipedia
6
+ import time
7
+ import requests
8
+ from reportlab.lib.pagesizes import letter
9
+ from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
10
+ from reportlab.lib.styles import getSampleStyleSheet
11
+ import io
12
 
13
  GROQ_API_KEY_01 = os.getenv("GROQ_API_KEY_01")
14
  groqllm = LLM(
 
26
  return [t.strip() for t in topicos_str.split(',') if t.strip()]
27
 
28
  def executar_equipe_interface(disciplina, assunto, topicos_str, horas, dias):
 
29
  topicos = processar_topicos(topicos_str)
 
30
  solicitacao = f"Disciplina: {disciplina}\nAssunto: {assunto}\nTópicos: {topicos}\n"
31
 
32
+ # Busca no YouTube
33
  yield "Buscando vídeos no YouTube...", gr.update(value=10)
34
  entradaYoutube = pesquisar_videos_youtube(solicitacao)
35
 
36
+ # Busca na Wikipedia
37
+ yield "Buscando artigos na Wikipedia...", gr.update(value=20)
38
+ entradaWikipedia = pesquisar_wikipedia(topicos)
39
+
40
  # Motivação
41
  yield "Criando mensagem motivacional...", gr.update(value=30)
42
  agentMotivador = Agent(
 
47
  verbose=True
48
  )
49
  taskMotivador = Task(
50
+ description=(
51
  "Escreva uma mensagem motivacional para o estudante, formatada em Markdown.\n\n"
 
52
  "## Mensagem Motivacional 🎯\n\n"
53
  "- Um parágrafo inicial incentivando o estudante a seguir seus estudos.\n"
54
  "- Frases inspiradoras para manter o foco e a disciplina.\n"
 
70
  verbose=True
71
  )
72
  taskGuia = Task(
73
+ description=(
74
  f"Crie um Guia de Estudos para {disciplina}, abordando {assunto} e os tópicos {topicos}. "
75
  "O guia deve seguir a seguinte estrutura e formatação:\n\n"
76
  "## Guia de Estudos: {disciplina}\n\n"
 
105
  verbose=True
106
  )
107
  taskPlano = Task(
108
+ description=(
109
  f"Crie um Plano de Estudos para {disciplina}, cobrindo {assunto} e os tópicos {topicos}. "
110
  f"O aluno tem {horas} horas por dia e {dias} dias para estudar.\n\n"
111
  "O plano deve seguir esta estrutura e formatação:\n\n"
 
149
  verbose=True
150
  )
151
  taskYoutube = Task(
152
+ description=(
153
  f"Lista do Youtube: {entradaYoutube} "
154
  "Você receberá uma lista de vídeos extraída da API do YouTube. Sua tarefa é classificar e organizar os vídeos "
155
  "por categorias, formatando-os em Markdown. As categorias devem ser baseadas no título do vídeo.\n\n"
 
169
  )
170
  saidaYoutube = agentYoutube.execute_task(taskYoutube)
171
 
172
+ # Curadoria de Artigos da Wikipedia
173
+ yield "Organizando artigos da Wikipedia...", gr.update(value=95)
174
+ agentWikipedia = Agent(
175
+ role='Especialista em Curadoria de Artigos Educacionais',
176
+ goal='Organizar e formatar artigos educacionais encontrados na Wikipedia para aprendizado eficiente.',
177
+ backstory='Você é um especialista em curadoria de materiais educacionais, com experiência na seleção de artigos para ensino.',
178
+ llm=groqllm2,
179
+ verbose=True
180
+ )
181
+ taskWikipedia = Task(
182
+ description=(
183
+ f"Lista de artigos da Wikipedia: {entradaWikipedia} "
184
+ "Você receberá uma lista de artigos extraída da API da Wikipedia. Sua tarefa é organizar os artigos "
185
+ "em Markdown, formatando-os de forma clara e educacional.\n\n"
186
+ f"## Artigos sobre {assunto}\n\n"
187
+ "### Formato de saída\n"
188
+ "- Para cada artigo, a saída deve seguir o formato abaixo:\n"
189
+ " **[Título](URL)**\n\n _Trecho_\n\n"
190
+ "- Se um artigo não tiver trecho, substituir por '(Sem trecho disponível)'.\n"
191
+ "- Se houver mais de um artigo, repetir a estrutura para cada um.\n"
192
+ "- Certifique-se de que a formatação Markdown esteja correta e bem organizada."
193
+ "Caso não tenha encontrado artigos relevantes, a saída deverá ser:\n\n"
194
+ "## Não foram encontrados artigos sobre o assunto\n\n"
195
+ "Não busque que não tenham sido enviado na lista de artigos."
196
+
197
+ ),
198
+ agent=agentWikipedia,
199
+ expected_output="Lista de artigos organizados em Markdown."
200
+ )
201
+ saidaWikipedia = agentWikipedia.execute_task(taskWikipedia)
202
+
203
  yield "Processo concluído!", gr.update(value=100)
204
 
205
  saidaCompleta = f"""
206
  # 🎯 Motivação
207
  {saidaMotivador}
 
208
  ---
 
209
  # 📖 Guia de Estudos
210
  {saidaGuia}
 
211
  ---
 
212
  # 📅 Plano de Estudos
213
  {saidaPlano}
 
214
  ---
 
215
  # 🎥 Vídeos Educacionais
216
  {saidaYoutube}
217
+ ---
218
+ # 📜 Artigos da Wikipedia
219
+ {saidaWikipedia}
220
  """
221
 
222
  yield saidaCompleta, gr.update(value=100)