Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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)
|