vioott commited on
Commit
ec0ff9b
·
1 Parent(s): bf6029e

refactor(chat): use error_redirect template for history errors

Browse files
Files changed (1) hide show
  1. routes/chat.py +23 -28
routes/chat.py CHANGED
@@ -5,8 +5,6 @@ from logs import get_user_history, save_log
5
 
6
  chat_bp = Blueprint('chat', __name__)
7
 
8
- model = configure_genai()
9
-
10
 
11
  @chat_bp.route('/chat/<int:user_id>', methods=['GET', 'POST'])
12
  def chat(user_id):
@@ -16,41 +14,38 @@ def chat(user_id):
16
  history = get_user_history(user_id)
17
 
18
  if not history:
19
- return '''
20
- <html>
21
- <head>
22
- <meta http-equiv="refresh" content="2;url=/" />
23
- </head>
24
- <body>
25
- <h2>Ops, algo deu errado por aqui.</h2>
26
- <p>Vou te levar de volta para a página inicial.</p>
27
- </body>
28
- </html>
29
- '''
30
 
31
  response = None
32
 
33
  if request.method == 'POST':
34
  question = request.form.get('question')
35
 
36
- session = model.start_chat(enable_automatic_function_calling=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
 
38
- prompt = (
39
- f"Você é uma especialista em livros e pode conversar livremente "
40
- f"sobre obras literárias, personagens, enredos, gêneros e autores."
41
- f" O nome do usuário é {history.get('name', f'Usuário {user_id}')}"
42
- f". As preferências dele são: "
43
- f"{', '.join(history.get('preferences', [])) or 'nenhuma'}. "
44
- f"Histórico: {history}. "
45
- f"Pergunta: {question} "
46
- f"Responda na mesma língua da pergunta, com até 500 caracteres. "
47
- f"Fale diretamente com o usuário."
48
- )
49
 
50
- gemini_response = session.send_message(prompt)
51
- response = gemini_response.text
52
 
53
- save_log(user_id, history, response)
 
 
54
 
55
  formatted_response = None
56
  if response:
 
5
 
6
  chat_bp = Blueprint('chat', __name__)
7
 
 
 
8
 
9
  @chat_bp.route('/chat/<int:user_id>', methods=['GET', 'POST'])
10
  def chat(user_id):
 
14
  history = get_user_history(user_id)
15
 
16
  if not history:
17
+ return render_template('error_redirect.html')
 
 
 
 
 
 
 
 
 
 
18
 
19
  response = None
20
 
21
  if request.method == 'POST':
22
  question = request.form.get('question')
23
 
24
+ try:
25
+ model = configure_genai()
26
+ session = model.start_chat(enable_automatic_function_calling=True)
27
+
28
+ prompt = (
29
+ f"Você é uma especialista em livros e pode conversar "
30
+ f"livremente sobre obras literárias, personagens, enredos, "
31
+ f"gêneros e autores. O nome do usuário é "
32
+ f"{history.get('name', f'Usuário {user_id}')}. "
33
+ f"As preferências dele são: "
34
+ f"{', '.join(history.get('preferences', [])) or 'nenhuma'}. "
35
+ f"Histórico: {history}. "
36
+ f"Pergunta: {question}. Responda na mesma língua da pergunta,"
37
+ f" com até 500 caracteres."
38
+ f"Fale diretamente com o usuário."
39
+ )
40
 
41
+ gemini_response = session.send_message(prompt)
42
+ response = gemini_response.text
 
 
 
 
 
 
 
 
 
43
 
44
+ save_log(user_id, history, response)
 
45
 
46
+ except Exception as e:
47
+ print(f"Erro ao usar a IA: {e}")
48
+ response = "⚠️ A IA está indisponível, retorne em 24h."
49
 
50
  formatted_response = None
51
  if response: