caarleexx commited on
Commit
d8f461f
·
verified ·
1 Parent(s): ad6d65d

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +94 -0
app.py ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import os
3
+ from google.generativeai import TextClient
4
+
5
+ # ⚠️ Configure sua chave de API
6
+ os.environ["GOOGLE_API_KEY"] = "AIzaSyB9PUYLKcLwSe1E2_XU4uXekFUFKST5dd4"
7
+
8
+ client = TextClient()
9
+
10
+ # Estrutura de dados interna
11
+ state = {
12
+ "prompt_usuario": "",
13
+ "para_que_quer_resposta": {"valor": None, "confianca": "baixa"},
14
+ "porque_precisa_resposta": {"valor": None, "confianca": "baixa"},
15
+ "pontos_chaves_esclarecer": {"valor": [], "confianca": "baixa"},
16
+ "o_que_ensinar": {"valor": [], "confianca": "baixa"},
17
+ "resposta_final": None
18
+ }
19
+
20
+ # --- Funções de pipeline --- #
21
+
22
+ def passo1_analise_clareza(prompt):
23
+ state["prompt_usuario"] = prompt
24
+ if len(prompt.strip()) == 0:
25
+ return "Você não digitou nada. Poderia reformular?"
26
+ # Aqui poderia ter um modelo avaliando clareza
27
+ return None # significa clareza ok
28
+
29
+ def passo2_analise_proposito():
30
+ if state["para_que_quer_resposta"]["confianca"] == "baixa":
31
+ return "Para te dar a melhor resposta, qual é seu objetivo? Estudo, curiosidade, história, etc."
32
+ return None
33
+
34
+ def passo3_analise_motivacao(resposta_usuario=None):
35
+ if state["porque_precisa_resposta"]["confianca"] == "baixa":
36
+ return "O que te despertou esse interesse agora? Algo específico que você viu ou ouviu?"
37
+ if resposta_usuario:
38
+ state["porque_precisa_resposta"]["valor"] = resposta_usuario
39
+ state["porque_precisa_resposta"]["confianca"] = "alta"
40
+ return None
41
+
42
+ def gerar_resposta_final():
43
+ # Monta Super Prompt
44
+ super_prompt = f"""
45
+ Usuário quer saber: {state['prompt_usuario']}
46
+ Para que: {state['para_que_quer_resposta']['valor']}
47
+ Porque precisa: {state['porque_precisa_resposta']['valor']}
48
+ Pontos a esclarecer: {state['pontos_chaves_esclarecer']['valor']}
49
+ O que ensinar: {state['o_que_ensinar']['valor']}
50
+
51
+ Gere uma resposta clara, educativa e adaptada ao contexto.
52
+ """
53
+ response = client.generate_text(model="gemini-1.5", prompt=super_prompt, max_output_tokens=500)
54
+ state["resposta_final"] = response.text
55
+ return state["resposta_final"]
56
+
57
+ # --- Função principal do Gradio --- #
58
+
59
+ def pipeline_gradio(prompt, objetivo="", motivacao=""):
60
+ erro = passo1_analise_clareza(prompt)
61
+ if erro:
62
+ return erro
63
+
64
+ if objetivo:
65
+ state["para_que_quer_resposta"]["valor"] = objetivo
66
+ state["para_que_quer_resposta"]["confianca"] = "alta"
67
+ else:
68
+ msg = passo2_analise_proposito()
69
+ if msg:
70
+ return msg
71
+
72
+ if motivacao:
73
+ passo3_analise_motivacao(motivacao)
74
+ else:
75
+ msg = passo3_analise_motivacao()
76
+ if msg:
77
+ return msg
78
+
79
+ return gerar_resposta_final()
80
+
81
+ # --- Interface Gradio --- #
82
+ iface = gr.Interface(
83
+ fn=pipeline_gradio,
84
+ inputs=[
85
+ gr.Textbox(label="Pergunta", placeholder="Digite sua dúvida..."),
86
+ gr.Textbox(label="Objetivo (opcional)", placeholder="Ex: estudo, curiosidade..."),
87
+ gr.Textbox(label="Motivação (opcional)", placeholder="Ex: medo, curiosidade...")
88
+ ],
89
+ outputs="text",
90
+ title="Protótipo de IA Reflexiva",
91
+ description="Pipeline reflexiva que faz perguntas antes de responder usando Gemini API."
92
+ )
93
+
94
+ iface.launch()