vioott commited on
Commit
8a4d350
·
1 Parent(s): 0c3513d

feat: add fantasy category to user history and AI decision logic

Browse files
Files changed (2) hide show
  1. app.py +20 -7
  2. user_data.py +4 -3
app.py CHANGED
@@ -1,11 +1,12 @@
1
- import google.generativeai as genai
2
  import os
 
3
  from flask import Flask, render_template
4
  from user_data import get_user_history
5
  from book_recommendations import (
6
  recommend_fiction,
7
  recommend_non_fiction,
8
- recommend_science
 
9
  )
10
 
11
  app = Flask(__name__)
@@ -20,32 +21,44 @@ magical_if = genai.GenerativeModel(
20
  tools=[
21
  recommend_fiction,
22
  recommend_non_fiction,
23
- recommend_science
 
24
  ]
25
  )
26
 
 
27
  def ia_decision(user_id, history):
28
  business_rules = """
29
- Analise o histórico de compras do usuário e decida qual categoria de livros recomendar.
 
30
  Regras:
31
  1. Se o usuário comprou mais livros de ficção, recomende ficção.
32
  2. Se o usuário comprou mais livros de não ficção, recomende não ficção.
33
  3. Se o usuário demonstrou interesse em ciência, recomende ciência.
34
  4. Caso contrário, ofereça uma recomendação geral de ficção.
35
  """
36
- user_decision = magical_if.start_chat(enable_automatic_function_calling=True)
 
 
37
  response = user_decision.send_message(
38
- f"Histórico do usuário {user_id}: {history}; Regras de negócio: {business_rules}"
 
39
  )
40
  return response.text
41
 
 
42
  @app.route('/recommend/<int:user_id>')
43
  def recommend(user_id):
44
  history = get_user_history(user_id)
45
  if not history:
46
  return "Usuário não encontrado", 404
47
  ia_response = ia_decision(user_id, history)
48
- return render_template('recommendation.html', user_id=user_id, message=ia_response)
 
 
 
 
 
49
 
50
  if __name__ == '__main__':
51
  app.run(debug=True)
 
 
1
  import os
2
+ import google.generativeai as genai
3
  from flask import Flask, render_template
4
  from user_data import get_user_history
5
  from book_recommendations import (
6
  recommend_fiction,
7
  recommend_non_fiction,
8
+ recommend_science,
9
+ recommend_fantasy
10
  )
11
 
12
  app = Flask(__name__)
 
21
  tools=[
22
  recommend_fiction,
23
  recommend_non_fiction,
24
+ recommend_science,
25
+ recommend_fantasy
26
  ]
27
  )
28
 
29
+
30
  def ia_decision(user_id, history):
31
  business_rules = """
32
+ Analise o histórico de compras do usuário e decida qual categoria de
33
+ livros recomendar.
34
  Regras:
35
  1. Se o usuário comprou mais livros de ficção, recomende ficção.
36
  2. Se o usuário comprou mais livros de não ficção, recomende não ficção.
37
  3. Se o usuário demonstrou interesse em ciência, recomende ciência.
38
  4. Caso contrário, ofereça uma recomendação geral de ficção.
39
  """
40
+ user_decision = magical_if.start_chat(
41
+ enable_automatic_function_calling=True
42
+ )
43
  response = user_decision.send_message(
44
+ f"Histórico do usuário {user_id}: {history}; "
45
+ f"Regras de negócio: {business_rules}"
46
  )
47
  return response.text
48
 
49
+
50
  @app.route('/recommend/<int:user_id>')
51
  def recommend(user_id):
52
  history = get_user_history(user_id)
53
  if not history:
54
  return "Usuário não encontrado", 404
55
  ia_response = ia_decision(user_id, history)
56
+ return render_template(
57
+ 'recommendation.html',
58
+ user_id=user_id,
59
+ message=ia_response
60
+ )
61
+
62
 
63
  if __name__ == '__main__':
64
  app.run(debug=True)
user_data.py CHANGED
@@ -3,8 +3,9 @@ def get_user_history(user_id: int) -> dict:
3
  Retorna o histórico de compras do usuário.
4
  """
5
  user_histories = {
6
- 1: {'fiction': 5, 'non_fiction': 2, 'science': 0},
7
- 2: {'fiction': 1, 'non_fiction': 4, 'science': 1},
8
- 3: {'fiction': 0, 'non_fiction': 1, 'science': 5},
 
9
  }
10
  return user_histories.get(user_id)
 
3
  Retorna o histórico de compras do usuário.
4
  """
5
  user_histories = {
6
+ 1: {'fiction': 5, 'non_fiction': 2, 'science': 0, 'fantasy': 0},
7
+ 2: {'fiction': 1, 'non_fiction': 4, 'science': 1, 'fantasy': 2},
8
+ 3: {'fiction': 0, 'non_fiction': 1, 'science': 5, 'fantasy': 0},
9
+ 4: {'fiction': 1, 'non_fiction': 0, 'science': 0, 'fantasy': 6},
10
  }
11
  return user_histories.get(user_id)